n  const chartSettings = chartLibrariesSettings[attributes.chartLibrary]\n  const { hasLegend } = chartSettings\n\n  // todo optimize by using resizeObserver (optionally)\n  const boundingClientRect = portalNode.getBoundingClientRect()\n\n  // from old dashboard\n  const chartWidth = boundingClientRect.width - (hasLegend(attributes) ? 140 : 0)\n  const chartHeight = boundingClientRect.height\n\n  const isShowingSnapshot = Boolean(useSelector(selectSnapshot))\n  const shouldEliminateZeroDimensions =\n    useSelector(selectShouldEliminateZeroDimensions) || isShowingSnapshot\n  const shouldUsePanAndZoomPadding = useSelector(selectPanAndZoomDataPadding)\n\n  const { CancelToken } = axios\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const cancelTokenSource = useMemo(() => CancelToken.source(), [])\n  useUnmount(() => {\n    cancelTokenSource.cancel(CHART_UNMOUNTED)\n  })\n\n  /**\n   * spinner state\n   * show spinner when it's fetching for more than 2 seconds\n   * hide spinner immediately when it's not fetching\n   */\n  const [shouldShowSpinnerDebounced, setShouldShowSpinnerDebounced] = useState(false)\n  const shouldShowSpinner = shouldShowSpinnerDebounced && isFetchingData\n  useDebounce(\n    () => {\n      if (isFetchingData) {\n        setShouldShowSpinnerDebounced(true)\n      }\n    },\n    2000,\n    [isFetchingData]\n  )\n  useEffect(() => {\n    if (!isFetchingData && shouldShowSpinnerDebounced) {\n      setShouldShowSpinnerDebounced(false)\n    }\n  }, [isFetchingData, shouldShowSpinnerDebounced])\n\n  /**\n   * fetch data\n   */\n  useEffect(() => {\n    if (shouldFetch && actualChartMetadata && !isFetchingData) {\n      // todo can be overridden by main.js\n      const forceDataPoints = window.NETDATA.options.force_data_points\n\n      let after\n      let before\n      let newViewRange\n      let pointsMultiplier = 1\n\n      if (panAndZoom) {\n        if (isPanAndZoomMaster) {\n          after = Math.round(panAndZoom.after / 1000)\n          before = Math.round(panAndZoom.before / 1000)\n\n          newViewRange = [after, before]\n\n          if (shouldUsePanAndZoomPadding) {\n            const requestedPadding = Math.round((before - after) / 2)\n            after -= requestedPadding\n            before += requestedPadding\n            pointsMultiplier = 2\n          }\n        } else {\n          after = Math.round(panAndZoom.after / 1000)\n          before = Math.round(panAndZoom.before / 1000)\n          pointsMultiplier = 1\n        }\n      } else {\n        // no panAndZoom\n        before = initialBefore\n        after = liveModeAfter\n        pointsMultiplier = 1\n      }\n\n      newViewRange = (newViewRange || [after, before]).map(x => x * 1000) as [number, number]\n\n      const dataPoints =\n        attributes.points ||\n        Math.round(chartWidth / getChartPixelsPerPoint({ attributes, chartSettings }))\n      const points = forceDataPoints || dataPoints * pointsMultiplier\n\n      const shouldForceTimeWindow = attributes.forceTimeWindow || Boolean(defaultAfter)\n      // if we want to add fake points, we need first need to request less\n      // to have the desired frequency\n      // this will be removed when Agents will support forcing time-window between points\n      const correctedPoints = shouldForceTimeWindow\n        ? getCorrectedPoints({\n            after,\n            before,\n            firstEntry: actualChartMetadata.first_entry,\n            points,\n          })\n        : null\n\n      const group = attributes.method || window.NETDATA.chartDefaults.method\n      setShouldFetch(false)\n      dispatch(\n        fetchDataAction.request({\n          // properties to be passed to API\n          host,\n          context: actualChartMetadata.context,\n          chart: actualChartMetadata.id,\n          format: chartSettings.format,\n          points: correctedPoints || points,\n          group,\n          gtime: attributes.gtime || 0,\n          options: getChartURLOptions(attributes, shouldEliminateZeroDimensions),\n          after: after || null,\n          before: before || null,\n          dimensions: attributes.dimensions,\n          labels: attributes.labels,\n          postGroupBy: attributes.postGroupBy,\n          postAggregationMethod: attributes.postAggregationMethod,\n          aggrMethod: attributes.aggrMethod,\n          aggrGroups: attributes.aggrGroups,\n          // @ts-ignore\n          dimensionsAggrMethod:\n            dimensionsAggrMethodMap[attributes.dimensionsAggrMethod] ||\n            attributes.dimensionsAggrMethod,\n          nodeIDs,\n          httpMethod: attributes.httpMethod,\n          groupBy: attributes.groupBy,\n\n          // properties for the reducer\n          fetchDataParams: {\n            // we store it here so it is only available when data is fetched\n            // those params should be synced with data\n            fillMissingPoints: correctedPoints ? points - correctedPoints : undefined,\n            isRemotelyControlled,\n            viewRange: newViewRange,\n          },\n          id: chartUuid,\n          cancelTokenSource,\n        })\n      )\n    }\n  }, [\n    attributes,\n    actualChartMetadata,\n    chartSettings,\n    chartUuid,\n    chartWidth,\n    defaultAfter,\n    dispatch,\n    hasLegend,\n    host,\n    initialBefore,\n    isFetchingData,\n    isPanAndZoomMaster,\n    isRemotelyControlled,\n    liveModeAfter,\n    panAndZoom,\n    portalNode,\n    setShouldFetch,\n    shouldEliminateZeroDimensions,\n    shouldUsePanAndZoomPadding,\n    shouldFetch,\n    cancelTokenSource,\n    nodeIDs,\n    uuid,\n  ])\n\n  useSelector(selectSpacePanelTransitionEndIsActive)\n\n  const externalSelectedDimensions = attributes?.selectedDimensions\n  const [selectedDimensions, setSelectedDimensions] = useState<string[]>(\n    externalSelectedDimensions || emptyArray\n  )\n\n  useLayoutEffect(() => {\n    if (externalSelectedDimensions) {\n      setSelectedDimensions(externalSelectedDimensions)\n    }\n  }, [externalSelectedDimensions])\n\n  useLayoutEffect(() => {\n    setSelectedDimensions(externalSelectedDimensions || emptyArray)\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [attributes?.groupBy])\n\n  const customElementForDygraph = useMemo(\n    () =>\n      renderCustomElementForDygraph &&\n      renderCustomElementForDygraph({\n        onAttributesChange,\n        attributes,\n        chartMetadata: actualChartMetadata as ChartMetadata,\n        chartData,\n        chartID: id,\n      }),\n    [\n      onAttributesChange,\n      renderCustomElementForDygraph,\n      attributes,\n      id,\n      actualChartMetadata,\n      chartData,\n    ]\n  )\n\n  // eslint-disable-next-line max-len\n  const hasEmptyData =\n    (chartData as DygraphData | D3pieChartData | null)?.result?.data?.length === 0 ||\n    (chartData as EasyPieChartData | null)?.result?.length === 0\n\n  if (!chartData || !actualChartMetadata) {\n    return (\n      <>\n        <Loader\n          // Loader should remount when that flag is changed, because inside\n          // there's an oldschool bootstrap icon which doesn't handle updates well\n          key={`${hasEmptyData}`}\n          hasEmptyData={hasEmptyData}\n          containerNode={portalNode}\n        />\n        {shouldShowSpinner && <ChartSpinner chartLibrary={attributes.chartLibrary} />}\n      </>\n    )\n  }\n\n  return (\n    <>\n      {hasEmptyData && (\n        <Loader key={`${hasEmptyData}`} hasEmptyData={hasEmptyData} containerNode={portalNode} />\n      )}\n      <Chart\n        attributes={attributes}\n        chartContainerElement={portalNode}\n        chartData={chartData}\n        chartMetadata={actualChartMetadata}\n        chartUuid={chartUuid}\n        chartHeight={chartHeight}\n        chartWidth={chartWidth}\n        defaultAfter={defaultAfter}\n        globalPanAndZoom={globalPanAndZoom}\n        hasEmptyData={hasEmptyData}\n        isRemotelyControlled={fetchDataParams.isRemotelyControlled}\n        // view range that updates only when data is fetched\n        viewRangeForCurrentData={fetchDataParams.viewRange}\n        // view range that updates when requesting and fetching of data\n        viewRange={viewRange!}\n        selectedDimensions={selectedDimensions}\n        setSelectedDimensions={setSelectedDimensions}\n        showLatestOnBlur={!panAndZoom}\n      />\n      {shouldShowSpinner && <ChartSpinner chartLibrary={attributes.chartLibrary} />}\n      {dropdownMenu && dropdownMenu.length > 0 && (\n        <S.ChartDropdownContainer>\n          <ChartDropdown\n            dropdownMenu={dropdownMenu}\n            chartID={id}\n            attributes={attributes}\n            chartMetadata={actualChartMetadata}\n          />\n        </S.ChartDropdownContainer>\n      )}\n      {customElementForDygraph}\n    </>\n  )\n}\n","import { useEffect, useState } from \"react\"\nimport { useInterval } from \"react-use\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport {\n  selectHasWindowFocus,\n  selectStopUpdatesWhenFocusIsLost,\n  selectGlobalPause,\n} from \"domains/global/selectors\"\nimport { BIGGEST_INTERVAL_NUMBER } from \"utils/biggest-interval-number\"\nimport { isPrintMode } from \"domains/dashboard/utils/parse-url\"\n\ntype UseFetchNewDataClock = (arg: {\n  areCriteriaMet: boolean\n  preferedIntervalTime: number\n}) => [boolean, (shouldFetch: boolean) => void]\nexport const useFetchNewDataClock: UseFetchNewDataClock = ({\n  areCriteriaMet,\n  preferedIntervalTime,\n}) => {\n  const hasWindowFocus = useSelector(selectHasWindowFocus)\n  const stopUpdatesWhenFocusIsLost = useSelector(selectStopUpdatesWhenFocusIsLost)\n  const globalPause = useSelector(selectGlobalPause)\n\n  const shouldBeUpdating = !(!hasWindowFocus && stopUpdatesWhenFocusIsLost) && !globalPause\n\n  const [shouldFetch, setShouldFetch] = useState<boolean>(true)\n  const [shouldFetchImmediatelyAfterFocus, setShouldFetchImmediatelyAfterFocus] = useState(false)\n\n  useEffect(() => {\n    if (shouldFetchImmediatelyAfterFocus && shouldBeUpdating) {\n      setShouldFetchImmediatelyAfterFocus(false)\n      setShouldFetch(true)\n    }\n  }, [shouldFetchImmediatelyAfterFocus, setShouldFetchImmediatelyAfterFocus, shouldBeUpdating])\n\n  // don't use setInterval when we loose focus\n  const intervalTime =\n    (shouldBeUpdating || !shouldFetchImmediatelyAfterFocus) && !isPrintMode\n      ? preferedIntervalTime\n      : BIGGEST_INTERVAL_NUMBER\n  useInterval(() => {\n    if (areCriteriaMet) {\n      if (!shouldBeUpdating) {\n        setShouldFetchImmediatelyAfterFocus(true)\n        return\n      }\n      setShouldFetch(true)\n    }\n    // when there's no focus, don't ask for updated data\n  }, intervalTime)\n  return [shouldFetch, setShouldFetch]\n}\n","import { Attributes } from \"./transformDataAttributes\"\nimport { ChartLibraryConfig } from \"./chartLibrariesSettings\"\n\ntype GetChartPixelsPerPoint = (arg: {\n  attributes: Attributes,\n  chartSettings: ChartLibraryConfig,\n}) => number\n\nexport const getChartPixelsPerPoint: GetChartPixelsPerPoint = ({\n  attributes, chartSettings,\n}) => {\n  const {\n    pixelsPerPoint: pixelsPerPointAttribute,\n  } = attributes\n  if (typeof pixelsPerPointAttribute === \"number\") {\n    return pixelsPerPointAttribute\n  }\n  const pixelsPerPointSetting = chartSettings.pixelsPerPoint(attributes)\n\n  return Math.max(...[\n    pixelsPerPointSetting,\n    window.NETDATA.options.current.pixels_per_point,\n  ].filter((px) => typeof px === \"number\"))\n}\n","import { prop, pick } from \"ramda\"\nimport { createSelector } from \"reselect\"\n\nimport { AppStateT } from \"store/app-state\"\n\nimport { storeKey } from \"./constants\"\n\nconst selectDashboardDomain = (state: AppStateT) => state[storeKey]\n\nexport const selectIsSnapshotMode = createSelector(\n  selectDashboardDomain,\n  prop(\"isSnapshotMode\"),\n)\n\nexport const selectSnapshotOptions = createSelector(\n  selectDashboardDomain,\n  pick([\"snapshotCharts\", \"snapshotDataPoints\"]),\n)\n","import React, { useEffect } from \"react\"\n\nimport { MS_IN_SECOND } from \"utils/utils\"\nimport { serverDefault } from \"utils/server-detection\"\nimport { selectIsSnapshotMode, selectSnapshotOptions } from \"domains/dashboard/selectors\"\nimport { selectGlobalPanAndZoom } from \"domains/global/selectors\"\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { TimeRangeObjT } from \"types/common\"\n\nimport { Attributes } from \"../utils/transformDataAttributes\"\nimport { fetchDataForSnapshotAction } from \"../actions\"\nimport { chartLibrariesSettings } from \"../utils/chartLibrariesSettings\"\nimport { getChartURLOptions } from \"../utils/get-chart-url-options\"\n\ninterface SnapshotLoaderProps {\n  attributes: Attributes\n  chartUuid: string\n}\nconst SnapshotLoader = ({\n  attributes,\n  chartUuid,\n}: SnapshotLoaderProps) => {\n  const host = attributes.host || serverDefault\n  const { snapshotDataPoints } = useSelector(selectSnapshotOptions)\n  const group = attributes.method || window.NETDATA.chartDefaults.method\n  const { chartLibrary } = attributes\n  const chartSettings = chartLibrariesSettings[chartLibrary]\n\n  const globalPanAndZoom = useSelector(selectGlobalPanAndZoom)\n  const after = (globalPanAndZoom as TimeRangeObjT).after / MS_IN_SECOND\n  const before = (globalPanAndZoom as TimeRangeObjT).before / MS_IN_SECOND\n\n  const dispatch = useDispatch()\n  useEffect(() => {\n    dispatch(fetchDataForSnapshotAction.request({\n      // properties to be passed to API\n      host,\n      context: attributes.id,\n      chart: attributes.id,\n      format: chartSettings.format,\n      points: snapshotDataPoints as number,\n      group,\n      gtime: attributes.gtime || 0,\n      // for snapshots, always eliminate zero dimensions\n      options: getChartURLOptions(attributes, true),\n      after: after || null,\n      before: before || null,\n      dimensions: attributes.dimensions,\n      aggrMethod: attributes.aggrMethod,\n      nodeIDs: attributes.nodeIDs,\n      chartLibrary,\n      id: chartUuid,\n      groupBy: attributes.groupBy,\n    }))\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }) // todo fetch based on state\n  return null\n}\n\n\ninterface SnapshotLoaderContainerProps {\n  attributes: Attributes\n  chartUuid: string\n}\nexport const SnapshotLoaderContainer = ({\n  attributes,\n  chartUuid,\n}: SnapshotLoaderContainerProps) => {\n  const isSnapshotMode = useSelector(selectIsSnapshotMode)\n  if (!isSnapshotMode) {\n    return null\n  }\n  return <SnapshotLoader attributes={attributes} chartUuid={chartUuid} />\n}\n","import React, { memo } from \"react\"\nimport { createPortal } from \"react-dom\"\n\nimport { getAttributes } from \"../utils/transformDataAttributes\"\nimport { ChartWithLoader } from \"./chart-with-loader\"\nimport { DisableOutOfView } from \"./disable-out-of-view\"\nimport { SnapshotLoaderContainer } from \"./snapshot-loader\"\n\nconst getNodesArray = () => Array.from(document.querySelectorAll(\"[data-netdata]\"))\n\nexport const Portals = memo(() => {\n  const nodes = getNodesArray()\n  return (\n    <>\n      {nodes.map((node, index) => {\n        const attributesMapped = getAttributes(node)\n        const chartId = `${attributesMapped.id}-${index}`\n        return (\n          createPortal(\n            <>\n              <DisableOutOfView\n                attributes={attributesMapped}\n                chartUuid={chartId}\n                portalNode={(node as HTMLElement)}\n              >\n                <ChartWithLoader\n                  attributes={attributesMapped}\n                  // todo change to uuid generator (when we disconnect dashboard.js)\n                  chartUuid={chartId}\n                  portalNode={(node as HTMLElement)}\n                />\n              </DisableOutOfView>\n              <SnapshotLoaderContainer\n                attributes={attributesMapped}\n                chartUuid={chartId}\n              />\n            </>,\n            node,\n          )\n        )\n      })}\n    </>\n  )\n})\n","import { useEffect, useState } from \"react\"\n\nimport { axiosInstance } from \"utils/api\"\n\nexport const useHttp = <T = unknown>(\n  url: string | undefined,\n  shouldMakeCall : boolean = true,\n  isExternal?: boolean,\n) => {\n  const [isFetching, setIsFetching] = useState(false)\n  const [isError, setIsError] = useState(false)\n  const [data, setData] = useState<T | null>(null)\n  useEffect(() => {\n    if (shouldMakeCall && url) {\n      const options = isExternal\n        ? { headers: null, withCredentials: false }\n        : {}\n\n      setIsFetching(true)\n      axiosInstance.get(url, options)\n        .then((r) => {\n          if (r.data) {\n            setData(r.data)\n            setIsError(false)\n            setIsFetching(false)\n          }\n        })\n        .catch((error) => {\n          // eslint-disable-next-line no-console\n          console.warn(`error fetching ${url}`, error)\n          setIsError(true)\n          setIsFetching(false)\n        })\n    }\n  }, [isExternal, shouldMakeCall, url])\n  // force triple instead of array\n  return [data, isFetching, isError] as [T | null, boolean, boolean]\n}\n","import { ReactNode, useEffect, useRef } from \"react\"\nimport { createPortal } from \"react-dom\"\n\nconst modalRoot = document.getElementById(\"modal-root\") as HTMLElement\n\ntype Props = {\n  children: ReactNode\n}\nexport const ModalPortal = ({ children }: Props) => {\n  const element = useRef(document.createElement(\"div\"))\n  useEffect(() => {\n    modalRoot.appendChild(element.current)\n    return () => {\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      modalRoot.removeChild(element.current)\n    }\n  }, [])\n\n  return createPortal(children, element.current)\n}\n","import React, { useRef, useEffect } from \"react\"\nimport classNames from \"classnames\"\n\nimport { useSelector } from \"store/redux-separate-context\"\nimport { ModalPortal } from \"domains/dashboard/components/modal-portal\"\nimport {\n  selectAmountOfCharts, selectAmountOfFetchedCharts, selectNameOfAnyFetchingChart,\n} from \"domains/chart/selectors\"\n\nimport \"./print-modal.scss\"\n\nconst TIMEOUT_DURATION_TO_MAKE_SURE_ALL_CHARTS_HAVE_BEEN_RENDERED = 1000\n\nexport const PrintModal = () => {\n  const printModalElement = useRef<HTMLDivElement>(null)\n  const isFetchingMetrics = true\n\n  useEffect(() => {\n    // todo replace bootstrap with newer solution (custom or react-compatible library)\n    if (printModalElement.current) {\n      const $element = window.$(printModalElement.current)\n      $element.modal(\"show\")\n    }\n  }) // render just once\n\n  const amountOfCharts = useSelector(selectAmountOfCharts)\n  const amountOfFetchedCharts = useSelector(selectAmountOfFetchedCharts)\n  const nameOfAnyFetchingChart = useSelector(selectNameOfAnyFetchingChart)\n\n  const percentage = amountOfCharts === 0\n    ? 0\n    : (amountOfFetchedCharts / amountOfCharts) * 100\n\n  useEffect(() => {\n    if (percentage === 100) {\n      setTimeout(() => {\n        // in case browser will not be able to close the window\n        window.$(printModalElement.current).modal(\"hide\")\n        window.print()\n        window.close()\n      }, TIMEOUT_DURATION_TO_MAKE_SURE_ALL_CHARTS_HAVE_BEEN_RENDERED)\n    }\n  }, [percentage])\n\n\n  const progressBarText = nameOfAnyFetchingChart\n    && `${Math.round(percentage)}%, ${nameOfAnyFetchingChart}`\n\n\n  return (\n    <ModalPortal>\n      <div\n        ref={printModalElement}\n        className=\"modal fade\"\n        id=\"printModal\"\n        tabIndex={-1}\n        role=\"dialog\"\n        aria-labelledby=\"printModalLabel\"\n        data-keyboard=\"false\"\n        data-backdrop=\"static\"\n      >\n        <div className=\"modal-dialog modal-lg\" role=\"document\">\n          <div className=\"modal-content\">\n            <div className=\"modal-header\">\n              <button\n                type=\"button\"\n                className={classNames(\n                  \"close\",\n                  { \"print-modal__close-button--disabled\": isFetchingMetrics },\n                )}\n                data-dismiss=\"modal\"\n                aria-label=\"Close\"\n              >\n                <span aria-hidden=\"true\">&times;</span>\n              </button>\n              <h4 className=\"modal-title\" id=\"printModalLabel\">\n                Preparing dashboard for printing...\n              </h4>\n            </div>\n            <div className=\"modal-body\">\n              Please wait while we initialize and render all the charts on the dashboard.\n              <div\n                className=\"progress progress-striped active\"\n                style={{ height: \"2em\" }}\n              >\n                <div\n                  id=\"printModalProgressBar\"\n                  className=\"progress-bar progress-bar-info\"\n                  role=\"progressbar\"\n                  aria-valuenow={percentage}\n                  aria-valuemin={0}\n                  aria-valuemax={100}\n                  style={{\n                    minWidth: \"2em\",\n                    width: `${percentage}%`,\n                  }}\n                >\n                  <span\n                    id=\"printModalProgressBarText\"\n                    style={{\n                      paddingLeft: 10,\n                      paddingTop: 4,\n                      fontSize: \"1.2em\",\n                      textAlign: \"left\",\n                      width: \"100%\",\n                      position: \"absolute\",\n                      display: \"block\",\n                      color: \"black\",\n                    }}\n                  >\n                    {progressBarText}\n                  </span>\n                </div>\n              </div>\n              The print dialog will appear as soon as we finish rendering the page.\n            </div>\n            <div className=\"modal-footer\" />\n          </div>\n        </div>\n      </div>\n    </ModalPortal>\n  )\n}\n","import styled from \"styled-components\"\nimport { getSizeBy, getColor } from \"@netdata/netdata-ui\"\n\nexport const SocialMediaContainer = styled.div`\n  width: 185px;\n  padding: ${getSizeBy(2)};\n  background: ${getColor(\"borderSecondary\")};\n\n  font-size: 12px;\n  margin-bottom: ${getSizeBy(3)};\n`\n\nexport const FirstRow = styled.div`\n  display: flex;\n  justify-content: space-between;\n`\n\nexport const GithubCopy = styled.div`\n\n`\n\nexport const GithubCopyLine = styled.div`\n\n`\n\nexport const SocialMediaLink = styled.a`\n  &, &:hover {\n    color: ${getColor(\"main\")};\n  }\n`\n\nexport const GithubStarQuestion = styled(SocialMediaLink)``\n\nexport const GithubIcon = styled(SocialMediaLink)`\n  font-size: 24px;\n`\n\nexport const TwitterIcon = styled(SocialMediaLink)`\n  font-size: 17px;\n`\n\nexport const FacebookIcon = styled(SocialMediaLink)`\n  font-size: 23px;\n`\n\nexport const Separator = styled.div`\n  margin-top: ${getSizeBy(2)};\n  border-top: 1px solid ${getColor(\"separator\")};\n\n`\nexport const SecondRow = styled.div`\n  margin-top: ${getSizeBy(2)};\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n`\n\nexport const SecondRowText = styled.span`\n  font-size: 10px;\n`\n","import React from \"react\"\n\nimport * as S from \"./styled\"\n\nexport const SidebarSocialMedia = () => (\n  <S.SocialMediaContainer>\n    <S.FirstRow>\n      <S.GithubCopy>\n        <S.GithubCopyLine>\n            Do you like Netdata?\n        </S.GithubCopyLine>\n        <S.GithubStarQuestion href=\"https://github.com/netdata/netdata/\" target=\"_blank\">\n            Give us a star!\n        </S.GithubStarQuestion>\n      </S.GithubCopy>\n      <S.GithubIcon href=\"https://github.com/netdata/netdata/\" target=\"_blank\">\n        <i className=\"fab fa-github\" />\n      </S.GithubIcon>\n    </S.FirstRow>\n    <S.Separator />\n    <S.SecondRow>\n      <S.SecondRowText>\n          And share the word!\n      </S.SecondRowText>\n      <S.TwitterIcon href=\"https://twitter.com/linuxnetdata/\" target=\"_blank\">\n        <i className=\"fab fa-twitter\" />\n      </S.TwitterIcon>\n      <S.FacebookIcon href=\"https://www.facebook.com/linuxnetdata/\" target=\"_blank\">\n        <i className=\"fab fa-facebook\" />\n      </S.FacebookIcon>\n    </S.SecondRow>\n  </S.SocialMediaContainer>\n)\n","import React, { useRef } from \"react\"\nimport { createPortal } from \"react-dom\"\n\ninterface Props {\n  children: React.ReactNode\n}\nexport const SidebarSocialMediaPortal = ({\n  children,\n}: Props) => {\n  const element = useRef(document.querySelector(\"#sidebar-end-portal-container\"))\n  return createPortal(children, element.current!)\n}\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { ToastContainer, ToastContainerProps } from \"react-toastify\"\nimport \"react-toastify/dist/ReactToastify.min.css\"\n\nimport { getColor } from \"@netdata/netdata-ui\"\n\nimport { notificationsZIndex } from \"styles/z-index\"\n\nconst WrappedToastContainer = ({\n  className,\n  ...rest\n}: ToastContainerProps & { className?: string }) => (\n  <div className={className}>\n    {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n    <ToastContainer {...rest} closeButton={false} />\n  </div>\n)\n\nexport const NotificationsContainer = styled(WrappedToastContainer)<ToastContainerProps>`\n  .Toastify__toast-container {\n    position: fixed;\n    width: unset;\n    min-width: 400px;\n    max-width: 500px;\n    ${notificationsZIndex};\n    color: ${getColor([\"neutral\", \"limedSpruce\"])};\n  }\n  .Toastify__toast {\n    padding: 0;\n    padding-top: 5px;\n  }\n  .Toastify__toast--error {\n    background: ${getColor([\"red\", \"lavender\"])};\n    border: 1px solid ${getColor(\"error\")};\n  }\n  .Toastify__toast--warning {\n  }\n  .Toastify__toast--success {\n    background: ${getColor([\"green\", \"frostee\"])};\n    border: 1px solid ${getColor(\"success\")};\n  }\n  .Toastify__toast-body {\n  }\n  .Toastify__progress-bar {\n    bottom: unset;\n    top: 0;\n  }\n  .Toastify__progress-bar--success {\n    background-color: ${getColor(\"success\")};\n  }\n  .Toastify__progress-bar--error {\n    background-color: ${getColor(\"error\")};\n  }\n`\n","import React from \"react\"\nimport { Icon, Flex } from \"@netdata/netdata-ui\"\n\nconst Item = ({ icon, children, hasBorder }) => (\n  <Flex\n    gap={2}\n    border={hasBorder && { side: \"right\", color: \"separator\" }}\n    alignItems=\"center\"\n    padding={[0, 3, 0, 0]}\n    height=\"100%\"\n  >\n    {!!icon && <Icon name={icon} color=\"bright\" height=\"15px\" />}\n    {children}\n  </Flex>\n)\n\nexport default Item\n","import React from \"react\"\nimport { Text } from \"@netdata/netdata-ui\"\nimport Item from \"../item\"\nimport { useSelector } from \"@/src/store/redux-separate-context\"\n\nconst hostNameSelector = state => {\n  const snapshot = state.global.snapshot\n  const data = state.global.chartsMetadata.data\n\n  if (!snapshot && !data) return \"\"\n  return snapshot ? snapshot.hostname : data.hostname\n}\n\nconst Node = () => {\n  const hostname = useSelector(hostNameSelector)\n\n  return (\n    <Item icon=\"node_hollow\">\n      <Text data-testid={`header-nodename-${hostname}`} color=\"bright\" strong truncate>\n        {hostname}\n      </Text>\n    </Item>\n  )\n}\n\nexport default Node\n","import React from \"react\"\nimport { Flex, TextSmall } from \"@netdata/netdata-ui\"\n\nconst tooltipBackground = [\"neutral\", \"black\"]\n\nconst CustomTooltip = ({ children, isBasic }) => (\n  <Flex\n    padding={[1.5, 2]}\n    margin={[2]}\n    background={tooltipBackground}\n    round={1}\n    {...(!isBasic && { width: { max: \"300px\" } })}\n  >\n    <TextSmall color=\"bright\">{children}</TextSmall>\n  </Flex>\n)\n\nexport default CustomTooltip\n","import React from \"react\"\nimport CustomTooltip from \"@/src/components/tooltips/customTooltip\"\n\nconst getContent = (content, { isBasic }) => {\n  const contentNode = typeof content === \"function\" ? content() : content\n  if (typeof content === \"string\" || isBasic) {\n    return <CustomTooltip isBasic={isBasic}>{contentNode}</CustomTooltip>\n  }\n  return contentNode\n}\n\nexport default getContent\n","import React, { useCallback } from \"react\"\nimport { Tooltip as BaseTooltip } from \"@netdata/netdata-ui\"\nimport getContent from \"./getContent\"\n\nconst Tooltip = ({ children, content, isBasic, ...rest }) => {\n  const getTooltipContent = useCallback(() => getContent(content, { isBasic }), [content, isBasic])\n  return (\n    <BaseTooltip plain animation content={getTooltipContent} {...rest}>\n      {children}\n    </BaseTooltip>\n  )\n}\n\nexport default Tooltip\n","import React, { useCallback } from \"react\"\nimport { Flex, Button } from \"@netdata/netdata-ui\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport { setGlobalPauseAction } from \"domains/global/actions\"\nimport { useDispatch } from \"store/redux-separate-context\"\n\nconst Options = () => {\n  const dispatch = useDispatch()\n  const onClick = useCallback(() => dispatch(setGlobalPauseAction()), [dispatch])\n  return (\n    <Flex gap={2} data-testid=\"header-options-button\">\n      <Tooltip content=\"Import a Netdata snapshot\" align=\"bottom\" plain>\n        <Button\n          flavour=\"borderless\"\n          neutral\n          themeType=\"dark\"\n          data-toggle=\"modal\"\n          data-target=\"#loadSnapshotModal\"\n          icon=\"download\"\n        />\n      </Tooltip>\n      <Tooltip content=\"Export a Netdata snapshot\" align=\"bottom\" plain>\n        <Button\n          onClick={onClick}\n          flavour=\"borderless\"\n          neutral\n          themeType=\"dark\"\n          data-toggle=\"modal\"\n          data-target=\"#saveSnapshotModal\"\n          icon=\"upload\"\n        />\n      </Tooltip>\n      <Tooltip content=\"Print the dashboard\" align=\"bottom\" plain>\n        <Button\n          flavour=\"borderless\"\n          neutral\n          themeType=\"dark\"\n          data-toggle=\"modal\"\n          data-target=\"#printPreflightModal\"\n          icon=\"print\"\n        />\n      </Tooltip>\n    </Flex>\n  )\n}\n\nexport default Options\n","import React from \"react\"\nimport { Button } from \"@netdata/netdata-ui\"\nimport Tooltip from \"@/src/components/tooltips\"\n\nimport { useHttp } from \"hooks/use-http\"\n\nconst NETDATA_LATEST_VERSION_URL = \"https://api.github.com/repos/netdata/netdata/releases/latest\"\nconst NETDATA_LATEST_GCS_VERSION_URL =\n  \"https://www.googleapis.com/storage/v1/b/netdata-nightlies/o/latest-version.txt\"\n\nconst transformGcsVersionResponse = data => data.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\")\n\nconst transformGithubResponse = data => data?.tag_name.replace(/(\\r\\n|\\n|\\r| |\\t)/gm, \"\")\n\nconst versionsMatch = (v1, v2) => {\n  if (v1 === v2) {\n    return true\n  }\n  let s1 = v1.split(\".\")\n  let s2 = v2.split(\".\")\n  // Check major version\n  let n1 = parseInt(s1[0].substring(1, 2), 10)\n  let n2 = parseInt(s2[0].substring(1, 2), 10)\n  if (n1 < n2) return false\n  if (n1 > n2) return true\n\n  // Check minor version\n  n1 = parseInt(s1[1], 10)\n  n2 = parseInt(s2[1], 10)\n  if (n1 < n2) return false\n  if (n1 > n2) return true\n\n  // Split patch: format could be e.g. 0-22-nightly\n  s1 = s1[2].split(\"-\")\n  s2 = s2[2].split(\"-\")\n\n  n1 = parseInt(s1[0], 10)\n  n2 = parseInt(s2[0], 10)\n  if (n1 < n2) return false\n  if (n1 > n2) return true\n\n  n1 = s1.length > 1 ? parseInt(s1[1], 10) : 0\n  n2 = s2.length > 1 ? parseInt(s2[1], 10) : 0\n  if (n1 < n2) return false\n  return true\n}\n\nconst VersionControl = ({ currentVersion, releaseChannel }) => {\n  const isStableReleaseChannel = releaseChannel === \"stable\"\n  const [githubVersion] = useHttp(NETDATA_LATEST_VERSION_URL, isStableReleaseChannel, true)\n\n  const [gcsVersionResponse] = useHttp(NETDATA_LATEST_GCS_VERSION_URL, !isStableReleaseChannel)\n  const [mediaLinkResponse] = useHttp(gcsVersionResponse?.mediaLink, Boolean(gcsVersionResponse))\n\n  const latestVersion = isStableReleaseChannel\n    ? transformGithubResponse(githubVersion)\n    : mediaLinkResponse\n    ? transformGcsVersionResponse(mediaLinkResponse)\n    : null\n\n  if (!latestVersion) {\n    return null\n  }\n  const isNewVersionAvailable = !versionsMatch(currentVersion, latestVersion)\n\n  return (\n    <Tooltip content={isNewVersionAvailable ? \"Need help?\" : \"Check Version\"} align=\"bottom\" plain>\n      <Button\n        data-testid=\"header-version-control-button\"\n        flavour=\"borderless\"\n        themeType=\"dark\"\n        small\n        neutral={!isNewVersionAvailable}\n        warning={isNewVersionAvailable}\n        name={isNewVersionAvailable ? \"update_pending\" : \"update\"}\n        icon={isNewVersionAvailable ? \"update_pending\" : \"update\"}\n        data-toggle=\"modal\"\n        data-target=\"#updateModal\"\n      />\n    </Tooltip>\n  )\n}\n\nexport default VersionControl\n","import React from \"react\"\nimport VersionControl from \"components/app-header/components/versionControl\"\nimport { useSelector } from \"@/src/store/redux-separate-context\"\n\nconst versionSelector = state => {\n  const { data } = state.global.chartsMetadata\n\n  if (!data) return null\n\n  const { version, release_channel: releaseChannel } = data\n  return {\n    version,\n    releaseChannel,\n  }\n}\n\nconst Version = () => {\n  const data = useSelector(versionSelector)\n  return (\n    data && <VersionControl currentVersion={data.version} releaseChannel={data.releaseChannel} />\n  )\n}\n\nexport default Version\n","import { useState, useCallback } from \"react\"\n\n/**\n * @example\n * const [value, toggle, toggleOn, toggleOff]  = useToggle(false);\n *\n * @param {Boolean} initialValue\n */\n\nconst useToggle = (initialValue = false) => {\n  const [value, setToggle] = useState(!!initialValue)\n  const toggle = useCallback(() => setToggle(oldValue => !oldValue), [])\n  const toggleOn = useCallback(() => setToggle(true), [])\n  const toggleOff = useCallback(() => setToggle(false), [])\n\n  return [value, toggle, toggleOn, toggleOff]\n}\n\nexport default useToggle\n","import { useEffect, useState } from \"react\"\n\nconst useLocalStorage = (key, defaultValue) => {\n  const [value, setValue] = useState(() => getValueFromStorage(key, defaultValue))\n\n  useEffect(() => localStorage.setItem(key, JSON.stringify(value)), [key, value])\n\n  return [value, setValue]\n}\n\nconst getValueFromStorage = (key, defaultValue = \"\") =>\n  JSON.parse(localStorage.getItem(key)) ?? defaultValue\n\nexport default useLocalStorage\n","import styled from \"styled-components\"\nimport { getColor, getSizeBy, Icon } from \"@netdata/netdata-ui\"\nimport { Menu } from \"@rmwc/menu\"\n\nexport const RootContainer = styled.div`\n  width: 100%;\n  height: 100%;\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n`\n\nexport const StyledMenu = styled(Menu)``\n\nexport const DropdownContainer = styled.div`\n  cursor: pointer;\n  color: ${getColor(\"bright\")};\n  .mdc-menu-surface {\n    border-radius: 0;\n    .mdc-list {\n      padding: 0;\n    }\n    .mdc-list-item {\n      padding: 0 ${getSizeBy(5)} 0 ${getSizeBy(5)};\n      font-size: 14px;\n      height: ${getSizeBy(6)};\n    }\n  }\n`\n\nexport const ListContainer = styled.div`\n  padding: ${getSizeBy(3)} 0;\n`\n\nexport const OpenerIcon = styled(Icon)`\n  flex-shrink: 0;\n  flex-grow: 0;\n  margin-left: ${({ noMargin }) => (noMargin ? \"unset\" : \"16px\")};\n  fill: ${getColor(\"bright\")};\n  width: 10px;\n  height: 5px;\n`\n","import styled from \"styled-components\"\nimport { getColor, getSizeBy, Icon, Drop } from \"@netdata/netdata-ui\"\nimport { Dropdown } from \"@/src/components/mdx-components/dropdown\"\nimport { dialogsZIndex, customDropdownZIndex } from \"@/src/styles/z-index\"\n\nexport const PickerBox = styled.div`\n  display: flex;\n  position: relative;\n  min-width: ${getSizeBy(102)};\n  min-height: ${getSizeBy(43)};\n  flex-direction: column;\n  align-items: flex-end;\n  background-color: ${getColor(\"mainBackground\")};\n  color: ${getColor(\"text\")};\n  z-index: ${dialogsZIndex};\n  border-radius: 8px;\n`\n\nexport const StyledTimePeriod = styled.span`\n  margin-top: ${getSizeBy(3)};\n  cursor: pointer;\n  width: 187px;\n  height: ${getSizeBy(2)};\n  &:first-of-type {\n    margin-top: ${getSizeBy(1)};\n  }\n  &:last-of-type {\n    margin-bottom: ${getSizeBy(1)};\n  }\n  & > span:hover {\n    color: ${getColor(\"textLite\")};\n  }\n`\nexport const StyledCustomTimePeriod = styled.span`\n  margin: ${getSizeBy(1)} ${getSizeBy(3)} 0;\n  color: ${({ isSelected, theme }) => getColor(isSelected ? \"primary\" : \"text\")({ theme })};\n  cursor: pointer;\n  &:first-of-type {\n    margin-top: 0;\n  }\n  &:hover {\n    color: ${getColor(\"textLite\")};\n  }\n`\n\nexport const StyledDropdown = styled(Dropdown)`\n  width: 88px;\n  height: 32px;\n  padding-top: 8px;\n  padding-bottom: 8px;\n  padding-left: 8px;\n  padding-right: 7px;\n  border: 1px solid ${getColor(\"border\")};\n  box-sizing: border-box;\n  border-radius: 4px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  color: ${getColor(\"text\")};\n  .mdc-menu-surface--anchor {\n    .mdc-menu-surface--open {\n      ${customDropdownZIndex}\n      margin-top: ${getSizeBy(2)};\n      background: ${getColor(\"mainBackground\")};\n      border-radius: 4px;\n    }\n  }\n  .mdc-list {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n  }\n`\nexport const DropdownIcon = styled(Icon)`\n  fill: ${getColor(\"text\")};\n  width: 12px;\n  height: 12px;\n`\n\nexport const CustomInput = styled.input`\n  border: 1px solid ${getColor(\"border\")};\n  color: inherit;\n  background: ${getColor(\"mainBackground\")};\n  box-sizing: border-box;\n  border-radius: 4px;\n  padding: 4px;\n  width: 32px;\n  height: 32px;\n  margin-left: 10px;\n  margin-right: 10px;\n  outline: none;\n  &:focus {\n    border: 1px solid ${getColor(\"primary\")};\n  }\n`\nexport const StyledDrop = styled(Drop).attrs({\n  background: \"mainBackground\",\n  round: 2,\n  margin: [4, 0, 0],\n  border: { side: \"all\", color: \"elementBackground\" },\n  animation: true,\n})`\n  box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`\nexport const StyledHR = styled.hr`\n  border: none;\n  margin: 0;\n  border-left: 1px solid ${getColor(\"borderSecondary\")};\n  height: 284px;\n`\n","import React, { useRef } from \"react\"\nimport { List } from \"@rmwc/list\"\nimport { MenuSurfaceAnchor, MenuSurface } from \"@rmwc/menu\"\nimport { RootContainer, ListContainer, DropdownContainer, OpenerIcon } from \"./styled\"\n\nexport const Dropdown = ({\n  title,\n  children,\n  className,\n  renderTitle,\n  isOpen = false,\n  onMenuToggle,\n  anchorCorner = \"bottomStart\",\n  renderOpener,\n}) => {\n  const ref = useRef()\n\n  const handleOpenState = () => {\n    onMenuToggle(!isOpen)\n  }\n\n  const handleClose = () => {\n    onMenuToggle(false)\n  }\n\n  return (\n    <DropdownContainer className={className}>\n      <MenuSurfaceAnchor>\n        <MenuSurface ref={ref} open={isOpen} onClose={handleClose} anchorCorner={anchorCorner}>\n          {typeof children === \"function\" ? (\n            isOpen && (\n              <ListContainer>\n                <List>{children({ maxHeight: ref.current?.root.ref.style.maxHeight })}</List>\n              </ListContainer>\n            )\n          ) : (\n            <ListContainer>\n              <List>{children}</List>\n            </ListContainer>\n          )}\n        </MenuSurface>\n        <RootContainer onClick={handleOpenState}>\n          {title || (renderTitle && renderTitle())}\n          {renderOpener ? (\n            renderOpener()\n          ) : (\n            <OpenerIcon name=\"triangle_down\" noMargin={Boolean(renderTitle)} />\n          )}\n        </RootContainer>\n      </MenuSurfaceAnchor>\n    </DropdownContainer>\n  )\n}\n","import React, { memo, useCallback } from \"react\"\nimport { Text } from \"@netdata/netdata-ui\"\nimport { StyledTimePeriod } from \"./styled\"\n\nconst TimePeriod = ({ value, period, resolution, isSelected, setTimeRange, tagging }) => {\n  const onClick = useCallback(\n    () => setTimeRange(value, resolution),\n    [value, resolution, setTimeRange]\n  )\n  return (\n    <StyledTimePeriod\n      key={value}\n      onClick={onClick}\n      data-ga={`date-picker::click-quick-selector::${tagging}::${-value}`}\n      data-testid=\"timePeriod-value\"\n    >\n      <Text color={isSelected ? \"primary\" : \"text\"}>{period}</Text>\n    </StyledTimePeriod>\n  )\n}\n\nexport default memo(TimePeriod)\n","import { format, formatDistanceStrict, parse, getTime, getUnixTime, add, isMatch } from \"date-fns\"\n\nconst MINUTE = 60\nconst HOUR = MINUTE * 60\nconst DAY = HOUR * 24\nconst MONTH = 30 * DAY\n\nexport const maxTimePeriodInUnix = 94694400\nexport const dateResolutions = [\"minutes\", \"hours\", \"days\", \"months\"]\n\nconst resolutionsMapping = {\n  minutes: MINUTE,\n  hours: HOUR,\n  days: DAY,\n  months: MONTH,\n}\n\nexport const getCustomTimePeriod = (after, resolution) =>\n  Math.round(after / resolutionsMapping[resolution])\n\nexport const parseInputPeriod = (timeCorrection, resolution) => {\n  const customRange = add(new Date(0), {\n    [resolution]: timeCorrection,\n  })\n  return -getUnixTime(customRange)\n}\n\nconst focusTaggingMap = {\n  startDate: \"start\",\n  endDate: \"finish\",\n}\n\nexport const getFocusTagging = focusedInput => focusTaggingMap[focusedInput]\n\nexport const timePeriods = [\n  { period: \"Last 5 minutes\", value: -5 * MINUTE, resolution: \"minutes\" },\n  { period: \"Last 15 minutes\", value: -15 * MINUTE, resolution: \"minutes\" },\n  { period: \"Last 30 minutes\", value: -30 * MINUTE, resolution: \"minutes\" },\n  { period: \"Last 2 hours\", value: -2 * HOUR, resolution: \"hours\" },\n  { period: \"Last 6 hours\", value: -6 * HOUR, resolution: \"hours\" },\n  { period: \"Last 12 hours\", value: -12 * HOUR, resolution: \"hours\" },\n  { period: \"Last Day\", value: -DAY, resolution: \"days\" },\n  { period: \"Last 2 Days\", value: -2 * DAY, resolution: \"days\" },\n  { period: \"Last 7 Days\", value: -7 * DAY, resolution: \"days\" },\n]\n\nexport const formatDates = (startDate, endDate) => {\n  const formattedStartDate = format(startDate, \"MMMM d yyyy, H:mm:ss\")\n  const formattedEndDate = format(endDate, \"MMMM d yyyy, H:mm:ss\")\n  return {\n    formattedStartDate,\n    formattedEndDate,\n  }\n}\n\nexport const formatOffset = offset => {\n  if (!offset) return \"+00:00\"\n  const splitOffset = offset.toString().split(\".\")\n  const mathSign = splitOffset[0] > 0 ? \"+\" : \"-\"\n  const absoluteNumber = Math.abs(splitOffset[0]).toString()\n  const firstPart = `${mathSign}${absoluteNumber.padStart(2, 0)}`\n  return splitOffset.length > 1\n    ? `${firstPart}:${String(splitOffset[1] * 0.6).padEnd(2, 0)}`\n    : `${firstPart}:00`\n}\n\nexport const getDateWithOffset = (date, utcOffset) => {\n  const formattedDate = isMatch(date, \"MMMM d yyyy, H:mm\")\n    ? date\n    : parse(date, \"MMMM d yyyy, H:mm\", Date.now())\n  return parse(`${formattedDate} ${formatOffset(utcOffset)}`, \"MMMM d yyyy, H:mm xxx\", Date.now())\n}\n\nexport const getTimePeriod = (startDate, endDate) =>\n  formatDistanceStrict(getTime(startDate), getTime(endDate))\n","import React from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport TimePeriod from \"./timePeriod\"\nimport { timePeriods } from \"./utils\"\n\nconst TimePeriods = ({ handleTimePeriodChange, selectedDate, tagging }) => (\n  <Flex\n    column\n    justifyContent=\"start\"\n    alignItems=\"start\"\n    height={{ max: \"240px\" }}\n    overflow={{ vertical: \"scroll\" }}\n    data-testid=\"timePeriods\"\n  >\n    {timePeriods.map(({ period, value, resolution }) => (\n      <TimePeriod\n        key={value}\n        value={value}\n        period={period}\n        resolution={resolution}\n        setTimeRange={handleTimePeriodChange}\n        isSelected={selectedDate === value}\n        tagging={tagging}\n      />\n    ))}\n  </Flex>\n)\n\nexport default TimePeriods\n","import React, { useCallback, useEffect, useState } from \"react\"\nimport { isValid, add, getUnixTime } from \"date-fns\"\nimport { Flex, Text } from \"@netdata/netdata-ui\"\nimport {\n  getCustomTimePeriod,\n  parseInputPeriod,\n  dateResolutions,\n  maxTimePeriodInUnix,\n} from \"./utils\"\nimport { StyledDropdown, DropdownIcon, CustomInput, StyledCustomTimePeriod } from \"./styled\"\n\nconst CustomTimePeriod = ({ handleTimePeriodChange, value, resolution, tagging }) => {\n  const getInputValue = () => (value <= 0 ? getCustomTimePeriod(-value, resolution) : 0)\n  const [inputValue, setInputValue] = useState(getInputValue)\n  const [isDropdownOpen, toggleDropdown] = useState(false)\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useEffect(() => setInputValue(getInputValue()), [value])\n\n  const onChange = useCallback(e => setInputValue(e.target.value), [])\n\n  const onBlur = useCallback(\n    e => {\n      const currentValue = Number(e.currentTarget.value)\n      const isValidInput =\n        !Number.isNaN(currentValue) && Number.isInteger(currentValue) && currentValue > 0\n      const timePeriod = add(new Date(0), {\n        [resolution]: currentValue,\n      })\n      const isValidTimePeriod =\n        isValidInput && isValid(timePeriod) && getUnixTime(timePeriod) <= maxTimePeriodInUnix\n      if (isValidTimePeriod)\n        return handleTimePeriodChange(parseInputPeriod(currentValue, resolution), resolution)\n      return value <= 0 ? setInputValue(getCustomTimePeriod(-value, resolution)) : setInputValue(0)\n    },\n    [resolution, value, handleTimePeriodChange]\n  )\n\n  const onChangeResolution = useCallback(\n    newResolution => {\n      return () => {\n        handleTimePeriodChange(parseInputPeriod(inputValue, newResolution), newResolution)\n        toggleDropdown(false)\n      }\n    },\n    [inputValue, handleTimePeriodChange]\n  )\n\n  const renderTitle = () => (\n    <Flex alignItems=\"center\" flexWrap={false} width=\"100%\">\n      <Text padding={[0, 4, 0, 0]}>{resolution}</Text>\n      <DropdownIcon name=\"triangle_down\" />\n    </Flex>\n  )\n  return (\n    <Flex\n      justifyContent=\"start\"\n      alignItems=\"center\"\n      height={8}\n      data-ga={`date-picker::click-last-integer::${tagging}`}\n      data-testid=\"customTimePeriod\"\n    >\n      <Text>Last</Text>\n      <CustomInput\n        value={inputValue}\n        onChange={onChange}\n        onBlur={onBlur}\n        data-ga={`date-picker::click-last-integer::${tagging}::${inputValue}`}\n        data-testid=\"timePeriod-timeInput\"\n      />\n      <StyledDropdown\n        isOpen={isDropdownOpen}\n        onMenuToggle={toggleDropdown}\n        renderTitle={renderTitle}\n        renderOpener={() => null}\n      >\n        {() =>\n          dateResolutions.map(dateResolution => (\n            <StyledCustomTimePeriod\n              key={dateResolution}\n              onClick={onChangeResolution(dateResolution)}\n              data-ga={`date-picker::click-last-time-${dateResolution}::${tagging}`}\n              data-testid=\"timePeriod-option\"\n            >\n              {dateResolution}\n            </StyledCustomTimePeriod>\n          ))\n        }\n      </StyledDropdown>\n    </Flex>\n  )\n}\n\nexport default CustomTimePeriod\n","import React from \"react\"\nimport DatePickerLib from \"react-datepicker\"\nimport \"react-datepicker/dist/react-datepicker.css\"\n\nconst DatePicker = ({\n  selected,\n  selectsStart = false,\n  selectsEnd = false,\n  startDate,\n  endDate,\n  onChange,\n  minDate,\n  maxDate,\n  dateFormat = \"MM/dd/yyyy\",\n  open = false,\n  startOpen = false,\n  inline = false,\n  selectsRange = false,\n  monthsShown = 1,\n  showPopperArrow = true,\n  calendarContainer = null,\n}) => (\n  <DatePickerLib\n    selected={selected}\n    onChange={onChange}\n    selectsStart={selectsStart}\n    selectsEnd={selectsEnd}\n    startDate={startDate}\n    endDate={endDate}\n    minDate={minDate}\n    maxDate={maxDate}\n    dateFormat={dateFormat}\n    open={open}\n    startOpen={startOpen}\n    inline={inline}\n    selectsRange={selectsRange}\n    monthsShown={monthsShown}\n    showPopperArrow={showPopperArrow}\n    calendarContainer={calendarContainer}\n  />\n)\n\nexport default DatePicker\n","import { getColor, getRgbColor } from \"@netdata/netdata-ui\"\nimport styled from \"styled-components\"\n\nexport const StyledDateInput = styled.input`\n  width: 100%;\n  text-align: center;\n  border: 1px solid ${getColor(\"border\")};\n  color: inherit;\n  background: ${getColor(\"mainBackground\")};\n  box-sizing: border-box;\n  border-radius: 4px;\n  padding: 4px;\n  height: 32px;\n  margin-left: 20px;\n  margin-right: 20px;\n  outline: none;\n  &:focus {\n    border: 1px solid ${getColor(\"primary\")};\n  }\n`\nexport const StyledCalendar = styled.div`\n  background: ${getColor(\"mainBackground\")};\n  border: 0;\n  .react-datepicker {\n    &__navigation {\n      top: 8px;\n      &-icon::before {\n        border-color: ${getColor(\"text\")};\n      }\n    }\n    &__header {\n      background: ${getColor(\"mainBackground\")};\n      border: 0;\n      .react-datepicker__current-month {\n        color: ${getColor(\"main\")};\n        font-weight: normal;\n      }\n      .react-datepicker__day-name {\n        color: ${getColor(\"textLite\")};\n      }\n    }\n    &__day {\n      color: ${getColor(\"main\")};\n      &:hover {\n        background: ${getColor(\"elementBackground\")};\n      }\n      &--disabled {\n        color: ${getColor(\"textLite\")};\n        &:hover {\n          background: inherit;\n        }\n      }\n      &--keyboard-selected,\n      &--keyboard-selected:hover {\n        color: ${getColor(\"main\")};\n        background: inherit;\n        border-radius: inherit;\n      }\n      &--selected,\n      &--selected:hover {\n        color: ${getColor(\"bright\")};\n        background: ${getColor(\"primary\")};\n        border-radius: 8px;\n      }\n      &--in-selecting-range,\n      &--in-range {\n        color: ${getColor(\"primary\")};\n        background: ${getColor(\"elementBackground\")};\n        border-radius: 0;\n      }\n      &--selecting-range-start,\n      &--range-start {\n        color: ${getColor(\"bright\")};\n        background: ${getColor(\"primary\")};\n        border-top-left-radius: 8px;\n        border-bottom-left-radius: 8px;\n        &:hover {\n          color: ${getColor(\"bright\")};\n          background: ${getRgbColor([\"green\", \"netdata\"], 0.8)};\n          border-radius: 0;\n          border-top-left-radius: 8px;\n          border-bottom-left-radius: 8px;\n        }\n      }\n      &--selecting-range-end,\n      &--range-end {\n        color: ${getColor(\"bright\")};\n        background: ${getColor(\"primary\")};\n        border-top-right-radius: 8px;\n        border-bottom-right-radius: 8px;\n        &:hover {\n          color: ${getColor(\"bright\")};\n          background: ${getRgbColor([\"green\", \"netdata\"], 0.8)};\n          border-top-right-radius: 8px;\n          border-bottom-right-radius: 8px;\n        }\n      }\n    }\n  }\n`\n","import React, { useState, useEffect, useCallback } from \"react\"\nimport { format, isValid, getTime } from \"date-fns\"\nimport { getDateWithOffset } from \"./utils\"\nimport { StyledDateInput } from \"../datePicker/styled\"\nimport { useDateTime } from \"@/src/utils/date-time\"\n\nconst DatePickerInput = ({\n  name = \"\",\n  value = \"\",\n  onDatesChange,\n  onFocus,\n  placeholderText = \"\",\n}) => {\n  const { utcOffset } = useDateTime()\n  const [inputValue, setInputValue] = useState(\"\")\n  const onChange = useCallback(e => {\n    const date = e.target.value\n    setInputValue(date)\n  }, [])\n  const setFormattedValue = useCallback(value => {\n    if (isValid(value)) {\n      const formattedDate = format(value, \"MMMM d yyyy, H:mm\")\n      setInputValue(formattedDate)\n    }\n  }, [])\n  const onBlur = useCallback(\n    e => {\n      const parsedDate = getDateWithOffset(e.target.value, utcOffset)\n      const isValidDate = isValid(parsedDate) && getTime(parsedDate) > 0\n      if (isValidDate) {\n        const timestamp = getTime(parsedDate)\n        onDatesChange(timestamp, () => setFormattedValue(value))\n      } else setFormattedValue(value)\n    },\n    [value, utcOffset, onDatesChange, setFormattedValue]\n  )\n\n  useEffect(() => setFormattedValue(value), [value, setFormattedValue])\n\n  return (\n    <StyledDateInput\n      type=\"text\"\n      name={name}\n      value={value ? inputValue : placeholderText}\n      onChange={onChange}\n      onBlur={onBlur}\n      onFocus={onFocus}\n      placeholder={placeholderText}\n      data-testid=\"datePicker-input\"\n    />\n  )\n}\n\nexport default DatePickerInput\n","import { useDateTime } from \"@/src/utils/date-time\"\nimport { useCallback } from \"react\"\n\nconst useLocaleDate = () => {\n  const { localeTimeString, localeDateString } = useDateTime()\n  return useCallback(\n    date => {\n      return `${localeDateString(date, { locale: \"en-us\", long: false })} ${localeTimeString(date, {\n        secs: false,\n      })}`\n    },\n    [localeTimeString, localeDateString]\n  )\n}\n\nexport default useLocaleDate\n","import { useMemo } from \"react\"\nimport { toDate } from \"date-fns\"\nimport useLocaleDate from \"./useLocaleDate\"\n\nexport const convertTimestampToDate = (timestamp, getLocaleDate) => {\n  if (timestamp > 0) {\n    return toDate(new Date(getLocaleDate(timestamp)))\n  } else if (timestamp || timestamp === 0)\n    return toDate(new Date(getLocaleDate(new Date().valueOf() + timestamp * 1000)))\n  return null\n}\n\nconst useConvertedDates = (startDate, endDate) => {\n  const getLocaleDate = useLocaleDate()\n  return useMemo(\n    () => [\n      convertTimestampToDate(startDate, getLocaleDate),\n      convertTimestampToDate(endDate, getLocaleDate),\n    ],\n    [startDate, endDate, getLocaleDate]\n  )\n}\n\nexport default useConvertedDates\n","import { Flex } from \"@netdata/netdata-ui\"\nimport React, { useCallback } from \"react\"\nimport { getTime, isBefore, format } from \"date-fns\"\nimport { useDateTime } from \"@/src/utils/date-time\"\nimport DatePicker from \"../datePicker/datePickerLib\"\nimport DatePickerInput from \"./datePickerInput\"\nimport useConvertedDates, { convertTimestampToDate } from \"./useConvertedDate\"\nimport useLocaleDate from \"./useLocaleDate\"\nimport { getDateWithOffset } from \"./utils\"\nimport { StyledCalendar } from \"../datePicker/styled\"\n\nconst DatePickerWrapper = ({\n  startDate,\n  setStartDate,\n  endDate,\n  setEndDate,\n  onDatesChange,\n  onInputFocus,\n}) => {\n  const getLocaleDate = useLocaleDate()\n  const [convertedStartDate, convertedEndDate] = useConvertedDates(startDate, endDate)\n  const { utcOffset } = useDateTime()\n  const setValidStartDate = useCallback(\n    (startDate, setPreviousValue) =>\n      isBefore(convertTimestampToDate(startDate, getLocaleDate), convertedEndDate)\n        ? setStartDate(startDate)\n        : setPreviousValue(),\n    [convertedEndDate, getLocaleDate, setStartDate]\n  )\n\n  const setValidEndDate = useCallback(\n    (endDate, setPreviousValue) =>\n      isBefore(convertedStartDate, convertTimestampToDate(endDate, getLocaleDate))\n        ? setEndDate(endDate)\n        : setPreviousValue(),\n    [convertedStartDate, getLocaleDate, setEndDate]\n  )\n\n  const onChange = useCallback(\n    dates => {\n      const [startDate, endDate] = dates\n\n      const startDateWithOffset = startDate\n        ? getDateWithOffset(format(startDate, \"MMMM d yyyy, H:mm\"), utcOffset)\n        : startDate\n      const endDateWithOffset = endDate\n        ? getDateWithOffset(format(endDate, \"MMMM d yyyy, H:mm\"), utcOffset)\n        : endDate\n\n      const startDateTimestamp = getTime(startDateWithOffset) || null\n      const endDateTimestamp = getTime(endDateWithOffset) || null\n\n      onDatesChange(startDateTimestamp, endDateTimestamp)\n    },\n    [utcOffset, onDatesChange]\n  )\n\n  return (\n    <Flex\n      column\n      justifyContent=\"center\"\n      alignItems=\"center\"\n      flex={{ grow: 1 }}\n      gap={3}\n      margin={[0, 0, 0, 7]}\n      data-testid=\"datePicker-wrapper\"\n    >\n      <DatePicker\n        selected={convertedStartDate}\n        onChange={onChange}\n        startDate={convertedStartDate}\n        endDate={convertedEndDate}\n        maxDate={new Date()}\n        minDate={new Date(\"1/1/2018\")}\n        inline\n        selectsRange\n        monthsShown={2}\n        dateFormat=\"MMMM d yyyy, H:mm\"\n        showPopperArrow={false}\n        calendarContainer={StyledCalendar}\n      />\n      <Flex justifyContent=\"around\" alignItems=\"center\" width=\"100%\">\n        <DatePickerInput\n          name=\"startDate\"\n          value={convertedStartDate}\n          onDatesChange={setValidStartDate}\n          onFocus={onInputFocus}\n          placeholderText=\"Select a start date\"\n        />\n        <DatePickerInput\n          name=\"endDate\"\n          value={convertedEndDate}\n          onDatesChange={setValidEndDate}\n          onFocus={onInputFocus}\n          placeholderText=\"Select an end date\"\n        />\n      </Flex>\n    </Flex>\n  )\n}\n\nexport default DatePickerWrapper\n","import React, { useMemo } from \"react\"\nimport { Flex, Icon, TextSmall } from \"@netdata/netdata-ui\"\nimport { formatDates, getTimePeriod } from \"./utils\"\nimport useConvertedDates from \"./useConvertedDate\"\n\nconst PeriodIndication = ({ startDate, endDate }) => {\n  const [convertedStart, convertedEnd] = useConvertedDates(startDate, endDate)\n\n  const { formattedStartDate, formattedEndDate } = useMemo(\n    () => formatDates(convertedStart, convertedEnd),\n    [convertedStart, convertedEnd]\n  )\n  const timePeriod = useMemo(\n    () => getTimePeriod(convertedStart, convertedEnd),\n    [convertedStart, convertedEnd]\n  )\n\n  return (\n    <Flex alignItems=\"center\" justifyContent=\"between\" gap={2}>\n      <Flex alignItems=\"center\" justifyContent=\"center\" gap={1.5}>\n        <TextSmall strong whiteSpace=\"nowrap\">\n          From\n        </TextSmall>\n        <TextSmall whiteSpace=\"nowrap\" data-testid=\"periodIndication-from\">\n          {formattedStartDate}\n        </TextSmall>\n      </Flex>\n      <Icon name=\"arrow_left\" size=\"small\" color=\"textLite\" rotate={2} />\n      <Flex alignItems=\"center\" justifyContent=\"center\" gap={1.5}>\n        <TextSmall strong whiteSpace=\"nowrap\">\n          To\n        </TextSmall>\n        <TextSmall whiteSpace=\"nowrap\" data-testid=\"periodIndication-to\">\n          {formattedEndDate}\n        </TextSmall>\n      </Flex>\n      <Flex alignItems=\"center\" justifyContent=\"center\" gap={2}>\n        <TextSmall whiteSpace=\"nowrap\">/</TextSmall>\n        <TextSmall color=\"textLite\" whiteSpace=\"nowrap\" data-testid=\"periodIndication-period\">\n          {timePeriod}\n        </TextSmall>\n      </Flex>\n    </Flex>\n  )\n}\n\nexport default PeriodIndication\n","import moment from \"moment\"\n\nexport const SECONDS = 1000\nexport const MINUTE = SECONDS * 60\nexport const HOUR = MINUTE * 60\nexport const DAY = HOUR * 24\nexport const MONTH = DAY * 30\n\nconst resolutionMap = [\n  { value: DAY, unit: \"d\" },\n  { value: HOUR, unit: \"h\" },\n  { value: MINUTE, unit: \"min\" },\n  { value: MINUTE, unit: \"min\" },\n  { value: SECONDS, unit: \"s\" },\n]\n\nexport const getStartDate = start =>\n  start < 0 ? moment(new Date()).add(start, \"seconds\") : moment(start)\nexport const getEndDate = end => (!end ? moment(new Date()) : moment(end))\nexport const getIsSameDate = (startDate, endDate) => startDate.isSame(endDate, \"day\")\nexport const getDuration = (startDate, endDate) => moment.duration(startDate.diff(endDate))\n\nconst getResolution = (value, resolution) => (value > 1 ? `${Math.floor(value)}${resolution}` : \"\")\n\nexport const getGranularDuration = duration => {\n  let seconds = Math.abs(duration)\n  const showSeconds = seconds < MINUTE\n  return resolutionMap.reduce((acc, { value, unit }) => {\n    if (value === SECONDS && !showSeconds) return acc\n    acc = acc + getResolution(seconds / value, unit)\n    seconds = seconds % value\n    return acc\n  }, \"\")\n}","import styled from \"styled-components\"\nimport { Flex, getColor } from \"@netdata/netdata-ui\"\n\nconst Container = styled(Flex)`\n  cursor: pointer;\n\n  &:hover * {\n    color: ${getColor(\"textLite\")};\n    fill: ${getColor(\"textLite\")};\n  }\n`\n\nexport default Container\n","import React from \"react\"\nimport { Flex, TextSmall, Icon } from \"@netdata/netdata-ui\"\nimport { useDateTime } from \"utils/date-time\"\n\nconst DateBox = ({ isPlaying, startDate, endDate, isSameDate }) => {\n  const { localeTimeString, localeDateString } = useDateTime()\n  return (\n    <Flex gap={2}>\n      <TextSmall color=\"text\" whiteSpace=\"nowrap\">\n        {localeDateString(startDate, { long: false })} •{\" \"}\n        <TextSmall color={isPlaying ? \"accent\" : \"textFocus\"} whiteSpace=\"nowrap\">\n          {localeTimeString(startDate, { secs: false })}\n        </TextSmall>\n      </TextSmall>\n      <Icon name=\"arrow_left\" color={isPlaying ? \"accent\" : \"textFocus\"} size=\"small\" rotate={2} />\n      <TextSmall color=\"text\" whiteSpace=\"nowrap\">\n        {!isSameDate && `${localeDateString(endDate, { long: false })} • `}\n        <TextSmall color={isPlaying ? \"accent\" : \"textFocus\"} whiteSpace=\"nowrap\">\n          {localeTimeString(endDate, { secs: false })}\n        </TextSmall>\n      </TextSmall>\n    </Flex>\n  )\n}\n\nexport default DateBox\n","import React from \"react\"\nimport { Flex, TextSmall } from \"@netdata/netdata-ui\"\n\nconst DurationBox = ({ isPlaying, duration }) => {\n  return (\n    <Flex gap={1}>\n      <Flex width=\"24px\" justifyContent=\"center\">\n        {isPlaying && (\n          <TextSmall color=\"text\" whiteSpace=\"nowrap\">\n            • last\n          </TextSmall>\n        )}\n      </Flex>\n      <TextSmall color=\"text\" whiteSpace=\"nowrap\">\n        {duration}\n      </TextSmall>\n    </Flex>\n  )\n}\n\nexport default DurationBox\n","import React, { useState, useMemo, useEffect, forwardRef } from \"react\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport { useSelector as useDashboardSelector } from \"store/redux-separate-context\"\nimport { selectGlobalPanAndZoom } from \"domains/global/selectors\"\nimport {\n  getStartDate,\n  getEndDate,\n  getIsSameDate,\n  getDuration,\n  MINUTE,\n  getGranularDuration,\n} from \"./utils\"\nimport Container from \"./container\"\nimport DateBox from \"./dateBox\"\nimport DurationBox from \"./durationBox\"\n\nconst PickerAccessorElement = forwardRef(\n  (\n    { onClick, start = 15 * MINUTE, end, isPlaying, isPickerOpen, setRangeValues, tagging },\n    ref\n  ) => {\n    const [timeframe, setTimeframe] = useState()\n    const startDate = getStartDate(start)\n    const endDate = getEndDate(end)\n    const globalPanAndZoom = useDashboardSelector(selectGlobalPanAndZoom)\n    useEffect(() => {\n      const after = getDuration(startDate, endDate).as(\"seconds\")\n      if (!isPlaying && timeframe !== after) setTimeframe(Math.round(after))\n      if (isPlaying && timeframe && !!globalPanAndZoom) {\n        setRangeValues({ start: Math.round(timeframe) })\n        setTimeframe(null)\n      }\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [startDate, endDate, timeframe, isPlaying])\n\n    const isSameDate = useMemo(() => getIsSameDate(startDate, endDate), [startDate, endDate])\n    const duration = useMemo(\n      () => getGranularDuration(getDuration(startDate, endDate).as(\"milliseconds\")),\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      [isPlaying, startDate, endDate]\n    )\n\n    return (\n      <Tooltip\n        content={isPickerOpen ? () => {} : \"Select a predefined or a custom timeframe\"}\n        align=\"bottom\"\n        plain\n      >\n        <Container\n          alignItems=\"center\"\n          justifyContent=\"center\"\n          gap={1}\n          height=\"100%\"\n          width={{ min: \"380px\" }}\n          onMouseDown={onClick}\n          padding={[0, 1]}\n          ref={ref}\n          data-ga={`date-picker::click-time::${tagging}`}\n          data-testid=\"datePicker-accessorElement\"\n        >\n          <DateBox\n            isPlaying={isPlaying}\n            endDate={endDate}\n            startDate={startDate}\n            isSameDate={isSameDate}\n          />\n          <DurationBox isPlaying={isPlaying} duration={duration} />\n        </Container>\n      </Tooltip>\n    )\n  }\n)\n\nexport default PickerAccessorElement\n","import React, { useState, useEffect, useMemo, useRef, useCallback } from \"react\"\nimport { Button, Flex } from \"@netdata/netdata-ui\"\nimport useToggle from \"hooks/useToggle\"\nimport useLocalStorage from \"hooks/useLocalStorage\"\nimport TimePeriods from \"./timePeriods\"\nimport CustomTimePeriod from \"./customTimePeriod\"\nimport DatePickerWrapper from \"./datePickerWrapper\"\nimport { getFocusTagging } from \"./utils\"\nimport PeriodIndication from \"./periodIndication\"\nimport AccessorElement from \"./accessorElement\"\nimport { PickerBox, StyledDrop, StyledHR } from \"./styled\"\n\nexport const reportEvent = (\n  eventCategory,\n  eventAction,\n  eventLabel,\n  eventValue,\n  event = \"gaCustomEvent\"\n) => {\n  if (window.dataLayer) {\n    const eventData = { event, eventCategory, eventAction, eventLabel, eventValue }\n    window.dataLayer.push(eventData)\n  }\n}\n\nconst DatePickerDrop = ({\n  onChange,\n  values: { start: initialStartDate, end: initialEndDate } = {},\n  defaultValue = -60 * 15,\n  tagging = \"\",\n  isPlaying,\n}) => {\n  const [startDate, setStartDate] = useState(initialStartDate)\n  const [endDate, setEndDate] = useState(initialStartDate)\n  const [resolution, setResolution] = useLocalStorage(\"resolution\", \"minutes\")\n  const [focusedInput, setFocusedInput] = useState(\"startDate\")\n  const [isOpen, toggle, , close] = useToggle()\n  const ref = useRef()\n\n  const setDates = useCallback(({ startDate, endDate }) => {\n    setStartDate(startDate)\n    setEndDate(endDate)\n  }, [])\n\n  useEffect(() => {\n    setDates({\n      startDate: initialStartDate,\n      endDate: initialEndDate,\n    })\n  }, [initialStartDate, initialEndDate, setDates])\n\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const clearChanges = useCallback(() => setDates({ startDate: defaultValue, endDate: 0 }), [])\n\n  const onInputFocus = useCallback(e => {\n    if (!e.target.name) return\n    setFocusedInput(e.target.name)\n  }, [])\n\n  const togglePicker = useCallback(\n    e => {\n      e.stopPropagation()\n      toggle()\n    },\n    [toggle]\n  )\n\n  const applyChanges = () => {\n    onChange({\n      start: startDate,\n      end: endDate,\n    })\n    close()\n  }\n\n  const focusTagging = useMemo(() => getFocusTagging(focusedInput), [focusedInput])\n\n  const isValidTimePeriod = startDate !== null && endDate !== null && startDate !== endDate\n  const isApplyDisabled = startDate === initialStartDate && endDate === initialEndDate\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  const consistentDefaultValue = useMemo(() => defaultValue, [])\n  const isClearDisabled = startDate === consistentDefaultValue\n\n  const handleTimePeriodChange = useCallback(\n    (time, resolution) => {\n      setResolution(resolution)\n      setDates({\n        startDate: time,\n        endDate: 0,\n      })\n    },\n    [setDates, setResolution]\n  )\n  const onDatepickerChange = (startDate, endDate) => {\n    setDates({ startDate, endDate })\n    const date = focusTagging === \"finish\" ? endDate || startDate : startDate || endDate\n    reportEvent(\"date-picker\", \"click-date-picker\", tagging, String(date))\n  }\n\n  const pickerDrop =\n    ref.current && isOpen ? (\n      <StyledDrop\n        target={ref.current}\n        canHideTarget={false}\n        align={{ top: \"bottom\", left: \"left\" }}\n        onEsc={close}\n        onClickOutside={close}\n      >\n        <PickerBox data-testid=\"datePicker\">\n          <Flex justifyContent=\"between\" alignItems=\"center\" width=\"100%\" padding={[6, 6, 0, 6]}>\n            <Flex column gap={3} margin={[0, 7, 0, 0]}>\n              <TimePeriods\n                handleTimePeriodChange={handleTimePeriodChange}\n                selectedDate={startDate}\n                tagging={tagging}\n              />\n              <CustomTimePeriod\n                handleTimePeriodChange={handleTimePeriodChange}\n                value={startDate}\n                resolution={resolution}\n                tagging={tagging}\n              />\n            </Flex>\n            <StyledHR />\n            <DatePickerWrapper\n              startDate={startDate}\n              endDate={endDate}\n              setStartDate={setStartDate}\n              setEndDate={setEndDate}\n              onDatesChange={onDatepickerChange}\n              onInputFocus={onInputFocus}\n            />\n          </Flex>\n          <Flex\n            alignItems=\"center\"\n            justifyContent={isValidTimePeriod ? \"between\" : \"end\"}\n            width=\"100%\"\n            padding={[5, 6]}\n            gap={2}\n          >\n            {isValidTimePeriod && <PeriodIndication startDate={startDate} endDate={endDate} />}\n            <Flex alignItems=\"center\" justifyContent=\"center\" gap={4}>\n              <Button\n                label=\"Clear\"\n                flavour=\"hollow\"\n                onClick={clearChanges}\n                disabled={isClearDisabled}\n                data-ga={`date-picker::click-clear::${tagging}-${focusTagging}`}\n                data-testid=\"datePicker-clear\"\n              />\n              <Button\n                label=\"Apply\"\n                onClick={applyChanges}\n                disabled={!isValidTimePeriod || isApplyDisabled}\n                data-ga={`date-picker::click-apply::${tagging}-${focusTagging}`}\n                data-testid=\"datePicker-apply\"\n              />\n            </Flex>\n          </Flex>\n        </PickerBox>\n      </StyledDrop>\n    ) : null\n\n  return (\n    <>\n      <AccessorElement\n        onClick={togglePicker}\n        tagging={tagging}\n        isPickerOpen={isOpen}\n        isPlaying={isPlaying}\n        setRangeValues={onChange}\n        start={initialStartDate}\n        end={initialEndDate}\n        ref={ref}\n      />\n      {pickerDrop}\n    </>\n  )\n}\n\nexport default DatePickerDrop\n","import React, { memo, useEffect, useMemo } from \"react\"\nimport {\n  useDispatch as useDashboardDispatch,\n  useSelector as useDashboardSelector,\n} from \"store/redux-separate-context\"\nimport {\n  resetGlobalPanAndZoomAction,\n  setGlobalPanAndZoomAction,\n  setDefaultAfterAction,\n} from \"domains/global/actions\"\nimport { selectDefaultAfter, selectGlobalPanAndZoom } from \"domains/global/selectors\"\nimport { setHashParams } from \"utils/hash-utils\"\nimport DatePickerDrop from \"./datePickerDrop\"\n\nconst ReduxDatePickerContainer = memo(({ tagging, isPlaying }) => {\n  const dashboardDispatch = useDashboardDispatch()\n\n  const globalPanAndZoom = useDashboardSelector(selectGlobalPanAndZoom)\n  const isGlobalPanAndZoom = Boolean(globalPanAndZoom)\n\n  const defaultAfter = useDashboardSelector(selectDefaultAfter)\n  const pickedValues = useMemo(\n    () =>\n      isGlobalPanAndZoom\n        ? { start: globalPanAndZoom.after, end: globalPanAndZoom.before }\n        : {\n            start: defaultAfter,\n            end: 0,\n          },\n    [isGlobalPanAndZoom, globalPanAndZoom, defaultAfter]\n  )\n\n  function handlePickedValuesChange(params) {\n    const { start, end } = params\n    if (start < 0) {\n      // live mode\n      dashboardDispatch(\n        // changes the default value, so it becomes inconsistent\n        setDefaultAfterAction({\n          after: start,\n        })\n      )\n      if (isGlobalPanAndZoom) {\n        dashboardDispatch(resetGlobalPanAndZoomAction())\n      }\n    } else {\n      // global-pan-and-zoom mode\n      dashboardDispatch(\n        setGlobalPanAndZoomAction({\n          after: start,\n          before: end,\n        })\n      )\n    }\n  }\n\n  useEffect(() => {\n    const { start, end } = pickedValues\n    const after = start.toString()\n    const before = end.toString()\n    if (window.urlOptions.after !== after || window.urlOptions.before !== before) {\n      window.urlOptions.netdataPanAndZoomCallback(true, after, before)\n    }\n    setHashParams({ after, before })\n  }, [pickedValues])\n  return (\n    <DatePickerDrop\n      values={pickedValues}\n      defaultValue={defaultAfter}\n      onChange={handlePickedValuesChange}\n      tagging={tagging}\n      isPlaying={isPlaying}\n    />\n  )\n})\n\nexport default ReduxDatePickerContainer\n","import styled from \"styled-components\"\nimport { Flex, getRgbColor } from \"@netdata/netdata-ui\"\n\nconst getBackground = ({ theme, isPlaying }) => {\n  const { name } = theme\n\n  const background =\n    name === \"Dark\"\n      ? getRgbColor(isPlaying ? [\"green\", \"netdata\"] : [\"neutral\", \"tuna\"], isPlaying ? 0.3 : 1)\n      : getRgbColor(isPlaying ? [\"green\", \"frostee\"] : [\"neutral\", \"blackhaze\"])\n\n  return background({ theme })\n}\n\nconst Container = styled(Flex)`\n  background: ${getBackground};\n`\n\nexport default Container\n","import styled from \"styled-components\"\nimport { Pill, getColor } from \"@netdata/netdata-ui\"\n\nconst getHoverColor = ({ isPlaying }) =>\n  getColor(isPlaying ? [\"green\", \"chateau\"] : [\"neutral\", \"iron\"])\n\nconst StyledPill = styled(Pill).attrs(({ isPlaying }) => ({\n  flavour: isPlaying ? \"success\" : \"neutral\",\n}))`\n  &:hover {\n    background: ${getHoverColor};\n    border-color: ${getHoverColor};\n  }\n`\n\nexport default StyledPill\n","import React, { useMemo } from \"react\"\nimport { useDispatch } from \"store/redux-separate-context\"\nimport { resetGlobalPauseAction, setGlobalPauseAction } from \"domains/global/actions\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport StyledPill from \"./styledPill\"\n\nconst getIcon = (isPlaying, isForcePlaying) => {\n  if (!isPlaying) return \"pauseSolid\"\n  return isForcePlaying ? \"forcePlay\" : \"playSolid\"\n}\n\nconst PlayPausePill = ({ isPlaying, isForcePlaying }) => {\n  const dispatch = useDispatch()\n\n  const onPlay = () => dispatch(resetGlobalPauseAction({ forcePlay: false }))\n  const onPause = () => dispatch(setGlobalPauseAction())\n  const icon = useMemo(() => getIcon(isPlaying, isForcePlaying), [isPlaying, isForcePlaying])\n\n  return (\n    <Tooltip content={isPlaying ? \"Click to pause\" : \"Click to play\"} align=\"bottom\" plain>\n      <StyledPill icon={icon} onClick={isPlaying ? onPause : onPlay} isPlaying={isPlaying}>\n        {isPlaying ? \"Playing\" : \"Paused\"}\n      </StyledPill>\n    </Tooltip>\n  )\n}\n\nexport default PlayPausePill\n","import React, { useCallback, forwardRef } from \"react\"\nimport styled from \"styled-components\"\nimport { getColor, Flex, Icon, Text } from \"@netdata/netdata-ui\"\n\nexport const PanelRowContainer = styled(Flex)`\n  cursor: pointer;\n\n  &:hover {\n    background: ${getColor(\"selected\")};\n  }\n\n  ${props => props.selected && `background: ${getColor(\"selected\")(props)};`}\n`\n\nconst MenuItem = forwardRef(\n  (\n    {\n      disabled,\n      children,\n      Wrapper = Text,\n      onClick,\n      testid,\n      icon,\n      padding = [2, 3],\n      margin = [0],\n      round = 0,\n      actions,\n      selected,\n      width = \"100%\",\n    },\n    ref\n  ) => {\n    const click = useCallback(() => {\n      if (disabled) return\n      if (onClick) onClick()\n    }, [onClick, disabled])\n\n    return (\n      <PanelRowContainer\n        ref={ref}\n        flexWrap={false}\n        justifyContent=\"between\"\n        alignItems=\"center\"\n        padding={padding}\n        margin={margin}\n        round={round}\n        onClick={click}\n        data-testid={testid}\n        width={width}\n        selected={selected}\n        disabled={disabled}\n      >\n        <Flex alignItems=\"center\" gap={3} flex basis=\"\">\n          {typeof icon === \"string\" ? (\n            <Icon name={icon} disabled={disabled} color=\"text\" height=\"16px\" width=\"16px\" />\n          ) : (\n            icon\n          )}\n          <Wrapper opacity={disabled ? \"medium\" : undefined} width=\"150px\">\n            {children}\n          </Wrapper>\n        </Flex>\n        {actions}\n      </PanelRowContainer>\n    )\n  }\n)\n\nexport default MenuItem\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, H4, Collapsible } from \"@netdata/netdata-ui\"\n\nexport const DefaultListHeader = styled(H4).attrs({ padding: [0], margin: [0] })`\n  cursor: pointer;\n`\n\nconst SectionHandle = ({ toggleOpen, label, testid, Header = DefaultListHeader }) => (\n  <Header data-testid={testid} onClick={toggleOpen}>\n    {label}\n  </Header>\n)\n\nconst ItemsList = ({ isOpen = false, toggleOpen, label, children, testid, Header }) => (\n  <Flex column>\n    <SectionHandle Header={Header} toggleOpen={toggleOpen} label={label} testid={testid} />\n    <Collapsible open={isOpen}>{children}</Collapsible>\n  </Flex>\n)\n\nexport default ItemsList\n","import React from \"react\"\nimport { Flex, TextSmall } from \"@netdata/netdata-ui\"\n\nconst PlayOptionsTooltip = () => (\n  <Flex\n    padding={[1, 2]}\n    margin={[1]}\n    background={[\"neutral\", \"black\"]}\n    round={1}\n    justifyContent=\"center\"\n    width={{ max: \"320px\" }}\n  >\n    <TextSmall color=\"bright\">\n      Play to refresh and have live content, pause to see historical, or force play to keep\n      refreshing even when the tab loses focus at the expense of some system performance.\n    </TextSmall>\n  </Flex>\n)\n\nexport default PlayOptionsTooltip\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nexport const Divider = styled(Flex).attrs({\n  bacgkround: \"disabled\",\n  height: \"1px\",\n  margin: [2, 6],\n})``\n","import React, { memo, Fragment } from \"react\"\nimport styled from \"styled-components\"\nimport { useToggle } from \"react-use\"\nimport { Flex, Icon, Drop } from \"@netdata/netdata-ui\"\nimport { MenuItem } from \"@/src/components/menus\"\nimport { useDispatch } from \"store/redux-separate-context\"\nimport { resetGlobalPauseAction, setGlobalPauseAction } from \"domains/global/actions\"\nimport Tooltip from \"@/src/components/tooltips\"\nimport PlayOptionsTooltip from \"./playOptionsTooltip\"\n\nconst MenuButton = styled(Flex).attrs({ padding: [1], role: \"button\" })`\n  cursor: pointer;\n`\n\nconst Dropdown = styled(Flex).attrs({\n  column: true,\n  padding: [2],\n  background: \"dropdown\",\n  round: 1,\n  overflow: { vertical: \"auto\" },\n  margin: [2, 0, 0],\n  width: 40,\n})`\n  box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`\n\nconst PlayOptions = ({ target }) => {\n  const dispatch = useDispatch()\n  const [isOpen, toggle] = useToggle()\n\n  const close = () => toggle(false)\n\n  const onPlay = () => {\n    dispatch(resetGlobalPauseAction({ forcePlay: false }))\n    close()\n  }\n\n  const onPause = () => {\n    dispatch(setGlobalPauseAction())\n    close()\n  }\n\n  const onForcePlay = () => {\n    dispatch(resetGlobalPauseAction({ forcePlay: true }))\n    close()\n  }\n\n  return (\n    <Fragment>\n      {!isOpen ? (\n        <Tooltip content={<PlayOptionsTooltip />} align=\"bottom\" plain>\n          <MenuButton onClick={toggle} width=\"auto\">\n            <Icon name=\"chevron_down\" color=\"text\" width=\"12px\" height=\"12px\" />\n          </MenuButton>\n        </Tooltip>\n      ) : (\n        <MenuButton onClick={toggle} width=\"auto\">\n          <Icon name=\"chevron_down\" color=\"text\" width=\"12px\" height=\"12px\" />\n        </MenuButton>\n      )}\n      {target.current && isOpen && (\n        <Drop\n          target={target.current}\n          align={{ top: \"bottom\", left: \"left\" }}\n          onEsc={close}\n          onClickOutside={close}\n          animation\n        >\n          <Dropdown>\n            <MenuItem round={1} icon=\"playOutline\" onClick={onPlay}>\n              Play\n            </MenuItem>\n            <MenuItem round={1} icon=\"pauseOutline\" onClick={onPause}>\n              Pause\n            </MenuItem>\n            <MenuItem round={1} icon=\"forcePlayOutline\" onClick={onForcePlay}>\n              Force Play\n            </MenuItem>\n          </Dropdown>\n        </Drop>\n      )}\n    </Fragment>\n  )\n}\n\nconst MemoizedPlayOptions = memo(PlayOptions)\n\nexport default MemoizedPlayOptions\n","import React, { useMemo, useRef } from \"react\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport {\n  selectHasWindowFocus,\n  selectStopUpdatesWhenFocusIsLost,\n  selectGlobalPanAndZoom,\n  selectGlobalPause,\n  selectGlobalSelection,\n} from \"domains/global/selectors\"\nimport { ReduxDatePickerContainer } from \"components/date-picker\"\nimport Item from \"../item\"\nimport Container from \"./container\"\nimport PlayPausePill from \"./playPausePill\"\nimport PlayOptions from \"./playOptions\"\n\nconst tagging = \"global-view\"\n\nconst GlobalControls = () => {\n  const ref = useRef()\n  const hasWindowFocus = useSelector(selectHasWindowFocus)\n  const stopUpdatesWhenFocusIsLost = useSelector(selectStopUpdatesWhenFocusIsLost)\n  const globalPanAndZoom = useSelector(selectGlobalPanAndZoom)\n  const hoveredX = useSelector(selectGlobalSelection)\n  const globalPause = useSelector(selectGlobalPause)\n\n  const isPlaying = useMemo(\n    () =>\n      Boolean(\n        (hasWindowFocus || !stopUpdatesWhenFocusIsLost) &&\n          !globalPanAndZoom &&\n          !hoveredX &&\n          !globalPause\n      ),\n    [hasWindowFocus, stopUpdatesWhenFocusIsLost, globalPanAndZoom, hoveredX, globalPause]\n  )\n\n  return (\n    <Item hasBorder>\n      <Container\n        isPlaying={isPlaying}\n        padding={[2, 2]}\n        round\n        height=\"100%\"\n        alignItems=\"center\"\n        gap={1}\n        ref={ref}\n      >\n        <PlayPausePill isPlaying={isPlaying} isForcePlaying={!stopUpdatesWhenFocusIsLost} />\n        <PlayOptions target={ref} />\n        <ReduxDatePickerContainer isPlaying={isPlaying} tagging={tagging} />\n      </Container>\n    </Item>\n  )\n}\n\nexport default GlobalControls\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst hollowColors = {\n  warning: \"#FFF8E1\",\n  error: \"#FFEBEF\",\n}\n\nconst StyledPill = styled(Flex).attrs(({ round = 999, hollow, background }) => ({\n  padding: [0.5, 2],\n  round,\n  border: hollow ? { side: \"all\", color: background, size: \"1px\" } : false,\n}))`\n  background: ${({ background, hollow }) => (hollow ? hollowColors[background] : background)};\n  cursor: pointer;\n`\n\nexport default StyledPill\n","import React, { forwardRef } from \"react\"\nimport { TextMicro } from \"@netdata/netdata-ui\"\nimport StyledPill from \"./styled\"\n\nconst Pill = forwardRef(({ children, background, color, hollow, ...rest }, ref) => (\n  <StyledPill background={background} hollow={hollow} ref={ref} {...rest}>\n    <TextMicro color={hollow ? background : color} strong>\n      {children}\n    </TextMicro>\n  </StyledPill>\n))\n\nexport default Pill\n","import React, { useMemo } from \"react\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectActiveAlarms } from \"domains/global/selectors\"\nimport Item from \"./item\"\nimport Pill from \"./pill\"\nimport Tooltip from \"@/src/components/tooltips\"\n\nconst pillProps = {\n  \"data-toggle\": \"modal\",\n  \"data-target\": \"#alarmsModal\",\n}\n\nconst Alarms = () => {\n  const activeAlarms = useSelector(selectActiveAlarms)\n\n  const alarms = useMemo(() => (activeAlarms ? Object.values(activeAlarms.alarms) : []), [\n    activeAlarms,\n  ])\n\n  const { critical, warning } = useMemo(\n    () =>\n      alarms.reduce(\n        (acc, { status }) => {\n          if (status === \"CRITICAL\") acc.critical = acc.critical + 1\n          if (status === \"WARNING\") acc.warning = acc.warning + 1\n          return acc\n        },\n        { critical: 0, warning: 0 }\n      ),\n    [alarms]\n  )\n\n  return (\n    <Item icon=\"alarm\">\n      <Tooltip\n        content={\n          critical\n            ? `${critical} critical alert${critical.length > 1 ? \"s\" : \"\"}`\n            : \"No critical alerts\"\n        }\n        align=\"bottom\"\n        plain\n      >\n        <Pill background=\"error\" hollow {...pillProps}>\n          {critical}\n        </Pill>\n      </Tooltip>\n      <Tooltip\n        content={\n          warning ? `${warning} warning alert${warning.length > 1 ? \"s\" : \"\"}` : \"No warning alerts\"\n        }\n        align=\"bottom\"\n        plain\n      >\n        <Pill background=\"warning\" hollow {...pillProps}>\n          {warning}\n        </Pill>\n      </Tooltip>\n    </Item>\n  )\n}\n\nexport default Alarms\n","import React from \"react\"\nimport { Button, News as AgentNews } from \"@netdata/netdata-ui\"\nimport Tooltip from \"@/src/components/tooltips\"\n\nconst News = () => {\n  return (\n    <AgentNews app=\"agent\">\n      {({ toggle, upToDate }) => (\n        <Tooltip content=\"News\" align=\"bottom\" plain>\n          <Button\n            data-testid=\"header-news-button\"\n            themeType=\"dark\"\n            name=\"news\"\n            icon=\"insights\"\n            flavour=\"borderless\"\n            neutral={upToDate}\n            warning={!upToDate}\n            onClick={toggle}\n          />\n        </Tooltip>\n      )}\n    </AgentNews>\n  )\n}\n\nexport default News\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Dropdown = styled(Flex).attrs({\n  column: true,\n  padding: [2],\n  background: \"dropdown\",\n  round: 1,\n  overflow: { vertical: \"auto\" },\n  margin: [2, 0, 0],\n  width: 80,\n})`\n  box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`\n\nexport default Dropdown\n","import styled from \"styled-components\"\nimport { TextInput } from \"@netdata/netdata-ui\"\n\nconst SearchInput = styled(TextInput)`\n  & input {\n    background: transparent;\n  }\n\n  & > label {\n    margin-bottom: 0;\n  }\n`\nexport default SearchInput\n","import React, { forwardRef } from \"react\"\nimport SearchInput from \"./searchInput\"\n\nconst Search = forwardRef(({ value, onChange }, ref) => (\n  <SearchInput inputRef={ref} value={value} onChange={onChange} placeholder=\"Search\" metaShrinked />\n))\n\nexport default Search\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Container = styled(Flex).attrs({\n  column: true,\n  padding: [2, 0, 0],\n  overflow: { vertical: \"auto\" },\n  height: { max: \"320px\" },\n})``\n\nexport default Container\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Wrapper = styled(Flex).attrs({\n  justifyContent: \"between\",\n  alignItems: \"center\",\n  width: \"100%\",\n  gap: 2,\n})``\n\nexport default Wrapper\n","import React, { useCallback } from \"react\"\nimport { Text } from \"@netdata/netdata-ui\"\nimport { MenuItem } from \"@/src/components/menus\"\nimport Wrapper from \"./wrapper\"\n\nconst OffsetItem = ({ name, offset, utc, onSelect }) => {\n  const onClick = useCallback(() => onSelect(utc), [utc, onSelect])\n\n  return (\n    <MenuItem round={1} onClick={onClick} Wrapper={Wrapper}>\n      <Text color=\"text\">{name}</Text>\n      <Text color=\"textLite\" whiteSpace=\"nowrap\">\n        UTC {offset}\n      </Text>\n    </MenuItem>\n  )\n}\n\nexport default OffsetItem\n","export const timezones = [\n  {\n    value: \"Dateline Standard Time\",\n    abbr: \"DST\",\n    text: \"International Date Line West\",\n    utc: [\"Etc/GMT+12\"],\n  },\n  {\n    value: \"UTC-11\",\n    abbr: \"U\",\n    text: \"Coordinated Universal Time-11\",\n    utc: [\"Etc/GMT+11\", \"Pacific/Midway\", \"Pacific/Niue\", \"Pacific/Pago_Pago\"],\n  },\n  {\n    value: \"Hawaiian Standard Time\",\n    abbr: \"HST\",\n    text: \"Hawaii\",\n    utc: [\n      \"Etc/GMT+10\",\n      \"Pacific/Honolulu\",\n      \"Pacific/Johnston\",\n      \"Pacific/Rarotonga\",\n      \"Pacific/Tahiti\",\n    ],\n  },\n  {\n    value: \"Alaskan Standard Time\",\n    abbr: \"AKDT\",\n    text: \"Alaska\",\n    utc: [\n      \"America/Anchorage\",\n      \"America/Juneau\",\n      \"America/Nome\",\n      \"America/Sitka\",\n      \"America/Yakutat\",\n    ],\n  },\n  {\n    value: \"Pacific Standard Time (Mexico)\",\n    abbr: \"PDT\",\n    text: \"Baja California\",\n    utc: [\"America/Santa_Isabel\"],\n  },\n  {\n    value: \"Pacific Standard Time\",\n    abbr: \"PST\",\n    text: \"Pacific Time (US & Canada)\",\n    utc: [\n      \"America/Dawson\",\n      \"America/Los_Angeles\",\n      \"America/Tijuana\",\n      \"America/Vancouver\",\n      \"America/Whitehorse\",\n      \"PST8PDT\",\n    ],\n  },\n  {\n    value: \"US Mountain Standard Time\",\n    abbr: \"UMST\",\n    text: \"Arizona\",\n    utc: [\n      \"America/Creston\",\n      \"America/Dawson_Creek\",\n      \"America/Hermosillo\",\n      \"America/Phoenix\",\n      \"Etc/GMT+7\",\n    ],\n  },\n  {\n    value: \"Mountain Standard Time (Mexico)\",\n    abbr: \"MDT\",\n    text: \"Chihuahua, La Paz, Mazatlan\",\n    utc: [\"America/Chihuahua\", \"America/Mazatlan\"],\n  },\n  {\n    value: \"Mountain Standard Time\",\n    abbr: \"MDT\",\n    text: \"Mountain Time (US & Canada)\",\n    utc: [\n      \"America/Boise\",\n      \"America/Cambridge_Bay\",\n      \"America/Denver\",\n      \"America/Edmonton\",\n      \"America/Inuvik\",\n      \"America/Ojinaga\",\n      \"America/Yellowknife\",\n      \"MST7MDT\",\n    ],\n  },\n  {\n    value: \"Central America Standard Time\",\n    abbr: \"CAST\",\n    text: \"Central America\",\n    utc: [\n      \"America/Belize\",\n      \"America/Costa_Rica\",\n      \"America/El_Salvador\",\n      \"America/Guatemala\",\n      \"America/Managua\",\n      \"America/Tegucigalpa\",\n      \"Etc/GMT+6\",\n      \"Pacific/Galapagos\",\n    ],\n  },\n  {\n    value: \"Central Standard Time\",\n    abbr: \"CDT\",\n    text: \"Central Time (US & Canada)\",\n    utc: [\n      \"America/Chicago\",\n      \"America/Indiana/Knox\",\n      \"America/Indiana/Tell_City\",\n      \"America/Matamoros\",\n      \"America/Menominee\",\n      \"America/North_Dakota/Beulah\",\n      \"America/North_Dakota/Center\",\n      \"America/North_Dakota/New_Salem\",\n      \"America/Rainy_River\",\n      \"America/Rankin_Inlet\",\n      \"America/Resolute\",\n      \"America/Winnipeg\",\n      \"CST6CDT\",\n    ],\n  },\n  {\n    value: \"Central Standard Time (Mexico)\",\n    abbr: \"CDT\",\n    text: \"Guadalajara, Mexico City, Monterrey\",\n    utc: [\n      \"America/Bahia_Banderas\",\n      \"America/Cancun\",\n      \"America/Merida\",\n      \"America/Mexico_City\",\n      \"America/Monterrey\",\n    ],\n  },\n  {\n    value: \"Canada Central Standard Time\",\n    abbr: \"CCST\",\n    text: \"Saskatchewan\",\n    utc: [\"America/Regina\", \"America/Swift_Current\"],\n  },\n  {\n    value: \"SA Pacific Standard Time\",\n    abbr: \"SPST\",\n    text: \"Bogota, Lima, Quito\",\n    utc: [\n      \"America/Bogota\",\n      \"America/Cayman\",\n      \"America/Coral_Harbour\",\n      \"America/Eirunepe\",\n      \"America/Guayaquil\",\n      \"America/Jamaica\",\n      \"America/Lima\",\n      \"America/Panama\",\n      \"America/Rio_Branco\",\n      \"Etc/GMT+5\",\n    ],\n  },\n  {\n    value: \"Eastern Standard Time\",\n    abbr: \"EDT\",\n    text: \"Eastern Time (US & Canada)\",\n    utc: [\n      \"America/Detroit\",\n      \"America/Havana\",\n      \"America/Indiana/Petersburg\",\n      \"America/Indiana/Vincennes\",\n      \"America/Indiana/Winamac\",\n      \"America/Iqaluit\",\n      \"America/Kentucky/Monticello\",\n      \"America/Louisville\",\n      \"America/Montreal\",\n      \"America/Nassau\",\n      \"America/New_York\",\n      \"America/Nipigon\",\n      \"America/Pangnirtung\",\n      \"America/Port-au-Prince\",\n      \"America/Thunder_Bay\",\n      \"America/Toronto\",\n      \"EST5EDT\",\n    ],\n  },\n  {\n    value: \"US Eastern Standard Time\",\n    abbr: \"UEDT\",\n    text: \"Indiana (East)\",\n    utc: [\"America/Indiana/Marengo\", \"America/Indiana/Vevay\", \"America/Indianapolis\"],\n  },\n  {\n    value: \"Venezuela Standard Time\",\n    abbr: \"VST\",\n    text: \"Caracas\",\n    utc: [\"America/Caracas\"],\n  },\n  {\n    value: \"Paraguay Standard Time\",\n    abbr: \"PYT\",\n    text: \"Asuncion\",\n    utc: [\"America/Asuncion\"],\n  },\n  {\n    value: \"Atlantic Standard Time\",\n    abbr: \"ADT\",\n    text: \"Atlantic Time (Canada)\",\n    utc: [\n      \"America/Glace_Bay\",\n      \"America/Goose_Bay\",\n      \"America/Halifax\",\n      \"America/Moncton\",\n      \"America/Thule\",\n      \"Atlantic/Bermuda\",\n    ],\n  },\n  {\n    value: \"Central Brazilian Standard Time\",\n    abbr: \"CBST\",\n    text: \"Cuiaba\",\n    utc: [\"America/Campo_Grande\", \"America/Cuiaba\"],\n  },\n  {\n    value: \"SA Western Standard Time\",\n    abbr: \"SWST\",\n    text: \"Georgetown, La Paz, Manaus, San Juan\",\n    utc: [\n      \"America/Anguilla\",\n      \"America/Antigua\",\n      \"America/Aruba\",\n      \"America/Barbados\",\n      \"America/Blanc-Sablon\",\n      \"America/Boa_Vista\",\n      \"America/Curacao\",\n      \"America/Dominica\",\n      \"America/Grand_Turk\",\n      \"America/Grenada\",\n      \"America/Guadeloupe\",\n      \"America/Guyana\",\n      \"America/Kralendijk\",\n      \"America/La_Paz\",\n      \"America/Lower_Princes\",\n      \"America/Manaus\",\n      \"America/Marigot\",\n      \"America/Martinique\",\n      \"America/Montserrat\",\n      \"America/Port_of_Spain\",\n      \"America/Porto_Velho\",\n      \"America/Puerto_Rico\",\n      \"America/Santo_Domingo\",\n      \"America/St_Barthelemy\",\n      \"America/St_Kitts\",\n      \"America/St_Lucia\",\n      \"America/St_Thomas\",\n      \"America/St_Vincent\",\n      \"America/Tortola\",\n      \"Etc/GMT+4\",\n    ],\n  },\n  {\n    value: \"Pacific SA Standard Time\",\n    abbr: \"PSST\",\n    text: \"Santiago\",\n    utc: [\"America/Santiago\", \"Antarctica/Palmer\"],\n  },\n  {\n    value: \"Newfoundland Standard Time\",\n    abbr: \"NDT\",\n    text: \"Newfoundland\",\n    utc: [\"America/St_Johns\"],\n  },\n  {\n    value: \"E. South America Standard Time\",\n    abbr: \"ESAST\",\n    text: \"Brasilia\",\n    utc: [\"America/Sao_Paulo\"],\n  },\n  {\n    value: \"Argentina Standard Time\",\n    abbr: \"AST\",\n    text: \"Buenos Aires\",\n    utc: [\n      \"America/Argentina/La_Rioja\",\n      \"America/Argentina/Rio_Gallegos\",\n      \"America/Argentina/Salta\",\n      \"America/Argentina/San_Juan\",\n      \"America/Argentina/San_Luis\",\n      \"America/Argentina/Tucuman\",\n      \"America/Argentina/Ushuaia\",\n      \"America/Buenos_Aires\",\n      \"America/Catamarca\",\n      \"America/Cordoba\",\n      \"America/Jujuy\",\n      \"America/Mendoza\",\n    ],\n  },\n  {\n    value: \"SA Eastern Standard Time\",\n    abbr: \"SEST\",\n    text: \"Cayenne, Fortaleza\",\n    utc: [\n      \"America/Araguaina\",\n      \"America/Belem\",\n      \"America/Cayenne\",\n      \"America/Fortaleza\",\n      \"America/Maceio\",\n      \"America/Paramaribo\",\n      \"America/Recife\",\n      \"America/Santarem\",\n      \"Antarctica/Rothera\",\n      \"Atlantic/Stanley\",\n      \"Etc/GMT+3\",\n    ],\n  },\n  {\n    value: \"Greenland Standard Time\",\n    abbr: \"GDT\",\n    text: \"Greenland\",\n    utc: [\"America/Godthab\"],\n  },\n  {\n    value: \"Montevideo Standard Time\",\n    abbr: \"MST\",\n    text: \"Montevideo\",\n    utc: [\"America/Montevideo\"],\n  },\n  {\n    value: \"Bahia Standard Time\",\n    abbr: \"BST\",\n    text: \"Salvador\",\n    utc: [\"America/Bahia\"],\n  },\n  {\n    value: \"UTC-02\",\n    abbr: \"U\",\n    text: \"Coordinated Universal Time-02\",\n    utc: [\"America/Noronha\", \"Atlantic/South_Georgia\", \"Etc/GMT+2\"],\n  },\n  {\n    value: \"Mid-Atlantic Standard Time\",\n    abbr: \"MDT\",\n    text: \"Mid-Atlantic - Old\",\n    utc: [],\n  },\n  {\n    value: \"Azores Standard Time\",\n    abbr: \"ADT\",\n    text: \"Azores\",\n    utc: [\"America/Scoresbysund\", \"Atlantic/Azores\"],\n  },\n  {\n    value: \"Cape Verde Standard Time\",\n    abbr: \"CVST\",\n    text: \"Cape Verde Is.\",\n    utc: [\"Atlantic/Cape_Verde\", \"Etc/GMT+1\"],\n  },\n  {\n    value: \"Morocco Standard Time\",\n    abbr: \"MDT\",\n    text: \"Casablanca\",\n    utc: [\"Africa/Casablanca\", \"Africa/El_Aaiun\"],\n  },\n  {\n    value: \"UTC\",\n    abbr: \"UTC\",\n    text: \"Coordinated Universal Time\",\n    utc: [\"America/Danmarkshavn\", \"Etc/GMT\"],\n  },\n  {\n    value: \"GMT Standard Time\",\n    abbr: \"GMT\",\n    text: \"Edinburgh, London\",\n    utc: [\"Europe/Isle_of_Man\", \"Europe/Guernsey\", \"Europe/Jersey\", \"Europe/London\"],\n  },\n  {\n    value: \"GMT Standard Time\",\n    abbr: \"GDT\",\n    text: \"Dublin, Lisbon\",\n    utc: [\n      \"Atlantic/Canary\",\n      \"Atlantic/Faeroe\",\n      \"Atlantic/Madeira\",\n      \"Europe/Dublin\",\n      \"Europe/Lisbon\",\n    ],\n  },\n  {\n    value: \"Greenwich Standard Time\",\n    abbr: \"GST\",\n    text: \"Monrovia, Reykjavik\",\n    utc: [\n      \"Africa/Abidjan\",\n      \"Africa/Accra\",\n      \"Africa/Bamako\",\n      \"Africa/Banjul\",\n      \"Africa/Bissau\",\n      \"Africa/Conakry\",\n      \"Africa/Dakar\",\n      \"Africa/Freetown\",\n      \"Africa/Lome\",\n      \"Africa/Monrovia\",\n      \"Africa/Nouakchott\",\n      \"Africa/Ouagadougou\",\n      \"Africa/Sao_Tome\",\n      \"Atlantic/Reykjavik\",\n      \"Atlantic/St_Helena\",\n    ],\n  },\n  {\n    value: \"W. Europe Standard Time\",\n    abbr: \"WEDT\",\n    text: \"Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna\",\n    utc: [\n      \"Arctic/Longyearbyen\",\n      \"Europe/Amsterdam\",\n      \"Europe/Andorra\",\n      \"Europe/Berlin\",\n      \"Europe/Busingen\",\n      \"Europe/Gibraltar\",\n      \"Europe/Luxembourg\",\n      \"Europe/Malta\",\n      \"Europe/Monaco\",\n      \"Europe/Oslo\",\n      \"Europe/Rome\",\n      \"Europe/San_Marino\",\n      \"Europe/Stockholm\",\n      \"Europe/Vaduz\",\n      \"Europe/Vatican\",\n      \"Europe/Vienna\",\n      \"Europe/Zurich\",\n    ],\n  },\n  {\n    value: \"Central Europe Standard Time\",\n    abbr: \"CEDT\",\n    text: \"Belgrade, Bratislava, Budapest, Ljubljana, Prague\",\n    utc: [\n      \"Europe/Belgrade\",\n      \"Europe/Bratislava\",\n      \"Europe/Budapest\",\n      \"Europe/Ljubljana\",\n      \"Europe/Podgorica\",\n      \"Europe/Prague\",\n      \"Europe/Tirane\",\n    ],\n  },\n  {\n    value: \"Romance Standard Time\",\n    abbr: \"RDT\",\n    text: \"Brussels, Copenhagen, Madrid, Paris\",\n    utc: [\"Africa/Ceuta\", \"Europe/Brussels\", \"Europe/Copenhagen\", \"Europe/Madrid\", \"Europe/Paris\"],\n  },\n  {\n    value: \"Central European Standard Time\",\n    abbr: \"CEDT\",\n    text: \"Sarajevo, Skopje, Warsaw, Zagreb\",\n    utc: [\"Europe/Sarajevo\", \"Europe/Skopje\", \"Europe/Warsaw\", \"Europe/Zagreb\"],\n  },\n  {\n    value: \"W. Central Africa Standard Time\",\n    abbr: \"WCAST\",\n    text: \"West Central Africa\",\n    utc: [\n      \"Africa/Algiers\",\n      \"Africa/Bangui\",\n      \"Africa/Brazzaville\",\n      \"Africa/Douala\",\n      \"Africa/Kinshasa\",\n      \"Africa/Lagos\",\n      \"Africa/Libreville\",\n      \"Africa/Luanda\",\n      \"Africa/Malabo\",\n      \"Africa/Ndjamena\",\n      \"Africa/Niamey\",\n      \"Africa/Porto-Novo\",\n      \"Africa/Tunis\",\n      \"Etc/GMT-1\",\n    ],\n  },\n  {\n    value: \"Namibia Standard Time\",\n    abbr: \"NST\",\n    text: \"Windhoek\",\n    utc: [\"Africa/Windhoek\"],\n  },\n  {\n    value: \"GTB Standard Time\",\n    abbr: \"GDT\",\n    text: \"Athens, Bucharest\",\n    utc: [\"Asia/Nicosia\", \"Europe/Athens\", \"Europe/Bucharest\", \"Europe/Chisinau\"],\n  },\n  {\n    value: \"Middle East Standard Time\",\n    abbr: \"MEDT\",\n    text: \"Beirut\",\n    utc: [\"Asia/Beirut\"],\n  },\n  {\n    value: \"Egypt Standard Time\",\n    abbr: \"EST\",\n    text: \"Cairo\",\n    utc: [\"Africa/Cairo\"],\n  },\n  {\n    value: \"Syria Standard Time\",\n    abbr: \"SDT\",\n    text: \"Damascus\",\n    utc: [\"Asia/Damascus\"],\n  },\n  {\n    value: \"E. Europe Standard Time\",\n    abbr: \"EEDT\",\n    text: \"E. Europe\",\n    utc: [\n      \"Asia/Nicosia\",\n      \"Europe/Athens\",\n      \"Europe/Bucharest\",\n      \"Europe/Chisinau\",\n      \"Europe/Helsinki\",\n      \"Europe/Kiev\",\n      \"Europe/Mariehamn\",\n      \"Europe/Nicosia\",\n      \"Europe/Riga\",\n      \"Europe/Sofia\",\n      \"Europe/Tallinn\",\n      \"Europe/Uzhgorod\",\n      \"Europe/Vilnius\",\n      \"Europe/Zaporozhye\",\n    ],\n  },\n  {\n    value: \"South Africa Standard Time\",\n    abbr: \"SAST\",\n    text: \"Harare, Pretoria\",\n    utc: [\n      \"Africa/Blantyre\",\n      \"Africa/Bujumbura\",\n      \"Africa/Gaborone\",\n      \"Africa/Harare\",\n      \"Africa/Johannesburg\",\n      \"Africa/Kigali\",\n      \"Africa/Lubumbashi\",\n      \"Africa/Lusaka\",\n      \"Africa/Maputo\",\n      \"Africa/Maseru\",\n      \"Africa/Mbabane\",\n      \"Etc/GMT-2\",\n    ],\n  },\n  {\n    value: \"FLE Standard Time\",\n    abbr: \"FDT\",\n    text: \"Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius\",\n    utc: [\n      \"Europe/Helsinki\",\n      \"Europe/Kiev\",\n      \"Europe/Mariehamn\",\n      \"Europe/Riga\",\n      \"Europe/Sofia\",\n      \"Europe/Tallinn\",\n      \"Europe/Uzhgorod\",\n      \"Europe/Vilnius\",\n      \"Europe/Zaporozhye\",\n    ],\n  },\n  {\n    value: \"Turkey Standard Time\",\n    abbr: \"TDT\",\n    text: \"Istanbul\",\n    utc: [\"Europe/Istanbul\"],\n  },\n  {\n    value: \"Israel Standard Time\",\n    abbr: \"JDT\",\n    text: \"Jerusalem\",\n    utc: [\"Asia/Jerusalem\"],\n  },\n  {\n    value: \"Libya Standard Time\",\n    abbr: \"LST\",\n    text: \"Tripoli\",\n    utc: [\"Africa/Tripoli\"],\n  },\n  {\n    value: \"Jordan Standard Time\",\n    abbr: \"JST\",\n    text: \"Amman\",\n    utc: [\"Asia/Amman\"],\n  },\n  {\n    value: \"Arabic Standard Time\",\n    abbr: \"AST\",\n    text: \"Baghdad\",\n    utc: [\"Asia/Baghdad\"],\n  },\n  {\n    value: \"Kaliningrad Standard Time\",\n    abbr: \"KST\",\n    text: \"Kaliningrad\",\n    utc: [\"Europe/Kaliningrad\"],\n  },\n  {\n    value: \"Arab Standard Time\",\n    abbr: \"AST\",\n    text: \"Kuwait, Riyadh\",\n    utc: [\"Asia/Aden\", \"Asia/Bahrain\", \"Asia/Kuwait\", \"Asia/Qatar\", \"Asia/Riyadh\"],\n  },\n  {\n    value: \"E. Africa Standard Time\",\n    abbr: \"EAST\",\n    text: \"Nairobi\",\n    utc: [\n      \"Africa/Addis_Ababa\",\n      \"Africa/Asmera\",\n      \"Africa/Dar_es_Salaam\",\n      \"Africa/Djibouti\",\n      \"Africa/Juba\",\n      \"Africa/Kampala\",\n      \"Africa/Khartoum\",\n      \"Africa/Mogadishu\",\n      \"Africa/Nairobi\",\n      \"Antarctica/Syowa\",\n      \"Etc/GMT-3\",\n      \"Indian/Antananarivo\",\n      \"Indian/Comoro\",\n      \"Indian/Mayotte\",\n    ],\n  },\n  {\n    value: \"Moscow Standard Time\",\n    abbr: \"MSK\",\n    text: \"Moscow, St. Petersburg, Volgograd, Minsk\",\n    utc: [\"Europe/Kirov\", \"Europe/Moscow\", \"Europe/Simferopol\", \"Europe/Volgograd\", \"Europe/Minsk\"],\n  },\n  {\n    value: \"Samara Time\",\n    abbr: \"SAMT\",\n    text: \"Samara, Ulyanovsk, Saratov\",\n    utc: [\"Europe/Astrakhan\", \"Europe/Samara\", \"Europe/Ulyanovsk\"],\n  },\n  {\n    value: \"Iran Standard Time\",\n    abbr: \"IDT\",\n    text: \"Tehran\",\n    utc: [\"Asia/Tehran\"],\n  },\n  {\n    value: \"Arabian Standard Time\",\n    abbr: \"AST\",\n    text: \"Abu Dhabi, Muscat\",\n    utc: [\"Asia/Dubai\", \"Asia/Muscat\", \"Etc/GMT-4\"],\n  },\n  {\n    value: \"Azerbaijan Standard Time\",\n    abbr: \"ADT\",\n    text: \"Baku\",\n    utc: [\"Asia/Baku\"],\n  },\n  {\n    value: \"Mauritius Standard Time\",\n    abbr: \"MST\",\n    text: \"Port Louis\",\n    utc: [\"Indian/Mahe\", \"Indian/Mauritius\", \"Indian/Reunion\"],\n  },\n  {\n    value: \"Georgian Standard Time\",\n    abbr: \"GET\",\n    text: \"Tbilisi\",\n    utc: [\"Asia/Tbilisi\"],\n  },\n  {\n    value: \"Caucasus Standard Time\",\n    abbr: \"CST\",\n    text: \"Yerevan\",\n    utc: [\"Asia/Yerevan\"],\n  },\n  {\n    value: \"Afghanistan Standard Time\",\n    abbr: \"AST\",\n    text: \"Kabul\",\n    utc: [\"Asia/Kabul\"],\n  },\n  {\n    value: \"West Asia Standard Time\",\n    abbr: \"WAST\",\n    text: \"Ashgabat, Tashkent\",\n    utc: [\n      \"Antarctica/Mawson\",\n      \"Asia/Aqtau\",\n      \"Asia/Aqtobe\",\n      \"Asia/Ashgabat\",\n      \"Asia/Dushanbe\",\n      \"Asia/Oral\",\n      \"Asia/Samarkand\",\n      \"Asia/Tashkent\",\n      \"Etc/GMT-5\",\n      \"Indian/Kerguelen\",\n      \"Indian/Maldives\",\n    ],\n  },\n  {\n    value: \"Yekaterinburg Time\",\n    abbr: \"YEKT\",\n    text: \"Yekaterinburg\",\n    utc: [\"Asia/Yekaterinburg\"],\n  },\n  {\n    value: \"Pakistan Standard Time\",\n    abbr: \"PKT\",\n    text: \"Islamabad, Karachi\",\n    utc: [\"Asia/Karachi\"],\n  },\n  {\n    value: \"India Standard Time\",\n    abbr: \"IST\",\n    text: \"Chennai, Kolkata, Mumbai, New Delhi\",\n    utc: [\"Asia/Kolkata\"],\n  },\n  {\n    value: \"Sri Lanka Standard Time\",\n    abbr: \"SLST\",\n    text: \"Sri Jayawardenepura\",\n    utc: [\"Asia/Colombo\"],\n  },\n  {\n    value: \"Nepal Standard Time\",\n    abbr: \"NST\",\n    text: \"Kathmandu\",\n    utc: [\"Asia/Kathmandu\"],\n  },\n  {\n    value: \"Central Asia Standard Time\",\n    abbr: \"CAST\",\n    text: \"Nur-Sultan (Astana)\",\n    utc: [\n      \"Antarctica/Vostok\",\n      \"Asia/Almaty\",\n      \"Asia/Bishkek\",\n      \"Asia/Qyzylorda\",\n      \"Asia/Urumqi\",\n      \"Etc/GMT-6\",\n      \"Indian/Chagos\",\n    ],\n  },\n  {\n    value: \"Bangladesh Standard Time\",\n    abbr: \"BST\",\n    text: \"Dhaka\",\n    utc: [\"Asia/Dhaka\", \"Asia/Thimphu\"],\n  },\n  {\n    value: \"Myanmar Standard Time\",\n    abbr: \"MST\",\n    text: \"Yangon (Rangoon)\",\n    utc: [\"Asia/Rangoon\", \"Indian/Cocos\"],\n  },\n  {\n    value: \"SE Asia Standard Time\",\n    abbr: \"SAST\",\n    text: \"Bangkok, Hanoi, Jakarta\",\n    utc: [\n      \"Antarctica/Davis\",\n      \"Asia/Bangkok\",\n      \"Asia/Hovd\",\n      \"Asia/Jakarta\",\n      \"Asia/Phnom_Penh\",\n      \"Asia/Pontianak\",\n      \"Asia/Saigon\",\n      \"Asia/Vientiane\",\n      \"Etc/GMT-7\",\n      \"Indian/Christmas\",\n    ],\n  },\n  {\n    value: \"N. Central Asia Standard Time\",\n    abbr: \"NCAST\",\n    text: \"Novosibirsk\",\n    utc: [\"Asia/Novokuznetsk\", \"Asia/Novosibirsk\", \"Asia/Omsk\"],\n  },\n  {\n    value: \"China Standard Time\",\n    abbr: \"CST\",\n    text: \"Beijing, Chongqing, Hong Kong, Urumqi\",\n    utc: [\"Asia/Hong_Kong\", \"Asia/Macau\", \"Asia/Shanghai\"],\n  },\n  {\n    value: \"North Asia Standard Time\",\n    abbr: \"NAST\",\n    text: \"Krasnoyarsk\",\n    utc: [\"Asia/Krasnoyarsk\"],\n  },\n  {\n    value: \"Singapore Standard Time\",\n    abbr: \"MPST\",\n    text: \"Kuala Lumpur, Singapore\",\n    utc: [\n      \"Asia/Brunei\",\n      \"Asia/Kuala_Lumpur\",\n      \"Asia/Kuching\",\n      \"Asia/Makassar\",\n      \"Asia/Manila\",\n      \"Asia/Singapore\",\n      \"Etc/GMT-8\",\n    ],\n  },\n  {\n    value: \"W. Australia Standard Time\",\n    abbr: \"WAST\",\n    text: \"Perth\",\n    utc: [\"Antarctica/Casey\", \"Australia/Perth\"],\n  },\n  {\n    value: \"Taipei Standard Time\",\n    abbr: \"TST\",\n    text: \"Taipei\",\n    utc: [\"Asia/Taipei\"],\n  },\n  {\n    value: \"Ulaanbaatar Standard Time\",\n    abbr: \"UST\",\n    text: \"Ulaanbaatar\",\n    utc: [\"Asia/Choibalsan\", \"Asia/Ulaanbaatar\"],\n  },\n  {\n    value: \"North Asia East Standard Time\",\n    abbr: \"NAEST\",\n    text: \"Irkutsk\",\n    utc: [\"Asia/Irkutsk\"],\n  },\n  {\n    value: \"Japan Standard Time\",\n    abbr: \"JST\",\n    text: \"Osaka, Sapporo, Tokyo\",\n    utc: [\"Asia/Dili\", \"Asia/Jayapura\", \"Asia/Tokyo\", \"Etc/GMT-9\", \"Pacific/Palau\"],\n  },\n  {\n    value: \"Korea Standard Time\",\n    abbr: \"KST\",\n    text: \"Seoul\",\n    utc: [\"Asia/Pyongyang\", \"Asia/Seoul\"],\n  },\n  {\n    value: \"Cen. Australia Standard Time\",\n    abbr: \"CAST\",\n    text: \"Adelaide\",\n    utc: [\"Australia/Adelaide\", \"Australia/Broken_Hill\"],\n  },\n  {\n    value: \"AUS Central Standard Time\",\n    abbr: \"ACST\",\n    text: \"Darwin\",\n    utc: [\"Australia/Darwin\"],\n  },\n  {\n    value: \"E. Australia Standard Time\",\n    abbr: \"EAST\",\n    text: \"Brisbane\",\n    utc: [\"Australia/Brisbane\", \"Australia/Lindeman\"],\n  },\n  {\n    value: \"AUS Eastern Standard Time\",\n    abbr: \"AEST\",\n    text: \"Canberra, Melbourne, Sydney\",\n    utc: [\"Australia/Melbourne\", \"Australia/Sydney\"],\n  },\n  {\n    value: \"West Pacific Standard Time\",\n    abbr: \"WPST\",\n    text: \"Guam, Port Moresby\",\n    utc: [\n      \"Antarctica/DumontDUrville\",\n      \"Etc/GMT-10\",\n      \"Pacific/Guam\",\n      \"Pacific/Port_Moresby\",\n      \"Pacific/Saipan\",\n      \"Pacific/Truk\",\n    ],\n  },\n  {\n    value: \"Tasmania Standard Time\",\n    abbr: \"TST\",\n    text: \"Hobart\",\n    utc: [\"Australia/Currie\", \"Australia/Hobart\"],\n  },\n  {\n    value: \"Yakutsk Standard Time\",\n    abbr: \"YST\",\n    text: \"Yakutsk\",\n    utc: [\"Asia/Chita\", \"Asia/Khandyga\", \"Asia/Yakutsk\"],\n  },\n  {\n    value: \"Central Pacific Standard Time\",\n    abbr: \"CPST\",\n    text: \"Solomon Is., New Caledonia\",\n    utc: [\n      \"Antarctica/Macquarie\",\n      \"Etc/GMT-11\",\n      \"Pacific/Efate\",\n      \"Pacific/Guadalcanal\",\n      \"Pacific/Kosrae\",\n      \"Pacific/Noumea\",\n      \"Pacific/Ponape\",\n    ],\n  },\n  {\n    value: \"Vladivostok Standard Time\",\n    abbr: \"VST\",\n    text: \"Vladivostok\",\n    utc: [\"Asia/Sakhalin\", \"Asia/Ust-Nera\", \"Asia/Vladivostok\"],\n  },\n  {\n    value: \"New Zealand Standard Time\",\n    abbr: \"NZST\",\n    text: \"Auckland, Wellington\",\n    utc: [\"Antarctica/McMurdo\", \"Pacific/Auckland\"],\n  },\n  {\n    value: \"UTC+12\",\n    abbr: \"U\",\n    text: \"Coordinated Universal Time+12\",\n    utc: [\n      \"Etc/GMT-12\",\n      \"Pacific/Funafuti\",\n      \"Pacific/Kwajalein\",\n      \"Pacific/Majuro\",\n      \"Pacific/Nauru\",\n      \"Pacific/Tarawa\",\n      \"Pacific/Wake\",\n      \"Pacific/Wallis\",\n    ],\n  },\n  {\n    value: \"Fiji Standard Time\",\n    abbr: \"FST\",\n    text: \"Fiji\",\n    utc: [\"Pacific/Fiji\"],\n  },\n  {\n    value: \"Magadan Standard Time\",\n    abbr: \"MST\",\n    text: \"Magadan\",\n    utc: [\"Asia/Anadyr\", \"Asia/Kamchatka\", \"Asia/Magadan\", \"Asia/Srednekolymsk\"],\n  },\n  {\n    value: \"Kamchatka Standard Time\",\n    abbr: \"KDT\",\n    text: \"Petropavlovsk-Kamchatsky - Old\",\n    utc: [\"Asia/Kamchatka\"],\n  },\n  {\n    value: \"Tonga Standard Time\",\n    abbr: \"TST\",\n    text: \"Nuku'alofa\",\n    utc: [\"Etc/GMT-13\", \"Pacific/Enderbury\", \"Pacific/Fakaofo\", \"Pacific/Tongatapu\"],\n  },\n  {\n    value: \"Samoa Standard Time\",\n    abbr: \"SST\",\n    text: \"Samoa\",\n    utc: [\"Pacific/Apia\"],\n  },\n]\n","import { timezones } from \"./timezones\"\n\nconst digitizeOffset = parsedOffset => {\n  if (!parsedOffset) return \"+0\"\n  const splitOffset = parsedOffset.split(\":\")\n  return splitOffset.length > 1\n    ? `${splitOffset[0]}${(splitOffset[1] / 60).toString().substr(1)}`\n    : splitOffset[0]\n}\n\nconst normalizeOffset = parsedOffset => (parsedOffset ? parsedOffset.replace(\"−\", \"-\") : \"\")\n\nconst now = new Date()\nexport const timezoneList = () => {\n  const memoized = {}\n  return timezones.reduce((acc, timezone) => {\n    const { utc } = timezone\n\n    try {\n      // We use 'fr' locale because it is the only one that returns back the UTC offset (dd/mm/yyyy, UTC-x) \n      // so we can parse it later and digitize it.\n      const dateString = new Intl.DateTimeFormat(\"fr\", {\n        timeZone: utc[0],\n        timeZoneName: \"short\",\n      }).format(now)\n\n      const [parsedOffset] = dateString.match(/[−+].+/) || []\n      const normalizedOffset = normalizeOffset(parsedOffset)\n\n      if (memoized[normalizedOffset])\n        return acc.concat({ ...timezone, offset: memoized[normalizedOffset] })\n\n      const digitizedOffset = digitizeOffset(normalizedOffset)\n\n      memoized[normalizedOffset] = digitizedOffset\n      return acc.concat({ ...timezone, offset: digitizedOffset })\n    } catch (e) {\n      return acc\n    }\n  }, [])\n}\n\nexport const timezonesById = timezones =>\n  timezones.reduce((acc, { utc, ...timezone }) => {\n    utc.forEach(item => (acc[item] = { ...timezone, utc: item }))\n    return acc\n  }, {})\n\nexport const getDefaultTimezone = () => {\n  const dateFormat = new Intl.DateTimeFormat(\"default\", {})\n  const usedOptions = dateFormat.resolvedOptions()\n  return usedOptions\n}\n","import React, { useRef, useState, useEffect, useMemo, useCallback } from \"react\"\nimport { useToggle } from \"react-use\"\nimport { Drop, Flex, Text, Icon } from \"@netdata/netdata-ui\"\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { setOptionAction } from \"@/src/domains/global/actions\"\nimport { selectTimezoneSetting } from \"domains/global/selectors\"\nimport { MenuItem } from \"@/src/components/menus\"\nimport Item from \"../item\"\nimport Dropdown from \"./dropdown\"\nimport Search from \"./search\"\nimport Container from \"./container\"\nimport Wrapper from \"./wrapper\"\nimport OffsetItem from \"./offsetItem\"\nimport { getDefaultTimezone, timezoneList, timezonesById } from \"./utils\"\nimport { getHashParams } from \"utils/hash-utils\"\n\nconst timezones = timezoneList().sort((a, b) => a.offset - b.offset)\nconst byId = timezonesById(timezones)\n\nconst getTimezone = (selectedTimezone, timezoneHash) => {\n  const timezone = timezoneHash\n    ? timezoneHash\n    : selectedTimezone === \"default\"\n    ? getDefaultTimezone().timeZone\n    : selectedTimezone\n\n  return byId[timezone in byId ? timezone : getDefaultTimezone().timeZone] || {}\n}\n\nconst Timezone = () => {\n  const [value, setValue] = useState(\"\")\n  const [isOpen, toggle] = useToggle()\n\n  const ref = useRef()\n  const inputRef = useRef()\n\n  const { updateUtcParam } = window.urlOptions\n\n  useEffect(() => {\n    if (!inputRef.current || !isOpen) return\n    inputRef.current.focus()\n  }, [isOpen])\n\n  const dispatch = useDispatch()\n  const selectedTimezone = useSelector(selectTimezoneSetting)\n\n  const selectedOffset = useMemo(() => {\n    const { utc: timezoneHash = \"\" } = getHashParams()\n    const { offset = \"\", utc = \"\" } = getTimezone(selectedTimezone, timezoneHash)\n\n    if (timezoneHash !== utc) updateUtcParam(utc)\n    if (selectedTimezone !== utc) dispatch(setOptionAction({ key: \"timezone\", value: utc }))\n\n    dispatch(setOptionAction({ key: \"utcOffset\", value: parseFloat(offset) }))\n\n    return offset\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [selectedTimezone])\n\n  const zones = useMemo(() => {\n    if (!value) return timezones\n    return timezones.filter(\n      ({ text, offset }) =>\n        text.toUpperCase().includes(value.toUpperCase()) || offset.includes(value)\n    )\n  }, [value])\n\n  const close = () => {\n    toggle(false)\n    setValue(\"\")\n  }\n\n  const onSelect = useCallback(utc => {\n    updateUtcParam(utc)\n    dispatch(setOptionAction({ key: \"timezone\", value: utc }))\n    close()\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n\n  const onChange = useCallback(e => setValue(e.target.value), [])\n\n  return (\n    <Item hasBorder>\n      <MenuItem round={1} onClick={toggle} ref={ref} Wrapper={Wrapper}>\n        <Flex gap={1}>\n          <Text color=\"textLite\" whiteSpace=\"nowrap\">\n            UTC {selectedOffset}\n          </Text>\n        </Flex>\n        <Icon name=\"chevron_down\" color=\"text\" width=\"12px\" height=\"12px\" />\n      </MenuItem>\n      {ref.current && isOpen && (\n        <Drop\n          target={ref.current}\n          align={{ top: \"bottom\", left: \"left\" }}\n          onEsc={close}\n          onClickOutside={close}\n          animation\n        >\n          <Dropdown>\n            <Search value={value} onChange={onChange} ref={inputRef} />\n            <Container>\n              {zones.map(({ text, offset, utc }) => (\n                <OffsetItem\n                  key={text}\n                  name={text}\n                  offset={offset}\n                  utc={utc[0]}\n                  onSelect={onSelect}\n                />\n              ))}\n            </Container>\n          </Dropdown>\n        </Drop>\n      )}\n    </Item>\n  )\n}\n\nexport default Timezone\n","import React, { useCallback, useEffect, useState, useRef } from \"react\"\nimport styled from \"styled-components\"\nimport { useSelector, useDispatch } from \"store/redux-separate-context\"\nimport { useLocalStorage } from \"react-use\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { sendToChildIframe, useListenToPostMessage } from \"utils/post-message\"\nimport { getIframeSrc, NETDATA_REGISTRY_SERVER } from \"utils/utils\"\nimport useUserNodeAccessMessage from \"hooks/use-user-node-access\"\nimport { selectRegistry, selectCloudBaseUrl } from \"domains/global/selectors\"\nimport { LOCAL_STORAGE_NEEDS_SYNC } from \"domains/dashboard/sagas\"\nimport { setOfflineAction } from \"@/src/domains/dashboard/actions\"\nimport { SIGN_IN_IFRAME_ID } from \"components/header/constants\"\n\nconst IframeContainer = styled(Flex).attrs({ position: \"absolute\" })`\n  display: none;\n`\nconst Iframe = ({ signedIn }) => {\n  const [rendered, setRendered] = useState(false)\n  const signInMsg = useRef()\n  const ref = useRef()\n\n  const [lsValue, , removeLsValue] = useLocalStorage(LOCAL_STORAGE_NEEDS_SYNC)\n  const cloudBaseURL = useSelector(selectCloudBaseUrl)\n  const registry = useSelector(selectRegistry)\n\n  const dispatch = useDispatch()\n\n  const { origin, pathname } = window.location\n  const nameParam = encodeURIComponent(registry.hostname)\n  const originParam = encodeURIComponent(origin + pathname)\n\n  const signInIframeUrl = getIframeSrc(\n    cloudBaseURL,\n    `sign-in?id=${registry.machineGuid}&name=${nameParam}&origin=${originParam}`\n  )\n\n  useListenToPostMessage(\"hello-from-sign-in\", msg => {\n    signInMsg.current = msg\n  })\n\n  useUserNodeAccessMessage()\n\n  const onLoad = useCallback(() => {\n    setRendered(true)\n    setTimeout(() => dispatch(setOfflineAction({ offline: signInMsg.current === undefined })), 500)\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n\n  useEffect(() => {\n    const handler = e => {\n      if (!e?.target) return\n      if (e.target.src === signInIframeUrl && !rendered) onLoad()\n    }\n\n    window.addEventListener(\"DOMFrameContentLoaded\", handler)\n    return () => window.removeEventListener(\"DOMFrameContentLoaded\", handler)\n  }, [signInIframeUrl, rendered, onLoad])\n\n  useEffect(() => {\n    if (!signedIn || !ref.current) return\n    if (!registry.registryServer || registry.registryServer === NETDATA_REGISTRY_SERVER) return\n    if (!lsValue) return\n\n    removeLsValue()\n\n    const { registryMachinesArray } = registry\n    if (registryMachinesArray && registryMachinesArray.length > 0) {\n      sendToChildIframe(ref.current, {\n        type: \"synced-private-registry\",\n        payload: registryMachinesArray,\n      })\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [signedIn, registry, lsValue])\n\n  return (\n    <IframeContainer as=\"iframe\" id={SIGN_IN_IFRAME_ID} src={signInIframeUrl} onLoad={onLoad} />\n  )\n}\n\nexport default Iframe\n","import { useCallback, useState } from \"react\"\nimport { useLocalStorage } from \"react-use\"\nimport { useDispatch } from \"react-redux\"\nimport { useListenToPostMessage } from \"@/src/utils/post-message\"\nimport { isSignedInAction } from \"@/src/domains/dashboard/actions\"\n\nconst useCheckSignInStatus = () => {\n  const dispatch = useDispatch()\n  const [value, setValue] = useLocalStorage(\"has-sign-in-history\")\n  const [hasSignedInBefore, setHasSignedInBefore] = useState(value)\n\n  const onMessage = useCallback(isNew => {\n    if (isNew) {\n      setHasSignedInBefore(isNew)\n      setValue(isNew)\n    }\n    dispatch(isSignedInAction({ isSignedIn: isNew }))\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n\n  const [signedIn] = useListenToPostMessage(\"is-signed-in\", onMessage)\n\n  return [signedIn, hasSignedInBefore]\n}\n\nexport default useCheckSignInStatus\n","import React from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { Button } from \"@netdata/netdata-ui\"\nimport SignInButton from \"components/auth/signIn\"\nimport SignInIframe from \"components/auth/signIn/iframe\"\nimport useCheckSignInStatus from \"components/auth/signIn/useCheckSignInStatus\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\nimport Tooltip from \"@/src/components/tooltips\"\n\nconst SignIn = () => {\n  const [signedIn] = useCheckSignInStatus()\n  const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n  return (\n    cloudEnabled && (\n      <Tooltip\n        content=\"Sign in to Netdata to monitor all your nodes at once, have composite charts, custom dashboards, use intelligent features and more\"\n        align=\"bottom\"\n        plain\n      >\n        <div>\n          <SignInIframe signedIn={signedIn} />\n          {!signedIn && (\n            <SignInButton utmParameters={{ content: \"topbar\" }}>\n              {({ isRegistry, link, offline, onSignIn }) => (\n                <Button\n                  data-testid=\"header-signin\"\n                  label=\"Sign in\"\n                  disabled={offline}\n                  {...(isRegistry ? { as: \"a\", href: link } : { onClick: onSignIn })}\n                />\n              )}\n            </SignInButton>\n          )}\n        </div>\n      </Tooltip>\n    )\n  )\n}\n\nexport default SignIn\n","import { Text, NavigationTab, Icon } from \"@netdata/netdata-ui\"\nimport React from \"react\"\n\nconst CloudTab = ({ label, active, showBorderLeft, icon, onActivate }) => {\n  const handleOnActivate = () => {\n    if (active) return\n    if (onActivate) onActivate()\n  }\n  return (\n    <NavigationTab\n      onActivate={handleOnActivate}\n      icon={<Icon name={icon} size=\"small\" />}\n      fixed\n      closable={false}\n      showBorderLeft={showBorderLeft}\n      active={active}\n    >\n      <Text>{label}</Text>\n    </NavigationTab>\n  )\n}\n\nexport default CloudTab\n","import React from \"react\"\nimport {\n  Flex,\n  Button,\n  Box,\n  Text,\n  H3,\n  H4,\n  Modal,\n  ModalContent,\n  ModalBody,\n  ModalHeader,\n  ModalCloseButton,\n  ModalFooter,\n  Icon,\n} from \"@netdata/netdata-ui\"\n\nimport GoToCloud from \"components/auth/signIn\"\n\nexport const TITLE = \"Discover the free benefits of Netdata Cloud\"\n\nconst DiscoverCloudModal = ({ closeModal, text, header, handleGoToCloud, image, video }) => {\n  return (\n    <Modal borderShadow backdrop={false}>\n      <ModalContent background=\"modalBackground\">\n        <ModalHeader>\n          <Flex gap={2}>\n            <Icon color=\"white\" name=\"netdata\" />\n            <H3 margin={[0]}>{TITLE}:</H3>\n          </Flex>\n\n          <ModalCloseButton onClose={closeModal} />\n        </ModalHeader>\n        <ModalBody>\n          <Flex column width={189} height={130}>\n            <Flex padding={[0, 0, 4, 0]} column gap={4}>\n              <Flex alignItems=\"center\">\n                <H4 margin={[0]}>{header}</H4>\n                <Box\n                  sx={{ marginLeft: \"auto\" }}\n                  data-testid=\"go-to-cloud-cta\"\n                  margin={[0, 2, 0, 0]}\n                  width={{ min: 40 }}\n                >\n                  <GoToCloud utmParameters={{ campaign: \"discover_cloud\" }}>\n                    {({ link }) => (\n                      <Box\n                        label={\n                          <Text textTransform=\"none\" strong color=\"panel\">\n                            Sign in to Netdata Cloud!\n                          </Text>\n                        }\n                        width=\"100%\"\n                        onClick={() => handleGoToCloud({ link })}\n                        as={Button}\n                        small\n                        data-ga={\"go-to-cloud-button\"}\n                        data-testid=\"cta1-button\"\n                      />\n                    )}\n                  </GoToCloud>\n                </Box>\n              </Flex>\n              {text()}\n            </Flex>\n            {image && (\n              <Flex height=\"auto\" width=\"100%\" overflow=\"hidden\">\n                <Box\n                  sx={{\n                    width: \"100%\",\n                    height: \"auto\",\n                  }}\n                  as=\"img\"\n                  src={image}\n                ></Box>\n              </Flex>\n            )}\n            {video && (\n              <Flex height=\"100%\" width=\"100%\">\n                <Box sx={{ width: \"100%\", height: \"100%\" }}>\n                  <iframe\n                    title={`discover-cloud-iframe}`}\n                    width=\"100%\"\n                    height=\"100%\"\n                    src={video}\n                    frameBorder=\"0\"\n                    allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n                    allowFullScreen\n                  />\n                </Box>\n              </Flex>\n            )}\n          </Flex>\n        </ModalBody>\n        <ModalFooter></ModalFooter>\n      </ModalContent>\n    </Modal>\n  )\n}\n\nexport default DiscoverCloudModal\n","import { Text } from \"@netdata/netdata-ui\"\nimport Anchor from \"@/src/components/anchor\"\nimport React from \"react\"\n\nconst TabsContentText = ({ children }) => <Text fontSize=\"16px\">{children}</Text>\n\nexport const TabsContent = {\n  Home: {\n    id: \"Home\",\n    label: \"Home\",\n    header: \"Home\",\n    text: () => (\n      <TabsContentText>\n        The Home view in Netdata cloud provides summarized relevant information in an easily\n        digestible display. You can see information about your nodes, data collection and retention\n        stats, alerts, users and dashboards.\n      </TabsContentText>\n    ),\n    icon: \"room_home\",\n    image: \"images/home.png\",\n  },\n  nodeView: {\n    id: \"nodeView\",\n    label: \"Node View\",\n    header: \"Node View\",\n    text: () => (\n      <>\n        <TabsContentText>\n          The single node view you are currently using will of course be available on Netdata Cloud\n          as well. In addition, the charts and visualization on Netdata Cloud will be more flexible\n          and powerful for troubleshooting than what is available on the agent.\n        </TabsContentText>\n        <TabsContentText>\n          Netdata Cloud also comes with the Metric Correlations feature that lets you quickly find\n          metrics and charts related to a particular window of interest that you want to explore\n          further. By displaying the standard Netdata dashboard, filtered to show only charts that\n          are relevant to the window of interest, you can get to the root cause sooner.\n        </TabsContentText>\n      </>\n    ),\n    icon: \"nodes_hollow\",\n    image: \"images/nodeView.png\",\n  },\n  Overview: {\n    id: \"Overview\",\n    label: \"Overview\",\n    header: \"Overview\",\n    text: () => (\n      <>\n        <TabsContentText>\n          The Overview tab is a great way to monitor your infrastructure using Netdata Cloud. While\n          the interface might look similar to local dashboards served by an Agent, or even the\n          single-node dashboards in Netdata Cloud, Overview uses composite charts. These charts\n          display real-time aggregated metrics from all the nodes (or a filtered selection) in a\n          given War Room.\n        </TabsContentText>\n        <TabsContentText>\n          With Overview's composite charts, you can see your infrastructure from a single pane of\n          glass, discover trends or anomalies, then drill down by grouping metrics by node and\n          jumping to single-node dashboards for root cause analysis.\n        </TabsContentText>\n        <TabsContentText>\n          Here's an example of a composite chart visualizing Disk I/O bandwidth from 5 different\n          nodes in one chart.\n        </TabsContentText>\n      </>\n    ),\n    icon: \"room_overview\",\n    image: \"images/overview.png\",\n  },\n  Nodes: {\n    id: \"Nodes\",\n    label: \"Nodes\",\n    header: \"Nodes\",\n    text: () => (\n      <TabsContentText>\n        The Nodes view in Netdata Cloud lets you see and customize key metrics from any number of\n        Agent-monitored nodes and seamlessly navigate to any node's dashboard for troubleshooting\n        performance issues or anomalies using Netdata's highly-granular metrics.\n      </TabsContentText>\n    ),\n    icon: \"nodes_hollow\",\n    image: \"images/nodes.jpg\",\n  },\n  Dashboards: {\n    id: \"Dashboards\",\n    label: \"Dashboards\",\n    header: \"Dashboards\",\n    text: () => (\n      <TabsContentText>\n        With Netdata Cloud, you can build new dashboards that target your infrastructure's unique\n        needs. Put key metrics from any number of distributed systems in one place for a bird's eye\n        view of your infrastructure.\n      </TabsContentText>\n    ),\n    icon: \"dashboard\",\n    image: \"images/dashboards.png\",\n  },\n  Alerts: {\n    id: \"Alerts\",\n    label: \"Alerts\",\n    header: \"Alerts\",\n    text: () => (\n      <TabsContentText>\n        The Alerts view gives you a high level of availability and performance information for every\n        node you're monitoring with Netdata Cloud. It also offers an easy way to drill down into any\n        particular alert by taking the user to the dedicated alert view from where the user can run\n        metrics correlation or take further troubleshooting steps.\n      </TabsContentText>\n    ),\n    icon: \"alarm\",\n    image: \"images/alerts.jpg\",\n  },\n  Anomalies: {\n    id: \"Anomalies\",\n    label: \"Anomalies\",\n    header: \"Anomaies\",\n    text: () => (\n      <TabsContentText>\n        The Anomalies view on Netdata Cloud lets you quickly surface potentially anomalous metrics\n        and charts related to a particular highlight window of interest using Anomaly Advisor.\n        Anomalies are detected using per metric unsupervised machine learning running at the edge!\n      </TabsContentText>\n    ),\n    icon: \"anomaliesLens\",\n    video:\n      \"https://user-images.githubusercontent.com/24860547/165943403-1acb9759-7446-4704-8955-c566d04ad7ab.mp4\",\n  },\n  Pricing: {\n    id: \"Pricing\",\n    label: \"Pricing\",\n    header: \"Pricing\",\n    text: () => (\n      <TabsContentText>\n        Netdata Cloud’s distributed architecture—with processing occurring at the individual\n        nodes—enables us to add any number of users at marginal cost. Couple this with our upcoming\n        paid plan with added functionality for enterprise customers, and it means we can commit to\n        providing our current functionality for free, always.\n      </TabsContentText>\n    ),\n    image: \"images/pricing.png\",\n    icon: \"pricing\",\n  },\n  Privacy: {\n    id: \"Privacy\",\n    label: \"Privacy\",\n    header: \"Privacy\",\n    text: () => (\n      <>\n        <TabsContentText>\n          Data privacy is very important to us. We firmly believe that your data belongs to you.\n          This is why we don't store any metric data in Netdata Cloud.\n        </TabsContentText>\n        <TabsContentText>\n          Your local installations of the Netdata Agent form the basis for the Netdata Cloud. All\n          the data that you see in the web browser when using Netdata Cloud, is actually streamed\n          directly from the Netdata Agent to the Netdata Cloud dashboard. The data passes through\n          our systems, but it isn't stored. You can learn more about{\" \"}\n          <Anchor\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            href=\"https://learn.netdata.cloud/docs/agent/netdata-security\"\n          >\n            the Agent's security design\n          </Anchor>{\" \"}\n          design in the Agent documentation.\n        </TabsContentText>\n        <TabsContentText>\n          However, to be able to offer the stunning visualizations and advanced functionality of\n          Netdata Cloud, it does store a limited number of metadata. This metadata is ONLY available\n          to Netdata and NEVER to any 3rd parties. You can learn more about what metadata is stored\n          in Netdata cloud in our\n          <Anchor\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            href=\"https://learn.netdata.cloud/docs/cloud/data-privacy\"\n          >\n            {\" \"}\n            documentation\n          </Anchor>\n        </TabsContentText>\n      </>\n    ),\n    icon: \"privacy\",\n  },\n}\n","import React from \"react\"\nimport {\n  Text,\n  Drop,\n  ModalContent,\n  ModalBody,\n  ModalHeader,\n  ModalCloseButton,\n  ModalFooter,\n  Flex,\n  Button,\n  Box,\n  H3,\n  H4,\n  Icon,\n} from \"@netdata/netdata-ui\"\n\nimport GoToCloud from \"components/auth/signIn\"\n\nexport const TITLE = \"Discover the free benefits of Netdata Cloud\"\n\nconst DiscoverCloudDrop = ({\n  parentRef,\n  isDropdownOpen,\n  closeDropdown,\n  text,\n  header,\n  handleGoToCloud,\n  image,\n  video,\n}) => {\n  if (parentRef.current && isDropdownOpen)\n    return (\n      <Drop\n        backdrop\n        data-testid=\"selectedNodesDropdown\"\n        onEsc={closeDropdown}\n        align={{ top: \"bottom\", left: \"left\" }}\n        target={parentRef.current}\n        onClickOutside={closeDropdown}\n      >\n        <ModalContent background=\"modalBackground\">\n          <ModalHeader>\n            <Flex gap={2}>\n              <Icon color=\"white\" name=\"netdata\" />\n              <H3 margin={[0]}>{TITLE}:</H3>\n            </Flex>\n\n            <ModalCloseButton onClose={closeDropdown} />\n          </ModalHeader>\n          <ModalBody>\n            <Flex column width={189} height={130}>\n              <Flex padding={[0, 0, 4, 0]} column gap={4}>\n                <Flex alignItems=\"center\">\n                  <H4 margin={[0]}>{header}</H4>\n                  <Box\n                    sx={{ marginLeft: \"auto\" }}\n                    data-testid=\"go-to-cloud-cta\"\n                    margin={[0, 2, 0, 0]}\n                    width={{ min: 40 }}\n                  >\n                    <GoToCloud utmParameters={{ campaign: \"discover_cloud\" }}>\n                      {({ link }) => (\n                        <Box\n                          label={\n                            <Text textTransform=\"none\" strong color=\"panel\">\n                              Sign in to Netdata Cloud!\n                            </Text>\n                          }\n                          width=\"100%\"\n                          onClick={() => handleGoToCloud({ link })}\n                          data-testid=\"cta1-button\"\n                          as={Button}\n                          small\n                          data-ga={\"go-to-cloud-button\"}\n                        />\n                      )}\n                    </GoToCloud>\n                  </Box>\n                </Flex>\n                {text()}\n              </Flex>\n              {image && (\n                <Flex height=\"auto\" width=\"100%\" overflow=\"hidden\">\n                  <Box\n                    sx={{\n                      width: \"100%\",\n                      height: \"auto\",\n                    }}\n                    as=\"img\"\n                    src={image}\n                  ></Box>\n                </Flex>\n              )}\n              {video && (\n                <Flex height=\"100%\" width=\"100%\">\n                  <Box sx={{ width: \"100%\", height: \"100%\" }}>\n                    <iframe\n                      title={`discover-cloud-iframe}`}\n                      width=\"100%\"\n                      height=\"100%\"\n                      src={video}\n                      frameBorder=\"0\"\n                      allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n                      allowFullScreen\n                    />\n                  </Box>\n                </Flex>\n              )}\n            </Flex>\n          </ModalBody>\n          <ModalFooter></ModalFooter>\n        </ModalContent>\n      </Drop>\n    )\n\n  return null\n}\n\nexport default DiscoverCloudDrop\n","import React, { useState, useRef } from \"react\"\nimport { Text, Flex, NavigationTabs } from \"@netdata/netdata-ui\"\n\nimport CloudTab from \"./cloudTab\"\nimport { TITLE } from \"./discoverCloudModal\"\n\nimport { callAll } from \"@/src/utils/utils\"\nimport { TabsContent } from \"./contants\"\n\nimport DiscoverCloudDrop from \"./discoverCloudDrop\"\n\nconst Wrapper = Flex\nconst InnerPostioner = Flex\n\nconst DiscoverCloud = () => {\n  const [isModalOpen, setIsModalOpen] = useState(false)\n  const [seletedModalContent, setSelectedModalContent] = useState(null)\n  const dropDownParentRef = useRef()\n\n  const handleOpenModal = () => {\n    setIsModalOpen(true)\n  }\n\n  const handleCloseModal = () => {\n    setIsModalOpen(false)\n  }\n\n  const handleGoToCloud = ({ link }) => {\n    window.location.href = link\n  }\n\n  const handleSetModalContent = content => {\n    setSelectedModalContent(content)\n  }\n  const handleResetModalContent = () => {\n    setSelectedModalContent(null)\n  }\n\n  return (\n    <Wrapper padding={[0, 0, 0, 4]} position=\"relative\" height={15}>\n      <InnerPostioner\n        padding={[4, 2, 4, 2]}\n        gap={4}\n        height=\"100%\"\n        justifyContent=\"center\"\n        alignItems=\"center\"\n      >\n        <Text color=\"primary\">{TITLE}:</Text>\n        <Flex ref={dropDownParentRef}>\n          <NavigationTabs>\n            {Object.keys(TabsContent).map((key, index) => {\n              const { label, icon, id } = TabsContent[key]\n              const slectedContentId = seletedModalContent ? seletedModalContent.id : null\n              return (\n                <CloudTab\n                  key={key}\n                  icon={icon}\n                  active={id === slectedContentId}\n                  label={label}\n                  showBorderLeft={index === 0}\n                  onActivate={callAll(handleOpenModal, () =>\n                    handleSetModalContent(TabsContent[key])\n                  )}\n                />\n              )\n            })}\n          </NavigationTabs>\n        </Flex>\n      </InnerPostioner>\n      <DiscoverCloudDrop\n        parentRef={dropDownParentRef}\n        isDropdownOpen={isModalOpen}\n        {...seletedModalContent}\n        closeDropdown={callAll(handleCloseModal, handleResetModalContent)}\n        handleGoToCloud={handleGoToCloud}\n      />\n      {/* {isModalOpen && seletedModalContent && (\n        <DiscoverCloudModal\n          {...seletedModalContent}\n          closeModal={callAll(handleCloseModal, handleResetModalContent)}\n          handleGoToCloud={handleGoToCloud}\n        />\n      )} */}\n    </Wrapper>\n  )\n}\n\nexport default DiscoverCloud\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, Box } from \"@netdata/netdata-ui\"\nimport Node from \"./node\"\nimport Options from \"./options\"\nimport Version from \"./version\"\nimport GlobalControls from \"./globalControls\"\nimport Alarms from \"./alarms\"\nimport News from \"./news\"\nimport Timezone from \"./timezone\"\nimport SignIn from \"./signIn\"\nimport { CloudConnectionStatus } from \"./ACLK\"\nimport { DiscoverCloud } from \"@/src/components/discover-cloud\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\nimport { useSelector } from \"react-redux\"\n\nconst Wrapper = styled(Flex).attrs({\n  as: \"header\",\n  position: \"relative\",\n  justifyContent: \"between\",\n  background: \"panel\",\n  zIndex: 20,\n  width: \"100%\",\n  padding: [2, 4, 2, 4],\n})`\n  pointer-events: all;\n`\n\nconst Header = () => {\nconst cloudEnabled = useSelector(selectIsCloudEnabled)\n\n return <Wrapper>\n  <Flex alignItems=\"center\" gap={3}>\n    <Node />\n  </Flex>\n  <Flex justifyContent=\"end\" alignItems=\"center\" gap={3}>\n    <CloudConnectionStatus />\n    <Version />\n    <News />\n    <Options />\n    <Timezone />\n    <GlobalControls />\n    <Alarms />\n    <SignIn />\n  </Flex>\n {cloudEnabled&& <Box sx={{ background: \"#272B30\" }} position=\"absolute\" top=\"52px\" left=\"0px\" right=\"0px\">\n    <DiscoverCloud />\n  </Box>} \n</Wrapper>\n}\n\n\n\nexport default Header\n","import styled from \"styled-components\"\nimport { Button } from \"@netdata/netdata-ui\"\n\nconst ExpandButton = styled(Button)`\n&& {\n  > .button-icon {\n    width: 6px;\n    height: 9px;\n  }\n`\nexport default ExpandButton\n","import React from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { selectCloudBaseUrl } from \"domains/global/selectors\"\nimport { getIframeSrc } from \"@/src/utils\"\n\n\nconst SignOut = ({ flavour = \"default\", ...rest }) => {\n  const cloudBaseURL = useSelector(selectCloudBaseUrl)\n\n  return (\n    <Flex\n      alignItems=\"center\"\n      as=\"iframe\"\n      src={`${getIframeSrc(cloudBaseURL, \"sign-out\")}?type=${flavour}`}\n      border={{ side: \"all\", size: \"0px\" }}\n      width={{ max: \"128px\" }}\n      height={{ max: \"40px\" }}\n      {...rest}\n    />\n  )\n}\n\nexport default SignOut\n","import React, { useMemo } from \"react\"\nimport { ThemeProvider } from \"styled-components\"\nimport { createSelector } from \"reselect\"\nimport { useToggle } from \"react-use\"\nimport { Flex, Button, DarkTheme, Text, Layer } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { MenuItem } from \"components/menus\"\nimport SignOut from \"components/auth/signOut\"\nimport SignIn from \"components/auth/signIn\"\n\nconst SignInItem = () => {\n  const onClick = (e, link) => {\n    e.stopPropagation()\n    window.location.href = link\n  }\n  return (\n    <SignIn utmParameters={{ content: \"userSettings\" }}>\n      {({ isRegistry, link, onSignIn }) => (\n        <Text onClick={isRegistry ? e => onClick(e, link) : onSignIn}>Sign in</Text>\n      )}\n    </SignIn>\n  )\n}\n\nconst isSignedInSelector = createSelector(\n  ({ dashboard }) => dashboard,\n  ({ isSignedIn }) => isSignedIn\n)\n\nconst UserSettings = () => {\n  const [isOpen, toggle] = useToggle()\n  const signedIn = useSelector(isSignedInSelector)\n\n  const menuItems = useMemo(\n    () => [\n      ...(signedIn\n        ? [\n            {\n              children: \"Operational Status\",\n              onClick: () =>\n                window.open(\"https://status.netdata.cloud\", \"_blank\", \"noopener,noreferrer\"),\n            },\n          ]\n        : []),\n      ...(signedIn ? [{ separator: true }] : []),\n      ...(signedIn\n        ? [\n            {\n              children: (\n                <SignOut\n                  data-testid=\"signout-button-sidebar\"\n                  flavour=\"borderless\"\n                  height={{ max: \"18px\" }}\n                />\n              ),\n            },\n          ]\n        : [{ children: <SignInItem /> }]),\n    ],\n    [signedIn]\n  )\n\n  return (\n    <ThemeProvider theme={DarkTheme}>\n      <Button\n        data-testid=\"avatar-button-sidebar\"\n        flavour=\"borderless\"\n        neutral\n        icon=\"user\"\n        title=\"User settings\"\n        name=\"userSettings\"\n        onClick={toggle}\n      />\n      {isOpen && (\n        <Layer\n          position=\"bottom-left\"\n          onClickOutside={toggle}\n          onEsc={toggle}\n          backdrop={false}\n          margin={[5, 18]}\n        >\n          <Flex column width={52} background=\"mainBackground\" padding={[3]} round>\n            {menuItems.map((item, i) => {\n              if (item.separator) return <Flex height=\"1px\" background=\"disabled\" key={i} />\n              return (\n                <MenuItem\n                  key={i}\n                  padding={[2, 4]}\n                  round={1}\n                  {...(item.onClick && { onClick: item.onClick })}\n                >\n                  {item.children}\n                </MenuItem>\n              )\n            })}\n          </Flex>\n        </Layer>\n      )}\n    </ThemeProvider>\n  )\n}\n\nexport default UserSettings\n","import React from \"react\"\nimport { Flex, Button } from \"@netdata/netdata-ui\"\n\nconst SpacesSkeleton = () => (\n  <React.Fragment>\n    <Flex\n      width=\"40px\"\n      height=\"40px\"\n      round={2}\n      border={{ side: \"all\", color: \"border\", size: \"2px\", type: \"dotted\" }}\n    />\n    <Flex height=\"1px\" background=\"separator\" width=\"20px\" />\n    <Button icon=\"plus\" disabled />\n  </React.Fragment>\n)\n\nexport default SpacesSkeleton\n","import React from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectCloudBaseUrl } from \"domains/global/selectors\"\nimport { getIframeSrc } from \"utils/utils\"\n\nconst SpacesIframe = () => {\n  const cloudBaseURL = useSelector(selectCloudBaseUrl)\n  return (\n    <Flex\n      as=\"iframe\"\n      src={getIframeSrc(cloudBaseURL, \"space-bar\")}\n      title=\"Space Bar\"\n      height=\"100%\"\n      width=\"100%\"\n      border={{ side: \"all\", size: \"0px\" }}\n      overflow=\"hidden\"\n    />\n  )\n}\n\nexport default SpacesIframe\n","import React from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { Icon, Flex, Button, Documentation } from \"@netdata/netdata-ui\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\nimport ExpandButton from \"./expandButton\"\nimport UserSettings from \"./userSettings\"\nimport SpacesSkeleton from \"./spacesSkeleton\"\nimport SpacesIframe from \"./spacesIframe\"\n\nconst Spaces = ({ isOpen, toggle, isSignedIn }) => {\n  const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n  return (\n    <Flex\n      column\n      justifyContent=\"between\"\n      background=\"panel\"\n      padding={[3, 0]}\n      width=\"64px\"\n      alignItems=\"center\"\n      gap={6}\n      position=\"relative\"\n      overflow=\"hidden\"\n    >\n      <Flex column gap={4} alignItems=\"center\" height=\"100%\" overflow=\"hidden\">\n        <Icon color=\"success\" name=\"netdataPress\" height=\"32px\" width=\"32px\" />\n        {!isOpen && (\n          <ExpandButton\n            icon=\"chevron_right_s\"\n            onClick={toggle}\n            small\n            neutral\n            flavour=\"borderless\"\n            themeType=\"dark\"\n          />\n        )}\n        {cloudEnabled && isSignedIn && <SpacesIframe />}\n        {cloudEnabled && !isSignedIn && <SpacesSkeleton />}\n      </Flex>\n      <Flex column gap={4} alignItems=\"center\">\n        <Documentation app=\"agent\">\n          {toggle => (\n            <Button\n              flavour=\"borderless\"\n              neutral\n              themeType=\"dark\"\n              className=\"btn\"\n              icon=\"question\"\n              onClick={toggle}\n              title=\"Need help?\"\n            />\n          )}\n        </Documentation>\n        <Button\n          flavour=\"borderless\"\n          neutral\n          themeType=\"dark\"\n          className=\"btn\"\n          data-toggle=\"modal\"\n          data-target=\"#optionsModal\"\n          icon=\"gear\"\n          title=\"Settings\"\n        />\n        {cloudEnabled && <UserSettings />}\n      </Flex>\n    </Flex>\n  )\n}\n\nexport default Spaces\n","// some old functions here, i don't have time to comprehend them now\n\n// --------------------------------------------------------------------\n// natural sorting\n// http://www.davekoelle.com/files/alphanum.js - LGPL\n\nconst naturalSortChunkify = (t: string) => {\n  const tz = []\n  let x = 0\n  let y = -1; let n = 0 as boolean | number; let i; let j\n\n  // eslint-disable-next-line no-cond-assign,no-plusplus\n  while (i = (j = t.charAt(x++)).charCodeAt(0)) {\n    const m = (i >= 48 && i <= 57)\n    if (m !== n) {\n      // eslint-disable-next-line no-plusplus\n      tz[++y] = \"\"\n      n = m\n    }\n    tz[y] += j\n  }\n\n  return tz\n}\n\n\nexport const naturalSortCompare = (a: string, b: string) => {\n  const aa = naturalSortChunkify(a.toLowerCase())\n  const bb = naturalSortChunkify(b.toLowerCase())\n\n  // eslint-disable-next-line no-plusplus\n  for (let x = 0; aa[x] && bb[x]; x++) {\n    if (aa[x] !== bb[x]) {\n      const c = Number(aa[x]); const\n        d = Number(bb[x])\n      if (c.toString() === aa[x] && d.toString() === bb[x]) {\n        return c - d\n      }\n      return (aa[x] > bb[x]) ? 1 : -1\n    }\n  }\n  return aa.length - bb.length\n}\n\n\ninterface ObjectsWithPriority {\n  [key: string]: {\n    priority: number\n  }\n}\nexport const sortObjectByPriority = <T extends ObjectsWithPriority>(object: T) => {\n  const sorted = Object.keys(object)\n\n  sorted.sort((a, b) => {\n    if (object[a].priority < object[b].priority) {\n      return -1\n    }\n    if (object[a].priority > object[b].priority) {\n      return 1\n    }\n    return naturalSortCompare(a, b)\n  })\n\n  return sorted\n}\n\n\ninterface PrioritySortObject {\n  name: string\n  priority: number\n}\nexport const prioritySort = <T extends PrioritySortObject>(a: T, b: T) => {\n  if (a.priority < b.priority) {\n    return -1\n  }\n  if (a.priority > b.priority) {\n    return 1\n  }\n  return naturalSortCompare(a.name, b.name)\n}\n","import { naturalSortCompare } from \"domains/dashboard/utils/sorting\"\n\nconst getBaseUrl = hostname => {\n  let base = document.location.origin.toString() + decodeURI(document.location.pathname.toString())\n  if (base.endsWith(`/host/${hostname}/`)) {\n    base = base.substring(0, base.length - `/host/${hostname}/`.toString().length)\n  }\n\n  if (base.endsWith(\"/\")) {\n    base = base.substring(0, base.length - 1)\n  }\n\n  return base\n}\n\nconst getNodeUrl = (baseUrl, hostname) => `${baseUrl}/host/${hostname}/`\n\nconst getNodes = (hosts, hostname, hostsStatus) => {\n  if (!hosts || !hostname) return {}\n\n  // decodeURI, because pathname (which is hostname) can contain white-spaces\n  // or other characters which are URIencoded when user clicks the link\n  // and we need to match it with `chartsMetadata.hostname`\n  const baseUrl = getBaseUrl(hostname)\n\n  const [{ hostname: parentNodeHostname }] = hosts\n\n  const parentNode = {\n    hostname: parentNodeHostname,\n    url: `${baseUrl}/`,\n  }\n\n  const replicatedNodes = hosts\n    .slice(1)\n    .map(({ hostname }, index) => ({\n      hostname,\n      url: getNodeUrl(baseUrl, hostname),\n      status: hostsStatus.find(host => host.hostname === hostname)?.reachable || false,\n    }))\n    .sort((a, b) => naturalSortCompare(a.hostname, b.hostname))\n\n  return {\n    parentNode,\n    replicatedNodes,\n  }\n}\n\nexport default getNodes\n","import styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\n\nconst Anchor = styled(Flex).attrs({\n  as: \"a\",\n  gap: 2,\n  alignItems: \"center\",\n})`\n  & :hover {\n    text-decoration: none;\n  }\n`\n\nexport default Anchor\n","import React from \"react\"\nimport { Flex, Text, Icon } from \"@netdata/netdata-ui\"\nimport Pill from \"components/header/pill\"\nimport Anchor from \"./anchor\"\n\nconst Node = ({ hostname, url, status }) => {\n  return (\n    <Anchor href={url} justifyContent=\"between\" padding={[0, 0, 0, 2]}>\n      <Flex alignItems=\"center\" gap={2}>\n        <Icon name=\"node\" color=\"bright\" />\n        <Text color=\"bright\" truncate>\n          {hostname}\n        </Text>\n      </Flex>\n      <Pill background={status ? \"success\" : \"border\"} color=\"bright\" round={10}>\n        {status ? \"Live\" : \"Off\"}\n      </Pill>\n    </Anchor>\n  )\n}\n\nexport default Node\n","import React, { useState, useCallback, useMemo } from \"react\"\nimport styled from \"styled-components\"\nimport { Flex, Text, Icon, TextInput } from \"@netdata/netdata-ui\"\nimport { MenuList } from \"components/menus\"\nimport Anchor from \"./anchor\"\nimport Node from \"./node\"\n\nconst Search = styled(TextInput)`\n  & > label {\n    margin-bottom: 0;\n  }\n`\n\nconst StyledIcon = styled(Icon)`\n  transform: ${({ right }) => (right ? \"rotate(270deg)\" : \"none\")};\n`\n\nconst ReplicatedNodes = ({ parentNode, replicatedNodes }) => {\n  const [listOpen, setListOpen] = useState(true)\n  const [value, setValue] = useState(\"\")\n\n  const toggleListOpen = useCallback(() => setListOpen(o => !o), [])\n  const onChange = useCallback(e => setValue(e.target.value), [])\n\n  const nodes = useMemo(() => {\n    if (!value) return replicatedNodes\n    return replicatedNodes.filter(({ hostname }) =>\n      hostname.toLowerCase().includes(value.toLowerCase())\n    )\n  }, [replicatedNodes, value])\n\n  return (\n    <MenuList\n      isOpen={listOpen}\n      toggleOpen={toggleListOpen}\n      label={\n        <Flex alignItems=\"center\" justifyContent=\"between\">\n          <Text strong color=\"border\">\n            Replicated nodes\n          </Text>\n          <StyledIcon right={!listOpen} name=\"chevron_down\" size=\"small\" color=\"text\" />\n        </Flex>\n      }\n    >\n      <Flex column gap={4} padding={[4, 0, 0]}>\n        <Anchor as=\"a\" href={parentNode.url} justifyContent=\"start\">\n          <Icon name=\"nodes\" size=\"small\" color=\"bright\" />\n          <Text color=\"bright\">{parentNode.hostname}</Text>\n        </Anchor>\n        {nodes.length >= 5 && (\n          <Flex padding={[0, 0, 0, 2]}>\n            <Search\n              value={value}\n              onChange={onChange}\n              iconLeft={<Icon name=\"search_s\" size=\"small\" color=\"text\" />}\n              metaShrinked\n            />\n          </Flex>\n        )}\n        <Flex column gap={2}>\n          {nodes.map(({ hostname, url, status }) => (\n            <Node key={hostname} hostname={hostname} url={url} status={status} />\n          ))}\n        </Flex>\n      </Flex>\n    </MenuList>\n  )\n}\n\nexport default ReplicatedNodes\n","import React, { useRef, useEffect } from \"react\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { sendToChildIframe, useListenToPostMessage } from \"@/src/utils/post-message\"\nimport { getIframeSrc } from \"@/src/utils\"\nimport { selectCloudBaseUrl } from \"domains/global/selectors\"\n\nconst SpacePanelIframe = ({ parentNode, replicatedNodes }) => {\n  const cloudBaseURL = useSelector(selectCloudBaseUrl)\n\n  const ref = useRef()\n\n  const [spacePanelMessage] = useListenToPostMessage(\"hello-from-space-panel\")\n\n  useEffect(() => {\n    if (!spacePanelMessage || !ref.current) return\n    sendToChildIframe(ref.current, {\n      type: \"streamed-hosts-data\",\n      payload: { parentNode, replicatedNodes },\n    })\n  }, [replicatedNodes, parentNode, spacePanelMessage])\n\n  return (\n    <Flex\n      ref={ref}\n      as=\"iframe\"\n      src={getIframeSrc(cloudBaseURL, \"space-panel\")}\n      title=\"space panel\"\n      width=\"100%\"\n      height=\"100%\"\n      border={{ side: \"all\", size: \"0px\" }}\n    />\n  )\n}\n\nexport default SpacePanelIframe\n","import React from \"react\"\nimport { TextSmall } from \"@netdata/netdata-ui\"\n\nconst promptContent = {\n  signIn: {\n    title: \"Welcome back!\",\n    content: [\n      <TextSmall key=\"1\" color=\"bright\">\n        Sign in again to enjoy the benefits of Netdata Cloud{\" \"}\n      </TextSmall>,\n    ],\n  },\n  signUp: {\n    title: \"Welcome to Netdata Cloud!\",\n    content: [\n      <TextSmall key=\"1\" color=\"bright\">\n        <TextSmall strong color=\"bright\">\n          A single place\n        </TextSmall>{\" \"}\n        for all your nodes.\n      </TextSmall>,\n      <TextSmall key=\"2\" color=\"bright\">\n        <TextSmall strong color=\"bright\">\n          Multi-node dashboards\n        </TextSmall>{\" \"}\n        out of the box.\n      </TextSmall>,\n      <TextSmall key=\"3\" color=\"bright\">\n        <TextSmall strong color=\"bright\">\n          Custom dashboards\n        </TextSmall>{\" \"}\n        for you to create, edit and share online.\n      </TextSmall>,\n      <TextSmall key=\"4\" color=\"bright\">\n        <TextSmall strong color=\"bright\">\n          Metric Correlations\n        </TextSmall>{\" \"}\n        to find the root cause of anything.\n      </TextSmall>,\n      <TextSmall key=\"5\" color=\"bright\">\n        <TextSmall strong color=\"bright\">\n          Centrally dispatched notifications\n        </TextSmall>{\" \"}\n        for all alarms of all your nodes.\n      </TextSmall>,\n      <TextSmall key=\"6\" color=\"bright\">\n        And... It is{\" \"}\n        <TextSmall\n          as=\"a\"\n          href=\"https://www.netdata.cloud/get-netdata/\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          strong\n          color=\"bright\"\n        >\n          free, forever!\n        </TextSmall>\n      </TextSmall>,\n    ],\n  },\n}\n\nexport default promptContent\n","import React from \"react\"\nimport { Flex, Text, Button } from \"@netdata/netdata-ui\"\nimport SignIn from \"@/src/components/auth/signIn\"\nimport promptContent from \"./promptContent\"\n\nconst SignInPrompt = () => {\n  return (\n    <SignIn utmParameters={{ content: \"sidebar\" }}>\n      {({ isRegistry, link, onSignIn, offline }) => {\n        const { title, content } = promptContent[\"signIn\"]\n        return (\n          <Flex\n            background={[\"neutral\", \"regentgrey\"]}\n            column\n            gap={4}\n            padding={[10]}\n            border={{ side: \"right\", color: \"panel\" }}\n          >\n            <Text color=\"bright\" strong>\n              {title}\n            </Text>\n            {content.map(el => el)}\n            <Button\n              width=\"100%\"\n              label=\"Sign in\"\n              disabled={offline}\n              {...(isRegistry ? { as: \"a\", href: link } : { onClick: onSignIn })}\n            />\n          </Flex>\n        )\n      }}\n    </SignIn>\n  )\n}\n\nexport default SignInPrompt\n","import React from \"react\"\n\nconst NoNetwork = () => (\n  <svg width=\"68\" height=\"68\" viewBox=\"0 0 68 68\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M48.875 6.375H19.125C16.7778 6.375 14.875 8.27779 14.875 10.625V40.375C14.875 42.7222 16.7778 44.625 19.125 44.625H48.875C51.2222 44.625 53.125 42.7222 53.125 40.375V10.625C53.125 8.27779 51.2222 6.375 48.875 6.375Z\"\n      fill=\"white\"\n      stroke=\"#AEB3B7\"\n    />\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M41.0834 38.25C41.8658 38.25 42.5 38.8843 42.5 39.6667V41.0833C44.0648 41.0833 45.3334 42.3519 45.3334 43.9167V58.0833C45.3334 59.6481 44.0648 60.9167 42.5 60.9167H38.25V65.1667H31.8278V60.9167H26.9167C25.3519 60.9167 24.0834 59.6481 24.0834 58.0833V43.9167C24.0834 42.3519 25.3519 41.0833 26.9167 41.0833V39.6667C26.9167 38.8843 27.551 38.25 28.3334 38.25H41.0834Z\"\n      fill=\"#35414A\"\n    />\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M39.7954 12.75C40.5778 12.75 41.2121 13.3843 41.2121 14.1667L41.2108 16.7294L43.9166 16.7296C44.699 16.7296 45.3333 17.3639 45.3333 18.1463V34C45.3333 34.7824 44.699 35.4167 43.9166 35.4167L43.272 35.4152L43.2727 33.3403H41.2121L41.2108 35.4152H39.151L39.1515 33.3403H37.0909L37.0897 35.4152H35.0299L35.0303 33.3403H32.9697L32.9686 35.4152H30.9088L30.909 33.3403H28.8484L28.8475 35.4152H26.7877L26.7878 33.3403H24.7272L24.7265 35.4152L24.0833 35.4167C23.3009 35.4167 22.6666 34.7824 22.6666 34V18.1463C22.6666 17.3639 23.3009 16.7296 24.0833 16.7296L26.7877 16.7294L26.7878 14.1667C26.7878 13.3843 27.4221 12.75 28.2045 12.75H39.7954Z\"\n      fill=\"#35414A\"\n    />\n  </svg>\n)\n\nexport default NoNetwork\n","import React from \"react\"\nimport { Flex, TextNano, TextSmall } from \"@netdata/netdata-ui\"\nimport NoNetwork from \"./noNetwork\"\n\nconst OfflinePrompt = () => (\n  <Flex alignItems=\"center\" background={[\"neutral\", \"regentgrey\"]} column gap={1} padding={[10]}>\n    <TextSmall color=\"bright\" strong textAlign=\"center\">\n      Can't connect to Netdata Cloud\n    </TextSmall>\n    <NoNetwork />\n    <TextNano color=\"bright\" textAlign=\"center\" margin={[2, 0, 0]}>\n      Maybe you are behind a firewall or you don’t have connection to the internet\n    </TextNano>\n  </Flex>\n)\n\nexport default OfflinePrompt\n","import styled from \"styled-components\"\nimport { getSizeBy, getColor, Icon, TextNano, Text } from \"@netdata/netdata-ui\"\n\nexport const NodesContainer = styled.div`\n  .mdc-list-item {\n    padding: 0 0;\n    padding-left: 0;\n  }\n  .rmwc-collapsible-list__children {\n    .mdc-list-item {\n      padding: 0 0;\n      padding-left: 0;\n      height: ${getSizeBy(4)};\n    }\n  }\n  .rmwc-collapsible-list__handle {\n    .mdc-list-item {\n      padding: 0 ${getSizeBy(2)};\n    }\n  }\n  .mdc-list-item__meta {\n    color: ${getColor(\"bright\")};\n  }\n  .mdc-list-item:before {\n    background: none;\n  }\n`\n\nexport const ListItem = styled.div`\n  width: 100%;\n  min-height: ${getSizeBy(3)};\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  cursor: pointer;\n  justify-content: space-between;\n`\n\nexport const TrashIcon = styled(Icon)`\n  fill: #35414a;\n  margin-right: ${getSizeBy(2)};\n  transition: opacity 0.4s ease-in;\n  &:hover {\n    opacity: 0.6;\n  }\n`\n\nexport const StyledIcon = styled(Icon)`\n  flex-shrink: 0;\n  flex-grow: 0;\n  margin-right: ${getSizeBy(2)};\n  fill: ${getColor([\"gray\", \"arsenic\"])};\n`\n\n// @ts-ignore todo extend interface in dashboard due to lack of types in netdata-ui\nexport const NodeUrl = styled(TextNano.withComponent(\"a\"))`\n  text-decoration: none;\n  margin-left: ${getSizeBy(5)};\n  color: #aeb3b7;\n  max-width: 145px;\n  word-wrap: break-word;\n  &:hover {\n    color: inherit; // overwrite bootstrap\n    text-decoration: none;\n  }\n`\n\n// @ts-ignore todo\nexport const NodeName = styled(Text.withComponent(\"a\"))`\n  flex: 1;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  min-width: 0;\n  white-space: nowrap;\n`\n","import React, { useCallback, useState } from \"react\"\nimport { CollapsibleList, SimpleListItem } from \"@rmwc/list\"\nimport \"@material/list/dist/mdc.list.css\"\nimport \"@rmwc/list/collapsible-list.css\"\nimport \"@rmwc/icon/icon.css\"\nimport { Box, Flex, Text } from \"@netdata/netdata-ui\"\n\nimport truncateMiddle from \"utils/truncateMiddle\"\nimport { naturalSortCompare } from \"domains/dashboard/utils/sorting\"\nimport { MASKED_DATA } from \"domains/global/constants\"\nimport { MenuList } from \"components/menus\"\n\nimport { NodesContainer, ListItem, StyledIcon, NodeUrl, NodeName, TrashIcon } from \"./styled\"\n\nconst Node = ({ name, alternateUrls, machineGuid }) => (\n  <CollapsibleList\n    handle={\n      <SimpleListItem\n        text={\n          <>\n            <StyledIcon name=\"node\" />\n            <NodeName\n              color=\"bright\"\n              href=\"\"\n              onClick={event => {\n                event.preventDefault() // prevent navigating to url\n                event.stopPropagation()\n                window.gotoServerModalHandler(machineGuid)\n              }}\n            >\n              {name}\n            </NodeName>\n          </>\n        }\n        metaIcon={alternateUrls.length && \"chevron_right\"}\n      />\n    }\n  >\n    <Box margin={[2, 0, 0]}>\n      {alternateUrls.map(url => (\n        <ListItem key={url}>\n          <NodeUrl href={url}>{truncateMiddle(url, 50)}</NodeUrl>\n          <TrashIcon\n            name=\"trashcan\"\n            size=\"small\"\n            onClick={() => {\n              window.deleteRegistryModalHandler(machineGuid, name, url)\n            }}\n          />\n        </ListItem>\n      ))}\n    </Box>\n  </CollapsibleList>\n)\n\nexport const VisitedNodes = ({ machinesArray }) => {\n  const sortedMachines = machinesArray\n    .sort((a, b) => naturalSortCompare(a.name, b.name))\n    .filter(({ url }) => url !== MASKED_DATA)\n\n  const [listOpen, setListOpen] = useState(true)\n  const toggleListOpen = useCallback(() => setListOpen(o => !o), [])\n\n  return (\n    <MenuList\n      isOpen={listOpen}\n      toggleOpen={toggleListOpen}\n      label={\n        <Flex alignItems=\"center\" justifyContent=\"between\">\n          <Text strong color=\"border\">\n            Visited Nodes\n          </Text>\n          <StyledIcon right={!listOpen} name=\"chevron_down\" size=\"small\" color=\"text\" />\n        </Flex>\n      }\n    >\n      <NodesContainer column gap={2}>\n        {sortedMachines.map(({ name, alternateUrls, guid, url }) => (\n          <Node\n            alternateUrls={alternateUrls}\n            key={`${name}-${guid}`}\n            machineGuid={guid}\n            name={name}\n            url={url}\n          />\n        ))}\n      </NodesContainer>\n    </MenuList>\n  )\n}\n\nexport default VisitedNodes\n","export default (text, maxLength) => {\n  if (text.length <= maxLength) return text\n\n  const spanLength = Math.floor((maxLength - 3) / 2)\n  return `${text.substring(0, spanLength)}...${text.substring(text.length - spanLength)}`\n}\n","import React, { useCallback } from \"react\"\nimport { useSelector } from \"react-redux\"\nimport { createSelector } from \"reselect\"\nimport { Flex, Text, TextSmall, Collapsible, Button } from \"@netdata/netdata-ui\"\nimport { selectIsUsingGlobalRegistry, selectIsCloudEnabled } from \"domains/global/selectors\"\nimport getNodes from \"./nodes\"\nimport ReplicatedNodes from \"./replicatedNodes\"\nimport SpacePanelIframe from \"./spacePanelIframe\"\nimport SignInPrompt from \"./prompts/signIn\"\nimport OfflinePrompt from \"./prompts/offline\"\nimport VisitedNodes from \"./visitedNodes\"\n\nconst replicatedNodesSelector = createSelector(\n  state => state.global.chartsMetadata.data || {},\n  state => state.global.registry.fullInfoPayload.mirrored_hosts_status || {},\n  ({ hosts, hostname }, hostsStatus) => getNodes(hosts, hostname, hostsStatus)\n)\n\nconst visitedNodesSelector = createSelector(\n  state => state.global.registry,\n  registry => registry.registryMachinesArray || []\n)\n\nconst isSignedInSelector = createSelector(\n  ({ dashboard }) => dashboard,\n  ({ isSignedIn, offline }) => ({ isSignedIn, offline })\n)\n\nconst Space = ({ isOpen, toggle }) => {\n  const { parentNode = {}, replicatedNodes = [] } = useSelector(replicatedNodesSelector)\n  const visitedNodes = useSelector(visitedNodesSelector)\n  const globalRegistry = useSelector(selectIsUsingGlobalRegistry)\n  const { isSignedIn, offline } = useSelector(isSignedInSelector)\n  const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n  const switchIdentity = useCallback(() => window.switchRegistryModalHandler(), [])\n\n  return (\n    <Collapsible width={74} background=\"panel\" open={isOpen} direction=\"horizontal\" persist>\n      <Flex\n        flex\n        column\n        overflow={{ vertical: \"hidden\" }}\n        margin={[3, 0, 0]}\n        border={{ side: \"left\", color: \"separator\" }}\n        style={{ pointerEvents: \"all\" }}\n      >\n        <Flex overflow={{ vertical: \"auto\" }} flex column gap={4} padding={[4]}>\n          <Flex alignSelf=\"end\">\n            <Button\n              neutral\n              flavour=\"borderless\"\n              themeType=\"dark\"\n              small\n              icon=\"chevron_left\"\n              onClick={toggle}\n            />\n          </Flex>\n          {!isSignedIn && (\n            <>\n              {!!replicatedNodes.length && (\n                <ReplicatedNodes parentNode={parentNode} replicatedNodes={replicatedNodes} />\n              )}\n              {!!visitedNodes.length && (\n                <Text strong color=\"border\">\n                  <VisitedNodes machinesArray={visitedNodes} />\n                </Text>\n              )}\n            </>\n          )}\n          {isSignedIn && (\n            <SpacePanelIframe parentNode={parentNode} replicatedNodes={replicatedNodes} />\n          )}\n        </Flex>\n        {globalRegistry && (\n          <Flex border={{ side: \"top\" }} justifyContent=\"center\" alignItems=\"center\" padding={[6]}>\n            <TextSmall onClick={switchIdentity}>Switch Identity</TextSmall>\n          </Flex>\n        )}\n        {!isSignedIn && cloudEnabled && <SignInPrompt />}\n        {offline && cloudEnabled && <OfflinePrompt />}\n      </Flex>\n    </Collapsible>\n  )\n}\n\nexport default React.memo(Space)\n","import React, { useCallback, useEffect } from \"react\"\nimport styled from \"styled-components\"\nimport { createSelector } from \"reselect\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport { useDispatch, useSelector } from \"react-redux\"\nimport { useLocalStorage } from \"react-use\"\nimport { selectSpacePanelIsActive } from \"@/src/domains/global/selectors\"\nimport { setSpacePanelStatusAction } from \"@/src/domains/global/actions\"\nimport Spaces from \"./spaces\"\nimport Space from \"./space\"\n\nconst Wrapper = styled(Flex).attrs({ height: \"100vh\", zIndex: 10 })`\n  pointer-events: all;\n`\n\nconst isSignedInSelector = createSelector(\n  ({ dashboard }) => dashboard,\n  ({ isSignedIn }) => isSignedIn\n)\n\nconst Sidebar = () => {\n  const [lsValue, setLsValue] = useLocalStorage(\"space-panel-state\")\n  const isOpen = useSelector(selectSpacePanelIsActive)\n  const signedIn = useSelector(isSignedInSelector)\n\n  const dispatch = useDispatch()\n\n  const toggle = useCallback(() => {\n    dispatch(setSpacePanelStatusAction({ isActive: !isOpen }))\n    setLsValue(!isOpen)\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isOpen])\n\n  useEffect(() => {\n    dispatch(setSpacePanelStatusAction({ isActive: lsValue ? signedIn : false }))\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [signedIn])\n\n  return (\n    <Wrapper>\n      <Spaces isOpen={isOpen} toggle={toggle} isSignedIn={signedIn} />\n      <Space isOpen={isOpen} toggle={toggle} offline={true} />\n    </Wrapper>\n  )\n}\n\nexport default React.memo(Sidebar)\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Flex } from \"@netdata/netdata-ui\"\nimport Header from \"components/header\"\nimport Sidebar from \"components/sidebar\"\n\nconst Wrapper = styled(Flex).attrs({\n  position: \"fixed\",\n  justifyContent: \"start\",\n  alignItems: \"start\",\n  width: \"100%\",\n  zIndex: 10,\n})`\n  top: 0;\n  left: 0;\n  pointer-events: none;\n`\n\nconst Layout = ({ children, printMode }) => {\n\n  if (printMode) return children\n\n  return (\n    <Wrapper>\n      <Sidebar />\n      <Header />\n      {children}\n    </Wrapper>\n  )\n}\n\nexport default Layout\n","import { DefaultTheme, DarkTheme } from \"@netdata/netdata-ui\"\n\nexport type DashboardTheme = any\n\nexport const mapTheme = (theme: DashboardTheme): any =>\n  ({\n    slate: DarkTheme,\n    white: DefaultTheme,\n  }[theme] || DarkTheme)\n","import React, { useState, useCallback } from \"react\"\nimport GoToCloud from \"components/auth/signIn\"\n\nimport {\n  Modal,\n  ModalContent,\n  ModalBody,\n  ModalFooter,\n  ModalHeader,\n  Text,\n  Flex,\n  H3,\n  Button,\n  Box,\n  Checkbox,\n} from \"@netdata/netdata-ui\"\n\nconst campaign = \"agent_nudge_to_cloud\"\n\nconst MigrationModal = ({\n  migrationModalPromoInfo,\n  setUserPrefrence,\n  closeModal,\n  savePromoRemindMeSelection,\n  migrationModalPromo,\n  requestRefreshOfAccess,\n}) => {\n  const [isRememberChoiceChecked, setIsRememberChoiceChecked] = useState(false)\n\n  const handleCheckBoxChange = e => {\n    setIsRememberChoiceChecked(e.currentTarget.checked)\n  }\n\n  const handleClickedCTA1 = useCallback(\n    ({ link, toPath }) => {\n      const { CTA1 } = migrationModalPromoInfo\n\n      if (CTA1.action === \"NAVIGATE\") {\n        if (isRememberChoiceChecked) {\n          setUserPrefrence(CTA1.userPreference)\n          savePromoRemindMeSelection(isRememberChoiceChecked)\n        }\n        if (toPath !== \"agent\") window.location.href = link\n        closeModal()\n      } else if (CTA1.action === \"REFRESH\") {\n        requestRefreshOfAccess()\n      }\n    },\n    [\n      migrationModalPromoInfo,\n      setUserPrefrence,\n      isRememberChoiceChecked,\n      requestRefreshOfAccess,\n      savePromoRemindMeSelection,\n      closeModal,\n    ]\n  )\n\n  const handleClickedCTA2 = useCallback(() => {\n    const { CTA2 } = migrationModalPromoInfo\n    if (isRememberChoiceChecked) {\n      setUserPrefrence(CTA2.userPreference)\n      savePromoRemindMeSelection(isRememberChoiceChecked)\n    }\n    if (CTA2.action === \"NAVIGATE\") {\n    } else if (CTA2.action === \"REFRESH\") {\n      requestRefreshOfAccess()\n    }\n    closeModal()\n  }, [\n    migrationModalPromoInfo,\n    setUserPrefrence,\n    isRememberChoiceChecked,\n    requestRefreshOfAccess,\n    savePromoRemindMeSelection,\n    closeModal,\n  ])\n\n  return migrationModalPromoInfo ? (\n    <Modal>\n      <ModalContent width={180} background=\"modalBackground\">\n        <ModalHeader>\n          <H3 margin={[0]}>{migrationModalPromoInfo.title}</H3>\n        </ModalHeader>\n        <ModalBody>\n          <Flex padding={[0, 0, 4, 0]} column gap={3}>\n            {typeof migrationModalPromoInfo.text.header === \"function\" ? (\n              migrationModalPromoInfo.text.header({})\n            ) : (\n              <Text>{migrationModalPromoInfo.text.header}</Text>\n            )}\n            {migrationModalPromoInfo.text.bullets.length > 0 && (\n              <Flex column gap={3}>\n                <Flex column gap={1} as={\"ul\"}>\n                  {migrationModalPromoInfo.text.bullets.map(bullet => {\n                    if (typeof bullet === \"function\") {\n                      return <li key={bullet}>{bullet()}</li>\n                    }\n                    return (\n                      <li key={bullet}>\n                        <Text>{bullet}</Text>\n                      </li>\n                    )\n                  })}\n                </Flex>\n              </Flex>\n            )}\n            {migrationModalPromoInfo.text.footer && (\n              <Text data-testid=\"body-footer\">{migrationModalPromoInfo.text.footer}</Text>\n            )}\n          </Flex>\n        </ModalBody>\n        <ModalFooter>\n          <Box margin={[0, \"auto\", 0, 0]}>\n            <Checkbox\n              data-ga={`${migrationModalPromo}::click-remind-me::ad`}\n              data-testid=\"remind-me-checkbox\"\n              checked={isRememberChoiceChecked}\n              onChange={handleCheckBoxChange}\n              label={migrationModalPromoInfo.tickBoxOption.text}\n            />\n          </Box>\n          <Box data-testid=\"cta1\" margin={[0, 2, 0, 0]} width={{ min: 40 }}>\n            <GoToCloud utmParameters={{ content: migrationModalPromo, campaign }}>\n              {({ link }) => (\n                <Button\n                  data-ga={`${migrationModalPromo}::click-ct1::ad`}\n                  textTransform=\"none\"\n                  data-testid=\"cta1-button\"\n                  onClick={() =>\n                    handleClickedCTA1({ link, toPath: migrationModalPromoInfo.CTA1.toPath })\n                  }\n                  width=\"100%\"\n                  label={migrationModalPromoInfo.CTA1.text}\n                />\n              )}\n            </GoToCloud>\n          </Box>\n          {migrationModalPromoInfo.CTA2 && (\n            <Box\n              data-ga={`${migrationModalPromo}::click-ct2::ad`}\n              onClick={handleClickedCTA2}\n              height={10}\n              className=\"btn btn-default\"\n              data-testid=\"cta2\"\n              width={{ min: 40 }}\n            >\n              <Box as={Text} sx={{ fontWeight: \"500\", lineHeight: \"25px\" }}>\n                {migrationModalPromoInfo.CTA2.text}\n              </Box>\n            </Box>\n          )}\n        </ModalFooter>\n      </ModalContent>\n    </Modal>\n  ) : null\n}\n\nexport default MigrationModal\n","import React, { useState, useEffect, useMemo } from \"react\"\nimport { useLocalStorage } from \"react-use\"\nimport { useSelector } from \"react-redux\"\n\nimport { selectUserNodeAccess } from \"domains/global/selectors\"\nimport {\n  MigrationModal,\n  useMigrationModal,\n  PromoProps,\n  goToCloud,\n  goToAgentDashboard,\n} from \"@/src/domains/dashboard/components/migration-modal\"\nimport { selectSignInUrl } from \"domains/global/selectors\"\nimport { useRequestRefreshOfAccessMessage } from \"hooks/use-user-node-access\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\nimport { selectRegistry } from \"domains/global/selectors\"\n\n// const PROMO_SIGN_UP_CLOUD: PromoProps = { userStatus: \"UNKNOWN\", nodeClaimedStatus: \"NOT_CLAIMED\" } //CLOUD\n// const PROMO_SIGN_IN_CLOUD: PromoProps = {\n//   userStatus: \"UNKNOWN\",\n//   nodeClaimedStatus: \"CLAIMED\",\n// } //CLOUD\n// const PROMO_IVNITED_TO_SPACE: PromoProps = {\n//   userStatus: \"LOGGED_IN\",\n//   nodeClaimedStatus: \"CLAIMED\",\n//   userNodeAccess: \"NO_ACCESS\",\n// } //CLOUD\n\n// const PROMO_CLAIM_NODE: PromoProps = { userStatus: \"LOGGED_IN\", nodeClaimedStatus: \"NOT_CLAIMED\" } //CLOUD\n// const PROMO_TO_USE_NEW_DASHBAORD: PromoProps = {\n//   userStatus: \"LOGGED_IN\",\n//   nodeLiveness: \"LIVE\",\n//   userNodeAccess: \"ACCESS_OK\",\n// } //UNDEFIND\n\n// const FALLBACK_TO_AGENT: PromoProps = {\n//   userStatus: \"LOGGED_IN\",\n//   nodeLiveness: \"NOT_LIVE\",\n//   userNodeAccess: \"ACCESS_OK\",\n//   nodeClaimedStatus: \"CLAIMED\",\n// } //CLOUD\n\n// const NO_INFO_FALLBACK_TO_AGENT: PromoProps = {\n//   userStatus: undefined,\n//   nodeLiveness: undefined,\n//   userNodeAccess: undefined,\n//   nodeClaimedStatus: undefined,\n// } //CLOUD\n\n// const GO_TO_CLOUD: PromoProps = {\n//   userStatus: \"LOGGED_IN\",\n//   nodeLiveness: \"LIVE\",\n//   userNodeAccess: \"ACCESS_OK\",\n//   nodeClaimedStatus: \"CLAIMED\",\n// } //CLOUD\n\nconst MigrationManager = () => {\n  const cloudEnabled = useSelector(selectIsCloudEnabled)\n  const registry = useSelector(selectRegistry)\n\n  const cloudUrl = useSelector(state =>\n    selectSignInUrl({ content: \"agent-auto-redirect\", term: registry.machineGuid })(state as any)\n  )\n\n  const linkToCoud = useMemo(() => {\n    const { href } = window.location\n    const redirectURI = encodeURIComponent(href)\n    return `${cloudUrl}&redirect_uri=${redirectURI}`\n  }, [cloudUrl])\n\n  const userNodeAccess = useSelector(selectUserNodeAccess) as PromoProps\n  const [isModalOpen, setModalOpen] = useState(false)\n  const { migrationModalPromoInfo, setUserPrefrence, userSavedPreference, migrationModalPromo } =\n    useMigrationModal({\n      ...userNodeAccess,\n    })\n\n  const preferenceID = migrationModalPromoInfo?.tickBoxOption.preferenceID || \"\"\n\n  /**\n   * There is seem to be a bug when we are using the useLocalStorage,\n   * the value to be returned does not change when preferenceID is changing.\n   * For that reason we acces the localStorage directly\n   */\n  const [, savePromoRemindMeSelection] = useLocalStorage(preferenceID)\n  const hasPromoSelectionSaved = localStorage.getItem(preferenceID)\n\n  const closeModal = () => {\n    setModalOpen(false)\n  }\n\n  const isPromoEligibleForShow =\n    cloudEnabled &&\n    migrationModalPromoInfo &&\n    isModalOpen &&\n    (!hasPromoSelectionSaved || hasPromoSelectionSaved === \"undefined\")\n\n  const requestRefreshOfAccess = useRequestRefreshOfAccessMessage()\n\n  /** We are delaying the show of modal because some time the userNodeAccess is equal to null\n   *  and only for a few seconds we are showing the NO_INFO modal an the the userNodeAccess\n   *  has a new value and we show a second modal on top of the other. We dont want this\n   *  behaviour\n   */\n  useEffect(() => {\n    let showModalTimer = setTimeout(() => setModalOpen(true), 4000)\n    return () => {\n      clearTimeout(showModalTimer)\n    }\n  }, [])\n\n  useEffect(() => {\n    if (goToCloud({ userSavedPreference, ...userNodeAccess })) {\n      window.location.href = linkToCoud\n    }\n  }, [linkToCoud, userNodeAccess, userSavedPreference])\n\n  useEffect(() => {\n    if (goToAgentDashboard({ userSavedPreference })) console.log(\"Lets go to Agent\")\n  }, [userSavedPreference])\n\n  useEffect(() => {\n    if (isPromoEligibleForShow) {\n      document.documentElement.style.overflow = \"hidden\"\n    } else {\n      document.documentElement.style.overflow = \"auto\"\n    }\n  }, [isModalOpen, isPromoEligibleForShow])\n\n  if (isPromoEligibleForShow)\n    return (\n      <MigrationModal\n        savePromoRemindMeSelection={savePromoRemindMeSelection}\n        migrationModalPromoInfo={migrationModalPromoInfo}\n        setUserPrefrence={setUserPrefrence}\n        closeModal={closeModal}\n        migrationModalPromo={migrationModalPromo}\n        requestRefreshOfAccess={requestRefreshOfAccess}\n      />\n    )\n\n  return null\n}\n\nexport default MigrationManager\n","import React, { useEffect, useLayoutEffect, useRef, useState } from \"react\"\nimport Ps from \"perfect-scrollbar\"\nimport { ThemeProvider } from \"styled-components\"\n\nimport \"@formatjs/intl-datetimeformat/polyfill\"\nimport \"@formatjs/intl-datetimeformat/locale-data/en\"\nimport \"@formatjs/intl-datetimeformat/add-all-tz\"\n\nimport \"@material/menu-surface/dist/mdc.menu-surface.css\"\n\n// intentionally loading before bootstrap styles\nimport \"./styles/main.css\"\n\n// needs to be included before bootstrap\nimport \"domains/chart/utils/jquery-loader\"\nimport \"bootstrap\"\nimport \"bootstrap-toggle\"\nimport \"bootstrap-toggle/css/bootstrap-toggle.min.css\"\n\nimport { useStore } from \"react-redux\"\nimport \"typeface-ibm-plex-sans\"\nimport \"@fortawesome/fontawesome-free/js/all\"\n\nimport \"styles/fonts.css\"\nimport { loadCss } from \"utils/css-loader\"\nimport { useDateTime } from \"utils/date-time\"\nimport { useSelector } from \"store/redux-separate-context\"\nimport { selectCloudBaseUrl, selectHasFetchedInfo, selectTheme } from \"domains/global/selectors\"\nimport { Portals } from \"domains/chart/components/portals\"\nimport { useChartsMetadata } from \"domains/dashboard/hooks/use-charts-metadata\"\nimport { PrintModal } from \"domains/dashboard/components/print-modal\"\nimport { SidebarSocialMedia } from \"domains/dashboard/components/sidebar-social-media\"\nimport { SidebarSocialMediaPortal } from \"domains/dashboard/components/sidebar-social-media-portal\"\nimport { isPrintMode } from \"domains/dashboard/utils/parse-url\"\nimport useAlarmFromUrl from \"domains/dashboard/hooks/useAlarmFromUrl\"\nimport { useRegistry } from \"hooks/use-registry\"\nimport { useAlarms } from \"hooks/use-alarms\"\nimport { NotificationsContainer } from \"components/notifications-container\"\n\nimport Layout from \"components/layout\"\n\nimport \"./types/global\"\n\nimport { useInfo } from \"hooks/use-info\"\nimport { serverStatic } from \"utils/server-detection\"\nimport { mapTheme } from \"utils/map-theme\"\nimport { netdataCallback, updateLocaleFunctions } from \"./main\"\n\nimport { MigrationManager } from \"@/src/domains/dashboard/components/migration-manager\"\nimport { isDemo } from \"./utils/is-demo\"\nimport { Box } from \"@netdata/netdata-ui\"\nimport { selectIsCloudEnabled } from \"domains/global/selectors\"\n\nconst FakeMargin = Box\n\n// support legacy code\nwindow.Ps = Ps\n\nconst App: React.FC = () => {\n  const cloudEnabled = useSelector(selectIsCloudEnabled)\n\n  const store = useStore()\n  useEffect(() => {\n    // todo\n    // @ts-ignore\n    window.NETDATA.alarms = {}\n    // @ts-ignore\n    window.NETDATA.pause = callback => {\n      callback()\n    }\n    netdataCallback(store)\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n  const [refreshHelper, setRefreshHelper] = useState<number>()\n  // this is temporary, we will not need it when main.js will be fully refactored\n  const haveDOMReadyForParsing = refreshHelper !== undefined\n  // a workaround - each time parseDom is run, the portals are rerendered\n  const parseDom = useRef(() => {\n    setRefreshHelper(Math.random())\n  })\n\n  useEffect(() => {\n    if (haveDOMReadyForParsing) {\n      const loadOverlay = document.getElementById(\"loadOverlay\")\n      if (loadOverlay) {\n        loadOverlay.style.display = \"none\"\n      }\n    }\n  }, [haveDOMReadyForParsing])\n\n  const { localeDateString, localeTimeString } = useDateTime()\n  useEffect(() => {\n    updateLocaleFunctions({\n      localeDateString,\n      localeTimeString,\n    })\n  }, [localeDateString, localeTimeString])\n\n  useRegistry(true)\n  useAlarms(true)\n  useInfo(true)\n\n  const [hasFetchDependencies, setHasFetchDependencies] = useState(false)\n  useLayoutEffect(() => {\n    Promise.all([\n      loadCss(serverStatic + window.NETDATA.themes.current.bootstrap_css),\n      loadCss(serverStatic + window.NETDATA.themes.current.dashboard_css),\n    ]).then(() => {\n      setHasFetchDependencies(true)\n    })\n  }, [])\n\n  const chartsMetadata = useChartsMetadata()\n  const cloudBaseURL = useSelector(selectCloudBaseUrl)\n\n  // @ts-ignore\n  window.NETDATA.parseDom = parseDom.current\n\n  const hasFetchedInfo = useSelector(selectHasFetchedInfo)\n  const theme = useSelector(selectTheme)\n  useAlarmFromUrl()\n\n  return (\n    <ThemeProvider theme={mapTheme(theme)}>\n      {hasFetchDependencies && (\n        // this needs to render after dynamic css files are loaded, otherwise netdata-ui\n        // styling will have smaller priority than bootstrap css\n        <NotificationsContainer />\n      )}\n      <></>\n      {chartsMetadata && cloudBaseURL && hasFetchedInfo && haveDOMReadyForParsing && (\n        <>\n          <Layout printMode={isPrintMode}>\n            {isDemo ? null : <MigrationManager />}\n            {hasFetchDependencies && (\n              <>\n                <Portals key={refreshHelper} />\n                <SidebarSocialMediaPortal>\n                  <SidebarSocialMedia />\n                </SidebarSocialMediaPortal>\n                {isPrintMode && <PrintModal />}\n              </>\n            )}\n          </Layout>\n          {cloudEnabled && <FakeMargin height={15} />}\n        </>\n      )}\n    </ThemeProvider>\n  )\n}\n\nexport default App\n","import { useEffect } from \"react\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { serverDefault } from \"utils/server-detection\"\nimport { fetchHelloAction } from \"domains/global/actions\"\nimport { selectRegistry } from \"domains/global/selectors\"\n\nexport const useRegistry = (shouldUseRegistry: boolean) => {\n  const registry = useSelector(selectRegistry)\n\n  const dispatch = useDispatch()\n  useEffect(() => {\n    if (shouldUseRegistry && !registry.isFetchingHello && !registry.hasFetchedHello\n      && !registry.isHelloCallError\n    ) {\n      dispatch(fetchHelloAction.request({\n        serverDefault,\n      }))\n    }\n  }, [dispatch, registry, shouldUseRegistry])\n}\n","import { useEffect } from \"react\"\n\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { startAlarmsAction } from \"domains/global/actions\"\nimport { selectHasStartedAlarms } from \"domains/global/selectors\"\nimport { serverDefault } from \"utils/server-detection\"\n\nexport const useAlarms = (shouldUseAlarms: boolean) => {\n  const hasStartedAlarms = useSelector(selectHasStartedAlarms)\n\n  const dispatch = useDispatch()\n  useEffect(() => {\n    if (shouldUseAlarms && !hasStartedAlarms) {\n      dispatch(startAlarmsAction({\n        serverDefault,\n      }))\n    }\n  }, [dispatch, hasStartedAlarms, shouldUseAlarms])\n}\n","import { useEffect } from \"react\"\nimport { useDispatch, useSelector } from \"store/redux-separate-context\"\nimport { fetchInfoAction } from \"domains/chart/actions\"\nimport { selectRegistry } from \"domains/global/selectors\"\n\nexport const useInfo = (shouldUseInfo: boolean) => {\n  const registry = useSelector(selectRegistry)\n  const hasStartedInfo = registry?.hasStartedInfo || false\n  const dispatch = useDispatch()\n  useEffect(() => {\n    if (shouldUseInfo && !hasStartedInfo) {\n      dispatch(fetchInfoAction.request({\n        poll: false,\n      }))\n    }\n  }, [dispatch, hasStartedInfo, shouldUseInfo])\n}\n","import { useHttp } from \"hooks/use-http\"\nimport { serverDefault } from \"utils/server-detection\"\nimport { ChartsMetadata } from \"domains/global/types\"\n\nexport const useChartsMetadata = () => {\n  const [chartsMetadata] = useHttp<ChartsMetadata>(`${serverDefault}api/v1/charts`)\n  return chartsMetadata\n}\n","import { useMount } from \"react-use\"\n\nimport { useDispatch } from \"store/redux-separate-context\"\nimport { getHashParams } from \"utils/hash-utils\"\nimport { setAlarmAction, setGlobalPanAndZoomAction } from \"domains/global/actions\"\nimport { alarmStatuses } from \"domains/global/constants\"\n\nexport default () => {\n  const dispatch = useDispatch()\n  useMount(() => {\n    const params = getHashParams()\n    const alarmWhen = params[\"alarm_when\"]\n    if (alarmWhen) {\n      const alarmTime = Number(alarmWhen)\n\n      const alarmStatus = params[\"alarm_status\"]\n      const alarmChart = params[\"alarm_chart\"]\n      const alarmValue = params[\"alarm_value\"]\n      if (!alarmStatuses.includes(alarmStatus) || !alarmChart || !alarmValue) {\n        return\n      }\n\n      dispatch(setAlarmAction({\n        alarm: {\n          chartId: alarmChart,\n          status: alarmStatus,\n          value: alarmValue,\n          when: alarmTime,\n        },\n      }))\n      const PADDING = 1000 * 60 * 5\n      dispatch(setGlobalPanAndZoomAction({\n        after: alarmTime * 1000 - PADDING,\n        before: alarmTime * 1000 + PADDING,\n      }))\n    }\n  })\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider } from \"react-redux\"\n\nimport { store } from \"store\"\n\n// resolved in craco.config\n// @ts-ignore\nimport App from \"App\"\n\nimport \"./index.css\"\n\n// todo for static-dashboard:\n// 1) wait for the whole page to load, then render\n// 2) when the whole page is loaded, check window.NETDATA.options set by user and override initial\n//    options settings\n\nReactDOM.render(\n  <Provider store={store}>\n    <App />\n  </Provider>,\n  document.getElementById(\"root\")\n)\n","import { useCallback, useMemo } from \"react\"\nimport { useDispatch, useSelector } from \"react-redux\"\nimport { createSelector } from \"reselect\"\nimport { useLocalStorage } from \"react-use\"\nimport { showSignInModalAction } from \"domains/dashboard/actions\"\nimport { selectSignInUrl, selectRegistry } from \"domains/global/selectors\"\nimport { NETDATA_REGISTRY_SERVER } from \"utils/utils\"\n\nconst isRegistrySelector = createSelector(\n  selectRegistry,\n  ({ registryServer }) => registryServer === NETDATA_REGISTRY_SERVER\n)\n\nconst offlineSelector = createSelector(\n  ({ dashboard }) => dashboard,\n  ({ offline }) => offline\n)\n\nconst SignIn = ({ children, utmParameters }) => {\n  const [hasSignedInBefore] = useLocalStorage(\"has-sign-in-history\")\n  const signInUrl = useSelector(state => selectSignInUrl(utmParameters)(state))\n  const isRegistry = useSelector(isRegistrySelector)\n  const offline = useSelector(offlineSelector)\n\n  const dispatch = useDispatch()\n\n  const link = useMemo(() => {\n    const { href } = window.location\n    const redirectURI = encodeURIComponent(href)\n    return `${signInUrl}&redirect_uri=${redirectURI}`\n  }, [signInUrl])\n\n  const onSignIn = useCallback(\n    () =>\n      dispatch(\n        showSignInModalAction({\n          signInLinkHref: link,\n        })\n      ),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [link]\n  )\n\n  return useMemo(\n    () =>\n      typeof children === \"function\"\n        ? children({ isRegistry, link, onSignIn, offline, hasSignedInBefore })\n        : children,\n    [children, isRegistry, link, onSignIn, offline, hasSignedInBefore]\n  )\n}\n\nexport default SignIn\n","/* eslint-disable comma-dangle */\n/* eslint-disable implicit-arrow-linebreak */\nimport { omit, pipe, mergeDeepLeft } from \"ramda\"\n\ntype HashParams = { [param: string]: string }\nconst fragmentParamsSeparatorRegEx = /[&;]/\nconst fragmentParamsSeparator = \";\"\n\nexport const getHashParams = (\n  hash = decodeURIComponent(window.location.hash.substr(1))\n): HashParams => {\n  if (hash.length === 0) {\n    return {}\n  }\n  const params = hash.split(fragmentParamsSeparatorRegEx)\n  const response = params.reduce((acc: HashParams, current) => {\n    const parts = current.split(\"=\")\n    const [param, value] = parts\n    acc[param] = value\n    return acc\n  }, {})\n  return response\n}\n\nexport const makeHashFromObject = (params: { [paramKey: string]: string }) => {\n  const entries = Object.entries(params)\n  if (entries.length === 0) {\n    return \"\"\n  }\n  return entries\n    .map(([key, value]) => (value === undefined ? key : `${key}=${encodeURIComponent(value)}`))\n    .join(fragmentParamsSeparator)\n}\n\nexport const getFilteredHash = (\n  excludedParams: string[],\n  hash = decodeURIComponent(window.location.hash.substr(1))\n) => {\n  const filteredParams = omit(excludedParams, getHashParams(hash))\n  return makeHashFromObject(filteredParams)\n}\n\nexport const getUniqueParamsHash = pipe(getHashParams, makeHashFromObject)\n\nexport const setHashParams = (params: { [paramKey: string]: string }) => {\n  const allParams = getHashParams()\n  const allParamsResult = mergeDeepLeft(params, allParams)\n  window.history.replaceState(window.history.state, \"\", `#${makeHashFromObject(allParamsResult)}`)\n}\n\nexport const getHashParam = (\n  param: string,\n  hash = decodeURIComponent(window.location.hash.substr(1))\n): string => getHashParams(hash)[param]\n\nexport const hasHashParam = (\n  param: string,\n  hash = decodeURIComponent(window.location.hash.substr(1))\n): boolean => getHashParams(hash)[param] !== undefined\n\nexport const removeHashParams = (params: string[]) => {\n  window.history.replaceState(window.history.state, \"\", `#${getFilteredHash(params)}`)\n}\n","import { useEffect, useCallback, useState } from \"react\"\n\ntype IframesMessageType =\n  | \"spaces\"\n  | \"workspaces\"\n  | \"hello-from-spaces-bar\"\n  | \"hello-from-space-panel\"\n  | \"hello-from-sign-in\"\n  | \"is-signed-in\"\n  | \"streamed-hosts-data\"\n  | \"has-focus\"\n  | \"iframe-focus-change\"\n  | \"synced-private-registry\"\n  | \"set-is-logout-dropdown-opened\"\n  | \"user-node-access\"\n  | \"request-refresh-access\"\n\ninterface IframesMessage<T = unknown> {\n  type: IframesMessageType\n  payload: T\n}\n\nexport const sendToChildIframe = (\n  htmlIframeElement: HTMLIFrameElement | string,\n  message: IframesMessage\n) => {\n  const iframeElement =\n    typeof htmlIframeElement === \"string\"\n      ? (document.getElementById(htmlIframeElement) as HTMLIFrameElement)\n      : htmlIframeElement\n\n  if (iframeElement.contentWindow) {\n    iframeElement.contentWindow.postMessage(message, \"*\")\n  }\n}\n\nexport const useListenToPostMessage = <T>(\n  messageType: IframesMessageType,\n  callback?: (newMessage: T) => void,\n  defaultState?: T | (() => T)\n): [T | undefined, () => void] => {\n  const [lastMessage, setLastMessage] = useState<T | undefined>(defaultState)\n  const handleMessage = useCallback(\n    message => {\n      const data = message.data as IframesMessage<T>\n      if (data.type === messageType) {\n        setLastMessage(data.payload)\n        if (callback) {\n          callback(data.payload)\n        }\n      }\n    },\n    [callback, messageType]\n  )\n  const resetMesssage = useCallback(() => {\n    setLastMessage(defaultState as T)\n  }, [defaultState])\n  useEffect(() => {\n    window.addEventListener(\"message\", handleMessage)\n    return () => {\n      window.removeEventListener(\"message\", handleMessage)\n    }\n  }, [handleMessage, messageType])\n  return [lastMessage, resetMesssage]\n}\n","export const isMainJs = process.env.REACT_APP_IS_MAIN_DASHBOARD\nexport const isTestingEnv = process.env.NODE_ENV === \"test\"\nexport const isDevelopmentEnv = process.env.NODE_ENV === \"development\"\n","export const storeKey = \"dashboard\"\n","import { createContext } from \"react\"\nimport {\n  createDispatchHook, createSelectorHook, ReactReduxContextValue,\n  useSelector as useSelectorOriginal,\n  useDispatch as useDispatchOriginal,\n} from \"react-redux\"\n\nconst shouldUseDefaultContext = process.env.REACT_APP_SHOULD_USE_DEFAULT_CONTEXT\n\nexport const dashboardReduxContext = shouldUseDefaultContext\n  ? undefined\n  : createContext<ReactReduxContextValue>(undefined as any)\n\nexport const useSelector = dashboardReduxContext\n  ? createSelectorHook(dashboardReduxContext)\n  : useSelectorOriginal\nexport const useDispatch = dashboardReduxContext\n  ? createDispatchHook(dashboardReduxContext)\n  : useDispatchOriginal\n","const isPrintMode = window.location.hash.split(\";\").includes(\"help=true\")\n\nconst getIsDemo = () => {\n  if (isPrintMode) {\n    return false\n  }\n  const { hostname } = document.location\n  return (\n    hostname.endsWith(\".my-netdata.io\")\n    || hostname.endsWith(\".mynetdata.io\")\n    || hostname.endsWith(\".netdata.rocks\")\n    || hostname.endsWith(\".netdata.ai\")\n    || hostname.endsWith(\".netdata.live\")\n    || hostname.endsWith(\".firehol.org\")\n    || hostname.endsWith(\".netdata.online\")\n    || hostname.endsWith(\".netdata.cloud\")\n  )\n}\n\nexport const isDemo = getIsDemo()\n","import { prop, path } from \"ramda\"\nimport { createSelector } from \"reselect\"\n\nimport { AppStateT } from \"store/app-state\"\nimport { utmUrlSuffix } from \"utils/utils\"\nimport { alwaysEndWithSlash } from \"utils/server-detection\"\n\nimport { GetKeyArguments, getKeyForCommonColorsState } from \"./reducer\"\nimport { storeKey } from \"./constants\"\nimport { OptionsKey } from \"./options\"\n\nconst NETDATA_REGISTRY_SERVER = \"https://registry.my-netdata.io\"\n\nexport const createSelectAssignedColors = (args: GetKeyArguments) => (state: AppStateT) => {\n  const keyName = getKeyForCommonColorsState(args)\n  const substate = state[storeKey].commonColorsKeys[keyName]\n  return substate && substate.assigned\n}\n\nexport const selectGlobal = (state: AppStateT) => state.global\n\nexport const selectCommonMin = createSelector(\n  selectGlobal,\n  (_: unknown, commonMinKey: string) => commonMinKey,\n  (globalState, commonMinKey) => (\n    globalState.commonMin[commonMinKey]\n  ),\n)\n\nexport const selectCommonMax = createSelector(\n  selectGlobal,\n  (_: unknown, commonMaxKey: string) => commonMaxKey,\n  (globalState, commonMaxKey) => (\n    globalState.commonMax[commonMaxKey]\n  ),\n)\n\nexport const selectGlobalSelection = createSelector(selectGlobal, prop(\"hoveredX\"))\n\nexport const selectGlobalSelectionMaster = createSelector(\n  selectGlobal,\n  prop(\"currentSelectionMasterId\"),\n)\n\nexport const selectGlobalPanAndZoom = createSelector(selectGlobal, prop(\"globalPanAndZoom\"))\n\nexport const selectDefaultAfter = createSelector(selectGlobal, prop(\"defaultAfter\"))\n\nexport const selectGlobalChartUnderlay = createSelector(selectGlobal, prop(\"globalChartUnderlay\"))\n\nexport const selectHasWindowFocus = createSelector(selectGlobal, prop(\"hasWindowFocus\"))\nexport const selectGlobalPause = createSelector(selectGlobal, prop(\"globalPause\"))\n\nexport const selectSnapshot = createSelector(\n  selectGlobal,\n  prop(\"snapshot\"),\n)\n\nexport const selectRegistry = createSelector(selectGlobal, prop(\"registry\"))\n\nexport const selectCloudBaseUrl = createSelector(selectRegistry, prop(\"cloudBaseURL\"))\n\nexport const utmParametersToString = (utmParameters = {}) =>\n  Object.keys(utmParameters).reduce((acc, key) => (acc += `&utm_${key}=${utmParameters[key]}`), \"\")\n\nexport const selectSignInUrl = utmParameters =>\n  createSelector(selectRegistry, selectCloudBaseUrl, (registry, cloudBaseURL) => {\n    const name = encodeURIComponent(registry.hostname)\n    const origin = encodeURIComponent(\n      alwaysEndWithSlash(window.location.origin + window.location.pathname)\n    )\n    // not adding redirect_url - it needs to always be based on newest href\n    // eslint-disable-next-line max-len\n    return `${cloudBaseURL}/sign-in?id=${\n      registry.machineGuid\n    }&name=${name}&origin=${origin}${utmUrlSuffix}${utmParametersToString(utmParameters)}`\n  })\n\nexport const selectIsFetchingHello = createSelector(selectRegistry, prop(\"isFetchingHello\"))\nexport const selectIsUsingGlobalRegistry = createSelector(\n  selectRegistry,\n  ({ registryServer }) => registryServer && (registryServer !== NETDATA_REGISTRY_SERVER),\n)\n\n// currently cloud-base-url is taken from registry?action=hello call, which returns error\n// if Agent+browser are configured to respect do-not-track\nexport const selectIsCloudEnabled = createSelector(\n  selectRegistry,\n  (registry) => registry.isCloudEnabled && !registry.isHelloCallError,\n)\nexport const selectHasFetchedInfo = createSelector(selectRegistry, prop(\"hasFetchedInfo\"))\nexport const selectFullInfoPayload = createSelector(selectRegistry, prop(\"fullInfoPayload\"))\n\nexport const selectHasStartedAlarms = createSelector(\n  selectGlobal,\n  path([\"alarms\", \"hasStartedAlarms\"]),\n)\nexport const selectActiveAlarms = createSelector(\n  selectGlobal,\n  (global) => global.alarms.activeAlarms,\n)\n\nexport const selectAlarm = createSelector(\n  selectGlobal,\n  (global) => global.alarm\n)\n\nexport const selectSpacePanelIsActive = createSelector(selectGlobal, prop(\"spacePanelIsActive\"))\nexport const selectSpacePanelTransitionEndIsActive = createSelector(\n  selectGlobal, prop(\"spacePanelTransitionEndIsActive\"),\n)\n\nexport const selectOptions = createSelector(selectGlobal, global => global.options)\n\nexport const createSelectOption = <T extends OptionsKey>(optionName: T) => (\n  createSelector(selectOptions, (options) => options[optionName])\n)\n\nexport const selectDestroyOnHide = createSelectOption(\"destroy_on_hide\")\nexport const selectStopUpdatesWhenFocusIsLost = createSelectOption(\n  \"stop_updates_when_focus_is_lost\",\n)\nexport const selectShouldEliminateZeroDimensions = createSelectOption(\"eliminate_zero_dimensions\")\nexport const selectIsAsyncOnScroll = createSelectOption(\"async_on_scroll\")\n\nexport const selectParallelRefresher = createSelectOption(\"parallel_refresher\")\nexport const selectConcurrentRefreshes = createSelectOption(\"concurrent_refreshes\")\nexport const selectSyncSelection = createSelectOption(\"sync_selection\")\nexport const selectSyncPanAndZoom = createSelectOption(\"sync_pan_and_zoom\")\n\nexport const selectTheme = createSelectOption(\"theme\")\nexport const selectShowHelp = createSelectOption(\"show_help\")\nexport const selectPanAndZoomDataPadding = createSelectOption(\"pan_and_zoom_data_padding\")\nexport const selectSmoothPlot = createSelectOption(\"smooth_plot\")\n\nexport const selectUnitsScalingMethod = createSelectOption(\"units\")\nexport const selectTemperatureSetting = createSelectOption(\"temperature\")\nexport const selectSecondsAsTimeSetting = createSelectOption(\"seconds_as_time\")\nexport const selectTimezoneSetting = createSelectOption(\"timezone\")\nexport const selectUTCOffsetSetting = createSelectOption(\"utcOffset\")\nexport const selectUserSetServerTimezone = createSelectOption(\"user_set_server_timezone\")\n\nexport const selectChartsMetadata = createSelector(\n  selectGlobal,\n  (global) => global.chartsMetadata.data,\n)\n\nexport const selectChartMetadataFromChartsCall = createSelector(\n  selectChartsMetadata,\n  (_: unknown, { chartId }: { chartId: string, id: string }) => chartId,\n  (allMetadata, chartId) => allMetadata?.charts[chartId],\n)\n\nexport const selectUserNodeAccess = createSelector(selectGlobal, global => global.userNodeAccess)\n","import React from \"react\"\nimport styled from \"styled-components\"\nimport { Text, getColor } from \"@netdata/netdata-ui\"\n\nconst BaseAnchor = styled(\"a\")`\n  && {\n    color: ${getColor(\"primary\")};\n\n    :hover {\n      color: ${getColor(\"primary\")};\n    }\n\n    :visited {\n      color: ${getColor(\"accent\")};\n    }\n  }\n`\n\ntype AnchorProps = React.ComponentPropsWithRef<\"a\"> & {\n  Component?: React.ElementType\n}\n\nconst Anchor = ({ Component = Text, ...rest }: AnchorProps): any => (\n  <Component as={BaseAnchor} {...rest} />\n)\n\nexport default Anchor\n","import { createAction } from \"redux-act\"\n\n// slightly simplified version of the creator used in the cloud\n// we will unify it when some typing issues will be fixed (cloud version didn't warn on bad payload)\nexport const createRequestAction = <RequestT, SuccessT = any, FailureT = any>(name: string) => {\n  const action = createAction<RequestT>(name.toUpperCase())\n\n  return Object.assign(action, {\n    request: action,\n    success: createAction<SuccessT>(\n      `${name.toUpperCase()}_SUCCESS`,\n      (payload) => payload,\n      (meta) => meta,\n    ),\n    failure: createAction<FailureT>(\n      `${name.toUpperCase()}_FAILURE`,\n      (payload) => payload,\n      (meta) => ({\n        ...meta,\n        error: true,\n      }),\n    ),\n  })\n}\n","import { mergeAll, mergeRight } from \"ramda\"\nimport { LOCALSTORAGE_HEIGHT_KEY_PREFIX } from \"domains/chart/components/resize-handler\"\nimport { DashboardTheme } from \"utils/map-theme\"\n\nexport const SYNC_PAN_AND_ZOOM = \"sync_pan_and_zoom\"\nexport const STOP_UPDATES_WHEN_FOCUS_IS_LOST = \"stop_updates_when_focus_is_lost\"\nexport const DESTROY_ON_HIDE = \"destroy_on_hide\"\nexport const THEME = \"theme\"\nexport const LEGEND_RIGHT = \"legend_right\"\n\nexport const themeLocalStorageKey = \"netdataTheme\"\n\n/* eslint-disable camelcase */\n\nexport interface Options {\n  // performance options\n  [STOP_UPDATES_WHEN_FOCUS_IS_LOST]: boolean\n  eliminate_zero_dimensions: boolean\n  [DESTROY_ON_HIDE]: boolean\n  async_on_scroll: boolean\n\n  // synchronization options\n  parallel_refresher: boolean\n  concurrent_refreshes: boolean\n  sync_selection: boolean\n  [SYNC_PAN_AND_ZOOM]: boolean\n\n  // visual options\n  [LEGEND_RIGHT]: boolean\n  [THEME]: DashboardTheme\n  show_help: boolean\n  pan_and_zoom_data_padding: boolean\n  smooth_plot: boolean\n\n  // locale options\n  units: \"auto\" | \"original\"\n  temperature: \"celsius\" | \"fahrenheit\"\n  seconds_as_time: boolean\n  timezone: string\n  user_set_server_timezone: string\n  utcOffset: number | string\n}\nexport type OptionsKey = keyof Options\n\n// those options have been created around 2015/2016 and some of them are not needed anymore\n// so we need to revisit them, test their impact, etc.\n\nexport const INITIAL_OPTIONS: Options = {\n  // performance options\n\n  // boolean - shall we stop auto-refreshes when document does not have user focus\n  [STOP_UPDATES_WHEN_FOCUS_IS_LOST]: true,\n  // do not show dimensions with just zeros\n  eliminate_zero_dimensions: true,\n  // destroy charts when they are not visible\n  [DESTROY_ON_HIDE]: false, // eventually apply slow device detection\n  async_on_scroll: false,\n\n  // synchronization options\n  // enable parallel refresh of charts\n  parallel_refresher: true, // eventually apply slow device detection\n  // when parallel_refresher is enabled, sync also the charts\n  concurrent_refreshes: true,\n  // enable or disable selection sync\n  sync_selection: true,\n  // enable or disable pan and zoom sync\n  [SYNC_PAN_AND_ZOOM]: true,\n\n  // visual options\n  [LEGEND_RIGHT]: false,\n  [THEME]: \"slate\",\n  // when enabled the charts will show some help\n  // when there's no bootstrap, we can't show it\n  show_help: Boolean(window.netdataShowHelp) && !window.netdataNoBootstrap,\n  // fetch more data for the master chart when panning or zooming\n  pan_and_zoom_data_padding: true,\n  // enable smooth plot, where possible\n  smooth_plot: true, // eventually apply slow device detection\n\n  // locale options\n  units: \"auto\", // auto or original\n  temperature: \"celsius\",\n  seconds_as_time: true, // show seconds as DDd:HH:MM:SS ?\n  timezone: \"default\", // the timezone to use, or 'default'\n  user_set_server_timezone: \"default\", // as set by the user on the dashboard\n  utcOffset: 0,\n}\n\nconst localStorageKeyToOption = <T extends string>(key: T) =>\n  key.replace(/^options\\./, \"\").replace(themeLocalStorageKey, THEME)\n\nconst getItemFromLocalStorage = <T extends string>(key: T) => {\n  const value = localStorage.getItem(key)\n  // \"undefined\" (deliberate as a string) to support \"options.setOptionCallback\", an old property\n  // used in old dashboard. users will still have it, so we need to support it for some time\n  if (value === null || value === \"undefined\") {\n    localStorage.removeItem(key)\n    return null\n  }\n  let parsed\n  try {\n    parsed = JSON.parse(value)\n  } catch (e) {\n    // todo fix after main.js refactor\n    // special case for netdataTheme, only this option is not boolean\n    if (key === themeLocalStorageKey && value) {\n      return value\n    }\n\n    console.log(`localStorage: failed to read \"${key}\", using default`) // eslint-disable-line no-console, max-len\n    // it was not present in old dashboard, but it probably makes sense to remove broken values\n    localStorage.removeItem(key)\n    return null\n  }\n  return parsed\n}\n\nexport const getOptionsMergedWithLocalStorage = (): Options => {\n  const optionsFromLocalStorage = Object.keys(localStorage)\n    .filter(key => key.startsWith(\"options.\") || key === themeLocalStorageKey)\n    .map(key => ({\n      [localStorageKeyToOption(key)]: getItemFromLocalStorage(key),\n    }))\n    .filter(o => Object.values(o)[0] !== null)\n\n  const overridenOptions = mergeAll(optionsFromLocalStorage) as unknown as Options\n  return mergeRight(INITIAL_OPTIONS, overridenOptions)\n}\n\nexport const optionsMergedWithLocalStorage = getOptionsMergedWithLocalStorage()\nexport const initialLegendRight = optionsMergedWithLocalStorage[LEGEND_RIGHT]\n\nexport const clearLocalStorage = () => {\n  const localStorageKeys = Object.keys(localStorage)\n  localStorageKeys.forEach(key => {\n    if (key.startsWith(LOCALSTORAGE_HEIGHT_KEY_PREFIX) || key.startsWith(\"options.\")) {\n      localStorage.removeItem(key)\n    }\n  })\n}\n"],"sourceRoot":""}                                           Caml1999I030    $    $Misc+fatal_error@&stringO@@ @^!a @_@ @`@.utils/misc.mliWW@@@@,fatal_errorf@&Stdlib'format4!a @e&Format)formatter@@ @c$unitF@@ @b!b @a@@ @d@ @f@-X.X@@CA@ +Fatal_error    #exnG@@@A&_none_@@ A@PBB@+try_finally&always&optionJ@.@@ @g2@@ @h@ @i@@ @j-exceptionally@@@@ @kD@@ @l@ @m@@ @n@@M@@ @o!a @q@ @p@ @r@ @s@ @t@v[66w^@@C@<reraise_preserving_backtrace@M@@ @u@@h@@ @vl@@ @w@ @x!a @y@ @z@ @{@~
d
d~
d
@@D@'map_end@@!a @}!b @@ @|@$listI@@ @~@	@@ @@@ @@ @@ @@ @@ C>> C>v@@E@.map_left_right@@!a @!b @@ @@*@@ @/@@ @@ @@ @@ E E@@F@(for_all2@@!a @@!b @$boolE@@ @@ @@ @@S@@ @@Z@@ @@@ @@ @@ @@ @@ G?? G?}@@%G@.replicate_list@!a @@#intA@@ @z@@ @@ @@ @@+ K
9
9, K
9
a@@AH@+list_remove@!a @@
@@ @@@ @@ @@ @@F N

G N

@@\I@*split_last@!a @@@ @@@ @@ @@ @@c Qbbd Qb@@yJ@-ref_and_value  8 @@!R
g#ref!a @@@ @@@@ @ T T@@L@@A@@@@@ T@@@@KA@,protect_refs@@@ @@@ @@@|@@ @!a @@ @@ @@ @@ V VM@@M@Ӡ&Stdlib@Ӡ$Listh@!t	+  8 !a @@A@A	@@ @Y@@@@@ ^dh ^d{@@@@NA@'compare	,@@!a @@@@ @@ @@ @@,@@ @@@@ @@@ @@ @@ @@ @@ `} `}@@O@%equal	-@@!a @@@@ @@ @@ @@(@@ @@.@@ @@@ @@ @@ @@ @@ dBF dB|@@,P@=some_if_all_elements_are_some	.@Aݠ!a @@@ @@@ @R
@@ @@@ @@ @@7 h
8 h
O@@MQ@+map2_prefix	/@@!a @@!b @!c @@ @@ @@t@@ @@z@@ @@@ @Ԡ@@ @@ @@ @@ @@ @@j mk m`@@R@(split_at	0@U@@ @@!a @@@ @@@ @ݠ@@ @@ @@ @@ @@ r r4@@S@)is_prefix	1%equal@!a @@@@ @@ @@ @@@@ @#of_@@ @@@ @@ @@ @@ @@ w
 {gt@@T@<longest_common_prefix_result	2  8 !a @@A5longest_common_prefix@#
@@ @ HN Hn@@V	#first_without_longest_common_prefix@0@@ @ ou o@@W	$second_without_longest_common_prefix@='@@ @  @@X@@@@_@@@@@  @@@@
UA@	#find_and_chop_longest_common_prefix	3%equal@!a @@@@ @@ @@ @%firste@@ @&secondn@@ @` @@ @@ @@ @@ @@$ % ^@@:Y@@@( ]PR) lq@>Z@@Ӡ&Optioni@!t	)  8 !a @@A@A	@@ @Y@@@@@D E @@@@Z[A@%print	*@@F&Format)formatter@@ @@!a @ =@@ @@ @@ @@Y&Format)formatter@@ @@<@@ @Q@@ @@ @@ @@ @@v w @@\@@@z su{ @]@@Ӡ%Arrayj@'exists2	&@@!a @	@!b @@@ @@ @@ @@%arrayH@@ @
@	@@ @@@ @
@ @@ @@ @@ .2 .r@@^@(for_alli	'@@@@ @@!a @@@ @@ @@ @@/@@ @@@ @@ @@ @@  S@@_@)all_somes	(@C!a @@@ @@@ @U@@ @@@ @@ @@  8@@`@@@  9>@a@@Ӡ&Stringk@!tm  8 @@@A&stringO@@ @ @@@@*string.mli R R@@@@.Stdlib__String@A@$maken@#intA@@ @!@$charB@@ @"!@@ @#@ @$@ @%@ U  U@@A@$inito@@@ @&@@%@@ @'!@@ @(@ @)@@@ @*@ @+@ @,@> [||? [|@@=B@%emptypM@@ @-@K bL b@@JC@(of_bytesq@%bytesC@@ @.b@@ @/@ @0@` ha h@@_D@(to_bytesr@q@@ @1@@ @2@ @3@s oNNt oNl@@rE@&lengths@@@ @4u@@ @5@ @6.%string_lengthAA @@@ v v@@F@#gett@@@ @7@@@ @8@@ @9@ @:@ @;0%string_safe_getBA@@@@ yRR yR@@G@&concatu@@@ @<@$listI@@ @=@@ @>@@ @?@ @@@ @A@  @@H@#catv@@@ @B@@@ @C@@ @D@ @E@ @F@  @@I@%equalw@@@ @G@@@ @H$boolE@@ @I@ @J@ @K@  @@J@'comparex@@@ @L@@@ @M@@ @N@ @O@ @P@ ?? ?Z@@K@+starts_withy&prefix&@@ @Q@,@@ @R4@@ @S@ @T@ @U@. / U@@-L@)ends_withz&suffixA@@ @V@G@@ @WO@@ @X@ @Y@ @Z@I J #@@HM@-contains_from{@Z@@ @[@M@@ @\@K@@ @]n@@ @^@ @_@ @`@ @a@h i @@gN@.rcontains_from|@y@@ @b@l@@ @c@j@@ @d@@ @e@ @f@ @g@ @h@ ii i@@O@(contains}@@@ @i@@@ @j@@ @k@ @l@ @m@ cc c@@P@#sub~@@@ @n@@@ @o@@@ @p@@ @q@ @r@ @s@ @t@  @@Q@-split_on_char@@@ @u@@@ @v@@ @w@@ @x@ @y@ @z@  8@@R@#map@@@@ @{@@ @|@ @}@@@ @~@@ @@ @@ @@ ZZ Z@@S@$mapi@@@@ @@@@ @@@ @@ @@ @@@@ @#@@ @@ @@ @@! " @@@ T@)fold_left@@!a @@@@ @
@ @@ @@@B@@ @@ @@ @@ @@@ A @@?U@*fold_right@@8@@ @@!a @@ @@ @@_@@ @@@ @@ @@ @@_  z z`  z @@^V@&exists@@W@@ @z@@ @@ @@|@@ @@@ @@ @@ @@~ !! !"@@}X@$trim@@@ @@@ @@ @@ "w"w "w"@@Y@'escaped@@@ @@@ @@ @@ #?#? #?#]@@Z@/uppercase_ascii@@@ @@@ @@ @@	%p%p	%p%@@[@/lowercase_ascii@@@ @@@ @@ @@&@&@&@&f@@\@0capitalize_ascii@@@ @@@ @@ @@''''7@@]@2uncapitalize_ascii@@@ @@@ @@ @@'''(@@^@$iter@@@@ @$unitF@@ @@ @@@@ @@@ @@ @@ @@#((#((@@_@%iteri@@@@ @@@@ @'@@ @@ @@ @@4@@ @1@@ @@ @@ @@6'))7'))@@5`@*index_from@G@@ @@:@@ @@8@@ @D@@ @@ @@ @@ @@U/*Y*YV/*Y*@@Ta@.index_from_opt@f@@ @@Y@@ @@W@@ @&optionJi@@ @@@ @@ @@ @@ @@{7+x+x|7+x+@@zb@+rindex_from@@@ @@@@ @@}@@ @@@ @@ @@ @@ @@>,x,x>,x,@@c@/rindex_from_opt@@@ @@@@ @@@@ @E@@ @@@ @@ @@ @@ @@E--E--@@d@%index@@@ @@@@ @@@ @@ @@ @@L..L..@@e@)index_opt@@@ @@@@ @|@@ @@@ @@ @@ @@O..O./(@@f@&rindex@@@ @@@@ @@@ @@ @@ @@T/w/wT/w/@@
g@*rindex_opt@@@ @@
@@ @@@ @@@ @@ @@ @@,W//-W/0@@+h@&to_seq@J@@ @&Stdlib#Seq!t/@@ @@@ @@ @@I^00J^00@@Hi@'to_seqi@g@@ @#Seq!tT@@ @Q@@ @@ @@@ @ @ @@ke11le11@@jj@&of_seq@<#Seq!th@@ @@@ @@@ @@ @@j22j22$@@k@&create@@@ @>@@ @@ @2caml_create_stringAA@@@q22r23@0ocaml.deprecatedr22r22@	,Use Bytes.create/BytesLabels.create instead.r22r23@@r22r23@@@@@r22@@l@#set@h@@ @	@@@ @
@@@ @@@ @@ @
@ @@ @0%string_safe_setCAL@@@@@z4D4D{44@0ocaml.deprecated{44{44@	&Use Bytes.set/BytesLabels.set instead.{44{44@@{44{44@@@@@{44@@m@$blit@ @@ @@@@ @@@@ @@@@ @@@@ @@@ @@ @@ @@ @@ @@ @@55665@@n@$copy@+@@ @/@@ @@ @@-77.77@0ocaml.deprecated477577@	&Strings now immutable: no need to copy?77@77@@B77C77@@@@@E77@@Co@$fill@@@ @@H@@ @@N@@ @ @L@@ @!d@@ @"@ @#@ @$@ @%@ @&@i88j89 @0ocaml.deprecatedp88q88@	(Use Bytes.fill/BytesLabels.fill instead.{88|88@@~8888@@@@@88@@p@)uppercase@@@ @'@@ @(@ @)@:*:*:a:@0ocaml.deprecated:K:P:K:`@	@Use String.uppercase_ascii/StringLabels.uppercase_ascii instead.:a:f:a:@@:a:e:a:@@@@@:K:M@@q@)lowercase@@@ @*@@ @+@ @,@;;;<@0ocaml.deprecated;;;;@	@Use String.lowercase_ascii/StringLabels.lowercase_ascii instead.;;;<@@;;;<@@@@@;;@@r@*capitalize@@@ @-@@ @.@ @/@===N=@0ocaml.deprecated=8===8=M@	BUse String.capitalize_ascii/StringLabels.capitalize_ascii instead.=N=S=N=@@=N=R=N=@@@@@=8=:@@s@,uncapitalize@@@ @0@@ @1@ @2@>k>k>>@0ocaml.deprecated>>>>@	FUse String.uncapitalize_ascii/StringLabels.uncapitalize_ascii instead.#>>$>>@@&>>'>>@@@@@)>>@@'t@)get_uint8@9@@ @3@,@@ @40@@ @5@ @6@ @7@ACuCuBCuC@@@u@(get_int8@R@@ @8@E@@ @9I@@ @:@ @;@ @<@ZD
D
[D
D-@@Yv@-get_uint16_ne@k@@ @=@^@@ @>b@@ @?@ @@@ @A@sDDtDD@@rw@-get_uint16_be@@@ @B@w@@ @C{@@ @D@ @E@ @F@EGEGEGEo@@x@-get_uint16_le@@@ @G@@@ @H@@ @I@ @J@ @K@EEEF@@y@,get_int16_ne@@@ @L@@@ @M@@ @N@ @O@ @P@FFFF@@z@,get_int16_be@@@ @Q@@@ @R@@ @S@ @T@ @U@GDGDGDGk@@{@,get_int16_le@@@ @V@@@ @W@@ @X@ @Y@ @Z@GGGH@@|@,get_int32_ne@@@ @[@@@ @\%int32L@@ @]@ @^@ @_@HHHH@@
}@,get_int32_be@@@ @`@@@ @a@@ @b@ @c@ @d@$I4I4%I4I]@@#~@,get_int32_le@5@@ @e@(@@ @f4@@ @g@ @h@ @i@=II>II@@<@,get_int64_ne@N@@ @j@A@@ @k%int64M@@ @l@ @m@ @n@X$JwJwY$JwJ@@W @@,get_int64_be@i@@ @o@\@@ @p@@ @q@ @r@ @s@q+KKr+KKC@@p A@,get_int64_le@@@ @t@u@@ @u4@@ @v@ @w@ @x@2KK2KK@@ B@*unsafe_get@@@ @y@@@ @z@@ @{@ @|@ @}2%string_unsafe_getBA@@@@=LL=LL@@ C@*unsafe_set@]@@ @~@@@ @@@@ @@@ @@ @@ @@ @2%string_unsafe_setCAA@@@@@>LL?M6ML@0ocaml.deprecated?M6M;?M6MK@@?M6M8@@ D@+unsafe_blit@@@ @@@@ @@@@ @@@@ @@@@ @@@ @@ @@ @@ @@ @@ @0caml_blit_stringE@|@@@@@@@
@MMMMBMM@'noallocBMMBMM@@BMM@@ E@+unsafe_fill@@@ @@@@ @@@@ @@@@ @4@@ @@ @@ @@ @@ @0caml_fill_stringD@@@@@@@@CMMAENN,@'noallocGDMN
HDMN@@KDMN
LDMN@0ocaml.deprecatedRENNSENN+@@VENN@@T F@Ӡ#Set@#elt  8 @@@A@@ @@@@@{ x| x@@@@bA@!t  8 @@@A@@@@@'set.mli G:> G:D@@@@+Stdlib__SetDA@%empty@@ @@ Jcg Jcs@@E@(is_empty@@@ @$boolE@@ @@ @@# M$ M@@"F@#mem@B@@ @@)@@ @@@ @@ @@ @@; P< P@@:G@#add@@@ @@@@@ @C@@ @@ @@ @@Q S9=R S9S@@PH@)singleton	 @.@@ @T@@ @@ @@b Y
Z
^c Y
Z
u@@aI@&remove	@?@@ @@g@@ @j@@ @@ @@ @@x \

y \

@@wJ@%union	@x@@ @@}@@ @@@ @@ @@ @@ b b @@K@%inter	@@@ @@@@ @@@ @@ @@ @@ e e2@@L@(disjoint	@@@ @@@@ @@@ @@ @@ @@ hQU hQq@@M@$diff	@@@ @@@@ @@@ @@ @@ @@ l l@@N@'compare	@@@ @@@@ @#intA@@ @@ @@ @@ p15 p1O@@O@%equal	@@@ @@@@ @@@ @@ @@ @@ t t@@ P@&subset	@@@ @@@@ @@@ @@ @@ @@ xMQ xMk@@Q@$iter		@@@@ @$unitF@@ @@ @@%@@ @@@ @@ @@ @@7 |8 |@@6R@#map	
@@@@ @@@ @@ @@A@@ @D@@ @@ @@ @@R S @@QS@$fold	@@1@@ @@!a @@ @@ @@_@@ @@@ @@ @@ @@o p @@nT@'for_all	@@N@@ @b@@ @@ @@z@@ @k@@ @@ @@ @@ vz v@@U@&exists	
@@k@@ @@@ @@ @@@@ @@@ @@ @@ @@    *@@V@&filter	@@@@ @@@ @@ @@@@ @@@ @@ @@ @@  @@W@*filter_map	@@@@ @&optionJ@@ @@@ @ @ @@@@ @@@ @@ @@ @@  @@X@)partition	@@@@ @@@ @@ @@@@ @	@@ @@@ @
@ @@ @
@ @@
  B@@	Y@(cardinal	@
@@ @4@@ @@ @@ 04 0J@@Z@(elements	@@@ @$listI@@ @@@ @@ @@4 5 @@3[@'min_elt	@4@@ @@@ @@ @@E |F |@@D\@+min_elt_opt	@E@@ @~)@@ @@@ @@ @@[ 59\ 5Y@@Z]@'max_elt	@[@@ @;@@ @@ @@l 
m @@k^@+max_elt_opt	@l@@ @ P@@ @!@@ @"@ @#@ { {@@_@&choose	@@@ @$b@@ @%@ @&@  0@@`@*choose_opt	@@@ @'̠w@@ @(@@ @)@ @*@   @@a@%split	@@@ @+@@@ @,@@ @/@@ @.@@ @-@ @0@ @1@ @2@     !@@b@$find	@@@ @3@@@ @4@@ @5@ @6@ @7@ "" ""@@c@(find_opt	@@@ @8@@@ @9@@ @:@@ @;@ @<@ @=@ #[#_ #[#@@d@*find_first	@@@@ @>@@ @?@ @@@@@ @A@@ @B@ @C@ @D@ $.$2 $.$[@@e@.find_first_opt	@@@@ @E@@ @F@ @G@#@@ @H\@@ @I@@ @J@ @K@ @L@9&6&::&6&n@@8f@)find_last	@@@@ @M,@@ @N@ @O@D@@ @P$@@ @Q@ @R@ @S@U
']'aV
']'@@Tg@-find_last_opt	@@4@@ @TH@@ @U@ @V@`@@ @WD@@ @X@@ @Y@ @Z@ @[@v(k(ow(k(@@uh@'of_list	 @WW@@ @\@@ @]~@@ @^@ @_@))))@@i@+to_seq_from	!@i@@ @`@@@ @a&Stdlib#Seq!t{@@ @b@@ @c@ @d@ @e@ ** **@@j@&to_seq	"@@@ @f#Seq!t@@ @g@@ @h@ @i@%+a+e%+a+@@k@*to_rev_seq	#@@@ @j5#Seq!t@@ @k@@ @l@ @m@)++)++@@l@'add_seq	$@K#Seq!t@@ @n@@ @o@@@ @p@@ @q@ @r@ @s@-,@,D-,@,e@@m@&of_seq	%@i#Seq!t@@ @t@@ @u@@ @v@ @w@1,,1,,@@n@@@ x|#@c@@Ӡ#Map@#key  8 @@@A@@ @x@@@@  @@@@dA@!t  8 !a @y@A@A@I@B@@@'map.mli F;? F;J@@@@+Stdlib__MapDA@%empty!a @z@@ @{@ I I@@E@(is_empty@!a @|@@ @}$boolE@@ @~@ @@- L. L@@,F@#mem@S@@ @@3!a @@@ @@@ @@ @@ @@J OK O$@@IG@#add@@@ @@!a @@U	@@ @Y
@@ @@ @@ @@ @@h Si S@@gH@&update@;@@ @@@&optionJ!a @@@ @	@@ @@ @@@@ @@@ @@ @@ @@ @@ \dh \d@@I@)singleton@g@@ @@!a @@@ @@ @@ @@ i i9@@J@&remove@@@ @@!a @@@ @@@ @@ @@ @@ o o@@K@%merge@@@@ @@`!a @@@ @@k!b @@@ @t!c @@@ @@ @@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@ v xb@@L@%union@@@@ @@!a @@
@@ @@ @@ @@ @@@@ @@!@@ @%@@ @@ @@ @@ @@4 485 4y@@3M@'compare@@!a @@#intA@@ @@ @@ @@D@@ @@J@@ @@@ @@ @@ @@ @@] ^ @@\N@%equal@@!a @@I@@ @@ @@ @@k@@ @@q@@ @Y@@ @@ @@ @@ @@ X\ X@@O@$iter@@Y@@ @@!a @$unitF@@ @@ @@ @@@@ @@@ @@ @@ @@  @@P@$fold@@@@ @@!a @@!b @@ @@ @@ @@@@ @@@ @@ @@ @@  	@@Q@'for_all@@@@ @@!a @@@ @@ @@ @@ߠ
@@ @@@ @@ @@ @@  
@@R@&exists@@@@ @@!a @@@ @@ @@ @@
@@ @@@ @@ @@ @@  @@S@&filter@@@@ @@!a @@@ @@ @@ @@'
@@ @+@@ @@ @@ @@: @D; @s@@9T@*filter_map@@@@ @ @!a @֠!b @@@ @@ @@ @@P@@ @T@@ @@ @@ @	@c d @@bU@)partition@@8@@ @
@!a @R@@ @@ @@ @
@t
@@ @{@@ @@@ @@ @@ @@ @@ !! !!@@V@(cardinal@!a @@@ @[@@ @@ @@ "" "#
@@W@(bindings@!a @@@ @$listI@@ @@ @@@ @@ @@ #]#a #]#@@X@+min_binding@Ǡ!a @ @@ @@@ @!@ @"@ @#@ $$ $$@@Y@/min_binding_opt@!a @%@@ @$z@@ @&@ @'@@ @(@ @)@  %t%x %t%@@Z@+max_binding@ !a @+@@ @*@@ @,@ @-@ @.@ &a&e &a&@@[@/max_binding_opt@!a @0@@ @/@@ @1@ @2@@ @3@ @4@9 '': ''C@@8\@&choose@9!a @6@@ @5@@ @7@ @8@ @9@S ''T ''@@R]@*choose_opt@S!a @;@@ @:5@@ @<@ @=@@ @>@ @?@r((s((@@q^@%split@E@@ @@@w!a @D@@ @A@@ @E@@ @C@@ @B@ @F@ @G@ @H@)))*@@_@$find@o@@ @I@!a @K@@ @J@ @L@ @M@++++@@`@(find_opt@@@ @N@!a @P@@ @OR	@@ @Q@ @R@ @S@,0,4,0,Z@@a@*find_first@@@@ @T@@ @U@ @V@ܠ!a @X@@ @W@@ @Y@ @Z@ @[@ @\@ ,, ,-/@@b@.find_first_opt@@@@ @]@@ @^@ @_@!a @a@@ @`@@ @b@ @c@@ @d@ @e@ @f@ -//!-//X@@c@)find_last@@@@ @g	@@ @h@ @i@+!a @k@@ @j	@@ @l@ @m@ @n@ @o@E40P0TF40P0@@Dd@-find_last_opt@@@@ @p.@@ @q@ @r@P!a @t@@ @s2@@ @u@ @v@@ @w@ @x@ @y@o;1o1sp;1o1@@ne@#map@@!a @{!b @}@ @z@{
@@ @|
@@ @~@ @@ @@C22C22@@f@$mapi@@c@@ @@!a @!b @@ @@ @@
@@ @
@@ @@ @@ @@J44J44B@@g@&to_seq@!a @@@ @&Stdlib#Seq!t@@ @@ @@@ @@ @@P44P45@@h@*to_rev_seq@נ!a @@@ @%#Seq!t@@ @@ @@@ @@ @@T5t5xT5t5@@i@+to_seq_from@@@ @@!a @@@ @L#Seq!t@@ @@ @@@ @@ @@ @@ X55!X56-@@j@'add_seq@f#Seq!t@@ @!a @@ @@@ @@5
@@ @9@@ @@ @@ @@H]66I]66@@Gk@&of_seq@#Seq!t%@@ @!a @@ @@@ @[@@ @@ @@ja7H7Lka7H7q@@il@@@/ ~@De@@Ӡ#Tbl@#key  8 @@@AH@@ @@@@@B C @@@@XfA@!t  8 !a @@A@A@O@B@@@+hashtbl.mliO55O55@@@@/Stdlib__HashtbldA@&create@#intA@@ @ !a @@@ @@ @@P55P55@@e@%clear@!a @@@ @$unitF@@ @@ @@5Q556Q55@@4f@%reset@-!a @@@ @@@ @@ @@LR55MR56@@Kg@$copy@D!a @@@ @L@@ @@ @@cT66!dT668@@bh@#add@[!a @@@ @@@@ @@
O@@ @@ @@ @@ @@U696=U696`@@i@&remove@z!a @@@ @@@@ @k@@ @@ @@ @@V6a6eV6a6@@j@$find@!a @@@ @@;@@ @
@ @@ @@W66W66@@k@(find_opt@!a @@@ @@S@@ @&optionJ@@ @@ @@ @@X66X66@@l@(find_all@͠!a @@@ @@r@@ @$listI@@ @@ @@ @@[66[67@@m@'replace@!a @@@ @@@@ @@@@ @@ @@ @@ @@\77\77B@@n@#mem@
!a @@@ @@@@ @$boolE@@ @@ @@ @@0]7C7G1]7C7d@@/o@$iter@@@@ @@!a @@@ @@ @@ @@9
@@ @!@@ @@ @@ @@T^7e7iU^7e7@@Sp@2filter_map_inplace@@@@ @@!a @@@ @@ @@ @@^@@ @F@@ @@ @@ @@y_77z`77@@xq@$fold@@@@ @@!a @@!b @@ @@ @@ @@@@ @ @@ @@ @@ @@c78c787@@r@&length@!a @@@ @@@ @@ @@d888<d888T@@s@%stats@!a @	@@ @
&Stdlib'Hashtbl*statistics@@ @@ @@e8U8Ye8U8v@@t@&to_seq@ɠ!a @@@ @
&Stdlib#Seq!ty@@ @@ @@@ @@ @@g88g88@@u@+to_seq_keys@@ @@@ @##Seq!t@@ @@@ @@ @@j88j88@@v@-to_seq_values@
!a @@@ @A#Seq!t@@ @@ @@-m99.m996@@,w@'add_seq@%!a @@@ @@^#Seq!t@@ @@ @@@ @ "@@ @!@ @"@ @#@Up9O9SVp9O9@@Tx@+replace_seq@M!a @%@@ @$@#Seq!t@@ @&@ @'@@ @(J@@ @)@ @*@ @+@}s99~s99@@|y@&of_seq@#Seq!t@@ @,!a @/@ @-@@ @.@@ @0@ @1@v99v9:@@z@@@ @
g@@%print@&Format)formatter@@ @2@	@@ @3@@ @4@ @5@ @6@  4@@%h@'for_all@@$charB@@ @7+@@ @8@ @9@)@@ @:4@@ @;@ @<@ @=@/ 6:0 6c@@Ei@@@3 @B4 di@Ij@@'comparel@!a @>@$@@ @?@ @@@ @A(%compareBA @@@@N kmO k@@dk@@@R \<<S @hl@@,find_in_path@k@@ @B@@ @C@r@@ @Dv@@ @E@ @F@ @G@p q @@m@0find_in_path_rel@Ϡ@@ @H@@ @I@@@ @J@@ @K@ @L@ @M@ 

 
?@@n@2find_in_path_uncap @@@ @N@@ @O@@@ @P@@ @Q@ @R@ @S@  @@o@+remove_file@@@ @T@@ @U@ @V@ OO On@@p@0expand_directory@@@ @W@@@ @X@@ @Y@ @Z@ @[@  @@q@3split_path_contents#sep@@ @\@@ @]@@@ @^G@@ @_@@ @`@ @a@ @b@ yy y@@r@0create_hashtable@@@ @c@a!a @g!b @f@ @d@@ @e'Hashtbl!t
@@ @h@ @i@ @j@'   (  !@@=s@)copy_file@&*in_channel@@ @k@-+out_channel@@ @l@@ @m@ @n@ @o@B !j!jC !j!@@Xt@/copy_file_chunk@A*in_channel@@ @p@H+out_channel@@ @q@;@@ @r>@@ @s@ @t@ @u@ @v@c "'"'d "'"d@@yu@.string_of_file@b*in_channel@@ @w}@@ @x@ @y@w #
#
x #
#5@@v@<output_to_file_via_temporary$mode=۠)open_flag@@ @z@@ @{@@ @|@@@ @}@@@@ @~@+out_channel@@ @!a @@ @@ @@ @@ @@ @@ ## #$5@@w@7protect_writing_to_file	(filename@@ @!f@+out_channel@@ @!a @@ @@ @@ @@ && &&@@x@$log2
@@@ @@@ @@ @@ && &&@@y@%align@@@ @@@@ @@@ @@ @@ @@ 'P'P 'P'l@@
z@/no_overflow_add@@@ @@@@ @@@ @@ @@ @@ '' ''@@&{@/no_overflow_sub
@@@ @@@@ @.@@ @@ @@ @@) (e(e* (e(@@?|@/no_overflow_mul@@@ @@@@ @G@@ @@ @@ @@B ) ) C ) )'@@X}@/no_overflow_lsl@-@@ @@3@@ @`@@ @@ @@ @@[ ))\ ))@@q~@Ӡ5Int_literal_converter@#intd@v@@ @P@@ @@ @@t *X*Zu *X*q@@@%int32e@@@ @%int32L@@ @@ @@ *r*t *r*@@ @@%int64f@@@ @%int64M@@ @@ @@ ** **@@ A@)nativeintg@@@ @)nativeintK@@ @@ @@ ** **@@ B@@@ *5*5**@ C@@/chop_extensions@@@ @@@ @@ @@****@@ D@0search_substring@@@ @@@@ @@@@ @@@ @@ @@ @@ @@
,,
,,P@@ E@1replace_substring&before @@ @%after@@ @@@@ @@@ @@ @@ @@ @@-G-G
-G-@@" F@/rev_split_words@!@@ @o)@@ @@@ @@ @@$.9.9%.9.c@@: G@'get_ref@##ref!a @@@ @@@ @
@@ @@ @@C..D./
@@Y H@-set_or_ignore@@!a @
!b @@@ @@ @@S#ref@@ @@@ @@K@@ @@ @@ @@ @@p//q//@@ I@$fst3@!a @۠!b @٠!c @@ @@ @@!0[0[!0[0w@@ J@$snd3@!a @ޠ!b @!c @@ @	@ @@"0x0x"0x0@@ K@$thd3@!a @!b @!c @@ @@ @@#00#00@@ L@$fst4@!a @!b @!c @!d @@ @@ @@%00%00@@ M@$snd4@!a @!b @!c @!d @@ @@ @@&00&00@@ N@$thd4@!a @!b @!c @!d @@ @	@ @@''00('01@@= O@$for4@!a @!b @!c @!d @@ @@ @@H(11I(11:@@^ P@Ӡ*LongString@!tZ  8 @@@A%bytesC@@ @@@ @ @@@@c,1V1Zd,1V1n@@@@y QA@&create[@N@@ @!@@ @@ @@v-1o1sw-1o1@@ R@&length\@@@ @d@@ @@ @@.11.11@@ S@#get]@!@@ @@x@@ @@@ @	@ @
@ @@/11/11@@ T@#set^@9@@ @@@@ @
@@@ @@@ @@ @@ @@ @@011011@@ U@$blit_@W@@ @@@@ @@b@@ @@@@ @@@@ @@@ @@ @@ @@ @@ @@ @@111112@@ V@+blit_string`@@@ @@@@ @@@@ @ @@@ @!@@@ @"@@ @#@ @$@ @%@ @&@ @'@ @(@222 222Z@@' W@&outputa@+out_channel@@ @)@@@ @*@@@ @+@@@ @,@@ @-@ @.@ @/@ @0@ @1@632[2_732[2@@L X@0input_bytes_intob@@@ @2@:*in_channel@@ @3@-@@ @40@@ @5@ @6@ @7@ @8@U422V422@@k Y@+input_bytesc@T*in_channel@@ @9@G@@ @:@@ @;@ @<@ @=@n522o522@@ Z@@@r*1<1<s622@ [@@-edit_distance@@@ @>@@@ @?@i@@ @@Fq@@ @A@@ @B@ @C@ @D@ @E@833833:@@ \@*spellcheck @@@ @F@@ @G@@@ @H@@ @I@@ @J@ @K@ @L@D5$5$D5$5Y@@ ]@,did_you_mean!@&Format)formatter@@ @M@@@@ @N'@@ @O@@ @P@ @Q@@ @R@ @S@ @T@J6Z6ZJ6Z6@@ ^@&cut_at"@@@ @U@@@ @V@@ @X@@ @W@ @Y@ @Z@ @[@W88W89@@ _@Ӡ%Color#@%colorN  8 @@%Blackː@@e::e::@@, a#Red̐@@f:: f::@@5 b%Green͐@@(g::)g::@@> c&Yellowΐ@@1h::2h::@@G d$Blueϐ@@:i::;i:;@@P e'MagentaА@@Cj;;Dj;;@@Y f$Cyanѐ@@Lk;;Mk;;@@b g%WhiteҐ@@Ul;;!Vl;;(@@k h@@A@@@@@Yd::@@A@n `A@%styleO  8 @@"FGԐ^@@ @]@@lp;>;Bmp;>;O@@ j"BGՐ@@ @\@@yq;a;ezq;a;r@@ k$Bold֐@@r;;r;;@@ l%Resetא@@s;;s;;@@ m@@A@@@@@o;/;1@@@@ iA@ %StyleP    &Format$stag@F@@ @^@@ @_@@Al@ n@@/ansi_of_style_lQ@@@ @`@@ @a@@ @b@ @c@w;;w;;@@ o@&stylesR  8 @@%error@+@@ @h@@ @i{<8<<{<8<N@@ q'warning@,;@@ @f@@ @g|<O<S|<O<g@@ r#loc@<K@@ @d@@ @e}<h<l}<h<|@@  s@@A@@@@@z<&<(~<}<@@@@ 
 pA@.default_stylesS@@@ @j@ << <<@@  t@*get_stylesT@@@ @k@@ @l@ @m@ << <<@@ ) u@*set_stylesU@!@@ @n  @@ @o@ @p@ %<< &<<@@ ; v@'settingV  8 @@$Auto@@ 4<< 5<<@@ J x&Always@@ =<< ><= @@ S y%Never@@ F<= G<=@@ \ z@@A@@@@@ J<<@@A@ _ wA@/default_settingW*@@ @q@ V=
= W=
=)@@ l {@%setupX@ @@ @r@@ @s H@@ @t@ @u@ m=+=- n=+=O@@  |@6set_color_tag_handlingY@ m&Format)formatter@@ @v ^@@ @w@ @x@ >> >>F@@  }@@@ c:: >>@  ~@@Ӡ+Error_style$@'settingL  8 @@*Contextual@@ >> >>@@  %Short@@ >> >>@@  @@A@@@@@ >>@@A@  A@/default_settingM!@@ @y@ >> >?@@  @@@ >> ??@  @@-normalise_eol%@ @@ @z @@ @{@ @|@ ? ?  ? ?D@@  @1delete_eol_spaces&@ @@ @} @@ @~@ @@ @&@& @&@N@@  @.pp_two_columns'#sep  @@ @ @@ @ )max_lines @@ @ @@ @ @ &Format)formatter@@ @ @ _!@@ @ !!@@ @ @ @ @@ @  @@ @ @ @ @ @ @ @ @ @ @! @@!!A(A\@@!6 @4show_config_and_exit(@!
@@ @ !@@ @ @ @ @!3CC!4CC@@!I @=show_config_variable_and_exit)@!H@@ @ !!@@ @ @ @ @!FCC!GCC@@!\ @9get_build_path_prefix_map*@!0@@ @ !5Build_path_prefix_map#map@@ @ @@ @ @ @ @!bCC!cCD"@@!x @6debug_prefix_map_flags+@!L@@ @  Š!@@ @ @@ @ @ @ @!zD|D|!{D|D@@! @(print_if,@!z&Format)formatter@@ @ @!#ref @@ @ @@ @ @@!&Format)formatter@@ @ @!a @ !@@ @ @ @ @ @ @

@ @ @ @ @ @ @ @ @!ECEC!ERE@@! @(filepath-  8 @@@A!@@ @ @@@@!EE!EF	@@@@! A@'modname.  8 @@@A!@@ @ @@@@!F
F
!F
F@@@@! A@$crcs/  8 @@@A!)@@ @ !!&Digest!t@@ @ @@ @ @ @ @@ @ @@@@!F F !F FL@@@@" A@&alerts0  8 @@@A S&String#Map!t"@@ @ @@ @ @@@@"FNFN"FNFv@@@@" A@Ӡ,Magic_number1@1native_obj_config2  8 @@'flambda@!$@@ @ "ONOR" ONOa@@"5 @@A@@@@@"#
O1O3"$ObOe@@@A"9 A@1native_obj_config3@@ @ @"0P:P<"1P:Pe@@"F @'version4  8 @@@A!@@ @ @@@@">PP"?PP@@A@"T A@$kind5  8 @@$Exec@@"MPP"NPP@@"c #Cmi@@"VPP"WPP@@"l #Cmo@@"_PP"`PP@@"u #Cma@@"hPP"iPP@@"~ #CmxF@@ @ @@"uPQ"vPQ@@" $CmxaS@@ @ @@"PQ"PQ7@@" $Cmxs@@"Q8Q<"Q8QB@@" #Cmt@@"QCQG"QCQL@@" (Ast_impl@@"QCQM"QCQW@@" (Ast_intf@@"QCQX"QCQb@@" @@A@@@@@"PP@@@@" A@$info6  8 @@$kind @v@@ @ ""QtQx""QtQ@@" 'version@@@ @ "#QQ"#QQ@@" @@A@@@@@"!QdQf"(RR@@@@" A@#raw7  8 @@@A"@@ @ @@@@"*RR"*RR@@@@" A@+parse_error8  8 @@)Truncated"@@ @ @@"1S}S"1S}S@@# 2Not_a_magic_number#@@ @ @@"2SS"2SS@@# @@A@@@@@"0ShSj@@@@# A@3explain_parse_error9@" V@@ @ @@ @ @7@@ @ #!@@ @ @ @ @ @ @#4SS#4SS@@#1 @%parse:@X@@ @ #&result@@ @ à!@@ @ @@ @ @ @ @#89TT#99TT@@#N @)read_info;@#7*in_channel@@ @ #<&result@@ @ Ƞ>@@ @ @@ @ @ @ @#U<UU#V<UUR@@#k @,magic_length<">@@ @ @#bKWUWW#cKWUWm@@#x @*unexpected=  8 !a @ @A(expected@	#uQWW#vQWX@@# &actual@#}QWX#~QWX@@# @@A@Y@@@@@#QWW#QWX@@@@# A@0unexpected_error>  8 @@$Kind.@@ @ @@ @ @@#SX/X3#SX/XL@@# 'Version@@ @ Ϡ@@ @ @@ @ @@#TXMXQ#TXMXw@@# @@A@@@@@#RXX@@@@# A@-check_current?@@@ @ @@@ @ #&result#@@ @ ՠJ@@ @ @@ @ @ @ @ @ @#VXyX{#VXyX@@# @8explain_unexpected_error@@@@ @ #@@ @ @ @ @#ZY@YB#ZY@Y{@@# @%errorA  8 @@+Parse_error@@ @ @@#^YY#^YY@@$ 0Unexpected_error4@@ @ @@$_YY$_YZ@@$ @@A@@@@@$]YY@@@@$  A@1read_current_infoB-expected_kind#Рd@@ @ @@ @ @$*in_channel@@ @ $&result@@ @ E@@ @ @@ @ @ @ @ @ @$4aZZ$5bZ/Zr@@$J @.string_of_kindC@@@ @ $L@@ @ @ @ @$Fj[P[R$Gj[P[u@@$\ @2human_name_of_kindD@@@ @ $^@@ @ @ @ @$Xn[[$Yn[\@@$n @+current_rawE@@@ @ @@@ @ @ @ @$ir\\$jr\\@@$ @/current_versionF@@@ @ @@ @ @ @ @$zu\\${u\\@@$ @(raw_kindG  8 @@@A$@@ @ @@@@$}]u]w$}]u]@@@@$ A@*parse_kindH@@@ @ $P@@ @ @@ @ @ @ @$]]$]^@@$ @(raw_kindI@@@ @ @@ @ @ @ @$^8^:$^8^Y@@$ @#rawJ@@@ @ @@ @ @ @ @$__$__@@$ @)all_kindsK$@@ @ @@ @ @$ahaj$aha@@$ @@@$FyFy$aa@$ @@@     F     Ӡ$Misc0Z+\\4:WlA?L-Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l@            @@Caml1999T030   L M <	  4 $Misc*ocaml.text&_none_@@ A	 Miscellaneous useful types and functions

  {b Warning:} this module is unstable and part of
  {{!Compiler_libs}compiler-libs}.

.utils/misc.mliP77U@@@@@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@3@@@5extension_constructorP  8 @@@A@@@@@7@@@#intA  8 @@@A@@@@@;@A@$charB  8 @@@A@@@@@?@A@&stringO  8 @@@A@@@@@C@@@%floatD  8 @@@A@@@@@G@@@$boolE  8 @@%false^@@Q@$true_@@W@@@A@@@@@X@A@$unitF  8 @@"()`@@b@@@A@@@@@c@A@
#exnG  8 @@AA@@@@@g@@@%arrayH  8 @ @O@A@A@ @@@@@p@@@$listI  8 @ @P@A"[]a@@}@"::b@@ @Q@@@
@@A@Y@@@@@@@@&optionJ  8 @ @S@A$Nonec@@@$Somed@@@@@A@Y@@@@@@@@&lazy_tN  8 @ @U@A@A@Y@@@@@@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A͠=ocaml.warn_on_literal_patternѐ@@.Assert_failure\    @@ @X@@Aݠ@
0Division_by_zeroY    '@@@A堰@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@A)(@.Sys_blocked_io[    @@@@A10@)Not_foundV    H@@@A9	8	@'FailureU    P@L@@ABA@0Invalid_argumentT    Y@U@@AKJ@.Stack_overflowZ    b@@@A S#R#@-Out_of_memoryS    j@@@A([+Z+@-Match_failureR    r@qmn@ @c@@A6i9h9@
%bytesC  8 @@@A@@@@@=@@@&Stdlib@A6+fatal_error Q=W>W@б@г&stringHWIW@@	@@ @J@@А!a @A@SWWXW@@@
@ @X@@@^W@@u@@	@@^,fatal_errorf iXjX@б@г>'format4tXuX@А!a @
A@  0 |{{|||||@{H%@AXX@@гW&Format)formatterXX@@@@ @
w@@гL$unitXX@@	@@ @
x#@@А!b @
A@
y-X
X@@@B8"@@ @
~7XC@@А!aA<XX@@@F@ @
A
@@@X@@A@	@@G+Fatal_error AY)Y4@    !@@@AY@@B@@@@  0 @Zu@A@+try_finally[6:[6E@б&alwaysб@г$unit\HS\HW@@	@@ @
  0 @ .(@A@@г$unit\H[\H_@@	@@ @
@@@@ @
@@б-exceptionallyб@гƠ$unit]dv]dz@@	@@ @
%@@гӠ$unit$]d~%]d@@	@@ @
2@@@@ @
5@@б@б@г砐$unit8^9^@@	@@ @
F@@А!a @
B@
OG^H^@@@
@ @
T@@А!aXP^Q^@@@@ @
]U^@@L٠2@@ @
@ @
f^]df@@z	]@@ @
@ @
nf\HJ@@	@i[66@)ocaml.docz
   [try_finally work ~always ~exceptionally] is designed to run code
    in [work] that may fail with an exception, and has two kind of
    cleanup routines: [always], that must be run after any execution
    of the function (typically, freeing system resources), and
    [exceptionally], that should be run only if [work] or [always]
    failed with an exception (typically, undoing user-visible state
    changes that would only make sense if the function completes
    correctly). For example:

    {[
      let objfile = outputprefix ^ ".cmo" in
      let oc = open_out_bin objfile in
      Misc.try_finally
        (fun () ->
           bytecode
           ++ Timings.(accumulate_time (Generate sourcefile))
               (Emitcode.to_file oc modulename objfile);
           Warnings.check_fatal ())
        ~always:(fun () -> close_out oc)
        ~exceptionally:(fun _exn -> remove_file objfile);
    ]}

    If [exceptionally] fail with an exception, it is propagated as
    usual.

    If [always] or [exceptionally] use exceptions internally for
    control-flow but do not raise, then [try_finally] is careful to
    preserve any exception backtrace coming from [work] or [always]
    for easier debugging.
w_x|
`
b@@@@@@@C@*@<reraise_preserving_backtrace~
d
h~
d
@б@г2#exn~
d
~
d
@@	@@ @
  0 @.@A@@б@б@гP$unit~
d
~
d
@@	@@ @
@@г]$unit~
d
~
d
@@	@@ @
 @@@@ @
#@@А!a @
B@
,~
d
~
d
@@@
@ @
1~
d
@@@8@ @
5;@@@~
d
d@b	 [reraise_preserving_backtrace e f] is (f (); raise e) except that the
    current backtrace is preserved, even if [f] uses exceptions internally. 

 @
;@@@@@@@D@@H'map_end C>B C>I@б@б@А!a @
B@
  0 @_t*@A C>L C>N@@А!b @
B@

 C>R  C>T@@@
@ @
@@б@г$list
 C>\ C>`@А!a'" C>Y C>[@@@-@@ @
)
@@б@г$list$ C>g% C>k@А!b19+ C>d, C>f@@@7@@ @
@
@@гР$list9 C>r: C>v@А!bFN@ C>oA C>q@@@L@@ @
U
@@@@ @
X@@@6@ @
[9@@@N@ @
^P C>K@@@S C>>@@jE@@@e.map_left_right^ E_ E@б@б@А!a @
B@
  0 ihhiiiii@|@Ao Ep E@@А!b @
B@

z E{ E@@@
@ @
@@б@г$list E E@А!a'" E E@@@-@@ @
)
@@г4$list E E@А!b/7 E E@@@5@@ @
>
@@@@ @
A@@@4@ @
D E@@@ E@@F@@@K(for_all2 G?C G?K@б@б@А!a @
B@
  0 @bu@A G?N G?P@@б@А!b @
B@
 G?T G?V@@г$bool G?Z G?^@@	@@ @
@@@@ @
!@@@)@ @
$"@@б@г$list G?f G?j@А!a94 G?c G?e@@@?@@ @
;
@@б@г$list G?q G?u@А!bAK G?n G?p@@@G@@ @
R
@@г砐$bool' G?y( G?}@@	@@ @
_@@@@ @
b@@@.@ @
e1@@@F@ @
h6 G?M@@@9 G??@@PG@@@o.replicate_listD K
9
=E K
9
K@б@А!a @
B@
  0 MLLMMMMM@@AS K
9
MT K
9
O@@б@г.#int^ K
9
S_ K
9
V@@	@@ @
@@г$listk K
9
]l K
9
a@А!a&!r K
9
Zs K
9
\@@@,@@ @
(
@@@@ @
+@@@3@ @
.,@@@ K
9
9@@H@@@4+list_remove N

 N

@б@А!a @
B@
  0 @IZ@A N

 N

@@б@г=$list N

 N

@А!a N

 N

@@@@@ @

@@гR$list N

 N

@А!a.) N

 N

@@@4@@ @
0
@@@@ @
3@@@;@ @
64@@@ N

@@I@@@<*split_last Qbf Qbp@б@г~$list Qbu Qby@А!a @
B@
  0 @[l%@A Qbr Qbt@@@
@@ @
	@@Вг$list Qb Qb@А!a
 Qb} Qb@@@%@@ @
!
@@А!a+& Qb Qb@@@2@ @
-@@@+@ @
0.	@@@% Qbb@@<J@@@6A  ( -ref_and_value	B1 T2 T@@  8 @@!R
#ref!a @
D@
@@ @
D@
@!@@ @
P TQ T@@hL@@A@@@@@T T@@@@kK@""[ T@г#$c Td T@А#(  0 eddeeeee@xH>  8 @@@A@@@@@@@@@Am Tn T@@@4@@А!a,u Tv T@@@г--ref_and_value~ T.@@4/@@1@@A@-@@  0 }||}}}}}@@A.1@,protect_refs V V"@б@г,$list V3 V7@гn-ref_and_value V% V2@@	@@ @
  0 @<ys@A@@@	@@ @
@@б@б@гf$unit V< V@@@	@@ @@@А!a @C@! VD VF@@@
@ @&@@А!a* VK VM@@@@ @/ V;@@@0@ @39@@@ V@q	 [protect_refs l f] temporarily sets [r] to [v] for each [R (r, v)] in [l]
    while executing [f]. The previous contents of the references is restored
    even if [f] raises an exception, without altering the exception backtrace.
 WNN Z8:@@@@@@@M@@F&StdlibC \<C \<I@@Б$ListD ]PY ]P]@@БA  ( !tE ^dp ^dq@А!a @  0 @yF  8 @ @
@A@A@F@@@F@F@	G@B@@@/ ^dh0 ^d{@@@@GN@A3 ^dm4 ^do@@BA@  8  @A@Aנ'G@@@ @Y@@@@@@@@@@Aг
$listI ^dw@А!a3O ^dtP ^dv@@@6"@@$@@  0 ONNOOOOO@6@A%$@'compare
\ `}] `}@б@б@А!a @+F@  0 gffggggg@O_6@Am `}n `}@@б@А!a
u `}v `}@@гN#int~ `} `}@@	@@ @@@@!@ @ @@@$@ @!@@б@г!t `} `}@А!a4/ `} `}@@@:@@ @#6
@@б@г!t `} `}@А!aKF `} `}@@@Q@@ @%M
@@г#int `} `}@@	@@ @&Z@@@@ @']@@@.@ @(`1@@@F@ @)c `}@@@ `}@h	 The lexicographic order supported by the provided order.
        There is no constraint on the relative lengths of the lists.  a b@@@@@@@@O@!@w%equal dBJ dBO@б@б@А!a @9F@,  0 @*@A dBS dBU@@б@А!a
 dBY dB[@@гˠ$bool dB_ dBc@@	@@ @-@@@!@ @.@@@$@ @/@@б@г!t  dBk! dBl@А!a4/' dBh( dBj@@@:@@ @16
@@б@г&!t7 dBs8 dBt@А!aKF> dBp? dBr@@@Q@@ @3M
@@г$boolL dBxM dB|@@	@@ @4Z@@@@ @5]@@@.@ @6`1@@@F@ @7c[ dBR@@@^ dBF@	 Returns [true] if and only if the given lists have the same length and
        content with respect to the given equality function. j e}k f@@@@@@@P@!@w=some_if_all_elements_are_somev h
w h
2@б@гp!t h
? h
@@г&option h
8 h
>@А!a @EF@:  0 @<@A h
5 h
7@@@
@@ @<	@@@&@@ @>#@@г&&option h
I h
O@г!t h
G h
H@А!a+& h
D h
F@@@1@@ @@-
@@@@@ @B2@@@+@ @C53@@@ h
"@e	 If all elements of the given list are [Some _] then [Some xs]
        is returned with the [xs] being the contents of those [Some]s, with
        order preserved.  Otherwise return [None].  iPT k@@@@@@@Q@1@H+map2_prefix m! m,@б@б@А!a @XF@F  0 @_*@A m0 m2@@б@А!b @ZF@G m6 m8@@А!c @\F@H m< m>@@@
@ @I@@@'@ @J" @@б@г!t  mF! mG@А!a72' mC( mE@@@=@@ @L9
@@б@г&!t7 mN8 mO@А!b?I> mK? mM@@@E@@ @NP
@@Вг>!tO mWP mX@А!cLaV mTW mV@@@R@@ @Ph
@@гT!te m^f m_@А!bmwl m[m m]@@@s@@ @R~
@@@	@ @S"@@@:@ @T={ m`@@@U@ @UX@@@m@ @V m/@@@ m@	 [let r1, r2 = map2_prefix f l1 l2]
        If [l1] is of length n and [l2 = h2 @ t2] with h2 of length n,
        r1 is [List.map2 f l1 h1] and r2 is t2.  nae p@@@@@@@R@@(split_at r r@б@гx#int r r@@	@@ @]  0 @,@A@@б@г!t r$ r%@А!a @iF@^ r! r#@@@@@ @`@@ВгŠ!t r, r-@А!a/ r) r+@@@#@@ @b6
@@г۠!t r3 r4@А!a3E r0 r2@@@9@@ @dL
@@@	@ @eQ"@@@:@ @fT=@@@Z@ @gW]@@@	 r@	 [split_at n l] returns the pair [before, after] where [before] is
        the [n] first elements of [l] and [after] the remaining ones.
        If [l] has less than [n] elements, raises Invalid_argument. 	 s59	 u@@@@@@@	+S@*@j)is_prefix	 w
	  w
@б%equalб@А!a @wF@j  0 	,	+	+	,	,	,	,	,@,@A	2 x/	3 x1@@б@А!a
	: x5	; x7@@г	$bool	C x;	D x?@@	@@ @k@@@!@ @l@@@$@ @m@@б@г$list	X yAM	Y yAQ@А!a4/	_ yAJ	` yAL@@@:@@ @o6
@@б#of_г	$list	q zRb	r zRf@А!aMH	x zR_	y zRa@@@S@@ @qO
@@г	F$bool	 {gp	 {gt@@	@@ @r\@@&@ @s_	 zR[	@@@1@ @tc4@@rI@ @uf	 x(@@@	 w
@0	 Returns [true] if and only if the given list, with respect to the given
        equality function on list members, is a prefix of the list [of_]. 	 |uy	 }@@@@@@@	T@"@zA  ( <longest_common_prefix_resultF	 	 ;@А!a @y  0 								@(  8 @ @x@A@@@G@B@@@	 	 @@@@	U@A	 	 @@@  8 @A5longest_common_prefix@	q H@z@@ @|	 HN	 Hn@@	V	#first_without_longest_common_prefix@	/H@@@ @	 ou	 o@@
W	$second_without_longest_common_prefix@	>H@@@ @	 	 @@
X@@@@_@@@@@9@@@6@00(
 Hc@@Ш@г3$list
 Hi

 Hm@А!a;V
 Hf
 Hh@@@BY	@@E@H@}\@>@::2
 o@@Ш@г=$list
% o
& o@А!aEo
, o
- o@@@Lr	@@O@H@u@H@DD<
5 @@Ш@гG$list
> 
? @А!aO
E 
F @@@V	@@Y@H@@R@@@@@@  0 
G
F
F
G
G
G
G
G@@A@	#find_and_chop_longest_common_prefix
T 
U @б%equalб@А!a @G@  0 
a
`
`
a
a
a
a
a@@A
g 

h 
@@б@А!a

o 
#
p 
%@@г
8$bool
x 
)
y 
-@@	@@ @@@@!@ @@@@$@ @@@б%firstг
&$list
 /A
 /E@А!a61
 />
 /@@@@<@@ @8
@@б&secondг
?$list
 FY
 F]@А!aOJ
 FV
 FX@@@U@@ @Q
@@г<longest_common_prefix_result
 ^j
 ^@А!ad_
 ^g
 ^i@@@j@@ @f
@@.@ @i
 FO@@K9@ @m
 /8@@}T@ @q
 
@@@
 @p	 Returns the longest list that, with respect to the provided equality
        function, is a prefix of both of the given lists.  The input lists,
        each with such longest common prefix removed, are also returned. 
 
  k@@@@@@@
Y@+@@A@@
@%@p@\@`@K-A@$@@  0 







@&@A  0 







@@A  ]P` lq@@@ ]PR@@&OptionG s| s@@БA  ( !tH  @А!a @  0 $##$$$$$@
,@.@)AZ  8 @ @@A@A@I@@@I@I@G@B@@@= > @@@@U[@AA B @@@  8 !@A@A
Ǡ(J@@@ @Y@@@@@@@@@@Aг
&optionV @А!a4\ ] @@@7!@@#@@  0 \[[\\\\\@7@A$#@%printi j @б@б@г
A&Format)formattery z @@@@ @  0 {zz{{{{{@Wg=@A@@б@А!a @I@
  @@гD$unit  @@	@@ @@@@@ @@@@%@ @"(@@б@г
u&Format)formatter  @@@@ @4@@б@г!t  @А!a<D  @@@B@@ @K
@@г$unit 
 @@	@@ @X@@@@ @[@@@-@ @^0@@@A@ @a @@@ @@\@@@h@A@	@@  0 @m@A  0 @@A s @@@ su@@%ArrayI " '@@Б'exists2 .6 .=@б@б@А!a @J@  0 @@0@+2]@A .A .C@@б@А!b @J@+ .G, .I@@г$bool4 .M5 .Q@@	@@ @ @@@@ @#@@@+@ @&"@@б@г預%arrayI .YJ .^@А!a;6P .VQ .X@@@A@@ @=
@@б@г %array` .ea .j@А!bAMg .bh .d@@@G@@ @T
@@г5$boolu .nv .r@@	@@ @a@@@@ @d@@@.@ @g1@@@F@ @j .@@@@ .2@@^@@@q(for_alli ! )@б@б@гo#int - 0@@	@@ @  0 @!@A@@б@А!a @J@
 4 6@@г{$bool : >@@	@@ @@@@@ @@@@%@ @"(@@б@гp%array F K@А!a*2 C E@@@0@@ @9
@@г$bool O S@@	@@ @F@@@@ @I@@@,@ @L ,@@@ @
	 Same as {!Array.for_all}, but the
        function is applied with the index of the element as first argument,
        and the element itself as second argument. 
  TX
  @@@@@@@
_@@`)all_somes
 


 @б@г%array
  
 %@г&option
! 
" @А!a @J@  0 
)
(
(
)
)
)
)
)@<@A
/ 
0 @@@
@@ @	@@@&@@ @#@@г&option
B 2
C 8@г점%array
L ,
M 1@А!a+&
S )
T +@@@1@@ @-
@@@@@ @2@@@+@ @53@@@
d "@@
{`@$@@;@b@y@e@@  0 
j
i
i
j
j
j
j
j@Bg
@A	  0 
m
l
l
m
m
m
m
m@W@A
r *
s 9>@@@
u @@&StringJ
 @I
 @O@@БДР]&String
 Vq
 Vw@@.Stdlib__String  0 







@@.@)
a@@@!t   8 @@@A&stringO@@ @
w@@@@*string.mli R R@@@@.Stdlib__String@A@$make!@#intA@@ @
v@$charB@@ @
u!@@ @
t@ @
s@ @
r@ U  U@@A@$init"@@@ @
q@@%@@ @
p!@@ @
o@ @
n@@@ @
m@ @
l@ @
k@> [||? [|@@=B@%empty#M@@ @
j@K bL b@@JC@(of_bytes$@%bytesC@@ @
ib@@ @
h@ @
g@` ha h@@_D@(to_bytes%@q@@ @
f@@ @
e@ @
d@s oNNt oNl@@rE@&length&@@@ @
cu@@ @
b@ @
a.%string_lengthAA @@@ v v@@F@#get'@@@ @
`@@@ @
_@@ @
^@ @
]@ @
\0%string_safe_getBA@@@@ yRR yR@@G@&concat(@@@ @
[@$listI@@ @
Z@@ @
Y@@ @
X@ @
W@ @
V@  @@H@#cat)@@@ @
U@@@ @
T@@ @
S@ @
R@ @
Q@  @@I@%equal*@@@ @
P@@@ @
O$boolE@@ @
N@ @
M@ @
L@  @@J@'compare+@@@ @
K@@@ @
J@@ @
I@ @
H@ @
G@ ?? ?Z@@K@+starts_with,&prefix&@@ @
F@,@@ @
E4@@ @
D@ @
C@ @
B@. / U@@-L@)ends_with-&suffixA@@ @
A@G@@ @
@O@@ @
?@ @
>@ @
=@I J #@@HM@-contains_from.@Z@@ @
<@M@@ @
;@K@@ @
:n@@ @
9@ @
8@ @
7@ @
6@h i @@gN@.rcontains_from/@y@@ @
5@l@@ @
4@j@@ @
3@@ @
2@ @
1@ @
0@ @
/@ ii i@@O@(contains0@@@ @
.@@@ @
-@@ @
,@ @
+@ @
*@ cc c@@P@#sub1@@@ @
)@@@ @
(@@@ @
'@@ @
&@ @
%@ @
$@ @
#@  @@Q@-split_on_char2@@@ @
"@@@ @
!@@ @
 @@ @
@ @
@ @
@  8@@R@#map3@@@@ @
@@ @
@ @
@@@ @
@@ @
@ @
@ @
@ ZZ Z@@S@$mapi4@@@@ @
@@@ @
@@ @
@ @
@ @
@@@ @
#@@ @
@ @
@ @

@! " @@@ T@)fold_left5@@!a @
@@@ @

@ @
@ @
@@B@@ @
	@ @
@ @
@ @
@@ A @@?U@*fold_right6@@8@@ @
@!a @
 @ @
@ @
@_@@ @
@@ @@ @@ @@_  z z`  z @@^V@'for_all7@@W@@ @z@@ @@ @@|@@ @@@ @@ @@ @@~ !G!G !G!u@@}W@&exists8@@v@@ @@@ @@ @@@@ @@@ @@ @@ @@ !! !"@@X@$trim9@@@ @@@ @@ @@ "w"w "w"@@Y@'escaped:@@@ @@@ @@ @@ #?#? #?#]@@Z@/uppercase_ascii;@@@ @@@ @@ @@	%p%p	%p%@@[@/lowercase_ascii<@@@ @@@ @@ @@&@&@&@&f@@\@0capitalize_ascii=@@@ @@@ @@ @@''''7@@]@2uncapitalize_ascii>@
@@ @@@ @@ @@'''(@@^@$iter?@@@@ @$unitF@@ @@ @@.@@ @@@ @@ @@ @@0#((1#((@@/_@%iteri@@@0@@ @@.@@ @'@@ @@ @@ @@S@@ @1@@ @@ @@ @@U'))V'))@@T`@*index_fromA@f@@ @@Y@@ @@W@@ @c@@ @@ @@ @@ @@t/*Y*Yu/*Y*@@sa@.index_from_optB@@@ @@x@@ @@v@@ @&optionJ@@ @@@ @@ @@ @@ @@7+x+x7+x+@@b@+rindex_fromC@@@ @@@@ @@@@ @@@ @@ @@ @@ @@>,x,x>,x,@@c@/rindex_from_optD@@@ @@@@ @@@@ @E@@ @@@ @@ @@ @@ @@E--E--@@d@%indexE@@@ @@@@ @@@ @@ @@ @@L..L..@@e@)index_optF@@@ @@@@ @|@@ @@@ @@ @@ @@O..O./(@@f@&rindexG@%@@ @@@@ @@@ @@ @@ @@-T/w/w.T/w/@@,g@*rindex_optH@>@@ @@)@@ @9@@ @@@ @@ @@ @@KW//LW/0@@Jh@&to_seqI@i@@ @&Stdlib#Seq!tN@@ @@@ @@ @@h^00i^00@@gi@'to_seqiJ@@@ @#Seq!ts@@ @p@@ @@ @@@ @@ @@e11e11@@j@&of_seqK@<#Seq!t@@ @@@ @@@ @@ @@j22j22$@@k@&createL@@@ @]@@ @@ @2caml_create_stringAA1@@@q22r23@0ocaml.deprecatedr22r22@	,Use Bytes.create/BytesLabels.create instead.r22r23@@r22r23@@@@@r22@@l@#setM@@@ @@@@ @@@@ @@@ @@ @@ @@ @0%string_safe_setCAk@@@@@z4D4D{44@0ocaml.deprecated{44{44@	&Use Bytes.set/BytesLabels.set instead.	{44
{44@@{44
{44@@@@@{44@@
m@$blitN@@@ @@@@ @@@@ @~@@@ @}@$@@ @|@@ @{@ @z@ @y@ @x@ @w@ @v@955:665@@8n@$copyO@J@@ @uN@@ @t@ @s@L77M77@0ocaml.deprecatedS77T77@	&Strings now immutable: no need to copy^77_77@@a77b77@@@@@d77@@bo@$fillP@@@ @r@g@@ @q@m@@ @p@k@@ @od@@ @n@ @m@ @l@ @k@ @j@8889 @0ocaml.deprecated8888@	(Use Bytes.fill/BytesLabels.fill instead.8888@@8888@@@@@88@@p@)uppercaseQ@@@ @i@@ @h@ @g@:*:*:a:@0ocaml.deprecated:K:P:K:`@	@Use String.uppercase_ascii/StringLabels.uppercase_ascii instead.:a:f:a:@@:a:e:a:@@@@@:K:M@@q@)lowercaseR@@@ @f@@ @e@ @d@;;;<@0ocaml.deprecated;;;;@	@Use String.lowercase_ascii/StringLabels.lowercase_ascii instead.;;;<@@;;;<@@@@@;;@@r@*capitalizeS@@@ @c@@ @b@ @a@===N=@0ocaml.deprecated
=8===8=M@	BUse String.capitalize_ascii/StringLabels.capitalize_ascii instead.=N=S=N=@@=N=R=N=@@@@@=8=:@@s@,uncapitalizeT@.@@ @`2@@ @_@ @^@0>k>k1>>@0ocaml.deprecated7>>8>>@	FUse String.uncapitalize_ascii/StringLabels.uncapitalize_ascii instead.B>>C>>@@E>>F>>@@@@@H>>@@Ft@)get_uint8U@X@@ @]@K@@ @\O@@ @[@ @Z@ @Y@`CuCuaCuC@@_u@(get_int8V@q@@ @X@d@@ @Wh@@ @V@ @U@ @T@yD
D
zD
D-@@xv@-get_uint16_neW@@@ @S@}@@ @R@@ @Q@ @P@ @O@DDDD@@w@-get_uint16_beX@@@ @N@@@ @M@@ @L@ @K@ @J@EGEGEGEo@@x@-get_uint16_leY@@@ @I@@@ @H@@ @G@ @F@ @E@EEEF@@y@,get_int16_neZ@@@ @D@@@ @C@@ @B@ @A@ @@@FFFF@@z@,get_int16_be[@@@ @?@@@ @>@@ @=@ @<@ @;@GDGDGDGk@@{@,get_int16_le\@@@ @:@@@ @9@@ @8@ @7@ @6@GGGH@@|@,get_int32_ne]@ @@ @5@@@ @4%int32L@@ @3@ @2@ @1@*HH+HH@@)}@,get_int32_be^@;@@ @0@.@@ @/@@ @.@ @-@ @,@CI4I4DI4I]@@B~@,get_int32_le_@T@@ @+@G@@ @*4@@ @)@ @(@ @'@\II]II@@[@,get_int64_ne`@m@@ @&@`@@ @%%int64M@@ @$@ @#@ @"@w$JwJwx$JwJ@@v @@,get_int64_bea@@@ @!@{@@ @ @@ @@ @@ @@+KK+KKC@@ A@,get_int64_leb@@@ @@@@ @4@@ @@ @@ @@2KK2KK@@ B@*unsafe_getc@@@ @@@@ @@@ @@ @@ @2%string_unsafe_getBA<@@@@=LL=LL@@ C@*unsafe_setd@|@@ @@@@ @@@@ @@@ @@ @@ @
@ @2%string_unsafe_setCA`@@@@@>LL?M6ML@0ocaml.deprecated?M6M;?M6MK@@?M6M8@@ D@+unsafe_blite@@@ @@@@ @
@@@ @	@@@ @@@@ @@@ @@ @@ @@ @@ @@ @0caml_blit_stringE@@@@@@@@)@MMMM*BMM@'noalloc0BMM1BMM@@4BMM@@2 E@+unsafe_fillf@@@ @ @7@@ @@=@@ @@;@@ @4@@ @@ @@ @@ @@ @0caml_fill_stringD@Ҡ@@@@@@_CMM`ENN,@'noallocfDMN
gDMN@@jDMN
kDMN@0ocaml.deprecatedqENNrENN+@@uENN@@s F@@$ Vb@@gK  8 @@@A@@ @@@@@@@@~A@|h@{@@ @@x@@ @u@@ @@ @@ @@t@q@pi@o@@ @@@n@@ @m@@ @@ @l@@ @@ @@ @@k@h@gjf@@ @@e@b@ak@`@@ @]@@ @@ @@\@Y@Xl@W@@ @V@@ @@ @@U@R@Qm@P@@ @O@@ @@ @NI@F@En@D@@ @@C@@ @B@@ @@ @@ @A<@9@8o@7@@ @@63@@ @@@ @2@@ @@ @@ @@1@.@-p@,@@ @@+@@ @*@@ @@ @@ @@)@&@%q@@@ @@@@ @$@@ @@ @@ @@!@@r@@@ @@@@ @@@ @@ @@ @@@@s@@ @@@@ @@@ @@ @@ @@@@
t
@@ @@	@@ @@@ @@ @@ @@@@u@@@ @@@@ @@ @@ @@@ @@ @@ @@ @@@@v@@@ @@@@ @@@@ @@@ @@ @@ @@ @@@@w@@@ @@@@ @@@ @@ @@ @@@@x@@@ @@@@ @@@@ @@@ @@ @@ @@ @@@@y@@@ @@@@ @ݠ@@ @@@ @@ @@ @@@@z@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@@{@@@@ @@@@ @@@ @@ @@ @@@@ @@@ @@ @@ @@@@|@@@@@ @@ @@ @@@@@ @@ @@ @@ @@@@}@@@@ @@@ @@ @@@@ @@@ @@ @~@ @}@@@~@@@@ @|@@ @{@ @z@@@ @y@@ @x@ @w@ @v@@@@@@@ @u@@ @t@ @s@@@ @r@@ @q@ @p@ @o@@@@@@ @n@@ @m@ @l@@@@@@ @k@@ @j@ @i@@@@@@ @h@@ @g@ @f@@@@@@ @e@@ @d@ @c@@@@@@ @b~@@ @a@ @`@}@z@y@x@@ @_w@@ @^@ @]@v@s@r@@q@@ @\p@@ @[@ @Z@m@@ @Yl@@ @X@ @W@ @V@k@h@g@@f@@ @U@e@@ @Td@@ @S@ @R@ @Q@c@@ @Pb@@ @O@ @N@ @M@a@^@]@\@@ @L@[@@ @K@Z@@ @JY@@ @I@ @H@ @G@ @F@X@U@T@S@@ @E@R@@ @D@Q@@ @CPM@@ @B@@ @A@ @@@ @?@ @>@L@I@H@G@@ @=@F@@ @<@E@@ @;D@@ @:@ @9@ @8@ @7@C@@@?@>@@ @6@=@@ @5@<@@ @4;:@@ @3@@ @2@ @1@ @0@ @/@9@6@5@4@@ @.@3@@ @-2@@ @,@ @+@ @*@1@.@-@,@@ @)@+@@ @(*)@@ @'@@ @&@ @%@ @$@(@%@$@#@@ @#@"@@ @"!@@ @!@ @ @ @@ @@@@@ @@@@ @@@ @@@ @@ @@ @@@@@W@@ @
@@ @@@ @@ @@@	@@i@@ @$@@ @@@ @@ @@@ @@ @@@ @@:@@ @@@ @
@@ @@ @@@@@@@ @
@@ @	@ @@@@@ @@@@ @@@@ @@@ @@ @@ @@ @@@@@ @ @@@ @
@@@ @
@@@ @
@@@ @
@@ @
@ @
@ @
@ @
@ @
@ @
@@@@@@ @
@@ @
@ @
@@@@@ @
@@@ @
@@@ @
@@@ @
@@ @
@ @
@ @
@ @
@ @
@}f@e@d@@ @
c@@ @
@ @
@b_H@G@F@@ @
E@@ @
@ @
@DA*@)@(@@ @
'@@ @
@ @
@&#@@
@@ @
	@@ @
@ @
@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
@@ @
@ @
@ @
@@@@@@ @
@@@ @
~@@ @
@ @
@ @
@}@z@y@x@@ @
@w@@ @
v@@ @
@ @
@ @
up@m@l@k@@ @
@j@@ @
@i@@ @
h@@ @
@ @
@ @
@ @
ga^T@S@R@@ @
@Q@@ @
@P@@ @
@O@@ @
@N@@ @
M@@ @
@ @
@ @
@ @
@ @
@ @
LDA7@6@5@@ @
@4@@ @
@3@@ @
~@2@@ @
}1@@ @
|@ @
{@ @
z@ @
y@ @
x0)&@@4 VZ
@@  0 21122222@
@A
@#SetLA xB x@@УР#Set!SO xP x@  0 ONNOOOOO@
srkjZYDC=<10%$qp`_JI54tshgRQ76! yx`_NMBA,+ qp`_ON>=-,
@ALK@@#elt?@#elt x x@  ( 
@  8 @@@Az@@ @|@@@@ x x@@@@b@@Aг	&string x
@@i@@
@@!kM  8 @@@A@@ @[@@@@@@@A@!tlM  8 @@@A@@@@@'set.mli G:> G:D@@@@+Stdlib__SetDA@%emptym@@ @Z@ Jcg Jcs@@E@(is_emptyn@@@ @Y$boolE@@ @X@ @W@# M$ M@@"F@#memo@<@@ @V@)@@ @U@@ @T@ @S@ @R@; P< P@@:G@#addp@@@ @Q@@@@ @PC@@ @O@ @N@ @M@Q S9=R S9S@@PH@)singletonq@.@@ @LT@@ @K@ @J@b Y
Z
^c Y
Z
u@@aI@&remover@?@@ @I@g@@ @Hj@@ @G@ @F@ @E@x \

y \

@@wJ@%unions@x@@ @D@}@@ @C@@ @B@ @A@ @@@ b b @@K@%intert@@@ @?@@@ @>@@ @=@ @<@ @;@ e e2@@L@(disjointu@@@ @:@@@ @9@@ @8@ @7@ @6@ hQU hQq@@M@$diffv@@@ @5@@@ @4@@ @3@ @2@ @1@ l l@@N@'comparew@@@ @0@@@ @/#intA@@ @.@ @-@ @,@ p15 p1O@@O@%equalx@@@ @+@@@ @*@@ @)@ @(@ @'@ t t@@ P@&subsety@@@ @&@@@ @%@@ @$@ @#@ @"@ xMQ xMk@@Q@$iterz@@@@ @!$unitF@@ @ @ @@%@@ @@@ @@ @@ @@7 |8 |@@6R@#map{@@@@ @@@ @@ @@A@@ @D@@ @@ @@ @@R S @@QS@$fold|@@1@@ @@!a @g@ @@ @@_@@ @@@ @@ @@ @
@o p @@nT@'for_all}@@N@@ @b@@ @@ @
@z@@ @	k@@ @@ @@ @@ vz v@@U@&exists~@@k@@ @@@ @@ @@@@ @@@ @@ @ @ @@    *@@V@&filter@@@@ @@@ @@ @@@@ @@@ @@ @@ @@  @@W@*filter_map@@@@ @&optionJ@@ @@@ @@ @@@@ @@@ @@ @@ @@  @@X@)partition@@@@ @@@ @@ @@@@ @@@ @@@ @@ @@ @@ @@
  B@@	Y@(cardinal@
@@ @4@@ @@ @@ 04 0J@@Z@(elements@@@ @$listI@@ @@@ @@ @@4 5 @@3[@'min_elt@4@@ @@@ @@ @@E |F |@@D\@+min_elt_opt@E@@ @~)@@ @@@ @@ @@[ 59\ 5Y@@Z]@'max_elt@[@@ @;@@ @@ @@l 
m @@k^@+max_elt_opt@l@@ @P@@ @@@ @@ @@ { {@@_@&choose@@@ @b@@ @@ @@  0@@`@*choose_opt@@@ @̠w@@ @@@ @@ @@   @@a@%split@@@ @@@@ @@@ @Ơ@@ @Ǡ@@ @@ @@ @@ @@     !@@b@$find@@@ @@@@ @@@ @@ @@ @@ "" ""@@c@(find_opt@@@ @@@@ @@@ @@@ @@ @@ @@ #[#_ #[#@@d@*find_first@@@@ @@@ @@ @@@@ @@@ @@ @@ @@ $.$2 $.$[@@e@.find_first_opt@@@@ @@@ @@ @@#@@ @\@@ @@@ @@ @@ @@9&6&::&6&n@@8f@)find_last@@@@ @,@@ @@ @@D@@ @$@@ @@ @@ @@U
']'aV
']'@@Tg@-find_last_opt@@4@@ @H@@ @@ @@`@@ @D@@ @@@ @@ @@ @@v(k(ow(k(@@uh@'of_list@WW@@ @@@ @~@@ @@ @@))))@@i@+to_seq_from@i@@ @@@@ @&Stdlib#Seq!t{@@ @@@ @@ @@ @@ ** **@@j@&to_seq@@@ @#Seq!t@@ @@@ @@ @@%+a+e%+a+@@k@*to_rev_seq@@@ @5#Seq!t@@ @@@ @@ @@)++)++@@l@'add_seq@K#Seq!t@@ @@@ @@@@ @@@ @@ @@ @@-,@,D-,@,e@@m@&of_seq@i#Seq!t@@ @@@ @@@ @@ @~@1,,1,,@@n@@4@@@ x|6@7@#MapwN  @@УР#Map!S     @  0             @@J@! c@A@@#key#@#key    @  ( 
@  8 @@@A@@ @@@@@    @@@@ 5d@@Aг	&string ' 
@@%@@
@@!MO  8 @@@A@@ @@@@@@@@A@!tNO  8 !a @@A@A@I@B@@@'map.mli F;? F;J@@@@+Stdlib__MapDA@%emptyO!a @@@ @@ I I@@E@(is_emptyP@!a @@@ @$boolE@@ @@ @@- L. L@@,F@#memQ@M@@ @@3!a @@@ @@@ @@ @@ @@J OK O$@@IG@#addR@@@ @@!a @@U	@@ @Y
@@ @@ @@ @@ @@h Si S@@gH@&updateS@;@@ @@@&optionJ!a @@@ @	@@ @@ @@@@ @@@ @@ @@ @@ @@ \dh \d@@I@)singletonT@g@@ @@!a @@@ @@ @@ @@ i i9@@J@&removeU@@@ @@!a @@@ @@@ @@ @@ @@ o o@@K@%mergeV@@@@ @@`!a @@@ @@k!b @@@ @t!c @@@ @@ @@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@ v xb@@L@%unionW@@@@ @@!a @@
@@ @@ @@ @@ @@@@ @@!@@ @%@@ @@ @@ @@ @@4 485 4y@@3M@'compareX@@!a @y@#intA@@ @@ @@ @@D@@ @@J@@ @@@ @@ @@ @@ @@] ^ @@\N@%equalY@@!a @o@I@@ @@ @@ @@k@@ @@q@@ @Y@@ @@ @@ @@ @@ X\ X@@O@$iterZ@@Y@@ @@!a @e$unitF@@ @@ @@ @@@@ @@@ @@ @@ @@  @@P@$fold[@@@@ @@!a @\@!b @Z@ @@ @@ @@@@ @@@ @@ @@ @@  	@@Q@'for_all\@@@@ @@!a @R@@ @@ @@ @@ߠ
@@ @@@ @@ @~@ @}@  
@@R@&exists]@@@@ @|@!a @I@@ @{@ @z@ @y@
@@ @x@@ @w@ @v@ @u@  @@S@&filter^@@@@ @t@!a @?@@ @s@ @r@ @q@'
@@ @p+@@ @o@ @n@ @m@: @D; @s@@9T@*filter_map_@@@@ @l@!a @7֠!b @5@@ @k@ @j@ @i@P@@ @hT@@ @g@ @f@ @e@c d @@bU@)partition`@@8@@ @d@!a @+R@@ @c@ @b@ @a@t
@@ @`{@@ @^@@ @_@ @]@ @\@ @[@ !! !!@@V@(cardinala@!a @&@@ @Z[@@ @Y@ @X@ "" "#
@@W@(bindingsb@!a @!@@ @W$listI@@ @V@ @U@@ @T@ @S@ #]#a #]#@@X@+min_bindingc@Ǡ!a @@@ @R@@ @Q@ @P@ @O@ $$ $$@@Y@/min_binding_optd@!a @@@ @Nz@@ @M@ @L@@ @K@ @J@  %t%x %t%@@Z@+max_bindinge@ !a @@@ @I@@ @H@ @G@ @F@ &a&e &a&@@[@/max_binding_optf@!a @@@ @E@@ @D@ @C@@ @B@ @A@9 '': ''C@@8\@&chooseg@9!a @@@ @@@@ @?@ @>@ @=@S ''T ''@@R]@*choose_opth@S!a @ @@ @<5@@ @;@ @:@@ @9@ @8@r((s((@@q^@%spliti@E@@ @7@w!a @@@ @6@@ @3@@ @4@@ @5@ @2@ @1@ @0@)))*@@_@$findj@o@@ @/@!a @@@ @.@ @-@ @,@++++@@`@(find_optk@@@ @+@!a @@@ @*R	@@ @)@ @(@ @'@,0,4,0,Z@@a@*find_firstl@@@@ @&@@ @%@ @$@ܠ!a @@@ @#@@ @"@ @!@ @ @ @@ ,, ,-/@@b@.find_first_optm@@@@ @@@ @@ @@!a @@@ @@@ @@ @@@ @@ @@ @@ -//!-//X@@c@)find_lastn@@@@ @	@@ @@ @@+!a @@@ @	@@ @@ @@ @@ @@E40P0TF40P0@@Dd@-find_last_opto@@@@ @
.@@ @@ @@P!a @@@ @
2@@ @	@ @@@ @@ @@ @@o;1o1sp;1o1@@ne@#mapp@@!a @!b @@ @@{
@@ @
@@ @@ @@ @ @C22C22@@f@$mapiq@@c@@ @@!a @!b @@ @@ @@
@@ @
@@ @@ @@ @@J44J44B@@g@&to_seqr@!a @@@ @&Stdlib#Seq!t@@ @@ @@@ @@ @@P44P45@@h@*to_rev_seqs@נ!a @@@ @%#Seq!t@@ @@ @@@ @@ @@T5t5xT5t5@@i@+to_seq_fromt@@@ @@!a @@@ @L#Seq!t@@ @@ @@@ @@ @@ @@ X55!X56-@@j@'add_sequ@f#Seq!t@@ @!a @@ @@@ @@5
@@ @9@@ @@ @@ @@H]66I]66@@Gk@&of_seqv@#Seq!t%@@ @!a @@ @@@ @[@@ @@ @@ja7H7Lka7H7q@@il@@@@@% @@#TblP% % @@УР$'Hashtbl!S% % @  0 %%%%%%%%@@@!%e@A@@#key+@#key% % @  ( 
@  8 @@@A%@@ @:@@@@% % @@@@%f@@Aг	&string% 
@@%@@
@@!yQ  8 @@@A@@ @@@@@@@@A@!tzQ  8 !a @@A@A@O@B@@@+hashtbl.mliO55O55@@@@/Stdlib__HashtbldA@&create{@#intA@@ @ !a @@@ @@ @@P55P55@@e@%clear|@!a @@@ @$unitF@@ @@ @@5Q556Q55@@4f@%reset}@-!a @@@ @@@ @@ @@LR55MR56@@Kg@$copy~@D!a @@@ @L@@ @@ @@cT66!dT668@@bh@#add@[!a @@@ @@@@ @@
O@@ @@ @@ @@ @@U696=U696`@@i@&remove@z!a @@@ @@@@ @k@@ @@ @@ @@V6a6eV6a6@@j@$find@!a @@@ @@;@@ @
@ @@ @@W66W66@@k@(find_opt@!a @@@ @@S@@ @&optionJ@@ @@ @@ @@X66X66@@l@(find_all@͠!a @@@ @@r@@ @$listI@@ @@ @@ @@[66[67@@m@'replace@!a @@@ @@@@ @@@@ @@ @@ @@ @~@\77\77B@@n@#mem@
!a @@@ @}@@@ @|$boolE@@ @{@ @z@ @y@0]7C7G1]7C7d@@/o@$iter@@@@ @x@!a @@@ @w@ @v@ @u@9
@@ @t!@@ @s@ @r@ @q@T^7e7iU^7e7@@Sp@2filter_map_inplace@@@@ @p@!a @@@ @o@ @n@ @m@^@@ @lF@@ @k@ @j@ @i@y_77z`77@@xq@$fold@@@@ @h@!a @@!b @@ @g@ @f@ @e@@@ @d@@ @c@ @b@ @a@c78c787@@r@&length@!a @@@ @`@@ @_@ @^@d888<d888T@@s@%stats@!a @@@ @]&Stdlib'Hashtbl*statistics@@ @\@ @[@e8U8Ye8U8v@@t@&to_seq@ɠ!a @@@ @Z&Stdlib#Seq!ty@@ @Y@ @X@@ @W@ @V@g88g88@@u@+to_seq_keys@@ @@@ @U##Seq!t@@ @T@@ @S@ @R@j88j88@@v@-to_seq_values@
!a @@@ @QA#Seq!t@@ @P@ @O@-m99.m996@@,w@'add_seq@%!a @@@ @N@^#Seq!t@@ @M@ @L@@ @K"@@ @J@ @I@ @H@Up9O9SVp9O9@@Tx@+replace_seq@M!a @@@ @G@#Seq!t@@ @F@ @E@@ @DJ@@ @C@ @B@ @A@}s99~s99@@|y@&of_seq@#Seq!t@@ @@!a @@ @?@@ @>@@ @=@ @<@v99v9:@@z@@ް@@@( @@%print( ( @б@г'&Format)formatter( ( '@@@@ @  0 ((((((((@@@!(g@A
	@@б@г!t( +( ,@@	@@ @@@г($unit( 0( 4@@	@@ @ @@@@ @#@@@)@ @&,@@@( @@)h@@@,'for_all( 6>( 6E@б@б@г(ՠ$char)	 6I)
 6M@@	@@ @  0 ))
)
)))))@G_!@A@@г(ؠ$bool) 6Q) 6U@@	@@ @@@@@ @@@б@г!t)* 6Z)+ 6[@@	@@ @!@@г($bool)7 6_)8 6c@@	@@ @.@@@@ @1@@@$@ @4)C 6H@@@)F 6:@@)]i@@@;@$
ܠѠ|l\G2"
ʠyncXMB7"ڠŠxdS;*
ƠzjZJ:*
ڠʠvU@	@@	@@@@@@@U@@  0 ))))))))@W@AS  0 ))))))))@@A) @R) di@@@) @B@@'compare) kv) k}@б@А!a @R@  0 ))))))))@=@@)j@A) k) k@@б@А!a) k) k@@г)#int) k) k@@	@@ @@@@#@ @@@@&@ @!@@(%compareBA @@@@) km) k@@)k	@@@/@#@@@@@@@P@@r@5@@I@@  0 ))))))))@:K@A
  0 ))))))))@#@A) \<L) @@@) \<<@@,find_in_path* * @б@г)$list*
 * @г)ߠ&string* * @@	@@ @  0 ********@$$/@-@(*5l@A
	@@@@@ @	@@б@г)&string*/ *0 @@	@@ @@@г*&string*< *= @@	@@ @%@@@@ @(@@@&@ @+1@@@*J @@*am@@@10find_in_path_rel*U 
*V 
@б@г)$list*` 
'*a 
+@г*2&string*j 
 *k 
&@@	@@ @  0 *l*k*k*l*l*l*l*l@Ts)@A@@@	@@ @
@@б@г*H&string* 
/* 
5@@	@@ @@@г*U&string* 
9* 
?@@	@@ @#@@@@ @&@@@&@ @)/@@@* 

@@*n@@@/2find_in_path_uncap* * @б@г*H$list* * @г*&string* * @@	@@ @  0 ********@Rq)@A@@@	@@ @
@@б@г*&string* * @@	@@ @@@г*&string* * @@	@@ @#@@@@ @&@@@&@ @)/@@@* @@+o@@@/+remove_file* OS* O^@б@г*ʠ&string+ O`+ Of@@	@@ @  0 ++++++++@Hg@A@@г*$unit+ Oj+ On@@	@@ @@@@@ @@@@+ OO@@+3p@
@@0expand_directory+' +( @б@г*&string+2 +3 @@	@@ @  0 +4+3+3+4+4+4+4+4@1F@A@@б@г+&string+C +D @@	@@ @@@г+&string+P +Q @@	@@ @@@@@ @!@@@'@ @$*@@@+^ @@+uq@@@*3split_path_contents+i y}+j y@б#sepг+B$char+v y+w y@@	@@ @  0 +x+w+w+x+x+x+x+x@EZ!@A@@б@г+O&string+ y+ y@@	@@ @@@г++$list+ y+ y@г+f&string+ y+ y@@	@@ @(@@@@@ @-@@@"@ @0%@@A)V9@@ @	@ @7+ y@@	@+ yy"@@+r@$@@>0create_hashtable+   +   @б@г+#int+   +   @@	@@ @  0 ++++++++@Wn@A@@б@г+t$list+   +   @ВА!a @R@+   +   @@А!b @R@&+   +   @@@@ @-@@@)@@ @2,   '@@г*'Hashtbl!t,   ,  !@А!a/D,   ,   @@А!b*K,   ,   @@@<1@@ @S,%   @@@)	@ @W%@@@]@ @Z`@@@,.   @@,Es@!@@`)copy_file,9 !j!n,: !j!w@б@г+*in_channel,D !j!y,E !j!@@	@@ @  0 ,F,E,E,F,F,F,F,F@y@A@@б@г++out_channel,U !j!,V !j!@@	@@ @@@г,$unit,b !j!,c !j!@@	@@ @@@@@ @!@@@'@ @$*@@@,p !j!j@@,t@@@*/copy_file_chunk,{ "'"+,| "'":@б@г+P*in_channel, "'"<, "'"F@@	@@ @  0 ,,,,,,,,@CX@A@@б@г+a+out_channel, "'"J, "'"U@@	@@ @@@б@г,v#int, "'"Y, "'"\@@	@@ @ @@г,b$unit, "'"`, "'"d@@	@@ @-@@@@ @0@@@%@ @3(@@@9@ @6<@@@, "'"'@@,u@@@<.string_of_file, #
#, #
#@б@г+*in_channel, #
#!, #
#+@@	@@ @  0 ,,,,,,,,@Uj@A@@г,&string, #
#/, #
#5@@	@@ @@@@@ @@@@, #
#
@@-v@
@@<output_to_file_via_temporary, ##-  ##@б$modeг,$list- #$ -
 #$@г+)open_flag- ##- ##@@	@@ @  0 --------@=R+@A@@@	@@ @
@@б@г,&string-, #$-- #$@@	@@ @@@б@б@г-&string-= #$-> #$@@	@@ @'@@б@г,+out_channel-L #$-M #$(@@	@@ @6@@А!a @
R@?-[ #$,-\ #$.@@@
@ @D@@@#@ @G&@@А!aK-g #$3-h #$5@@@@ @P-l #$@@@A@ @	TD@@o+W@@ @
	@ @[-w ##@@	@-z ##@@-w@@@b7protect_writing_to_file- &&- &&@б(filenameг-Z&string- &&- &&@@	@@ @  0 --------@}!@A@@б!fб@г,q+out_channel- &&- &&@@	@@ @@@А!a @R@- &&- &&@@@
@ @#@@А!a'- &&- &&@@'@ @,- &&@@>3@ @0- &&	@@@- &&@+b	 Open the given [filename] for writing (in binary mode), pass the
    [out_channel] to the given function, then close the channel. If the function
    raises an exception then [filename] will be removed. - %%- &N&@@@@@@@-x@@D$log2- &&- &&@б@г-#int- &&- &&@@	@@ @  0 --------@]t,@A@@г-͠#int- &&- &&@@	@@ @@@@@ @@@@. &&@@.y@
@@%align. 'P'T. 'P'Y@б@г-#int. 'P'[. 'P'^@@	@@ @  0 . ... . . . . @1F@A@@б@г-#int./ 'P'b.0 'P'e@@	@@ @@@г.#int.< 'P'i.= 'P'l@@	@@ @@@@@ @!@@@'@ @$*@@@.J 'P'P@@.az@@@*/no_overflow_add.U ''.V ''@б@г.0#int.` ''.a ''@@	@@ @  0 .b.a.a.b.b.b.b.b@CX@A@@б@г.A#int.q ''.r ''@@	@@ @@@г.>$bool.~ ''. ''@@	@@ @ @@@@ @!!@@@'@ @"$*@@@. ''@@.{@@@*/no_overflow_sub. (e(i. (e(x@б@г.r#int. (e(z. (e(}@@	@@ @#  0 ........@CX@A@@б@г.#int. (e(. (e(@@	@@ @$@@г.$bool. (e(. (e(@@	@@ @%@@@@ @&!@@@'@ @'$*@@@. (e(e@@.|@@@*/no_overflow_mul. ) ). ) )@б@г.#int. ) ). ) )@@	@@ @(  0 ........@CX@A@@б@г.Š#int. ) ). ) )@@	@@ @)@@г. $bool/ ) )#/ ) )'@@	@@ @*@@@@ @+!@@@'@ @,$*@@@/ ) ) @@/'}@@@*/no_overflow_lsl/ ))/ ))@б@г.#int/& ))/' ))@@	@@ @-  0 /(/'/'/(/(/(/(/(@CX@A@@б@г/#int/7 ))/8 ))@@	@@ @.@@г/$bool/D ))/E ))@@	@@ @/@@@@ @0!@@@'@ @1$*@@@/R ))@@/i~@@@*5Int_literal_converterR/_ *5*</` *5*Q@@Б#int/l *X*^/m *X*a@б@г/?&string/w *X*d/x *X*j@@	@@ @2  0 /y/x/x/y/y/y/y/y@Rg.@A@@г/V#int/ *X*n/ *X*q@@	@@ @3@@@@ @4@@@/ *X*Z@@/@
@@%int32/ *r*x/ *r*}@б@г/o&string/ *r*/ *r*@@	@@ @5  0 ////////@1F@A@@г/%int32/ *r*/ *r*@@	@@ @6@@@@ @7@@@/ *r*t@@/ @@
@@%int64/ **/ **@б@г/&string/ **/ **@@	@@ @8  0 ////////@1F@A@@г/8%int64/ **/ **@@	@@ @9@@@@ @:@@@/ **@@0 A@
@@)nativeint/ **/ **@б@г/Ϡ&string0 **0 **@@	@@ @;  0 0	000	0	0	0	0	@1F@A@@г/p)nativeint0 **0 **@@	@@ @<@@@@ @=@@@0! **@@08 B@
@@@@i@b;@4
@@  0 0)0(0(0)0)0)0)0)@!6@A  0 0,0+0+0,0,0,0,0,@@A01 *5*T02**@@@04 *5*5@@/chop_extensions0>**0?**@б@г0&string0I**0J**@@	@@ @>  0 0K0J0J0K0K0K0K0K@@#@0g C@A
	@@г0"&string0Z**0[**@@	@@ @?@@@@ @@@@@0e**@@0| D@
@@0search_substring0p
,, 0q
,,0@б@г0C&string0{
,,20|
,,8@@	@@ @A  0 0}0|0|0}0}0}0}0}@3H@A@@б@г0T&string0
,,<0
,,B@@	@@ @B@@б@г0k#int0
,,F0
,,I@@	@@ @C @@г0x#int0
,,M0
,,P@@	@@ @D-@@@@ @E0@@@%@ @F3(@@@9@ @G6<@@@0
,,@@0 E@@@<1replace_substring0-G-K0-G-\@б&beforeг0&string0-G-e0-G-k@@	@@ @H  0 00000000@Wl!@A@@б%afterг0&string0-G-u0-G-{@@	@@ @I@@б@г0&string0-G-0-G-@@	@@ @J"@@г0Ƞ&string1 -G-1-G-@@	@@ @K/@@@@ @L2@@0%@ @M51-G-o@@G<@ @N91-G-^@@@1-G-G@@1* F@@@@/rev_split_words1.9.=1.9.L@б@г0&string1).9.N1*.9.T@@	@@ @O  0 1+1*1*1+1+1+1+1+@Yp@A@@г0Ϡ$list18.9._19.9.c@г1
&string1B.9.X1C.9.^@@	@@ @P@@@@@ @R@@@$@ @S!'@@@1R.9.9@@1i G@@@''get_ref1]..1^..@б@г02#ref1h..1i..@г1	$list1r..1s..@А!a @]S@T  0 1z1y1y1z1z1z1z1z@Pe/@A1..1..@@@
@@ @V	@@@&@@ @X#@@г1*$list1./1./
@А!a!1./1./@@@'@@ @Z#
@@@@ @[&$@@@1..@@1 H@@@,-set_or_ignore1//1//@б@б@А!a @lS@^  0 11111111@Ch@A1//1//@@г1E&option1//1//@А!b @nS@_1//1//@@@@@ @a@@@&@ @b!@@б@г0#ref1//1//@г1n&option1//1//@А!b);1//1//@@@/@@ @dB
@@@@@ @fG@@б@А!aRM2
//2//@@г1Š$unit2//2//@@	@@ @g\@@@d@ @h_@@@@ @ib'@@@F@ @je2%//@@@2(//@@2? I@@@l$fst323!0[0_24!0[0c@б@ВА!a @uS@o  0 2?2>2>2?2?2?2?2?@@A2E!0[0e2F!0[0g@@А!b @wS@p2Q!0[0j2R!0[0l@@А!c @yS@q2]!0[0o2^!0[0q@@@%
@ @r" @@А!a+&2i!0[0u2j!0[0w@@@0@ @s+)@@@2p!0[0[@@2 J@	@@1$snd32{"0x0|2|"0x0@б@ВА!a @S@z  0 22222222@I]@A2"0x02"0x0@@А!b @S@{2"0x02"0x0@@А!c @S@|2"0x02"0x0@@@%
@ @}" @@А!b&2"0x02"0x0@@@"@ @~+)@@@2"0x0x@@2 K@	@@1$thd32#002#00@б@ВА!a @S@  0 22222222@I]@A2#002#00@@А!b @S@2#002#00@@А!c @S@2#002#00@@@%
@ @" @@А!c&2#002#00@@@@ @+)@@@3 #00@@3 L@	@@1$fst43%003%00@б@ВА!a @S@  0 33333333@I]@A3%003%00@@А!b @S@3)%003*%00@@А!c @S@35%0036%00@@А!d @S@&3A%003B%00@@@1$@ @/-@@А!a833N%003O%00@@@=@ @86@@@3U%00@@3l M@	@@>$snd43`&003a&00@б@ВА!a @S@  0 3l3k3k3l3l3l3l3l@Vj@A3r&003s&00@@А!b @S@3~&003&00@@А!c @S@3&003&00@@А!d @S@&3&003&00@@@1$@ @/-@@А!b*33&003&00@@@/@ @86@@@3&00@@3 N@	@@>$thd43'003'00@б@ВА!a @S@  0 33333333@Vj@A3'013'01@@А!b @S@3'013'01@@А!c @S@3'013'01
@@А!d @S@&3'013'01@@@1$@ @/-@@А!c33'013'01@@@#@ @86@@@3'00@@4 O@	@@>$for44
(114(11!@б@ВА!a @S@  0 44444444@Vj@A4(11#4(11%@@А!b @S@4((11(4)(11*@@А!c @S@44(11-45(11/@@А!d @S@&4@(1124A(114@@@1$@ @/-@@А!d34M(1184N(11:@@@@ @86@@@4T(11@@4k P@	@@>*LongStringS4a*1<1C4b*1<1M@@БA  ( !tT4o,1V1_4p,1V1`@@  8 @@@A43L@@ @@@ @@@@@4},1V1Z4~,1V1n@@@@4 Q@@Aг%array4,1V1i
@г%bytes4,1V1c4,1V1h@@  0 44444444@zB)  8 @@@A0@@U@U@@@@@ @@@@A
@@@* @@"@@  0 44444444@@A#"@&create4-1o1w4-1o1}@б@г4#int4-1o14-1o1@@	@@ @  0 44444444@'OI@A@@гS!t4-1o14-1o1@@	@@ @@@@@ @@@@4-1o1s@@4 R@
@@&length4.114.11@б@гt!t4.114.11@@	@@ @  0 44444444@1F@A@@г4 #int4.114.11@@	@@ @@@@@ @@@@4.11@@5 S@
@@#get5/115	/11@б@г!t5/115/11@@	@@ @  0 55555555@1F@A@@б@г4#int5$/115%/11@@	@@ @@@г4$char51/1152/11@@	@@ @@@@@ @!@@@'@ @$*@@@5?/11@@5V T@@@*#set5J0115K011@б@г栐!t5U0115V011@@	@@ @  0 5W5V5V5W5W5W5W5W@CX@A@@б@г56#int5f0115g011@@	@@ @@@б@г5A$char5u0115v011@@	@@ @ @@г51$unit50115011@@	@@ @-@@@@ @0@@@%@ @3(@@@9@ @6<@@@5011@@5 U@@@<$blit51115111@б@г:!t51115111@@	@@ @  0 55555555@Uj@A@@б@г5#int51115112 @@	@@ @@@б@гZ!t51125112@@	@@ @ @@б@г5#int5112	5112@@	@@ @/@@б@г5#int51125112@@	@@ @>@@г5$unit51125112@@	@@ @K@@@@ @N@@@%@ @Q(@@@7@ @T:@@@I@ @WL@@@]@ @Z`@@@6111@@6" V@@@`+blit_string6222$6222/@б@г5預&string6!22226"2228@@	@@ @  0 6#6"6"6#6#6#6#6#@y@A@@б@г6#int62222<63222?@@	@@ @@@б@гҠ!t6A222C6B222D@@	@@ @ @@б@г6 #int6P222H6Q222K@@	@@ @/@@б@г6/#int6_222O6`222R@@	@@ @>@@г6$unit6l222V6m222Z@@	@@ @K@@@@ @N@@@%@ @Q(@@@7@ @T:@@@I@ @WL@@@]@ @Z`@@@6222 @@6 W@@@`&output 632[2c632[2i@б@г5c+out_channel632[2l632[2w@@	@@ @  0 66666666@y@A@@б@г;!t632[2{632[2|@@	@@ @  @@б@г6#int632[2632[2@@	@@ @  @@б@г6#int632[2632[2@@	@@ @ /@@г6$unit632[2632[2@@	@@ @ <@@@@ @ ?@@@%@ @ B(@@@7@ @ E:@@@K@ @ HN@@@632[2_@@7  X@@@N0input_bytes_intoà64226422@б@г!t64227 422@@	@@ @   0 77 7 77777@g|@A@@б@г5*in_channel74227422@@	@@ @ 	@@б@г6#int74227 422@@	@@ @ 
 @@г6۠$unit7,4227-422@@	@@ @ -@@@@ @ 0@@@%@ @ 
3(@@@9@ @ 6<@@@7=422@@7T Y@@@<+input_bytesĠ7H5227I522@б@г6*in_channel7S5227T522@@	@@ @   0 7U7T7T7U7U7U7U7U@Uj@A@@б@г74#int7d5227e522@@	@@ @ @@г!t7q5227r522@@	@@ @ @@@@ @ !@@@'@ @ $*@@@7522@@7 Z@@@*@A@@@M@F@@~@@Y@R@@  0 77777777@?T@A  0 77777777@@A7+1P1R7622@@@7*1<1<@@-edit_distanceƠ78337833@б@г7{&string78337833@@	@@ @   0 77777777@'^@#@7 [@A
	@@б@г7&string78337833%@@	@@ @ @@б@г7#int7833)7833,@@	@@ @ "@@г7\&option783347833:@г7#int7833078333@@	@@ @ 9@@@@@ @ >@@@"@ @ A%@@@4@ @ D7@@@J@ @ GM@@@8833 @5
   [edit_distance a b cutoff] computes the edit distance between
    strings [a] and [b]. To help efficiency, it uses a cutoff: if the
    distance [d] is smaller than [cutoff], it returns [Some d], else
    [None].

    The distance algorithm currently used is Damerau-Levenshtein: it
    computes the number of insertion, deletion, substitution of
    letters, or swapping of adjacent letters to go from one word to the
    other. The particular algorithm may change in the future.
893;3;8B5 5"@@@@@@@8& \@/@Z*spellcheckǠ8D5$5(8D5$52@б@г7$list8%D5$5<8&D5$5@@г7&string8/D5$5580D5$5;@@	@@ @   0 8180808181818181@}6@A@@@	@@ @ 
@@б@г8
&string8ED5$5D8FD5$5J@@	@@ @  @@г7預$list8RD5$5U8SD5$5Y@г8$&string8\D5$5N8]D5$5T@@	@@ @ !-@@@@@ @ #2@@@"@ @ $5%@@@5@ @ %8>@@@8oD5$5$@6	 [spellcheck env name] takes a list of names [env] that exist in
    the current environment and an erroneous [name], and returns a
    list of suggestions taken from [env], that are close enough to
    [name] that it may be a typo for one of them. 8{E5Z5Z8|H6$6X@@@@@@@8 ]@,@K,did_you_meanȠ8J6Z6^8J6Z6j@б@г7]&Format)formatter8J6Z6m8J6Z6}@@@@ @ &  0 88888888@g/@A@@б@б@г8W$unit8J6Z68J6Z6@@	@@ @ '@@г8L$list8J6Z68J6Z6@г8&string8J6Z68J6Z6@@	@@ @ (*@@@@@ @ */@@@"@ @ +2%@@г8$unit8J6Z68J6Z6@@	@@ @ ,?@@@@ @ -B8J6Z6	@@@I@ @ .FL@@@8J6Z6Z@6z
  = [did_you_mean ppf get_choices] hints that the user may have meant
    one of the option returned by calling [get_choices]. It does nothing
    if the returned list is empty.

    The [unit -> ...] thunking is meant to delay any potentially-slow
    computation (typically computing edit-distance with many things
    from the current environment) to when the hint message is to be
    printed. You should print an understandable error message before
    calling [did_you_mean], so that users get a clear notification of
    the failure even if producing the hint is slow.
8K668U88@@@@@@@9 ^@@Y&cut_atɠ8W888W88@б@г8Π&string9W889W88@@	@@ @ /  0 99999999@r,@A@@б@г8㠐$char9W889W88@@	@@ @ 0@@Вг8&string9'W899(W89@@	@@ @ 1!@@г8&string95W8996W89@@	@@ @ 2/@@@@ @ 34
@@@)@ @ 47,
@@@=@ @ 5:@@@@9HW88@6ߐ
  z [String.cut_at s c] returns a pair containing the sub-string before
   the first occurrence of [c] in [s], and the sub-string after the
   first occurrence of [c] in [s].
   [let (before, after) = String.cut_at s c in
    before ^ String.make 1 c ^ after] is the identity if [s] contains [c].

   Raise [Not_found] if the character does not appear in the string
   @since 4.01
9TX999U`::@@@@@@@9l _@"@M%ColorU9bc::9cc::@@БA  ( %colorV9pd::9qd::@@  8 @@%Blackː@@9ze::9{e::@@9 a#Red̐@@9f::9f::@@9 b%Green͐@@9g::9g::@@9 c&Yellowΐ@@9h::9h::@@9 d$Blueϐ@@9i::9i:;@@9 e'MagentaА@@9j;;9j;;@@9 f$Cyanѐ@@9k;;9k;;@@9 g%WhiteҐ@@9l;;!9l;;(@@9 h@@A@@@@@9d::@@A@9 `@LL9e::J@@@M@II9f::G@@@J@FF9g::D@@@G@CC9h::A@@@D@@@9i::>@@@A@==9j;;
;@@@>@::9k;;8@@@;@779l;;#5@@@8@@A@4@@  0 99999999@@A69@A  ( %styleW9o;/;69o;/;;@@  8 @@"FGԐ@@ @ =@@:p;>;B:p;>;O@@:# j"BGՐ@@ @ >@@:q;a;e:q;a;r@@:1 k$Bold֐@@:"r;;:#r;;@@:: l%Resetא@@:+s;;:,s;;@@:C m@@A@@@@@:/o;/;1@@@@:F i@22:6p;>;D:7p;>;F@г4%color:@p;>;J5@@;  0 :>:=:=:>:>:>:>:>@SL  8 @@@A@@@@@@@@@A:@@@@<@88:Jq;a;g:Kq;a;i@г:%color:Tq;a;m;@@A<@@@@>@:::Zr;;8@@@;@77:`s;;5@@@8@@A@4@@  0 :_:^:^:_:_:_:_:_@ @A58@98&Format$stag:pu;;:qu;;@@%StyleX:xu;;:yu;;@    @:@@ @ I@@ @ K@@A:u;;@@: nг$list:u;;@г%style:u;;:u;;@@  0 ::::::::@[@A@@@"@@@@@@A:@:u;;@/ansi_of_style_l٠:w;;:w;;@б@г:L$list:w;;:w;;@гà%style:w;;:w;;@@	@@ @ N  0 ::::::::@)RL@A@@@	@@ @ P
@@г:&string:w;;:w;;@@	@@ @ Q@@@@ @ R@@@:w;;@@: o@
@@A  ( &stylesY:z<&<-:z<&<3@@  8 @@%error@:@@ @ S@@ @ U:{<8<<:{<8<N@@; q'warning@:@@ @ X@@ @ Z;
|<O<S;|<O<g@@;% r#loc@:#@@ @ ]@@ @ _;}<h<l;}<h<|@@;6 s@@A@@@@@;"z<&<(;#~<}<@@@@;: p@88.;*{<8<A@@Ш@г;$list;3{<8<I;4{<8<M@г@%style;<{<8<C;={<8<H@@H  0 ;;;:;:;;;;;;;;;;@|e[  8 @@@A@@@@@!@@@@A@@@Q@@T@[@ V@K@GG=;J|<O<Z@@Ш@гJ$list;S|<O<b;T|<O<f@гO%style;\|<O<\;]|<O<a@@W @@@\!@@_@[@ [$@V@RRH;f}<h<o@@Ш@гU$list;o}<h<w;p}<h<{@гZ%style;x}<h<q;y}<h<v@@b<@@@g=@@j@[@ `@@a@@A@]@@  0 ;{;z;z;{;{;{;{;{@?@A^]@.default_stylesޠ;<<;<<@г&styles;<<;<<@@	@@ @ w  0 ;;;;;;;;@X@A@@@;<<
@@; t@@@*get_stylesߠ;<<;<<@б@г;`$unit;<<;<<@@	@@ @ x  0 ;;;;;;;;@!4@A@@г֠&styles;<<;<<@@	@@ @ y@@@@ @ z@@@;<<@@; u@
@@*set_styles;<<;<<@б@г&styles;<<;<<@@	@@ @ {  0 ;;;;;;;;@1F@A@@г;$unit;<<;<<@@	@@ @ |@@@@ @ }@@@;<<@@< v@
@@A  ( 'settingZ<<<<<<@@  8 @@$Auto@@<<<<<<@@<) x&Always@@<<<<<= @@<2 y%Never@@<#<=<$<=@@<; z@@A@@@@@<'<<@@A@<> w@@@@@<3<<@@@@<9<=@@@@@A@@@  0 <8<7<7<8<8<8<8<8@VkD@A@/default_setting<F=
=<G=
=@гH'setting<O=
="<P=
=)@@	@@ @   0 <Q<P<P<Q<Q<Q<Q<Q@SM@A@@@<Y=
=
@@<p {@@@%setup<d=+=1<e=+=6@б@г;預&option<o=+=A<p=+=G@гr'setting<y=+=9<z=+=@@@	@@ @   0 <{<z<z<{<{<{<{<{@+>)@A@@@	@@ @ 
@@г<<$unit<=+=K<=+=O@@	@@ @ @@@@ @ @@@<=+=-@@< |@
@@6set_color_tag_handling<>><>>+@б@г;y&Format)formatter<>>.<>>>@@@@ @   0 <<<<<<<<@9X"@A@@г<o$unit<>>B<>>F@@	@@ @ @@@@ @ @@@<>>@@< }@
@@@d^A@A@`Z@@0@A@VA@:@@A@@N@G@@  0 <<<<<<<<@1I@A  0 <<<<<<<<@@A<c::<>>@@@<c::@@+Error_style[<>><>>@@БA  ( 'setting\=>>=	>>@@  8 @@*Contextual@@=>>=>>@@=* %Short@@=>>=>>@@=3 @@A@@@@@=>>@@A@=6 @=&>>@@@@=,>>@@@@@A@@@  0 =+=*=*=+=+=+=+=+@?@I@D=G ~@A@/default_setting=;>?=<>?@г<'setting=D>?=E>?@@	@@ @   0 =F=E=E=F=F=F=F=F@GA@A@@@=N>>
@@=e @@@@OIA@	@@  0 =R=Q=Q=R=R=R=R=R@
 @A  0 =U=T=T=U=U=U=U=U@*@A=Z>>=[??@@@=]>>@@-normalise_eol=g? ?$=h? ?1@б@г=:&string=r? ?4=s? ?:@@	@@ @   0 =t=s=s=t=t=t=t=t@J@#@= @A
	@@г=K&string=? ?>=? ?D@@	@@ @ @@@@ @ @@@=? ? @;%	 [normalise_eol s] returns a fresh copy of [s] with any '\r' characters
   removed. Intended for pre-processing text which will subsequently be printed
   on a channel which performs EOL transformations (i.e. Windows) =?E?E=?@$@@@@@@@= @@'1delete_eol_spaces=@&@*=@&@;@б@г=y&string=@&@>=@&@D@@	@@ @   0 ========@@U,@A@@г=&string=@&@H=@&@N@@	@@ @ @@@@ @ @@@=@&@&@;b	 [delete_eol_spaces s] returns a fresh copy of [s] with any end of
   line spaces removed. Intended to normalize the output of the
   toplevel for tests. =@O@O=@@@@@@@@@= @@%.pp_two_columns=@@=@A@б#sepг=&string=AA=AA@@	@@ @   0 ========@@U.@A@@б)max_linesг=Ӡ#int>AA!>AA$@@	@@ @ @@б@г<&Format)formatter>A(A*>A(A:@@@@ @ %@@б@г=$list>$A(AP>%A(AT@Вг=&string>1A(A?>2A(AE@@	@@ @ A@@г>&string>?A(AH>@A(AN@@	@@ @ O@@@@ @ T
@@@-@@ @ Y>OA(A>+@@г>$unit>WA(AX>XA(A\@@	@@ @ g@@@@ @ j@@@K@ @ mN@@k<
c@@ @ 	@ @ t>jAA@@<~@@ @ @ @ |>rAA@@	@>u@@@<
   [pp_two_columns ?sep ?max_lines ppf l] prints the lines in [l] as two
   columns separated by [sep] ("|" by default). [max_lines] can be used to
   indicate a maximum number of lines to print -- an ellipsis gets inserted at
   the middle if the input has too many lines.

   Example:

    {v pp_two_columns ~max_lines:3 Format.std_formatter [
      "abc", "hello";
      "def", "zzz";
      "a"  , "bllbl";
      "bb" , "dddddd";
    ] v}

    prints

    {v
    abc | hello
    ...
    bb  | dddddd
    v}
>A]A]>C\C^@@@@@@@> @-@4show_config_and_exit>CC>CC@б@г>G$unit>CC>CC@@	@@ @   0 >>>>>>>>@,@A@@г>V$unit>CC>CC@@	@@ @ @@@@ @ @@@>CC@<I9 configuration variables >C`C`>C`C~@@@@@@@> @@%=show_config_variable_and_exit>CC>CC@б@г>&string>CC>CC@@	@@ @   0 >>>>>>>>@>S,@A@@г>$unit>CC>CC@@	@@ @ @@@@ @ @@@>CC@@? @
@@9get_build_path_prefix_map>CC>CC@б@г>$unit?CC?CC@@	@@ @   0 ????????@1F@A@@г>&option?CD?CD"@г5Build_path_prefix_map#map5Build_path_prefix_map?#CD?$CD@@@@ @ @@@@@ @ #@@@)@ @ &,@@@?3CC@<ʐ	R Returns the map encoded in the [BUILD_PATH_PREFIX_MAP] environment
    variable. ??D#D#?@DjDz@@@@@@@?W @.@96debug_prefix_map_flags?KD|D?LD|D@б@г?$unit?VD|D?WD|D@@	@@ @   0 ?X?W?W?X?X?X?X?X@Rg,@A@@г>$list?eD|D?fD|D@г?7&string?oD|D?pD|D@@	@@ @ @@@@@ @ @@@$@ @ !'@@@?D|D|@=	 Returns the list of [--debug-prefix-map] flags to be passed to the
    assembler, built from the [BUILD_PATH_PREFIX_MAP] environment variable. ?DD?DEA@@@@@@@? @)@4(print_if?ECEG?ECEO@б@г>m&Format)formatter?ERET?EREd@@@@ @   0 ????????@Pe/@A@@б@г>#ref?EREm?EREp@г?$bool?EREh?EREl@@	@@ @ @@@@@ @  @@б@б@г>&Format)formatter?EREu?ERE@@@@ @ 4@@б@А!a @ ]@ ??ERE?ERE@@г?$unit?ERE?ERE@@	@@ @ N@@@@ @ Q@@@#@ @ T&@@б@А!a Z@ERE@ERE@@А!a&`@ERE@ERE@@@++@ @ e@@@@ @ h@EREt@@@P@ @ lW@@@r@ @ ou@@@@ECEC@=	J [print_if ppf flag fmt x] prints [x] with [fmt] on [ppf] if [b] is true. @(EE@)EE@@@@@@@@@ @ @A  ( (filepath]@5EE@6EF @@  8 @@@A@@@ @ @@@@@>EE@?EF	@@@@@V @@Aг	&string@HEF
@@  0 @F@E@E@F@F@F@F@F@2  8 @@@A"@@^@! ^@ @@@@@@@@A
@@@@  0 @R@Q@Q@R@R@R@R@R@@A@A  ( 'modname^@`F
F@aF
F@@  8 @@@A@3@@ @!@@@@@iF
F
@jF
F@@@@@ @@Aг	&string@sF
F
@@  0 @q@p@p@q@q@q@q@q@,F@  8 @@@A"@@_@!	_@!@@@@@@@@A
@@@@  0 @}@|@|@}@}@}@}@}@@A@A  ( $crcs_@F F%@F F)@@  8 @@@A@-=@@ @!@?q&Digest!t@@ @!}@@ @!@ @!@@ @!@@@@@F F @F FL@@@@@ @@Aг$list@F FH
@Вг"'modname@F F-@F F4@@*  0 @@@@@@@@@Mga<  8 @@@AC@@`@!`@!@@@@#@@@ @A
@@г2&option@F F@@F FF@г787@F F7@F F?@@?@@@D@@@M #
@@@R!@F F,9@@;@@  0 @@@@@@@@@"@A<;@A  ( &alerts`@FNFS@FNFY@@  8 @@@A;	&String#Map!t@@@ @$#@@ @$%@@@@AFNFNAFNFv@@@@A @@Aг&StdlibAFNFc
@г&stringAFNF\AFNFb@@  0 AAAAAAAA@Z2  8 @@@A9@@a@$&a@!@@@@#@@@ @A
@@@3#@@%@@  0 A#A"A"A#A#A#A#A#@@A&%@,Magic_numberaA2FyFA3FyF@@БAI
   a typical magic number is "Caml1999I011"; it is formed of an
      alphanumeric prefix, here Caml1990I, followed by a version,
      here 011. The prefix identifies the kind of the versioned data:
      here the I indicates that it is the magic number for .cmi files.

      All magic numbers have the same byte length, [magic_length], and
      this is important for users as it gives them the number of bytes
      to read to obtain the byte sequence that should be a magic
      number. Typical user code will look like:
      {[
        let ic = open_in_bin path in
        let magic =
          try really_input_string ic Magic_number.magic_length
          with End_of_file -> ... in
        match Magic_number.parse magic with
        | Error parse_error -> ...
        | Ok info -> ...
      ]}

      A given compiler version expects one specific version for each
      kind of object file, and will fail if given an unsupported
      version. Because versions grow monotonically, you can compare
      the parsed version with the expected "current version" for
      a kind, to tell whether the wrong-magic object file comes from
      the past or from the future.

      An example of code block that expects the "currently supported version"
      of a given kind of magic numbers, here [Cmxa], is as follows:
      {[
        let ic = open_in_bin path in
        begin
          try Magic_number.(expect_current Cmxa (get_info ic)) with
          | Parse_error error -> ...
          | Unexpected error -> ...
        end;
        ...
      ]}

      Parse errors distinguish inputs that are [Not_a_magic_number str],
      which are likely to come from the file being completely
      different, and [Truncated str], raised by headers that are the
      (possibly empty) prefix of a valid magic number.

      Unexpected errors correspond to valid magic numbers that are not
      the one expected, either because it corresponds to a different
      kind, or to a newer or older version.

      The helper functions [explain_parse_error] and [explain_unexpected_error]
      will generate a textual explanation of each error,
      for use in error messages.

      @since 4.11.0
  ADFFAEO+O/@@@@@@  0 ACABABACACACACAC@-^X@AA  ( 1native_obj_configbAQ
O1O8AR
O1OI@@  8 @@'flambda@A @@ @)
A^ONORA_ONOa@@Av @@A@@@@@Ab
O1O3AcObOe@>	 native object files have a format and magic number that depend
     on certain native-compiler configuration parameters. This
     configuration space is expressed by the [native_obj_config]
     type. AoOfOhApP+P8@@@@@@@@AA @AwONOY@@Ш@г!$boolAONO\AONO`@@)  0 AA~A~AAAAA@=7  8 @@@A@@@@@$!@@@A@@/@d@)@+@@A@'$@B'&@1native_obj_configAP:P@AP:PQ@гI1native_obj_configAP:PTAP:Pe@@	@@ @)  0 AAAAAAAA@ZTN@A@@@AP:P<
@?;	I the native object file configuration of the active/configured compiler. APfPhAPfP@@@@@@@A @@A  ( 'versioncAPPAPP@@  8 @@@AA@@ @)@@@@APPAPP@@A@A @@Aг	#intAPP
@@  0 AAAAAAAA@4G2  8 @@@A"@@d@)d@)@@@@@@@@A
@@@@  0 AAAAAAAA@@A@A  ( $kinddAPPAPP@@  8 @@$Exec@@APPAPP@@B
 #Cmi@@APPAPP@@B #Cmo@@BPPBPP@@B #Cma@@B
PPBPP@@B% #Cmx@@ @)@@BPQBPQ@@B3 $Cmxa@@ @) @@B)PQB*PQ7@@BA $Cmxs@@B2Q8Q<B3Q8QB@@BJ #Cmt@@B;QCQGB<QCQL@@BS (Ast_impl@@BDQCQMBEQCQW@@B\ (Ast_intf@@BMQCQXBNQCQb@@Be @@A@@@@@BQPP@@@@Bh @hhBXPPf@@@i@eeB^PPc@@@f@bbBdPP`@@@c@__BjPP]@@@`@\\BpPQBqPQ@г^1native_obj_configBzPQ
_@@e  0 BxBwBwBxBxBxBxBx@  8 @@@A@@@@@/@@@-@Ad@@@@f@bbBPQBPQ"@гd1native_obj_configBPQ&e@@kf@@@@h@ddBQ8Q>b@@@e@aaBQCQI_@@@b@^^BQCQO\@@@_@[[BQCQZY@@@\@@A@X@@  0 BBBBBBBB@,@AY\@A  ( $infoeB!QdQkB!QdQo@@  8 @@$kind @@@ @)+B"QtQxB"QtQ@@B 'version@@@ @).B#QQB#QQ@@d
    Note: some versions of the compiler use the same [version] suffix
        for all kinds, but others use different versions counters for different
        kinds. We may only assume that versions are growing monotonically
        (not necessarily always by one) between compiler versions. B$QQB'R~R@@@@@@@B @@A@@@@@B!QdQfB(RR@@@@B @**%B"QtQ|@@Ш@г-$kindB"QtQ~B"QtQ@@5  0 BBBBBBBB@v	D  8 @@@A@@@@@@@@@A@@<@g@),@8@44/B#QQ@@Ш@г7'versionC#QQC#QQ@@?@@B@g@)/@>;@A@-@@  0 CCCCCCCC@@A.-@A  ( #rawfC*RRC*RR@@  8 @@@AB@@ @)<@@@@C*RRC*RR@@	^ the type of raw magic numbers,
      such as "Caml1999A027" for the .cma files of OCaml 4.10 C*+RRC+,SSB@@@@@@@@@CB @@Aг&stringC4*RR@@  0 C2C1C1C2C2C2C2C2@F(  8 @@@A/@@g@)=g@);@@@@$!@@@A
#@@%"@  0 C>C=C=C>C>C>C>C>@@A&%@CU; {3 Parsing magic numbers} CP.SDSFCQ.SDSf@@@@@@  0 COCNCNCOCOCOCOCO@D>@AA  ( +parse_errorgC]0ShSoC^0ShSz@@  8 @@)TruncatedC6@@ @)D@@Cl1S}SCm1S}S@@C 2Not_a_magic_numberCD@@ @)E@@Cz2SSC{2SS@@C @@A@@@@@C~0ShSj@@@@C @  C1S}SC1S}S@г"&stringC1S}S#@@)  0 CCCCCCCC@?9  8 @@@A@@@@@@@@@A'@@@@)@%%C2SSC2SS@г'&stringC2SS(@@.)@@@@+@@A@'@@R'*@3explain_parse_errorC4SSC4SS@б@гC2&optionC4SSC4SS@гڠ$kindC4SSC4SS@@	@@ @)P  0 CCCCCCCC@vpj@A@@@	@@ @)R
@@б@г{+parse_errorC4SSC4SS@@	@@ @)S@@гC&stringC4SSC4SS@@	@@ @)T#@@@@ @)U&@@@&@ @)V)/@@@C4SS@A	 Produces an explanation for a parse error. If no kind is provided,
      we use an unspecific formulation suggesting that any compiler-produced
      object file would have been satisfying. C5SSD 7TT@@@@@@@D @@<%parseD9TTD9TT@б@г#rawD9TTD9TT@@	@@ @)W  0 DDDDDDDD@Ut,@A@@гB&resultD%9TTD&9TT@г|$infoD/9TTD09TT@@	@@ @)X@@гࠐ+parse_errorD=9TTD>9TT@@	@@ @)Y'@@@%@@ @)\-DI9TT$@@@4	@ @)]17'@@@DO9TT*@A搠; Parses a raw magic number D[:TTD\:TU@@@@@@@Ds @9@D)read_infoDg<UUDh<UU'@б@гC<*in_channelDr<UU*Ds<UU4@@	@@ @)^  0 DtDsDsDtDtDtDtDt@]r,@A@@гCK&resultD<UULD<UUR@гؠ$infoD<UU9D<UU=@@	@@ @)_@@г<+parse_errorD<UU?D<UUJ@@	@@ @)`'@@@%@@ @)c-D<UU8$@@@4	@ @)d17'@@@D<UU*@BB
   Read a raw magic number from an input channel.

      If the data read [str] is not a valid magic number, it can be
      recovered from the [Truncated str | Not_a_magic_number str]
      payload of the [Error parse_error] case.

      If parsing succeeds with an [Ok info] result, we know that
      exactly [magic_length] bytes have been consumed from the
      input_channel.

      If you also wish to enforce that the magic number
      is at the current version, see {!read_current_info} below.
   D=USUUDIWNWS@@@@@@@D @9@D,magic_length	DKWUW[DKWUWg@гD#intDKWUWjDKWUWm@@	@@ @)e  0 DDDDDDDD@[p*@A@@@DKWUWW
@Bm	1 all magic numbers take the same number of bytes DLWnWpDLWnW@@@@@@@D @@D	- {3 Checking that magic numbers are current} DOWWDOWW@@@@@@  0 DDDDDDDD@%8#@AA  ( *unexpected
hE QWWEQWW@А!a @)g  0 EEEEEEEE@  8 @ @)f@A@A@G@B@@@EQWWEQWX@@@@E+ @AEQWWEQWW@@>@  8 @A(expected@j@)hE#QWWE$QWX@@E; &actual@%j@)lE-QWXE.QWX@@EE @@A@Y@@@@@ @@@@E7QWX @@Ш@А!a3E>QWXE?QWX@@"@j@)i8@ @EFQWX
@@Ш@А!a"BEMQWX @@&@j@)mF@$@@A@>@@[>=@A  ( 0unexpected_error
iEZRXXE[RXX,@@  8 @@$Kindk@@ @)x@@ @)z@@EnSX/X3EoSX/XL@@E 'Version@@ @){@@ @)|@@ @)~@@ETXMXQETXMXw@@E @@A@@@@@ERXX@@@@E @//ESX/X5ESX/X9@г1*unexpectedESX/XB-@г5$kindESX/X=ESX/XA@@=  0 EEEEEEEE@R  8 @@@A@@@@@ @@@@A@@@F<@@@@>@::ETXMXSETXMXZ@г<$kindETXMX^ETXMXb@@D@@гA*unexpectedETXMXm=@гE'versionETXMXeETXMXl@@M(@@@R)H@@@@J@@A@F@@  0 EEEEEEEE@)@AGJ@-check_currentEVXyXEVXyX@б@г$kindEVXyXEVXyX@@	@@ @)  0 EEEEEEEE@D@A@@б@гB$infoEVXyXEVXyX@@	@@ @)@@гD&resultFVXyXFVXyX@гE$unitFVXyXF
VXyX@@	@@ @)(@@г0unexpected_errorFVXyXFVXyX@@	@@ @)6@@@%@@ @)<F&VXyX$@@@2	@ @)@5'@@@F@ @)CI*@@@F/VXyX{-@CƐ	x [check_current kind info] checks that the provided magic [info]
      is the current version of [kind]'s magic header. F;WXXF<XYY>@@@@@@@FS @<@V8explain_unexpected_errorFGZY@YFFHZY@Y^@б@г0unexpected_errorFRZY@YaFSZY@Yq@@	@@ @)  0 FTFSFSFTFTFTFTFT@o,@A@@гF)&stringFaZY@YuFbZY@Y{@@	@@ @)@@@@ @)@@@FlZY@YB@D	4 Provides an explanation of the [unexpected_error]. Fx[Y|Y~Fy[Y|Y@@@@@@@F @@%A  ( %errorjF]YYF]YY@@  8 @@+Parse_error9@@ @)@@F^YYF^YY@@F 0Unexpected_errorJ@@ @)@@F_YYF_YZ@@F @@A@@@@@F]YY@@@@F @  F^YYF^YY@г"+parse_errorF^YY#@@)  0 FFFFFFFF@cxQ:  8 @@@A@@@@@@@@@A(@@@@*@&&F_YYF_YY@г(0unexpected_errorF_YZ)@@/*@@@@,@@A@(@@  0 FFFFFFFF@@A),@1read_current_infoFaZZFaZZ,@б-expected_kindгF^&optionFbZ/ZFFbZ/ZL@г$kindFbZ/ZAFbZ/ZE@@	@@ @)  0 FFFFFFFF@;tn@A@@@	@@ @)
@@б@гE*in_channelGbZ/ZPGbZ/ZZ@@	@@ @)@@гE&resultGbZ/ZlGbZ/Zr@гh$infoGbZ/Z_GbZ/Zc@@	@@ @)-@@г%errorG)bZ/ZeG*bZ/Zj@@	@@ @);@@@%@@ @)AG5bZ/Z^$@@@2	@ @)E5'@@`E@ @)HG<bZ/Z3+@@@G?aZZ.@D֐	 Read a magic number as [read_info],
      and check that it is the current version as its kind.
      If the [expected_kind] argument is [None], any kind is accepted. GKcZsZuGLeZ["@@@@@@@Gc @=@\Ga	" {3 Information on magic numbers} G\h[%['G]h[%[N@@@@@@  0 G[GZGZG[G[G[G[G[@l#@A.string_of_kindGhj[P[VGij[P[d@б@г$kindGsj[P[gGtj[P[k@@	@@ @)@@гGH&stringGj[P[oGj[P[u@@	@@ @)'@@@@ @)*@@@Gj[P[R@E"	Z a user-printable string for a kind, eg. "exec" or "cmo", to use
      in error messages. Gk[v[xGl[[@@@@@@@G @@=2human_name_of_kindGn[[Gn[[@б@гƠ$kindGn[[Gn[[@@	@@ @)  0 GGGGGGGG@VQ,@A@@гG&stringGn[[Gn[\@@	@@ @)@@@@ @)@@@Gn[[@E_	u a user-meaningful name for a kind, eg. "executable file" or
      "bytecode object file", to use in error messages. Go\\Gp\E\@@@@@@@G @@%+current_rawGr\\Gr\\@б@г$kindGr\\Gr\\@@	@@ @)  0 GGGGGGGG@>S,@A@@г栐#rawGr\\Gr\\@@	@@ @)@@@@ @)@@@Hr\\@E	' the current magic number of each kind Hs\\Hs\\@@@@@@@H) @@%/current_versionHu\\Hu\\@б@г@$kindH(u\\H)u\\@@	@@ @)  0 H*H)H)H*H*H*H*H*@>S,@A@@гz'versionH7u\\H8u\\@@	@@ @)@@@@ @)@@@HBu\\@Eِ	" the current version of each kind HNv\\HOv\]"@@@@@@@Hf @@%Hd	G {3 Raw representations}

      Mainly for internal usage and testing. H_y]%]'H`{]D]s@@@@@@  0 H^H]H]H^H^H^H^H^@5J#@AA  ( (raw_kindkHl}]u]|Hm}]u]@@  8 @@@AH?@@ @)@@@@Hu}]u]wHv}]u]@F
	O the type of raw magic numbers kinds,
      such as "Caml1999A" for .cma files H~]]H]]@@@@@@@@@H @@Aг&stringH}]u]@@  0 HHHHHHHH@-'  8 @@@A.@@l@)l@)@@@@# @@@A"@@$!@7$#@*parse_kindH]]H]]@б@г@(raw_kindH]]H]^@@	@@ @)  0 HHHHHHHH@QKE@A@@гH5&optionH]^
H]^@гݠ$kindH]^H]^	@@	@@ @)@@@@@ @)@@@$@ @)!'@@@H]]@Fl> parse a raw kind into a kind H^^H^^6@@@@@@@H @)@4(raw_kindH^8^>H^8^F@б@г$kindH^8^IH^8^M@@	@@ @)  0 HHHHHHHH@Mb,@A@@г(raw_kindI^8^QI^8^Y@@	@@ @)@@@@ @)@@@I^8^:@F
  ! the current raw representation of a kind.

      In some cases the raw representation of a kind has changed
      over compiler versions, so other files of the same kind
      may have different raw kinds.
      Note that all currently known cases are parsed correctly by [parse_kind].
  I^Z^\I_~_@@@@@@@I6 @@%#rawI*__I+__@б@г$infoI5__I6__@@	@@ @)  0 I7I6I6I7I7I7I7I7@>S,@A@@г0#rawID__IE__@@	@@ @)@@@@ @)@@@IO__@F搠
   A valid raw representation of the magic number.

      Due to past and future changes in the string representation of
      magic numbers, we cannot guarantee that the raw strings returned
      for past and future versions actually match the expectations of
      those compilers. The representation is accurate for current
      versions, and it is correctly parsed back into the desired
      version by the parsing functions above.
   I[__I\aVa[@@@@@@@Is @@%Iq"/*Ila]a_Ima]af@@@@@@  0 IkIjIjIkIkIkIkIk@5J#@A)all_kindsIxahanIyahaw@гI$listIahaIaha@г$kindIahazIaha~@@	@@ @)"@@@@@ @)'@@@Iahaj@@I @@@-@PJA@@A@A@A@A@PJA@@`@L@@A@_YA@@vO@:4A@@[6@"@@@_YA@,@@@[9@@  0 IIIIIIII@b];@A7  0 IIIIIIII@@AIFyFIaa@@@IFyFy@@@HH@HxH@HHB@HGz@GdG@GF@FF5@F.E@EEl@EeE@ED@DDA@DmD@D@@@@`@Y@
@@M@F@@E@>@@D@0	@@@I@B	@@@@@@h@a@	@@z@@u@n/@(@@6@/@@}@@9@%@\@H@@
@@
N@@@@~@j@@`@Y@

@

9@
$
A@		A@		A@	q	kA@	0@@Jt @@@  0 J\J[J[J\J\J\J\J\@		4@@A@	H************************************************************************JeA@@JfA@ L@	H                                                                        JkB M MJlB M @	H                                 OCaml                                  JqC  JrC  @	H                                                                        JwD  JxD 3@	H             Xavier Leroy, projet Cristal, INRIA Rocquencourt           J}E44J~E4@	H                                                                        JFJF@	H   Copyright 1996 Institut National de Recherche en Informatique et     JGJG@	H     en Automatique.                                                    JHJHg@	H                                                                        JIhhJIh@	H   All rights reserved.  This file is distributed under the terms of    JJJJ@	H   the GNU Lesser General Public License version 2.1, with the          JKJKN@	H   special exception on linking described in the file LICENSE.          JLOOJLO@	H                                                                        JMJM@	H************************************************************************JNJN5@	* Miscellaneous useful types and functions

  {b Warning:} this module is unstable and part of
  {{!Compiler_libs}compiler-libs}.

J
  * [try_finally work ~always ~exceptionally] is designed to run code
    in [work] that may fail with an exception, and has two kind of
    cleanup routines: [always], that must be run after any execution
    of the function (typically, freeing system resources), and
    [exceptionally], that should be run only if [work] or [always]
    failed with an exception (typically, undoing user-visible state
    changes that would only make sense if the function completes
    correctly). For example:

    {[
      let objfile = outputprefix ^ ".cmo" in
      let oc = open_out_bin objfile in
      Misc.try_finally
        (fun () ->
           bytecode
           ++ Timings.(accumulate_time (Generate sourcefile))
               (Emitcode.to_file oc modulename objfile);
           Warnings.check_fatal ())
        ~always:(fun () -> close_out oc)
        ~exceptionally:(fun _exn -> remove_file objfile);
    ]}

    If [exceptionally] fail with an exception, it is propagated as
    usual.

    If [always] or [exceptionally] use exceptions internally for
    control-flow but do not raise, then [try_finally] is careful to
    preserve any exception backtrace coming from [work] or [always]
    for easier debugging.
HE	* [reraise_preserving_backtrace e f] is (f (); raise e) except that the
    current backtrace is preserved, even if [f] uses exceptions internally. G蠠	8 [map_end f l t] is [map f l @ t], just more efficient. J DwJ Dw@	A Like [List.map], with guaranteed left-to-right evaluation order J FJ F>@	 Same as [List.for_all] but for a binary predicate.
           In addition, this [for_all2] never fails: given two lists
           with different lengths, it returns false. J H~J J

8@	[ [replicate_list elem n] is the list with [n] elements
           all identical to [elem]. J L
b
jJ M

@	a [list_remove x l] returns a copy of [l] with the first
           element equal to [x] removed. J O

J P6a@	C Return the last element and the other elements of the given list. J RJ R@	* [protect_refs l f] temporarily sets [r] to [v] for each [R (r, v)] in [l]
    while executing [f]. The previous contents of the references is restored
    even if [f] raises an exception, without altering the exception backtrace.
E 	* The lexicographic order supported by the provided order.
        There is no constraint on the relative lengths of the lists. D	* Returns [true] if and only if the given lists have the same length and
        content with respect to the given equality function. C	* If all elements of the given list are [Some _] then [Some xs]
        is returned with the [xs] being the contents of those [Some]s, with
        order preserved.  Otherwise return [None]. C	* [let r1, r2 = map2_prefix f l1 l2]
        If [l1] is of length n and [l2 = h2 @ t2] with h2 of length n,
        r1 is [List.map2 f l1 h1] and r2 is t2. Ba	* [split_at n l] returns the pair [before, after] where [before] is
        the [n] first elements of [l] and [after] the remaining ones.
        If [l] has less than [n] elements, raises Invalid_argument. A⠠	* Returns [true] if and only if the given list, with respect to the given
        equality function on list members, is a prefix of the list [of_]. AS	* Returns the longest list that, with respect to the provided equality
        function, is a prefix of both of the given lists.  The input lists,
        each with such longest common prefix removed, are also returned. @	 Same as [Array.exists], but for a two-argument predicate. Raise
       Invalid_argument if the two arrays are determined to have
       different lengths. J swJ @	* Same as {!Array.for_all}, but the
        function is applied with the index of the element as first argument,
        and the element itself as second argument. >	) Search a file in a list of directories. K K 	@	2 Search a relative file in a list of directories. K
 @HK @~@	 Same, but search also for uncapitalized name, i.e.
           if name is Foo.ml, allow /path/Foo.ml and /path/foo.ml
           to match. K K 7N@	; Delete the given file if it exists. Never raise an error. K owK o@	 [expand_directory alt file] eventually expands a [+] at the
           beginning of file into [alt] (an alternate root directory) K K  /w@
   [split_path_contents ?sep s] interprets [s] as the value of a "PATH"-like
   variable and returns the corresponding list of directories. [s] is split
   using the platform-specific delimiter, or [~sep] if it is passed.

   Returns the empty list if [s] is empty. K% K&   @	W Create a hashtable of the given size and fills it with the
           given bindings. K+ !!
K, !K!h@	 [copy_file ic oc] reads the contents of file [ic] and copies
           them to [oc]. It stops when encountering EOF on [ic]. K1 !!K2 !"&@	 [copy_file_chunk ic oc n] reads [n] bytes from [ic] and copies
           them to [oc]. It raises [End_of_file] when encountering
           EOF on [ic]. K7 "e"mK8 "#@	 [string_of_file ic] reads the contents of file [ic] and copies
           them to a string. It stops when encountering EOF on [ic]. K= #6#>K> ##@
  t Produce output in temporary file, then rename it
           (as atomically as possible) to the desired output file name.
           [output_to_file_via_temporary filename fn] opens a temporary file
           which is passed to [fn] (name + output channel).  When [fn] returns,
           the channel is closed and the temporary file is renamed to
           [filename]. KC $6$>KD %%@	* Open the given [filename] for writing (in binary mode), pass the
    [out_channel] to the given function, then close the channel. If the function
    raises an exception then [filename] will be removed. r	O [log2 n] returns [s] such that [n = 1 lsl s]
           if [n] is a power of 2KL &&KM ','O@	P [align n a] rounds [n] upwards to a multiple of [a]
           (a power of 2). KR 'm'uKS ''@	f [no_overflow_add n1 n2] returns [true] if the computation of
           [n1 + n2] does not overflow. KX ''KY (:(d@	f [no_overflow_sub n1 n2] returns [true] if the computation of
           [n1 - n2] does not overflow. K^ ((K_ ((@	f [no_overflow_mul n1 n2] returns [true] if the computation of
           [n1 * n2] does not overflow. Kd )()0Ke )p)@	d [no_overflow_lsl n k] returns [true] if the computation of
           [n lsl k] does not overflow. Kj ))Kk *	*3@
   Return the given file name without its extensions. The extensions
           is the longest suffix starting with a period and not including
           a directory separator, [.xyz.uvw] for instance.

           Return the given name if it does not contain an extension. Kp*+Kq+,@	 [search_substring pat str start] returns the position of the first
           occurrence of string [pat] in string [str].  Search starts
           at offset [start] in [str].  Raise [Not_found] if [pat]
           does not occur. Kv,Q,YKw-(-E@	 [replace_substring ~before ~after str] replaces all
           occurrences of [before] with [after] in [str] and returns
           the resulting string. K|--K}..7@	u [rev_split_words s] splits [s] in blank-separated words, and returns
           the list of words in reverse order. K.d.lK..@	q [get_ref lr] returns the content of the list reference [lr] and reset
           its content to the empty list. K//K/\/@	~ [set_or_ignore f opt x] sets [opt] to [f x] if it returns [Some _],
           or leaves it unmodified if it returns [None]. K//K00Y@
  * [edit_distance a b cutoff] computes the edit distance between
    strings [a] and [b]. To help efficiency, it uses a cutoff: if the
    distance [d] is smaller than [cutoff], it returns [Some d], else
    [None].

    The distance algorithm currently used is Damerau-Levenshtein: it
    computes the number of insertion, deletion, substitution of
    letters, or swapping of adjacent letters to go from one word to the
    other. The particular algorithm may change in the future.
	* [spellcheck env name] takes a list of names [env] that exist in
    the current environment and an erroneous [name], and returns a
    list of suggestions taken from [env], that are close enough to
    [name] that it may be a typo for one of them. 
  >* [did_you_mean ppf get_choices] hints that the user may have meant
    one of the option returned by calling [get_choices]. It does nothing
    if the returned list is empty.

    The [unit -> ...] thunking is meant to delay any potentially-slow
    computation (typically computing edit-distance with many things
    from the current environment) to when the hint message is to be
    printed. You should print an understandable error message before
    calling [did_you_mean], so that users get a clear notification of
    the failure even if producing the hint is slow.

  {* [String.cut_at s c] returns a pair containing the sub-string before
   the first occurrence of [c] in [s], and the sub-string after the
   first occurrence of [c] in [s].
   [let (before, after) = String.cut_at s c in
    before ^ String.make 1 c ^ after] is the identity if [s] contains [c].

   Raise [Not_found] if the character does not appear in the string
   @since 4.01
I0 Color handling Kb::Kb::@, foreground Kp;>;PKp;>;`@, background Kq;a;sKq;a;@	* ANSI escape sequence for the given style Kx;;Kx;<$@	 [setup opt] will enable or disable color handling on standard formatters
     according to the value of color setting [opt].
     Only the first call to this function has an effect. K=P=RK=>
@	> adds functions to support color tags to the given formatter. K>G>IK>G>@= See the -error-style option K>>K>>@	* [normalise_eol s] returns a fresh copy of [s] with any '\r' characters
   removed. Intended for pre-processing text which will subsequently be printed
   on a channel which performs EOL transformations (i.e. Windows) 0	* [delete_eol_spaces s] returns a fresh copy of [s] with any end of
   line spaces removed. Intended to normalize the output of the
   toplevel for tests. 
  * [pp_two_columns ?sep ?max_lines ppf l] prints the lines in [l] as two
   columns separated by [sep] ("|" by default). [max_lines] can be used to
   indicate a maximum number of lines to print -- an ellipsis gets inserted at
   the middle if the input has too many lines.

   Example:

    {v pp_two_columns ~max_lines:3 Format.std_formatter [
      "abc", "hello";
      "def", "zzz";
      "a"  , "bllbl";
      "bb" , "dddddd";
    ] v}

    prints

    {v
    abc | hello
    ...
    bb  | dddddd
    v}

O:* configuration variables 
	S* Returns the map encoded in the [BUILD_PATH_PREFIX_MAP] environment
    variable. 	* Returns the list of [--debug-prefix-map] flags to be passed to the
    assembler, built from the [BUILD_PATH_PREFIX_MAP] environment variable. N	K* [print_if ppf flag fmt x] prints [x] with [fmt] on [ppf] if [b] is true. 
  * a typical magic number is "Caml1999I011"; it is formed of an
      alphanumeric prefix, here Caml1990I, followed by a version,
      here 011. The prefix identifies the kind of the versioned data:
      here the I indicates that it is the magic number for .cmi files.

      All magic numbers have the same byte length, [magic_length], and
      this is important for users as it gives them the number of bytes
      to read to obtain the byte sequence that should be a magic
      number. Typical user code will look like:
      {[
        let ic = open_in_bin path in
        let magic =
          try really_input_string ic Magic_number.magic_length
          with End_of_file -> ... in
        match Magic_number.parse magic with
        | Error parse_error -> ...
        | Ok info -> ...
      ]}

      A given compiler version expects one specific version for each
      kind of object file, and will fail if given an unsupported
      version. Because versions grow monotonically, you can compare
      the parsed version with the expected "current version" for
      a kind, to tell whether the wrong-magic object file comes from
      the past or from the future.

      An example of code block that expects the "currently supported version"
      of a given kind of magic numbers, here [Cmxa], is as follows:
      {[
        let ic = open_in_bin path in
        begin
          try Magic_number.(expect_current Cmxa (get_info ic)) with
          | Parse_error error -> ...
          | Unexpected error -> ...
        end;
        ...
      ]}

      Parse errors distinguish inputs that are [Not_a_magic_number str],
      which are likely to come from the file being completely
      different, and [Truncated str], raised by headers that are the
      (possibly empty) prefix of a valid magic number.

      Unexpected errors correspond to valid magic numbers that are not
      the one expected, either because it corresponds to a different
      kind, or to a newer or older version.

      The helper functions [explain_parse_error] and [explain_unexpected_error]
      will generate a textual explanation of each error,
      for use in error messages.

      @since 4.11.0
  
	* native object files have a format and magic number that depend
     on certain native-compiler configuration parameters. This
     configuration space is expressed by the [native_obj_config]
     type. 
s	J* the native object file configuration of the active/configured compiler. 
5
  !* Note: some versions of the compiler use the same [version] suffix
        for all kinds, but others use different versions counters for different
        kinds. We may only assume that versions are growing monotonically
        (not necessarily always by one) between compiler versions. 		_* the type of raw magic numbers,
      such as "Caml1999A027" for the .cma files of OCaml 4.10 <* {3 Parsing magic numbers} 	* Produces an explanation for a parse error. If no kind is provided,
      we use an unspecific formulation suggesting that any compiler-produced
      object file would have been satisfying. <* Parses a raw magic number 
  * Read a raw magic number from an input channel.

      If the data read [str] is not a valid magic number, it can be
      recovered from the [Truncated str | Not_a_magic_number str]
      payload of the [Error parse_error] case.

      If parsing succeeds with an [Ok info] result, we know that
      exactly [magic_length] bytes have been consumed from the
      input_channel.

      If you also wish to enforce that the magic number
      is at the current version, see {!read_current_info} below.
   @	2* all magic numbers take the same number of bytes 	.* {3 Checking that magic numbers are current} 
	y* [check_current kind info] checks that the provided magic [info]
      is the current version of [kind]'s magic header. Š	5* Provides an explanation of the [unexpected_error]. 	* Read a magic number as [read_info],
      and check that it is the current version as its kind.
      If the [expected_kind] argument is [None], any kind is accepted. 	#* {3 Information on magic numbers} 	[* a user-printable string for a kind, eg. "exec" or "cmo", to use
      in error messages. u	v* a user-meaningful name for a kind, eg. "executable file" or
      "bytecode object file", to use in error messages. ;	(* the current magic number of each kind 	#* the current version of each kind Ǡ	H* {3 Raw representations}

      Mainly for internal usage and testing. 	P* the type of raw magic numbers kinds,
      such as "Caml1999A" for .cma files ?* parse a raw kind into a kind =
  "* the current raw representation of a kind.

      In some cases the raw representation of a kind has changed
      over compiler versions, so other files of the same kind
      may have different raw kinds.
      Note that all currently known cases are parsed correctly by [parse_kind].
  
  * A valid raw representation of the magic number.

      Due to past and future changes in the string representation of
      magic numbers, we cannot guarantee that the raw strings returned
      for past and future versions actually match the expectations of
      those compilers. The representation is accurate for current
      versions, and it is correctly parsed back into the desired
      version by the parsing functions above.
   ɠ#*/*@   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-cLRLS!. - @0
ˎ+kŚJj3  0 LdLcLcLdLdLdLdLd@Lb@@
I0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠL0Z+\\4:WlA?L&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8?0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]@0Z+\\4:WlA?LA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Caml1999T030 $  u* 1 @  4 'Numbers(Int_base
A0utils/numbers.mlQQ@@гР,Identifiable$Make,IdentifiableQQ@@!T,Identifiable%Thingӱ!T@@!t
@  8 @@@A!t@@ @!.@@@@6utils/identifiable.mli q q,@@@@rA@%equal@@@ @!-@@@ @!,$boolE@@ @!+@ @!*@ @!)@@/Stdlib__Hashtbl`@$hash@@@ @!(#intA@@ @!'@ @!&@-@a@'compare@)@@ @!%@.@@ @!$#intA@@ @!#@ @!"@ @!!@C@+Stdlib__MapA@&output@&Stdlib+out_channel@@ @! @J@@ @!$unitF@@ @!@ @!@ @!@_@uC@%print@&Format)formatter@@ @!@d@@ @!@@ @!@ @!@ @!@w@D@@@xs@@t@!t@@ @!@@@ @!v@@ @!@ @!@ @!@@s@q@@@ @!q@@ @!@ @!@@n@m@"!@@ @!@('@@ @!
n@@ @!@ @!@ @!
@@k@i@he@@ @!	@;:@@ @!e@@ @!@ @!@ @!@@b@a@|`_@@ @!@ON@@ @!_@@ @!@ @!@ @! @@^@ӱ#Set@@#elt@  8 @@@Ab!t@@ @ @@@@@@@KA@!t@  8 @@@A#Set$Makes!t@@ @ @@@@@@@
LA@%empty@@ @ @@+Stdlib__SetE@(is_empty@
@@ @ $boolE@@ @ @ @ @@F@#mem@A@@ @ @$@@ @ @@ @ @ @ @ @ @(@'G@#add@@@ @ @8@@ @ ;@@ @ @ @ @ @ @;@:H@)singleton@(@@ @ I@@ @ @ @ @I@HI@&remove@6@@ @ @Y@@ @ \@@ @ @ @ @ @ @\@[J@%union@g@@ @ @l@@ @ o@@ @ @ @ @ @ @o@nK@%inter@z@@ @ @@@ @ @@ @ @ @ @ @ @@L@(disjoint@@@ @ @@@ @ @@ @ @ @ @ @ @@M@$diff@@@ @ @@@ @ @@ @ @ @ @ @ @@N@'compare@@@ @ @@@ @ #intA@@ @ @ @ @ @ @@O@%equal@@@ @ @@@ @ @@ @ @ @ @ @ @@P@&subset@@@ @ @@@ @ @@ @ @ @ @ @ @@Q@$iter@@@@ @ $unitF@@ @ @ @ @@@ @ @@ @ @ @ @ @ @@R@$fold@@@@ @ @!a @ @ @ @ @ @@@ @ @@ @ @ @ @ @ @@T@'for_all@@@@ @ @@ @ @ @ @3@@ @ &@@ @ @ @ @ @ @7@6U@&exists@@&@@ @ 7@@ @ @ @ @M@@ @ @@@ @ @ @ @ @ @Q@PV@&filter@@@@@ @ Q@@ @ @ @ @g@@ @ j@@ @ @ @ @ @ @j@iW@*filter_map@@Y@@ @ &optionJb@@ @ @@ @ @ @ @@@ @ @@ @ @ @ @ @ @@X@)partition@@x@@ @ @@ @ @ @ @@@ @ @@ @ @@ @ @ @ @ @ @ @ @@Y@(cardinal@@@ @ @@ @ @ @ @@Z@(elements@@@ @ $listI@@ @ @@ @ @ @ @@[@'min_elt@@@ @ @@ @ @ @ @@\@+min_elt_opt@@@ @ o@@ @ @@ @ @ @ @@]@'max_elt@@@ @ @@ @ @ @ @@^@+max_elt_opt@@@ @ ~@@ @ }@@ @ |@ @ {@@_@&choose@@@ @ z@@ @ y@ @ x@@`@*choose_opt@(@@ @ w@@ @ v@@ @ u@ @ t@0@/a@%split@@@ @ s@@@@ @ rF@@ @ o:@@ @ pO@@ @ q@ @ n@ @ m@ @ l@O@Nb@$find@<@@ @ k@_@@ @ jD@@ @ i@ @ h@ @ g@b@ac@(find_opt@O@@ @ f@r@@ @ e[@@ @ d@@ @ c@ @ b@ @ a@z@yd@*find_first@@i@@ @ `z@@ @ _@ @ ^@@@ @ ]u@@ @ \@ @ [@ @ Z@@e@.find_first_opt @@@@ @ Y@@ @ X@ @ W@@@ @ V2@@ @ U@@ @ T@ @ S@ @ R@@f@)find_last@@@@ @ Q@@ @ P@ @ O@@@ @ N@@ @ M@ @ L@ @ K@@g@-find_last_opt@@@@ @ J@@ @ I@ @ H@@@ @ Gi@@ @ F@@ @ E@ @ D@ @ C@@h@+to_seq_from@@@ @ B@@@ @ A&Stdlib#Seq!t@@ @ @@@ @ ?@ @ >@ @ =@@j@&to_seq@@@ @ <#Seq!t@@ @ ;@@ @ :@ @ 9@@k@*to_rev_seq@'@@ @ 8/#Seq!t@@ @ 7@@ @ 6@ @ 5@2@1l@'add_seq@B#Seq!t&@@ @ 4@@ @ 3@J@@ @ 2M@@ @ 1@ @ 0@ @ /@M@Lm@&of_seq@]#Seq!tA@@ @ .@@ @ -c@@ @ ,@ @ +@c@bn@&output@+out_channel@@ @ *@u@@ @ )@@ @ (@ @ '@ @ &@y@M@%print	@6&Format)formatter@@ @ %@@@ @ $4@@ @ #@ @ "@ @ !@@N@)to_string
@@@ @  &stringO@@ @ @ @ @@O@'of_list@$listI@@ @ @@ @ @@ @ @ @ @@P@#map@@@@ @ @@ @ @ @ @@@ @ @@ @ @ @ @ @ @@Q@@@Сu@@ӱ#Map@@#key@  8 @@@A^!t@@ @ @@@@@@@TA@!t@  8 !a @ @A@A#Map$Maket!t@@ @ I@B@@@@@@UA@%empty!a @ @@ @ @
@E@(is_empty@!a @ 
@@ @ $boolE@@ @ @ @ 
@ @F@#mem@R@@ @ 	@-!a @ @@ @ @@ @ @ @ @ @ @:@G@#add@@@ @ @!a @ @L	@@ @ P
@@ @  @ @@ @@ @@U@H@&update@5@@ @@@&optionJ!a @@@ @	@@ @@ @@u@@ @y@@ @@ @@ @@ @@~@;I@)singleton@^@@ @@!a @@@ @@ @@ @@@PJ@&remove@s@@ @@!a @@@ @@@ @@ @@ @@@iK@%merge@@@@ @@W!a @@@ @@b!b @@@ @k!c @@@ @@ @@ @@ @@٠@@ @@ߠ@@ @@@ @@ @@ @@ @@@L@%union@@@@ @@!a @@
@@ @@ @@ @@ @@@@ @@	@@ @
@@ @@ @@ @@ @@@M@'compare@@!a @@@@ @@ @@ @@'@@ @@-@@ @@@ @@ @@ @@ @@6@N@%equal@@!a @@,@@ @@ @@ @@K@@ @@Q@@ @<@@ @@ @@ @@ @@Z@O@$iter@@<@@ @@!a @$unitF@@ @@ @@ @@t@@ @@@ @@ @@ @@}@:P@$fold@@_@@ @@!a @@!b @@ @@ @@ @@@@ @@@ @@ @@ @@@[Q@'for_all@@@@ @@!a @@@ @@ @@ @@
@@ @@@ @@ @@ @@@|R@&exists@@@@ @@!a @@@ @@ @@ @@נ
@@ @@@ @@ @@ @@@S@&filter@@@@ @@!a @@@ @@ @@ @@
@@ @@@ @@ @@ @@@T@*filter_map@@@@ @@!a @!b @@@ @@ @@ @@@@ @"@@ @@ @@ @@'@U@)partition@@	@@ @@!a @y @@ @~@ @}@ @|@?
@@ @{F@@ @xK@@ @z@ @w@ @v@ @u@P@
V@(cardinal@W!a @t@@ @s#@@ @r@ @q@d@!W@(bindings@k!a @o@@ @p$listIU@@ @n@ @m@@ @l@ @k@@?X@+min_binding@!a @i@@ @jm@@ @h@ @g@ @f@@VY@/min_binding_opt@!a @d@@ @eE@@ @c@ @b@@ @a@ @`@@rZ@+max_binding@!a @^@@ @_@@ @]@ @\@ @[@@[@/max_binding_opt@Ӡ!a @Y@@ @Zx@@ @X@ @W@@ @V@ @U@@\@&choose@!a @S@@ @T@@ @R@ @Q@ @P@@]@*choose_opt@!a @N@@ @O@@ @M@ @L@@ @K@ @J@@^@%split@@@ @I@'!a @E@@ @H2@@ @DԠ@@ @F=@@ @G@ @C@ @B@ @A@B@_@$find@"@@ @@@N!a @>@@ @?@ @=@ @<@W@`@(find_opt@7@@ @;@c!a @9@@ @:	@@ @8@ @7@ @6@q@.a@*find_first@@S@@ @5d@@ @4@ @3@!a @1@@ @2g@@ @0@ @/@ @.@ @-@@Pb@.find_first_opt@@u@@ @,@@ @+@ @*@!a @(@@ @)J@@ @'@ @&@@ @%@ @$@ @#@@wc@)find_last@@@@ @"@@ @!@ @ @̠!a @@@ @@@ @@ @@ @@ @@@d@-find_last_opt@@@@ @@@ @@ @@!a @@@ @@@ @@ @@@ @@ @@ @@	@e@#map@@!a @!b @@ @@
@@ @

@@ @@ @
@ @	@	@f@$mapi@@@@ @@!a @!b @@ @@ @@7
@@ @;
@@ @@ @@ @ @	@@g@&to_seq@G!a @@@ @&Stdlib#Seq!t5@@ @@ @@@ @@ @@	b@	h@*to_rev_seq@i!a @@@ @"#Seq!tT@@ @@ @@@ @@ @@	@	>i@+to_seq_from@a@@ @@!a @@@ @F#Seq!tx@@ @@ @@@ @@ @@ @@	@	bj@'add_seq@]#Seq!t@@ @!a @@ @@@ @@
@@ @Š@@ @@ @@ @@	@	k@&of_seq@#Seq!t@@ @!a @@ @@@ @@@ @@ @@	@	l@'of_list@G@@ @ݠ!a @@ @@@ @ @@ @@ @@
@
V@.disjoint_union"eq&optionJ@!a @@$boolE@@ @@ @@ @@@ @%print@	&Format)formatter@@ @@	@@ @@ @@ @@@ @@<)@@ @@B/@@ @F3@@ @@ @@ @@ @@ @@
K@
aW@+union_right@R!a @@@ @@\
@@ @`@@ @@ @@ @@
e@
{X@*union_left@l!a @@@ @@v
@@ @z@@ @@ @@ @@
@
Y@+union_merge@@!a @@@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@
@
Z@&rename@@@ @@@ @@@@ @@@ @@ @@ @@
@
[@(map_keys@@@@ @@@ @@ @@Ǡ!a @@@ @Ϡ@@ @@ @@ @@
@
\@$keys@۠!a @@@ @
#Set$Make
j!t@@ @@ @@
@]@$data@!a @@@ @T	@@ @@ @@@^@&of_set@@@@ @!a @@ @@
#Set$Make
!t@@ @@@ @@ @@ @@$@:_@7transpose_keys_and_data@+@@ @@@ @2@@ @@@ @@ @@:@P`@;transpose_keys_and_data_set@A@@ @@@ @H#Set$Make
!t@@ @@@ @@ @@W@ma@%print@@&Format)formatter@@ @@!a @@@ @@ @@ @@)&Format)formatter@@ @@|@@ @(@@ @@ @@ @@ @@@b@@@v@@ӱ#Tbl@@#key@  8 @@@A!t@@ @@@@@@@@hA@!t@  8 !a @~@A@A['Hashtbl$Make*!t@@ @}O@B@@@@@@iA@&create@@@ @|%!a @{@@ @z@ @y@@e@%clear@!a @x@@ @w$unitF@@ @v@ @u@@f@%reset@'!a @t@@ @s@@ @r@ @q@@g@$copy@;!a @o@@ @pC@@ @n@ @m@@h@#add@O!a @j@@ @l@@@ @k@
F@@ @i@ @h@ @g@ @f@ @i@&remove@k!a @e@@ @d@@@ @c_@@ @b@ @a@ @`@9@j@$find@!a @]@@ @_@5@@ @^
@ @\@ @[@N@3k@(find_opt@!a @X@@ @Z@J@@ @Y&optionJ@@ @W@ @V@ @U@j@Ol@(find_all@!a @R@@ @T@f@@ @S$listI@@ @Q@ @P@ @O@@km@'replace@Ѡ!a @L@@ @N@@@ @M@@@ @K@ @J@ @I@ @H@@n@#mem@!a @G@@ @F@@@ @E@@ @D@ @C@ @B@@o@$iter@@@@ @A@!a @=@@ @@@ @?@ @>@
@@ @<@@ @;@ @:@ @9@@p@2filter_map_inplace@@@@ @8@!a @4@@ @7@ @6@ @5@8@@ @3#@@ @2@ @1@ @0@@q@$fold@@@@ @/@!a @+@!b @)@ @.@ @-@ @,@[@@ @*@@ @(@ @'@ @&@
@
r@&length@i!a @%@@ @$
@@ @#@ @"@
2@
s@%stats@}!a @!@@ @ &Stdlib'Hashtbl*statistics@@ @@ @@
L@
1t@&to_seq@!a @@@ @&Stdlib#Seq!tS@@ @@ @@@ @@ @@
n@
Su@+to_seq_keys@@ @@@ @ #Seq!tm@@ @@@ @@ @@
@
lv@-to_seq_values@Ҡ!a @@@ @;#Seq!t@@ @@ @@
@
w@'add_seq@!a @
@@ @@U#Seq!t@@ @@ @@@ @
@@ @	@ @@ @@
@
x@+replace_seq@!a @@@ @@z#Seq!t@@ @@ @@@ @@@ @@ @ @ @@
@
y@&of_seq@#Seq!t@@ @!a @@ @@@ @G@@ @@ @@@
z@'to_list@S!a @@@ @	n
!t@@ @@ @@@ @@ @@&@<j@'of_list@	
!t@@ @!a @@ @@@ @@@ @@ @@D@Zk@&to_map@!a @@@ @#Map$Make
!t@@ @@ @@_@ul@&of_map@#Map$Make
!t!a @@@ @@@ @@ @@z@m@'memoize@Š!a @@@ @@@x@@ @@ @@}@@ @@ @@ @@ @@@n@#map@!a @@@ @@@	!b @@ @@@ @@ @@ @@@o@@@w@@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@@@БA  ( !t QB'R(R@@  8 @@@A@@ @@@@@0R1R@@A@@@@@Aг	#int:R
@@  0 UTTUUUUU@T  8 @@@A!@@C@C@@@@@@@@@@@@@@@  0 a``aaaaa@_@@@ࠠ'compare RSTTT@@@@#intA@@ @>C@@@@ @=C@&@@ @<C@'@ @(C@ @ @!C@  0 @QK@@@@!x S~TT@@@'  0 @@@@@@!y TTT@@@)  0 @8@@B@@@@డ!-TT@@E@@ @ @>@@ @ ;@@ @ @ @ @ @ Ɛ'%subintBA @@@@*stdlib.mli`55`55@@&Stdlibq@@@_@@C@2@X@@C@1U@@C@0@C@/@C@.  0 @8Dc@;@C@@@@ఐZ!xTT@E@@C@?C@"@@ఐ\!yTT@@@C@@C@)$@@@@}%@@A`A@  0 @]@@@@Ap	A@@@ @E~@@T
@@@@ࠠ&output UUU@@@@&Stdlib+out_channel@@ @!C@G@#intA@@ @	rC@N$unitF@@ @ C@O@ @PC@H@ @IC@F  0 =<<=====@@@4A@@@@"oc V1U2U@@@/  0 NMMNNNNN@@@@@@!x W?U@U@@@/  0 \[[\\\\\@ @@@SE@@@@డ4&Printf'fprintfRUSU@@P@@ @@U&format!a @_+out_channel@@ @O@@ @@@ @@ @@ @@*printf.mliR[[R[@@.Stdlib__Printf@%$@@@r@@C@@"@plC@	UC@	d@C@	qC@$@@C@q@@C@@@C@@C@@C@
  0 @Q]@T@F@@@@ఐs"ocUU@^@@C@%C@J@@ภ8CamlinternalFormatBasics&FormatU UA  < &Format8CamlinternalFormatBasics'format6!a @!b @!c @!d @!e @!f @@@ @	@'#fmt$ @@ @&stringO@@ @	 @B@@AA@A<camlinternalFormatBasics.mli644644@@@: ภL#IntJ  < #Int !x @!b @!c @!d @!e @!f @@@ @Ǡ!y @!a @@s(int_conv@@ @Ƞy'padding4@@ @ɠ)precision@)@@ @@ @@@ @ʠg#C?;73@@ @@DDAY@AA^ %%_ @@@ dภ%Int_i  < %Int_i1@@ @:@@@CP@P@AnUoU@@@H@@;@@D@	nD@	w@ภ*No_padding  < *No_padding@!a @G@@ @S@@@@AB@AAee@@@j@@P C@$C@	D@	a@@D@	oD@	|@ภ,No_precision  < ,No_precisionY!a @d@@ @n@@@@BA@AAlLNlLq@@@o@@i @@D@	pD@	@ภ-End_of_format  < -End_of_formatР!f @!b @!c @!e @@@ @/@@@@AY@AA.../!@@@ y@@Jn@@D@D@	TD@	lSC@	m@@D@	sD@	K@@-@a]^_`@@D@	VD@	kV@"%i=@=@	@@D@	WD@	D@	b@@DC@@y'@@D@D@	Sk@@ఐ̠!xUU@u@@C@Qy@@@@z@@AA@  0 '&&'''''@@@@@AA@@
 @ @	@@U@@@񠰡@ࠠ$hash yV
 V@@@@@ @	C@	@ @	C@	  0 DCCDDDDD@2,@-@;D@@@@!i {8V9V@@@  0 UTTUUUUU@!?V	@V@@@@@ఐ!iHV	@$@@XH@@&C@	  0 gffggggg@@@@@AA@@**@ @	  0 lkklllll@@@@@@@*@ࠠ%equal |_W`W#@@@@Y@@ @	C@	@
@@ @	C@	$boolE@@ @	C@	@ @	C@	@ @	C@	  0 @Td^@_@G@@@@!i ~@W%W&@@%@@ @	  0 @6WW7@@@@
@г3#intW)W,@@;@@ @	@@W$W-@@@B@@@!j W.W/@@@G  0 @(6-@0@J@@@@డ!=W4W5@@!a @ S@X@@ @ R@ @ Q@ @ P&%equalBA&@@@@% y& y@@$Q@@@nC@	@k@@C@	@C@	@C@	  0 @/;x@2@K@@@@ఐl!iW2W3@<@@@@ఐP!j W6l@m@@C@	@@o@@@@AQpA@  0 @N@@@@A_rA@@@ @	  0 #""#####@y@@@@w@wv@@ࠠ%print X8>X8C@@@@l&Format)formatter@@ @9@#intA@@ @8$unitF@@ @7@ @6@ @5C@	  0 NMMNNNNN@@@EI@@@డ$&Format,pp_print_intBX8FCX8Y@@*@@ @
@$@@ @
!@@ @
@ @
@ @
@*format.mli %% %%@@.Stdlib__FormatS@@>%@@ZX8:@@@(@;5A@;@h6@I@0@VP@Q@wL@@  0 @7Z@@mQnYZ]@  0 @@@@C@B@@@A@D@@@l}YZ^@ӱ_C@^D  8 @@@A`@@ @$ @$@@@@\@@@XA@W@@@ @$@@@ @$V@@ @$@ @$@ @$@n@S@Q@@@ @$P@@ @$@ @$@z@M@L@@@ @$@#@@ @$K@@ @$@ @$@ @$@@H@F@EB@@ @$@5@@ @$A@@ @$@ @$@ @$@@>@=@X<;@@ @$@H@@ @$:@@ @$@ @$@ @$@@9@@@8@@@k7@@ @$@=@@ @$@@ @$@ @$@ @$@@@@J@@ @$@@ @$@ @$@@@@!W@@ @$@']@@ @$@@ @$@ @$@ @$@@@@@@ @$@:p@@ @$@@ @$@ @$@ @$@@@@@@ @$@N@@ @$@@ @$@ @$@ @$@@@ӱ6C@5E  8 @@@A_4@@ @%@@@@@@@3A@2E  8 @@@A10k/@@ @%@@@@%@@@.A@-@@ @%@-@,@*@
@@ @%)@@ @%@ @%@9@&@%@0@@ @%@@@ @%$@@ @%@ @%@ @%@K@#@"@@@ @%@-@@ @%0@@ @%@ @%@ @%@\@!@ @#@@ @%<@@ @%@ @%@h@@@/@@ @%@J@@ @%M@@ @%@ @%@ @%@y@@@V@@ @&@[@@ @& ^@@ @%@ @%@ @%@@@@g@@ @&@l@@ @&o@@ @&@ @&@ @&@@@@x@@ @&@}@@ @&
@@ @&	@ @&@ @&@@@@@@ @&@@@ @&@@ @&@ @&
@ @&@@@@@@ @&@@@ @&@@ @&@ @&@ @&@@@@@@ @&@@@ @&
@@ @&@ @&@ @&@@@@@@ @&@@@ @&
@@ @&@ @&@ @&@@	@@@@@ @&&@@ @&%@ @&$@@@ @&#@@ @&"@ @&!@ @& @@@@@@@ @&-@@ @&,@ @&+@@@ @&*@@ @&)@ @&(@ @&'@@@@@@@ @&4@@ @&3@ @&2@@@ @&1@@ @&0@ @&/@ @&.@0@@@@@@ @&;@@ @&:@ @&9@@@ @&8@@ @&7@ @&6@ @&5@F@@@@@@ @&B@@ @&A@ @&@@-@@ @&?0@@ @&>@ @&=@ @&<@\@@@@%@@ @&J+@@ @&I@@ @&H@ @&G@G@@ @&FJ@@ @&E@ @&D@ @&C@v@@@@?@@ @&S@@ @&R@ @&Q@]@@ @&Pc@@ @&Ng@@ @&O@ @&M@ @&L@ @&K@@@@p@@ @&V@@ @&U@ @&T@@@@|@@ @&Zl@@ @&Y@@ @&X@ @&W@@@@@@ @&]y@@ @&\@ @&[@@@@@@ @&aޠ@@ @&`@@ @&_@ @&^@@@@@@ @&d@@ @&c@ @&b@@@@@@ @&h٠@@ @&g@@ @&f@ @&e@@@@@@ @&k@@ @&j@ @&i@@@@@@ @&oԠ@@ @&n@@ @&m@ @&l@@@@@@ @&w@@@ @&v@@ @&s@@ @&t@@ @&u@ @&r@ @&q@ @&p@@@@@@ @&|@@@ @&{@@ @&z@ @&y@ @&x@0@@@@@ @&@@@ @&̠@@ @&@@ @&@ @&~@ @&}@E@@@@@@ @&@@ @&@ @&@,@@ @&@@ @&@ @&@ @&@[@@@@$@@ @&@@ @&@ @&@B@@ @&Š2@@ @&@@ @&@ @&@ @&@u@@@@>@@ @&@@ @&@ @&@\@@ @&I@@ @&@ @&@ @&@@@@@T@@ @&@@ @&@ @&@r@@ @&b@@ @&@@ @&@ @&@ @&@@@@l@@ @&@@@ @&y@@ @&@@ @&@ @&@ @&@@@@@@ @&@@ @&@@ @&@ @&@@@@@@ @&@@ @&@@ @&@ @&@@@@@@ @&@@ @&@@@ @&@@ @&@ @&@ @&@@@@@@ @&@@ @&@@ @&@ @&@	@@@@@ @&@@@ @&@@ @&@ @&@ @&@@@@@@ @&@@@ @&@@ @&@ @&@ @&@.@@@@@ @&@@ @&@ @&@:@@@@@ @&@@ @&@@ @&@ @&@J@@@@@@ @&@@ @&@ @&@1@@ @&4@@ @&@ @&@ @&@`@@@@`@@ӱC@F  8 @@@A@@ @(+@@@@n@@@A@F  8 @A@A+@@ @(,@@|@@@A@@@ @(-@@{@z@y@@ @(0u@@ @(/@ @(.@@r@q@4@@ @(5@p@@ @(4l@@ @(3@ @(2@ @(1@@k@j@@@ @(;@i@2n@@ @(:6r@@ @(9@ @(8@ @(7@ @(6@@e@d@(@@ @(D@@c`@@ @(C\d@@ @(B@ @(A@Qj@@ @(@Un@@ @(?@ @(>@ @(=@ @(<@@[@Z@G@@ @(H@Yd\@@ @(G@ @(F@ @(E@@U@T@V@@ @(M@sS@@ @(LwW@@ @(K@ @(J@ @(I@@O@N@@k@@ @(Z@ML@@ @(Y@HG@@ @(XCB@@ @(W@ @(V@ @(U@ @(T@\@@ @(S@W@@ @(RR@@ @(Q@ @(P@ @(O@ @(N@&@>@=@@@@ @(e@<@>8A@@ @(d@ @(c@ @(b@ @(a@G@@ @(`@M@@ @(_ŠQ@@ @(^@ @(]@ @(\@ @([@I@7@6@@5@71@@ @(n@ @(m@ @(l@ؠ?@@ @(k@ޠE@@ @(j0@@ @(i@ @(h@ @(g@ @(f@e@/@.@@-@/)@@ @(w@ @(v@ @(u@7@@ @(t@=@@ @(s(@@ @(r@ @(q@ @(p@ @(o@@'@&@@@@ @(@%!@@ @(~@ @(}@ @(|@-@@ @({@@ @(z@ @(y@ @(x@@@@@
@@ @(@@@ @(@ @(@ @(@+"@@ @(@@ @(@ @(@ @(@@@@@!@@ @(@
@@ @(@ @(@ @(@C@@ @(@@ @(@ @(@ @(@@@
@@:@@ @(@	@@ @(@ @(@ @(@\@@ @(@@ @(@ @(@ @(@@@@@S@@ @(@@@ @(@ @(@ @(@u	@@ @(y
@@ @(@ @(@ @(@@@@@m@@ @(@@@ @(@ @(@ @(@@@ @(@@ @(@ @(@ @(@@@@@@@ @(@@@ @(@ @(@ @(@@@ @(@@ @(@@ @(@ @(@ @(@ @(@:@@@@@ @(@@ @(@ @(@G@@@͠@@ @(ݠ@@ @(@ @(@@ @(@ @(@\@@@@@ @(@@ @(@ @(@ @(@m@@@@@ @(Π@@ @(@ @(@@ @(@ @(@@@@@@ @(@@ @(Š@ @(@ @(@@@@@@ @(@@ @(ʠ@ @(@@ @(@ @(@@@@.@@ @(@@ @(Π@ @(@ @(@@@@?@@ @(1@@ @(Ӡ@ @(@@ @(@ @(@@@@<@@ @(@Y@@ @(`@@ @(ؠ@@ @(٠j@@ @(@ @(@ @(@ @(@@@@\@@ @(@y@@ @(@ @(@ @(@@@@k@@ @(@@@ @(@@ @(@ @(@ @(@@@@@@@ @(@@ @(@ @(@@@ @(@@ @(@ @(@ @(@ @(@+@@@@@@ @(@@ @(@ @(@@@ @(@@ @(@ @(@@ @(@ @(@ @(@J@@@@@@ @(@@ @(@ @(@ڠ@@ @(@@ @(@ @(@ @(@ @(@e@@@@@@ @)@@ @)@ @)@@@ @)@@ @)@ @)@@ @)@ @) @ @(@@@@@{@ @)@@@ @)@@ @)
@ @)	@ @)@@w@v@@@@ @)@uq@ @)@ @)@%z@@ @))z@@ @)@ @)@ @)
@@m@l @3k@@ @)gdc'@@ @)x@ @)@@ @)@ @)@@b@a@J`@@ @)~\[>@@ @)m@ @)@@ @)@ @)@@Z@Y@I@@ @)$@fX@@ @)#TSZ@@ @)"e@ @)!@@ @) @ @)@ @)@@R@Q@POm@@ @)+N@ @)*@@ @))@T@@ @)(X@@ @)'@ @)&@ @)%@@J@I@HG@@ @)0F@ @)/@@ @).J@@ @)-@ @),@+@B@A@@@@ @)5?@ @)4@@ @)3C@@ @)2@ @)1@@@;@:97@4@60@@ @)E@ @)D@ @)C@@ @)B-D@
+*@@ @)A@H)@@ @)@@ @)?@ @)>@@ @)=@Q@@ @)<@W@@ @);[@@ @):@ @)9@ @)8@ @)7@ @)6@s@(@'@&@@ @)J@,@@ @)I0@@ @)H@ @)G@ @)F@@"@!@
 @@ @)O@&@@ @)N*@@ @)M@ @)L@ @)K@@@	@@@@ @)W@ @)V@'!@@ @)U@-'@@ @)T1+@@ @)S@ @)R@ @)Q@ @)P@@@
@;&@@ @)]@@ @)\@,@@ @)[/@@ @)Z@ @)Y@ @)X@@@@@:@@ @)d=@@ @)c@ @)b@Z@@ @)a^@@ @)`@ @)_@ @)^@@@
@h@@ @)g9@@ @)f@ @)e@@@
@y@@ @)j@@ @)i@ @)h@@@@@q@@ @)p@ @)o@[@@ @)n@@ @)m@ @)l@ @)k@@@@@@ @)u@@ @)t@@ @)s@@ @)r@ @)q@-@@@@@ @)z@@ @)y@@ @)x@@ @)w@ @)v@E@@@@@@ @)@@@ @)@ @)@ @)@@@ @)@@@ @)@@ @)~@ @)}@ @)|@ @){@g@@@@g@@ӱC@G  8 @@@A@@ @*@@@@u@@@A@G  8 @A@A2ՠ@@ @*@@@@@A@@@@ @*@@ @*@ @*@@@@@@ @*@@ @*@ @*@@@@@@ @*@@ @*@ @*@@@@%@@ @*)@@ @*@ @*@@@@3@@ @*#@Z@@ @*"@@@ @*!@ @* @ @*@ @*@@@@H@@ @*(@@@ @*'@@ @*&@ @*%@ @*$@@@@Z@@ @*,@'@@ @*+@ @**@ @*)@@@@i@@ @*1@6@@ @*0@@ @*/@ @*.@ @*-@@@@|@@ @*6@I@@ @*5@@ @*4@ @*3@ @*2@@@@@@ @*<@\@@ @*;@@@ @*:@ @*9@ @*8@ @*7@)@@@@@ @*A@p@@ @*@@@ @*?@ @*>@ @*=@;@@@@~@@ @*I@{@@ @*H@ @*G@ @*F@@@ @*Ez@@ @*D@ @*C@ @*B@T@y@x @@@@ @*Q@wsz@@ @*P@ @*O@ @*N@۠@@ @*Mr@@ @*L@ @*K@ @*J@n@q@p!@@@@ @*Y@o@kk@ @*X@ @*W@ @*V@v@@ @*U@ss@ @*T@ @*S@ @*R@@g@f"@e@@ @*\a@@ @*[@ @*Z@@`@_#@^@@ @*_ZWV@@ @*^@ @*]@@U@T$@S@@ @*dOLK@@ @*c`@ @*b@@ @*a@ @*`@@J@I%@2H@@ @*hfFE@@ @*g@@ @*f@ @*e@@D@C&@EB@@ @*ky>=H@@ @*j@ @*i@@<@;'@U:@@ @*r@65*@@ @*qI@ @*p@@ @*o4@@ @*n@ @*m@ @*l@@3@2(@q1@@ @*y@-,F@@ @*x@@ @*w@@ @*v+@@ @*u@ @*t@ @*s@@*@))@('\@@ @*~&@ @*}@@ @*|*@@ @*{@ @*z@*@"@!*@ @@ @*
@@ @*,@ @*@@ @*@ @*@@@@+@
@@ @*@ @*@@ @*Ơ@@ @*@ @*@V@@,@Р@@ @*

@@ @*@ @*@h@	@-@%
@@ @*@@ @*@ @*@z@ @.@@@ @*@@@@ @*@ @*@@@ @*@ @*@ @*@ @*@@@/@
@@ @*@@@ @*@@ @*@ @*@ @*@@@@@@@@d@@QY@Z@g#IntH[`g[`j@@БA  ( !tI\t{\t|@@  8 @@@A@@ @c@@@@\tv\t@@A@ N@@Aг	#int \t
@@  0 @ @@3 M  8 @@@A$@@J@cJ@c@@@@@@@@@@@@@@  0 ,++,,,,,@@@Р (Int_base ^ ^@@@ @}@@E2&
@'@/@@@0@ ~@@@"@ 	V@@@  0 UTTUUUUU@8RL@@@ӱ J@*  @ @@ @@@ @c@@@ @c 
@@ @c@ @c@ @c@ %@ 
@ @@@ @c @@ @c@ @c@ 2@ @ @!@@ @c@'@@ @c @@ @c@ @c@ @c@ E@ @  @@@ @c@:@@ @c@@ @c@ @c@ @c@ X@@@ @@ @c@N@@ @c@@ @c@ @c@ @c@ l@@ӱJ@@ r@@ӱJ@@ x@@ӱJ@@ ~@@@ ^@@@xAࠠ)zero_to_n ` `@@@@)@@ @iK@c@@ @iK@c@K@c  0 @ð@tsa`NM:@94@3.@-@@@@!n ` `@@@$  0   @/@+$@ @cL@c@.@ O@@@@డ!< a a@@!a @ [@
@@ @ Z@ @ Y@ @ X)%lessthanBA]@@@@\ YY] Y@@[S@@@TK@cK@c@@@K@c@K@c@K@c  0 76677777@7C]@:@!.P@@@@ఐK!n!+a!,a@@@K@c@@@!7a!8a@@"@@@@@@K@d L@c#@డ%empty#Set!Ja!Ka@@@ @e@!@ @@@@K@e7@డ#add#Set!aa!ba@@@@ @e@@@ @e@@ @e@ @e@ @e@!?@ @@@@@K@e@@@K@e@@K@e@K@e@K@eb@@ఐ!n!a!a@l@@uo@@ఐڠ)zero_to_n!a!a@@@@@L@i@@డ
!a!a@@@@Q@@M@i@J@@M@iG@@M@i@M@i@M@i@@ఐ⠐!n!a@@@@@A"!a@@h@@N@iN@iN@i@@!a!a@@K@i@@!a!a@@@@{@@@@K@i@!a@@@@AA@@@ @i  0 @@@@@!`
@@@@ࠠ)to_string!c!c@@@@#intA@@ @jK@i&stringO@@ @jK@i@ @iK@i#@@!n"c"c@@@  0 10011111@1)"c"c@@@@@డ#Int)to_string")c"*c@@2@@ @j-@@ @j@ @j@'int.mli  @@+Stdlib__Int\@@@A@@K@j<@@K@j@K@j  0 ]\\]]]]]@-9L@0@"TR@@@@ఐA!n"Qc6@
7@@[K@jK@i@@.;@@S@@AD<A@@^V@ @j  0 tssttttt@C@@@@A@A@@u@smA@!	٠Ơ@|v@w@"zQ@@  0 @@@"p[`m"qd@  0 @o@@@@"u[``@@$Int8K"f"f"@@БA  ( !tL"g,3"g,4@@  8 @@@A@@ @j@@@@"g,."g,:@@A@"T@@Aг	#int"g,7
@@  0 @@5@3"S  8 @@@A$@@M@jM@j@@@@@@@@@@@@@@  0 @@@@ࠠ$zeroʠ"i<B"i<F@@@!@@ @jM@j  0 @#=7@@@@"i<I"i<J@@@@"i<>@@@@ࠠ#oneˠ"jKQ"jKT@@@?@@ @jM@j  0 @,&@'@"U@@@A"jKW"jKX@@

@@"jKM@@@
@ࠠ*of_int_exn̠"lZ`"lZj@@@@@@ @mNM@jM@j@ @jM@j  0 $##$$$$$@'4.@/@#V@@@@!iΠ#lZk#lZl@@@  0 54455555@$#lZ\# p@@@@@డ"||#,mo#-mo@@@@ @ @@@ @ @@ @ @ @ @ @ '%sequorBA@@@@ %% %%F@@_@@@@@M@j@@@M@j@@M@j@M@j@M@j  0 pooppppp@<HV@?@#gX@@@@డJln#emox#fmoy@k@@@iM@kM@k@j@@N@k@N@k
@N@k	@@ఐh!i#|mov#}mow@&@@M@j+@@డq"~-#moz#mo{@@6@@ @ :@@ @ @ @ '%negintAA@@@I3?3?I3?3g@@l@@@@@O@k@@O@k@O@kU@@డ#lsl#mo~#mo@@`@@ @ @f@@ @ j@@ @ @ @ @ @ '%lslintBA@@@@====@@|@@@@@P@k%@@@P@k$@@P@k#@P@k"@P@k!@@A#mo|#mo}@@2@@Q@k1Q@k3Q@k2@@G#mo#mo@@<@@Q@k0Q@k5Q@k4@@t$mo@@u@@P@kP@k7Q@k/@@~	@@@@
@@@@N@kN@k:O@k@@డ!>$mo$ mo@@!a @ _@@@ @ ^@ @ ]@ @ \,%greaterthanBA@@@@  %@@T@@@N@k?@@@N@k>@N@k=@N@k<@@ఐ7!i$Kmo$Lmo@@@@@డ>$Ymo$Zmo@@@@@@O@kM@@@O@kL@@O@kK@O@kJ@O@kI@@డY$tmo$umo@@@@@@P@k_@@@P@k^@@P@k]@P@k\@P@k[.@@A$mo$mo@@@@Q@kkQ@kmQ@kl>@@G$mo$mo@@@@Q@kjQ@koQ@knN@@$mo$mo@@O@@P@kYP@kqQ@kiX@@A$mo$mo@@S@@P@kXP@ksP@krh@@$mo$mo@@WP@kWm@@y@@@@N@kN@kvO@kGu@@P@@@@M@kxN@k{@డ$Misc,fatal_errorf$Misc$n$n@@&Stdlib'format4!a @k~&Format)formatter@@ @k$unitF@@ @k!b @k@@ @k@ @k}@.utils/misc.mliXX@@$MiscA-,@@@*@M@lM@m@@M@mMM@l)@@M@l%@@M@l@@M@l@M@l@@ภ}{%+n%,nAzภ.String_literal	  < .String_literalY!a @!b @!c @!d @!e @!f @@@ @@o@@ @'#@@ @@BKAY@AAw $}$}x $%@@@ k1Int8.of_int_exn: E@E@@@N@m0N@m3N@m2 @ภQภ%Int_dW  < %Int_d*@@@@P@P@AUU@@@E@^@b@@N@mJN@mS7@ภ'h&@h@fM@lM@m\N@m=@@N@mKN@mXG@ภx@x@n@@N@mLN@m_S@ภ|{0 is out of range@@`@@N@mpN@msN@mrd@ภ@@@@N@lN@mN@m.N@mHN@mn@@N@lN@mN@m/N@mIN@mo
@@N@mqN@m}@@@Р@@N@mON@mm@@@Y(@@N@m1N@mG@@@d1&'(@@N@mN@m-@	#Int8.of_int_exn: %d is out of range@@"@@N@mN@mN@m~@@@@,G<@@N@lN@m@@ఐ
!i&!n&"n@˰@@@@F@@@ఐ!i&-p@ְ@@*@&0mos@@,@@AA@@//@ @m  0 NMMNNNNN@@@@@@@,@ࠠ&to_int۠&Ar&Br@@@@@ @mM@m@ @mM@m  0 feefffff@CVP@Q@&]W@@@@!iݠ&Zr &[r@@@  0 wvvwwwww@!&ar&br@@@@@ఐ!i&jr	@$@@&zZ@@&M@m  0 @@@@@AA@@**@ @m  0 @@@@@@@*@A@@p@0@C=@>@&Y@@  0 @7G@@&f%&s	@  0 @@@@@&f@@%Int16M&u&u@@БA  ( !tN&v!(&v!)@@  8 @@@A@@ @m@@@@&v!#&v!/@@A@&\@@Aг	#int&v!,
@@  0 @?@5@3&[  8 @@@A$@@O@mO@m@@@@@@@@@@@@@@  0 @@@@ࠠ*of_int_exn&x17&x1A@@@@@@ @nO@mO@m@ @mO@m  0 @)C=@@@@!i⠰&x1B&x1C@@@  0 
		




@"&x13&|@@@@@డՠװ' yF]'yF_@԰@@@@@O@m@@@O@m@@O@m@O@m@O@m  0 *))*****@!-9@$@'!^@@@@డ&('yFO' yFP@%@@@LO@mO@m@$@@P@m@P@m@P@m@@ఐM!i'6yFM'7yFN@&@@O@m+@@డ+"~-'GyFQ'HyFR@@@@@@Q@m@@Q@m@Q@mB@@డB']yFU'^yFX@@@@@@R@m@@@R@m@@R@m@R@m@R@m]@@A'tyFS'uyFT@@@@S@mS@mS@mm@@O'yFY'yF[@@@@S@mS@mS@m}@@F'yF\@@@@R@mR@mS@m@@P	@@q@@b
@@k@@P@mP@mQ@m@@డ'yFb'yFc@@@@P@m@@@P@m@P@m@P@m@@ఐנ!i'yF`'yFa@@@@@డ35'yFp'yFq@2@@@w@@Q@n@p@@Q@nm@@Q@n@Q@n @Q@m@@డ35'yFh'yFk@2@@@2@@R@n@1@@R@n0@@R@n@R@n@R@n@@A( yFf(yFg@@J@@S@n!S@n#S@n"@@O(yFl(yFn@@T@@S@n S@n%S@n$	@@(yFe(yFo@@@@R@nR@n'S@n@@A(*yFr(+yFs@@@@R@nR@n)R@n(#@@(4yFd(5yFt@@R@n
(@@y@@@@P@mP@n,Q@m0@@@@@@O@n.P@m6@డu,fatal_errorf$Misc(Rzz(Szz@s@@@s@O@n5O@n@O@nO@n1r@@O@n3n@@O@n4@@O@n2@O@n0\@@ภİ(tzz(uzzAàภIH2Int16.of_int_exn: 
@
@-@@P@nP@nP@nw@ภภ@@k@@P@nP@n@ภ0(/@(@oFO@nAJO@nP@n@@P@nP@n@ภ8@8@wU@@P@nP@n@ภ
D0 is out of rangeI@I@i@@P@nP@nP@n@ภU@U@o@@P@n=P@nlP@n~P@nP@n@@P@n>P@nmP@nP@nP@n
@@P@nP@n@@v@@@P@nP@n@@@Y(@@P@nP@n@@@%d1&'(@@P@nnP@n}@	$Int16.of_int_exn: %d is out of range@@+@@P@noP@nP@n@@@@5 G<@@P@n<P@nk@@ఐA!i)*zz)+zz@@@@@@@@ఐM!i)6|B@%C@@\(@)9yFJE@@^*@@ANFA@@aa@ @n  0 WVVWWWWW@M@@@@K@KJ@^@ࠠ+lower_int64)J~)K~@@@%int64M@@ @p,O@n  0 onnooooo@u@@)f]@@@డG%Int64#neg)e~)f~@@@@ @o@@ @o@ @o*%int64_negAA @@@)int64.mlinn@@-Stdlib__Int64C@@@@@O@p&3@@O@p%@O@p$0@@డv%Int64*shift_left)~)~@@J@@ @o@#intA@@ @oV@@ @o@ @o@ @oɐ*%int64_lslBA8@@@@8 m

9 m
D@@7T@@@@@P@p3@@@P@p2@@P@p1@P@p0@P@p/k@@డ%Int64#one)~)~@@@ @o@^h##_h#2@@]A@@D@@Q@p?Q@pAQ@p@@@O)~)~	@@N@@Q@p>Q@pCQ@pB@@)~)~
@@@@P@p-P@pEQ@p=@@	@@@@)~@@@@ࠠ+upper_int64*	*
@@@@@ @pWO@pG  0 ,++,,,,,@@@*#_@@@డ%Int64#sub*"*#(@@@@ @o@@@ @o#@@ @o@ @o@ @o*%int64_subBAà@@@@ttH@@E@@@@@O@pM@@@O@pL:@@O@pK@O@pJ@O@pI9@@డ<%Int64*shift_left*Z**[:@ư@@@@@P@p_@@@P@p^@@P@p]@P@p\@P@p[X@@డY%Int64#one*w;*xD@@@@@Q@pkQ@pmQ@plo@@O*E*G@@@@Q@pjQ@poQ@pn@@*)*H@@q@@P@pYP@pqQ@pi@@డ%Int64#one*I*R@۰@@@@P@pXP@psP@pr@@
@@@@*
@@
@@ࠠ,of_int64_exn* ATZ* ATf@@@@%Int64!t@@ @pO@pv4@@ @qO@pw@ @pxO@pu  0 @@@*`@@@@!i* ATg* ATh@@@   0 @,* ATV* G		'@@@@@డ͠ϰ* C* C@̰@@@@@O@p@@@O@p@@O@p@O@p@O@p~  0 "!!"""""@!-C@$@+b@@@@డ

 + Bk+ Bk@
@@@@@P@pP@p@
@@P@p@P@p@P@p@@డ%Int64'compare+6 Bkr+7 Bk@@q@@ @p
@v@@ @p	%@@ @p@ @p@ @p@ !! !!@@f@@@@@Q@p@@@Q@p7@@Q@p@Q@p@Q@pP@@ఐ!i+b Bk+c Bk@Z@@O@pO@pO@pO@pyd@@ఐ,+lower_int64+v Bk+w Bk@d@@@@R@pR@pv@@I@@aw@@@+ Bk+ Bk@@lQ@p@@U@@^@@P@pP@pQ@p@@డ+ C+ C@~@@@@@P@pP@p@@@P@p@P@p@P@p@@డ%Int64'compare+ C+ C@@@@@@Q@p@@@Q@p@@Q@p@Q@p@Q@p@@ఐ!i+ C+ C@Ͱ@@o@@ఐ٠+upper_int64+ C+ C@@@@@R@pR@p@@0@@G@@@+ C+ C@@RQ@p@@<@@@@P@pP@pQ@p@@@@
@@O@pP@p@డ3,fatal_errorf$Misc, E, E@1@@@1@TO@q\OO@pO@qN@O@q[O@p2@@O@p.@@O@p@@O@p@O@p$@@ภ,4 E,5 E	Aภ	4Int16.of_int64_exn: 
@
@@@P@q>P@qAP@q@?@ภ%Int64  < %Int64s!x @Ѡ!b @Ҡ!c @Ӡ!d @Ԡ!e @ՠ!f @@@ @ܠ!y @٠!a @@S@@ @ݠQ0@@ @ޠO@%int64M@@ @@ @@@ @ߠ @<840@@ @@DGAY@AA !! "O"q@@@ gภ&s%@s@@@P@qXP@qa@ภE}D@}@O@pO@qjP@qK@@P@qYP@qf@ภ43@@@@P@qZP@qm@ภ0 is out of range@@~@@P@q~P@qP@q@ภ043@@Ġ@@P@pP@q*P@q<P@qVP@q|@@P@pP@q+P@q=P@qWP@q}
@@P@qP@q@@@$@@P@q]P@q{@@@/Y(@@P@q?P@qU@@@:d1&'(@@P@q,P@q;@	'Int16.of_int64_exn: %Ld is out of range@@@@@P@q-P@qP@q#@@@@JG<@@P@pP@q)-@@ఐ^!i-? E	-@ E		@7@@x:@@3@@#;@డ2%Int64&to_int-P G		-Q G		%@@@@ @o@@ @o@ @oې-%int64_to_intAA@@@  @@X@@@@@O@q@@O@q@O@qe@@ఐ!i-w G		&@n@@q@@*@@r@-{ Bko@@t@@AA@@@ @q  0 @@@@@@@@ࠠ&to_int- I	)	/- I	)	5@@@@@ @qO@q@ @qO@q  0 @@@-a@@@@!t- I	)	6- I	)	7@@@  0 @!- I	)	+- I	)	;@@@@@ఐ!t- I	)	:	@$@@-d@@&O@q  0 @@@@@AA@@**@ @q  0 @@@@@@@*@#A@n@@@2@E?@@@-c@@  0 @9I@@-u- J	<	?@  0 @@@@@-u@@%Float
O- L	A	H- L	A	M@@БA  ( !tP- M	W	^- M	W	_@@  8 @@@A@@ @q@@@@- M	W	Y- M	W	g@@@@.
f@@Aг	%float. M	W	b
@@  0 @Nw@5@3.e  8 @@@A$@@Q@qQ@q@@@@@@@@@@@@@@  0 .--.....@@@гР.$Make,Identifiable.% O	i	s.& O	i	@@.  0 BAABBBBB@#=7@@@БA  ( !tQ.6 P		.7 P		@@  8 @@@A@@ @q@@@@.? P		.@ P		@@@@.Og@@Aг	%float.I P		
@@  0 dccddddd@#  8 @@@A!@@R@qR@q@@@@@@@@@@@@@@  0 pooppppp@.@@@ࠠ'compare.b R		.c R		@@@@@ @qR@q@R@q@@ @qR@q@ @qR@q@ @qR@q  0 @RIC@@@@!x. R		. R		@@@  0 @@@@@@!y. R		. R		@@@%  0 @0@@.i@@@@డ'compare&Stdlib. R		. R		@@!a @ k@<@@ @ j@ @ i@ @ h(%compareBA@@@@  @@W@@@U@WM@@R@q@R@q@R@q  0 @0<W@3@.j@@@@ఐR!x. R		. R		@=@@mR@q@@ఐR!y. R		. R		@@@sR@q @@@@@q!@@ATA@x  0           @Q@@@@AdA@@|@ @qr@@. R		@@@u@ࠠ&output. S		. S		@@@@@@ @rR@q@%floatD@@ @rfR@q@@ @rR@q@ @qR@q@ @qR@q  0  0 / / 0 0 0 0 0@@@/'h@@@@"oc/$ S		/% S		@@@'  0  A @ @ A A A A A@@@@@@!x /2 S		/3 S		@@@,  0  O N N O O O O O@ 8@@/Fl@@@@డ'&Printf'fprintf/E S		/F S		@@@@C@@R@r@@KGR@rIR@rX@R@reR@q@@R@qB@@R@r @@R@q@R@q@R@q  0  } | | } } } } }@/;]@2@/tm@@@@ఐQ"oc/q S		/r S		@<@@vR@rR@q@@ภϰ/ S		/ S		AΠภ%Float	  < %Float!x @!b @!c @!d @!e @!f @@@ @!y @!a @@ *float_conv@@ @2@@ @@@@ @@ @@@ @?;73/@@ @@DHAY@AA "r"r #%#G@@@  hภ5+Float_flag_e  < +Float_flag_0/float_flag_conv@@ @;@@@@C@C@AZFHZFU@@@5V@q@@@S@r{S@rs@ภN'Float_f~  < 'Float_fI/float_kind_conv@@ @<@@@@I@I@A\\@@@NZ@@@S@r|S@rw@@@[@S@rbS@rx@ภj@@R@rR@rS@rU@@S@rcS@r@ภz@@@@S@rdS@r@ภ@@Y@@S@r
S@rHS@r`R@ra@@S@rgS@r@@@l/@@S@rJS@r_@"%f@@r@@S@rKS@rS@r@@@@'R@@S@rS@rG@@ఐB!x0p S		0q S		@
@@jR@q@@0@@b@@ADA@o  0 !!!!!!!!@A@@@@ATA@@xs@ @rd@@0{ S		@@@g@ࠠ$hash!0 T	
0 T	
@@@@& @rR@r#intA@@ @rR@r@ @rR@r  0 !!!!!!!!@@@0k@@@@!f#0 T	
0 T	
@@@  0 !!!!!!!!@(0 T		0 T	
@@@@@డ 'Hashtbl$hash0 T	

0 T	
@@!a @TF2@@ @Yu@ @Yt@+hashtbl.mliGGGG@@/Stdlib__Hashtbl _@@@A>@@R@r@R@r  0 !!!!!!!!@+7I@.@0o@@@@ఐ?!f0 T	
4@
5@@VR@r@@*7@@S@@A@8A@@YV@ @r  0 """"""""@?@@@@=@=<@R@ࠠ%equal$0 U

!0 U

&@@@@!@@ @rR@r@
@@ @rR@r@@ @rR@r@ @rR@r@ @rR@r  0 ","+"+",",",",",@y@@1#n@@@@!i&@1  U

(1! U

)@@"@@ @r  0 "?">">"?"?"?"?"?@31) U

1* U

<@@@@
@г0%float16 U

,17 U

1@@8@@ @r@@1= U

'1> U

2@@@?@@@!j'1I U

31J U

4@@@D  0 "f"e"e"f"f"f"f"f@(6-@0@1]q@@@@డ!=1X U

91Y U

:@@@@UR@r@@@R@r@R@r@R@r  0 "~"}"}"~"~"~"~"~@%_@@1ur@@@@ఐV!i1r U

71s U

8@&@@k@@ఐ:!j1 U

;V@W@@yR@r@@Y@@t@@A;ZA@~  0 """"""""@8@@@@AI\A@@@ @r  0 """"""""@c@@@@a@a`@x@ࠠ%print(1 V
=
E1 V
=
J@@@@@@ @r@%floatD@@ @ry@@ @r@ @r@ @rR@r  0 """"""""@@@1p@@@డ!&Format.pp_print_float1 V
=
M1 V
=
b@@@@ @
@"@@ @
@@ @
@ @
@ @
@w &9&9x &9&h@@vU@@4#@@1 V
=
A@@@&@A@w@;@U@.@LF@G@1s@@  0 """"""""@5P@@1 O	i	1 W
c
h@  0 """"""""@@@@C@B@@@A@D@@@1 W
c
i@ӱ1)R@1S  8 @@@A@@ @v @vh@@@@1@@@1A@1@@@ @v@@@ @v1@@ @v@ @v@ @v@1@1@1@@@ @v1@@ @v@ @v@1@1@1@@@ @v@#@@ @v1@@ @v@ @v@ @v@2 @1@1@11@@ @v@5@@ @v1@@ @v@ @v@ @v@2@1@1@111@@ @v@H@@ @v1@@ @v@ @v@ @v@2%@1@@@2%1@@2 *@k1@@ @v@1@@ @v2!@@ @v@ @v@ @v@29@2@2+@1@@ @v2@@ @v@ @v@2F@2@2,@!1@@ @v@'1@@ @v2@@ @v@ @v@ @v@2Y@2@2-@22@@ @v@:1@@ @v2@@ @v@ @v@ @v@2l@2
@2.@2'22
@@ @v@N1@@ @v2
@@ @v@ @v@ @v@2@2	@ӱ1/R@1T  8 @@@A_1@@ @w@@@@2@@@1A@1T  8 @@@A2J11k1@@ @w@@@@2@@@1A@1@@ @w@2@1@1@
@@ @w1@@ @w@ @w@2@1@1@0@@ @w@@@ @w1@@ @w@ @w@ @w@2@1@1@@@ @w@-@@ @w0@@ @w@ @w@ @w@2@1@1@#@@ @w<@@ @w@ @w@2@1@1@/@@ @w@J@@ @wM@@ @w@ @w@ @w@2@1@1@V@@ @w@[@@ @w^@@ @w@ @w@ @w@2@1@1@g@@ @w@l@@ @wo@@ @w@ @w@ @w@3@1@1@x@@ @w@}@@ @w1@@ @w@ @w@ @w@3!@1@1@@@ @w@@@ @w@@ @w@ @w@ @w@32@1@1@@@ @w@@@ @w1@@ @w@ @w@ @w@3C@1@1@@@ @w@@@ @w1@@ @w@ @w@ @w@3T@1@1@@@ @w@@@ @w1@@ @w@ @w@ @w@3e@1~@1}@@@@ @w1|@@ @w@ @w@@@ @w1y@@ @w@ @w@ @w@3{@1x@1w@@@@ @w@1v1v@ @w@ @w@@@ @w@1}1}@ @w@ @w@ @w@3@1r@1q@@@@ @w1p@@ @w@ @w@@@ @w1o@@ @w@ @w@ @w@3@1n@1m@@@@ @w1l@@ @w@ @w@@@ @w1k@@ @w@ @w@ @w@3@1j@1i@@@@ @w1h@@ @w@ @w@-@@ @w0@@ @w@ @w@ @w@3@1g@1f@@%@@ @x1e+@@ @x @@ @w@ @w@G@@ @wJ@@ @w@ @w@ @w@3@1b@1a@@?@@ @x
1`@@ @x	@ @x@]@@ @xc@@ @xg@@ @x@ @x@ @x@ @x@4@1_@1^@p@@ @x
1]@@ @x@ @x@4@1\@1[@|@@ @x1Zl@@ @x@@ @x@ @x@4$@1W@1V@@@ @xy@@ @x@ @x@40@1U@1T@@@ @x1S@@ @x@@ @x@ @x@4@@1R@1Q@@@ @x@@ @x@ @x@4L@1P@1O@@@ @x1N@@ @x@@ @x@ @x@4\@1M@1L@@@ @x"@@ @x!@ @x @4h@1K@1J@@@ @x&1I@@ @x%@@ @x$@ @x#@4x@1H@1G@@@ @x.@@@ @x-@@ @x*1F@@ @x+@@ @x,@ @x)@ @x(@ @x'@4@1E@1D@@@ @x3@@@ @x2@@ @x1@ @x0@ @x/@4@1C@1B@@@ @x9@@@ @x81A@@ @x7@@ @x6@ @x5@ @x4@4@1@@1?@@@@ @x@1>@@ @x?@ @x>@,@@ @x=@@ @x<@ @x;@ @x:@4@1=@1<@@$@@ @xH1;@@ @xG@ @xF@B@@ @xE1:2@@ @xD@@ @xC@ @xB@ @xA@4@19@18@@>@@ @xO17@@ @xN@ @xM@\@@ @xLI@@ @xK@ @xJ@ @xI@5 @16@15@@T@@ @xW14@@ @xV@ @xU@r@@ @xT13b@@ @xS@@ @xR@ @xQ@ @xP@5@12@11@l@@ @x]@@@ @x\101-1,y@@ @x[@@ @xZ@ @xY@ @xX@51@1+@1*@@@ @xa1B1)1(@@ @x`@@ @x_@ @x^@5C@1'@1&@@@ @xe1T1%1$@@ @xd@@ @xc@ @xb@5U@1#@1"@1c1!1 @@ @xk@@ @xj@@@ @xi@@ @xh@ @xg@ @xf@5l@1@1@1z11@@ @xo@@ @xn@@ @xm@ @xl@5~@1@1@581@@ @xt@@@ @xs1@@ @xr@ @xq@ @xp@5@1@1@5K11@@ @xy@@@ @xx1@@ @xw@ @xv@ @xu@5@1@1@@@ @x|1@@ @x{@ @xz@5@1
@1@1@@ @x@@ @x@@ @x~@ @x}@5@1@1@@@@ @x@@ @x@ @x@1@@ @x4@@ @x@ @x@ @x@5@1@@@51@@ӱ10R@1U  8 @@@A1@@ @y@@@@5@@@1A@1 U  8 0@A@A50001@@ @y00@@5@@@0A@00@@ @y@5@0@0@0@@ @y0@@ @y@ @y@6@0@0@4@@ @y@0@@ @y0@@ @y@ @y@ @y@6@0@0@@@ @y@0@20@@ @y60@@ @y@ @y@ @y@ @y@6/@0@0@(@@ @y@@0ؠ0@@ @y0Ѡ0@@ @y@ @y@Q0@@ @yU0@@ @y@ @y@ @y@ @y@6N@0@0@G@@ @y@0d0@@ @y@ @y@ @y@6]@0@0@V@@ @z@s0@@ @zw0@@ @z@ @z@ @z @6p@0@0@@k@@ @z@0 0@@ @z@00@@ @z00@@ @z@ @z
@ @z@ @z@0@@ @z
@0@@ @z	0@@ @z@ @z@ @z@ @z@6@0@0@@@@ @z@0@000@@ @z@ @z@ @z@ @z@0@@ @z@0@@ @zŠ0@@ @z@ @z@ @z@ @z@6@0@0@@0@00@@ @z%@ @z$@ @z#@ؠ0@@ @z"@ޠ0@@ @z!0@@ @z @ @z@ @z@ @z@6@0@0@@0@00@@ @z.@ @z-@ @z,@0@@ @z+@0@@ @z*0@@ @z)@ @z(@ @z'@ @z&@6@0@0@@@@ @z6@00@@ @z5@ @z4@ @z3@0@@ @z20@@ @z1@ @z0@ @z/@7@0@0@@
@@ @z>@0@00@ @z=@ @z<@ @z;@+0@@ @z:@00@ @z9@ @z8@ @z7@7&@0@0
 @@!@@ @zF@00@@ @zE@ @zD@ @zC@C0@@ @zB0@@ @zA@ @z@@ @z?@7?@0@0
@@:@@ @zN@0~0z@@ @zM@ @zL@ @zK@\0@@ @zJ0y@@ @zI@ @zH@ @zG@7X@0x@0w
@@S@@ @zV@0v0r@@ @zU@ @zT@ @zS@u0~@@ @zRy0@@ @zQ@ @zP@ @zO@7r@0q@0p
@@m@@ @z^@0o0k0j@@ @z]@ @z\@ @z[@0x@@ @zZ0t@@ @zY@ @zX@ @zW@7@0f@0e
@@@@ @zh@0d0`@@ @zg@ @zf@ @ze@0l@@ @zd0s@@ @zb0x@@ @zc@ @za@ @z`@ @z_@7@0_@0^
@0]@@ @zk0Y@@ @zj@ @zi@7@0X@0W
@͠0V@@ @zp0R@@ @zo0a@ @zn@@ @zm@ @zl@7@0O@0N
@0M@@ @zt@@ @zs0U@ @zr@ @zq@7@0I@0H
@0G@@ @zy0C@@ @zx0R@ @zw@@ @zv@ @zu@7@0B@0A
	@0@@@ @z}@@ @z|0H@ @z{@ @zz@8@0<@0;
@0:@@ @z06@@ @z0E@ @z@@ @z@ @z~@8@05@04
@.03@@ @z@@ @z0;@ @z@ @z@8.@0/@0.
@?0-@@ @z0)1@@ @z08@ @z@@ @z@ @z@8C@0(@0'

@<@@ @z@Y0&@@ @z`0-@@ @z0"02@@ @zj07@@ @z@ @z@ @z@ @z@8c@0!@0 
@\@@ @z@y0@@ @z0 @ @z@ @z@8r@0@0
@k@@ @z@0@@ @z00@@ @z@ @z@ @z@8@0@0
@@@@ @z0@@ @z@ @z@0@@ @z@@ @z0@ @z@ @z@ @z@8@0
@0
@@@@ @z0@@ @z@ @z@0
@@ @z0@@ @z0@ @z@@ @z@ @z@ @z@8@0@0
@@@@ @z0@@ @z@ @z@ڠ0@@ @z@@ @z0
@ @z@ @z@ @z@8@/@/
@@@@ @z/@@ @z@ @z@/@@ @z/@@ @z0@ @z@@ @z@ @z@ @z@8@/@/
@@//@ @z@/@@ @z/@@ @z@ @z@ @z@9@/@/
@@@@ @z@//@ @z@ @z@%/@@ @z)/@@ @z@ @z@ @z@9"@/@/
@3/@@ @z///ؠ'@@ @zΠ/@ @z@@ @z@ @z@99@/@/
@J/@@ @z///Р>@@ @zӠ/@ @z@@ @z@ @z@9P@/@/
@I@@ @z@f/@@ @z0//ȠZ@@ @z٠/@ @z@@ @z@ @z@ @z@9l@/@/
@0"//Ġm@@ @z/@ @z@@ @z@/@@ @z/@@ @z@ @z@ @z@9@/@/
@0?//@@ @z/@ @z@@ @z/@@ @z@ @z@9@/@/
@/@@ @z/@ @z@@ @z/@@ @z@ @z@9@/@/
//@/@//@@ @z@ @z@ @z@@ @z//@9//@@ @z@//@@ @z@ @z@ @z@@ @z@/@@ @z@/@@ @z/@@ @z@ @z@ @z@ @z@ @z@9@/@/
@/@@ @{@/@@ @{ /@@ @z@ @z@ @z@9@/@/
@
/@@ @{@/@@ @{/@@ @{@ @{@ @{@:@/@/
@@/@//@ @{@ @{
@'/@@ @{@-/@@ @{1/@@ @{
@ @{	@ @{@ @{@:*@/@/
 @;&@@ @{@@ @{@,@@ @{/@@ @{@ @{@ @{@:?@/@/
!@@:@@ @{=@@ @{@ @{@Z/@@ @{^/@@ @{@ @{@ @{@:W@/@/
"@h/@@ @{:/}/|9/{@@ @{@ @{@:h@/z@/y
#@y/x@@ @{!/t/|@@ @{ @ @{@:v@/s@/r
$@@q@@ @{'/q@ @{&@::/m/l[/k@@ @{%/}@@ @{$@ @{#@ @{"@:@/j@/i
%@@@ @{,@@ @{+@@ @{*@@ @{)@ @{(@:@/h@/g
&@@@ @{1@@ @{0:i/f/e/d@@ @{/@@ @{.@ @{-@:@/c@/b
'@@:w/a/`@@ @{;@/_/[@@ @{:@ @{9@ @{8@:/Z/Y@@ @{7@/n@@ @{6/X@@ @{5@ @{4@ @{3@ @{2@:@/W@@@:/V@@ӱ/U1R@/T
(V  8 @@@A/S@@ @{@@@@:@@@/RA@/Q
)V  8 /P@A@A:/L/K/J/X@@ @{/I/H@@:@@@/GA@/F
*@/E@@ @{/D@@ @{@ @{@;@/@@/?
+@/>@@ @{/:@@ @{@ @{@;@/7@/6
,@/5@@ @{/1@@ @{@ @{@; @/0@//
-@%/.@@ @{)/2@@ @{@ @{@;.@/*@/)
.@3/(@@ @{@Z@@ @{@/1/$@@ @{@ @{@ @{@ @{@;C@/#@/"
/@H/!@@ @{@@@ @{/@@ @{@ @{@ @{@;U@/@/
0@Z/@@ @{@'@@ @{/ @ @{@ @{@;d@/@/
1@i/@@ @{@6@@ @{//@@ @{@ @{@ @{@;w@/
@/
2@|/@@ @{@I@@ @{//@@ @{@ @{@ @{@;@/@/
3@/@@ @{@\@@ @{@/
.@@ @{@ @{@ @{@ @{@;@.@.
4@.@@ @{@p@@ @{.@@ @{@ @{@ @{@;@.@.
5@@~@@ @| @..@@ @{@ @{@ @{@.@@ @{.@@ @{@ @{@ @{@;@.@.
6@@@@ @|@...@@ @|@ @|@ @|@۠.@@ @|.@@ @|@ @|@ @|@;@.@.
7@@@@ @|@.@..@ @|@ @|@ @|
@.@@ @|@..@ @|@ @|
@ @|	@;@.@.
8@.@@ @|.@@ @|@ @|@<@.@.
9@.@@ @|...@@ @|@ @|@<@.@.
:@.@@ @|...@@ @|.@ @|@@ @|@ @|@<-@.@.
;@2.@@ @|...@@ @|@@ @|@ @|@<@@.@.
<@E.@@ @|"....@@ @|!@ @| @<P@.@.
=@U.@@ @|)@/ ..*@@ @|(.@ @|'@@ @|&.@@ @|%@ @|$@ @|#@<l@.@.
>@q.@@ @|0@/..F@@ @|/.@ @|.@@ @|-.@@ @|,@ @|+@ @|*@<@.@.
?@/2..\@@ @|5.@ @|4@@ @|3.@@ @|2@ @|1@<@.@.
@@.@@ @|:.
.@@ @|9.@ @|8@@ @|7@ @|6@<@.@.
A@.
.@@ @|?.@ @|>@@ @|=Ơ.@@ @|<@ @|;@<@.@.
B@Р.@@ @|B<..
..@@ @|A@ @|@@<@.~@.}
C@<.|.{
.z.y@@ @|E.}@@ @|D@ @|C@<@.u@.t
D@.s@@ @|L@@@@ @|K.{@ @|J@@@ @|I.@ @|H@ @|G@ @|F@=@.o@.n
E@
.m@@ @|Q@@.r.i@ @|P.l@@ @|O@ @|N@ @|M@=@.e@@@=.d@@@d@ӱ=)
FW@=(
W  8 @@@A@@ @  x@@@@=$@@@= A@=
@@@ @  w@@@ @  v=@@ @  u@ @  t@ @  s@=6@=@=
@@@ @  r=@@ @  q@ @  p@=B@=@=
@@@ @  o@#@@ @  n=@@ @  m@ @  l@ @  k@=S@=@=
@=
=
@@ @  j@5@@ @  i=	@@ @  h@ @  g@ @  f@=e@=@=
@= ==@@ @  e@H@@ @  d=@@ @  c@ @  b@ @  a@=x@=@@@=x= @@=s
G@i<@@ @  `@=@@ @  _=t@@ @  ^@ @  ]@ @  \@=@=q@=o
H@=@@ @  [=o@@ @  Z@ @  Y@=@=l@=k
I@!=@@ @  X@'=%@@ @  W=l@@ @  V@ @  U@ @  T@=@=i@=g
J@=f=c@@ @  S@:=8@@ @  R=c@@ @  Q@ @  P@ @  O@=@=`@=_
K@=z=^=]@@ @  N@N=L@@ @  M=]@@ @  L@ @  K@ @  J@=@=\@ӱ<
LW@<
W  8 @@@A_<@@ @  I@@@@=@@@<A@<
W  8 @@@A=<<k<@@ @  H@@@@=@@@<A@<
@@ @  G@=@<@<
@
@@ @  F<@@ @  E@ @  D@>@<@<
@0@@ @  C@@@ @  B<@@ @  A@ @  @@ @  ?@>@<@<
@@@ @  >@-@@ @  =0@@ @  <@ @  ;@ @  :@>$@<@<
@#@@ @  9<@@ @  8@ @  7@>0@<@<
@/@@ @  6@J@@ @  5M@@ @  4@ @  3@ @  2@>A@<@<
@V@@ @  1@[@@ @  0^@@ @  /@ @  .@ @  -@>R@<@<
@g@@ @  ,@l@@ @  +o@@ @  *@ @  )@ @  (@>c@<@<
@x@@ @  '@}@@ @  &<@@ @  %@ @  $@ @  #@>t@<@<
@@@ @  "@@@ @  !@@ @   @ @  @ @  @>@<@<
@@@ @  @@@ @  <@@ @  @ @  @ @  @>@<@<
@@@ @  @@@ @  <@@ @  @ @  @ @  @>@<@<
@@@ @  @@@ @  <@@ @  @ @  @ @  @>@<@<
@@@@ @  <@@ @  
@ @  @@@ @  <@@ @  
@ @  	@ @  @>@<@<
@@@@ @  @<<@ @  @ @  @@@ @  @<<@ @  @ @  @ @  @>@<@<
@@@@ @   <@@ @  @ @  @@@ @  <@@ @  @ @  @ @  @>@<@<
@@@@ @  <@@ @  @ @  @@@ @  <@@ @  @ @  @ @  @?@<@<
@@@@ @  <@@ @  @ @  @-@@ @  0@@ @  @ @  @ @  @?$@<@<
@@%@@ @  <+@@ @  @@ @  @ @  @G@@ @  J@@ @  @ @  @ @  @?>@<@<
@@?@@ @  <@@ @  @ @  @]@@ @  c@@ @  ޠg@@ @  @ @  @ @  @ @  @?[@<@<
@p@@ @  <@@ @  @ @  @?g@<@<
@|@@ @  <l@@ @  @@ @  @ @  @?w@<@<
@@@ @  y@@ @  @ @  @?@<@<
@@@ @  <@@ @  @@ @  @ @  @?@<@<
@@@ @  @@ @  @ @  @?@<@<
@@@ @  <@@ @  @@ @  @ @  @?@<@<
@@@ @  @@ @  @ @  @?@<@<
@@@ @  <@@ @  @@ @  @ @  @?@<@<
@@@ @  @@@ @  @@ @  <@@ @  @@ @  @ @  @ @  @ @  @?@<@<
@@@ @  @@@ @  @@ @  @ @  @ @  @?@<@<
@@@ @  @@@ @  <@@ @  @@ @  @ @  @ @  @@
@<@<
@@@@ @  <@@ @  @ @  @,@@ @  @@ @  @ @  @ @  @@#@<@<
@@$@@ @  <@@ @  @ @  @B@@ @  <2@@ @  @@ @  @ @  @ @  @@=@<@<
@@>@@ @  <@@ @  @ @  @\@@ @  I@@ @  @ @  @ @  @@S@<@<
@@T@@ @  <@@ @  @ @  @r@@ @  <b@@ @  @@ @  @ @  @ @  @@m@<@<
@l@@ @  @@@ @  <<<y@@ @  @@ @  @ @  @ @  @@@<~@<}
@@@ @  <<|<{@@ @  @@ @  @ @  @@@<z@<y
@@@ @  <<x<w@@ @  @@ @  @ @  @@@<v@<u
@<<t<s@@ @  @@ @  ~@@@ @  }@@ @  |@ @  {@ @  z@@@<r@<q
@<<p<o@@ @  y@@ @  x@@ @  w@ @  v@@@<n@<m
@@<l@@ @  u@@@ @  t<k@@ @  s@ @  r@ @  q@@@<j@<i
@@<h<g@@ @  p@@@ @  o<f@@ @  n@ @  m@ @  l@@@<e@<d
@@@ @  k<c@@ @  j@ @  i@A@<`@<_
@<^@@ @  h@@ @  g@@ @  f@ @  e@A@<[@<Z
@@@@ @  d@@ @  c@ @  b@1@@ @  a4@@ @  `@ @  _@ @  ^@A(@<Y@@@A(<X@@ӱ<W
MW@<V
mW  8 @@@A<U@@ @  ]@@@@A6@@@<TA@<S
nW  8 <R@A@A@<N<M<L<Z@@ @  \<K<J@@AD@@@<IA@<H
o<G@@ @  [@AM@<C@<B
p@<A@@ @  Z<=@@ @  Y@ @  X@AZ@<:@<9
q@4@@ @  W@<8@@ @  V<4@@ @  U@ @  T@ @  S@Am@<3@<2
r@@@ @  R@<1@2<6@@ @  Q6<:@@ @  P@ @  O@ @  N@ @  M@A@<-@<,
s@(@@ @  L@@<+<(@@ @  K<$<,@@ @  J@ @  I@Q<2@@ @  HU<6@@ @  G@ @  F@ @  E@ @  D@A@<#@<"
t@G@@ @  C@<!d<$@@ @  B@ @  A@ @  @@A@<@<
u@V@@ @  ?@s<@@ @  >w<@@ @  =@ @  <@ @  ;@A@<@<
v@@k@@ @  :@<<@@ @  9@<<@@ @  8<<
@@ @  7@ @  6@ @  5@ @  4@<$@@ @  3@<@@ @  2<@@ @  1@ @  0@ @  /@ @  .@A@<@<
w@@@@ @  -@<@<< <	@@ @  ,@ @  +@ @  *@ @  )@<@@ @  (@<@@ @  'Š<@@ @  &@ @  %@ @  $@ @  #@B@;@;
x@@;@;;@@ @  "@ @  !@ @   @ؠ<@@ @  @ޠ<
@@ @  ;@@ @  @ @  @ @  @ @  @B-@;@;
y@@;@;;@@ @  @ @  @ @  @;@@ @  @<@@ @  ;@@ @  @ @  @ @  @ @  @BI@;@;
z@@@@ @  @;;@@ @  @ @  @ @  
@;@@ @  ;@@ @  @ @  
@ @  	@Bb@;@;
{@@
@@ @  @;@;;@ @  @ @  @ @  @+;@@ @  @;;@ @  @ @  @ @  @By@;@;
|@@!@@ @   @;;@@ @  @ @  @ @  @C;@@ @  ;@@ @  @ @  @ @  @B@;@;
}@@:@@ @  @;;@@ @  @ @  @ @  @\;@@ @  ;@@ @  @ @  @ @  @B@;@;
~@@S@@ @  @;;@@ @  @ @  @ @  @u;@@ @  y;@@ @  @ @  @ @  @B@;@;
@@m@@ @  @;;;@@ @  @ @  @ @  @;@@ @  ;@@ @  @ @  @ @  @B@;@;
@@@@ @  @;;@@ @  @ @  @ @  @;@@ @  ;@@ @  ڠ;@@ @  @ @  @ @  @ @  @C@;@;
@;@@ @  ;@@ @  @ @  @C@;@;
@͠;@@ @  ;@@ @  Ҡ;@ @  @@ @  @ @  @C$@;@;
@;@@ @  @@ @  ͠;@ @  @ @  @C5@;@;
@;@@ @  ;@@ @  ɠ;@ @  @@ @  @ @  @CJ@;@;
@;@@ @  @@ @  Ġ;@ @  @ @  @C[@;@;
@;@@ @  ;@@ @  ;@ @  @@ @  @ @  @Cp@;@;
@.;@@ @  @@ @  ;@ @  @ @  @C@;@;
@?;@@ @  ;|1@@ @  ;@ @  @@ @  @ @  @C@;{@;z
@<@@ @  @Y;y@@ @  `;@@ @  ;u;@@ @  j;@@ @  @ @  @ @  @ @  @C@;t@;s
@\@@ @  @y;r@@ @  ;s@ @  @ @  @C@;n@;m
@k@@ @  @;l@@ @  ;h;p@@ @  @ @  @ @  @C@;g@;f
@@@@ @  ;e@@ @  @ @  @;d@@ @  @@ @  ;l@ @  @ @  @ @  @C@;`@;_
@@@@ @  ;^@@ @  @ @  @;]@@ @  ;Y@@ @  ;h@ @  @@ @  @ @  @ @  @D@;X@;W
@@@@ @  ;V@@ @  @ @  @ڠ;U@@ @  @@ @  ;]@ @  @ @  @ @  @D-@;Q@;P
@@@@ @  ;O@@ @  @ @  @;N@@ @  ;J@@ @  ;Y@ @  @@ @  @ @  @ @  @DL@;I@;H
@@;G;C@ @  @;L@@ @  ;L@@ @  ~@ @  }@ @  |@D^@;?@;>
@@@@ @  {@;=;9@ @  z@ @  y@%;B@@ @  x);B@@ @  w@ @  v@ @  u@Du@;5@;4
@3;3@@ @  t;/;,;+'@@ @  s;@@ @  r@@ @  q@ @  p@D@;*@;)
@J;(@@ @  o;F;$;#>@@ @  n;5@ @  m@@ @  l@ @  k@D@;"@;!
@I@@ @  j@f; @@ @  i;b;;Z@@ @  h;-@ @  g@@ @  f@ @  e@ @  d@D@;@;
@;u;;m@@ @  c;@ @  b@@ @  a@;@@ @  `; @@ @  _@ @  ^@ @  ]@D@;@;
@;;;@@ @  \;@ @  [@@ @  Z;@@ @  Y@ @  X@D@;
@;	
@;@@ @  W;@ @  V@@ @  U;@@ @  T@ @  S@E@;@;
;:@:@::@@ @  R@ @  Q@ @  P@@ @  O:;@D::@@ @  N@;:@@ @  M@ @  L@ @  K@@ @  J@;@@ @  I@;@@ @  H;#@@ @  G@ @  F@ @  E@ @  D@ @  C@E;@:@:
@:@@ @  B@:@@ @  A:@@ @  @@ @  ?@ @  >@EO@:@:
@
:@@ @  =@:@@ @  <:@@ @  ;@ @  :@ @  9@Ec@:@:
@@:@::@ @  8@ @  7@':@@ @  6@-:@@ @  51:@@ @  4@ @  3@ @  2@ @  1@E}@:@:
@;&@@ @  0@@ @  /@,@@ @  ./@@ @  -@ @  ,@ @  +@E@:@:
@@:@@ @  *=@@ @  )@ @  (@Z:@@ @  '^:@@ @  &@ @  %@ @  $@E@:@:
@h:@@ @  #Ek::9:@@ @  "@ @  !@E@:@:
@y:@@ @   :Ǡ:@@ @  @ @  @E@:@:
@@q@@ @  :@ @  @E::[:@@ @  :@@ @  @ @  @ @  @E@:@:
@@@ @  @@ @  @@ @  @@ @  @ @  @E@:@:
@@@ @  @@ @  E:::@@ @  @@ @  @ @  @F
@:@:
@@E::@@ @  
@::@@ @  @ @  @ @  
@E::@@ @  	@:@@ @  :@@ @  @ @  @ @  @ @  @F/@:@@@F/:@@ӱ:
NW@:
OW  8 @@@A:@@ @  @@@@F=@@@:A@:
PW  8 :@A@AE::::@@ @  ::@@FK@@@:A@:
Q@:@@ @  :@@ @   @ @  @FY@:@:
R@:@@ @  :@@ @  @ @  @Ff@:@:
S@:@@ @  :@@ @  @ @  @Fs@:@:
T@%:@@ @  ):@@ @  @ @  @F@:}@:|
U@3:{@@ @  @Z@@ @  @::w@@ @  @ @  @ @  @ @  @F@:v@:u
V@H:t@@ @  @@@ @  :p@@ @  @ @  @ @  @F@:o@:n
W@Z:m@@ @  @'@@ @  :s@ @  @ @  @F@:i@:h
X@i:g@@ @  @6@@ @  :c:p@@ @  @ @  @ @  @F@:`@:_
Y@|:^@@ @  @I@@ @  :Z:g@@ @  @ @  @ @  @F@:W@:V
Z@:U@@ @  @\@@ @  @:]:Q@@ @  @ @  @ @  @ @  @F@:P@:O
[@:N@@ @  @p@@ @  :J@@ @  @ @  @ @  @G@:I@:H
\@@~@@ @  @:G:C@@ @  @ @  @ @  @:O@@ @  :B@@ @  @ @  @ @  @G@:A@:@
]@@@@ @  @:?:;:B@@ @  @ @  @ @  @۠:H@@ @  ::@@ @  @ @  @ @  @G6@:9@:8
^@@@@ @  @:7@:3:3@ @  @ @  @ @  @:>@@ @  @:;:;@ @  @ @  @ @  @GM@:/@:.
_@:-@@ @  :)@@ @  @ @  @GZ@:(@:'
`@:&@@ @  :"::@@ @  @ @  @Gi@:@:
a@:@@ @  :::@@ @  :(@ @  @@ @  @ @  @G@:@:
b@2:@@ @  :.::
@@ @  @@ @  @ @  @G@:@:
c@E:
@@ @  :A:::@@ @  @ @  @G@:@:
d@U:@@ @  @:S99*@@ @  :@ @  @@ @  9@@ @  @ @  @ @  @G@9@9
e@q9@@ @  @:o99F@@ @  :@ @  @@ @  9@@ @  @ @  @ @  @G@9@9
f@:99\@@ @  9@ @  @@ @  9@@ @  @ @  @G@9@9
g@9@@ @  9
9@@ @  9@ @  @@ @  @ @  @H@9@9
h@9
9@@ @  9@ @  @@ @  Ơ9@@ @  @ @  @H@9@9
i@Р9@@ @  G99
9Ҡ9@@ @  @ @  @H0@9@9
j@G99
9͠9@@ @  9@@ @  @ @  @HB@9@9
k@9@@ @  @@@@ @  9@ @  @@@ @  9@ @  @ @  @ @  ~@HX@9@9
l@
9@@ @  }@@99@ @  |9@@ @  {@ @  z@ @  y@Hj@9@@@Hj9@@@H O	i	k@@@@A@X


٠
Ǡ

NH@  0 99999999@ði@h








@
X@WQ@P@@H L	A	PH X
j
m@  0 99999999@@@@@H L	A	A@@@H@4A@((@@(@&P@&N&@@&H@">@"<"	@@"6@@@@@@Ht@@@  0 99999999@@@@@@=
O:@@ @  @@::@ @  
:@@ @  @ @  @ @  @H@9@!t
!a @  ~@@ @  @@	!b @  |@ @  }@@ @  {@ @  z@ @  y@6utils/identifiable.mli n n@@,Identifiableo@3:S@@ @  @@=QO@@ @  :]@ @  @@@ @  :b@ @  @ @  @ @  @H@:Q@7!a @  @@ @  @@#key
@@ @  @ @  @@@ @  @ @  @ @  @ @  @7@3n@H::cI::@@ @  o:@@ @  @ @  @I@:@&Stdlib#Map$Make!T
!t!a @  @@ @  z@@ @  @ @  @g@cm@:@@ @  H::4::@@ @  @ @  @IC@:@!a @  @@ @  6#Map$Make3!t@@ @  @ @  @@l@;1[;0@@ @  ຠ;/@ @  @@ @  ɠ;3@@ @  @ @  @Io@;+@$listI[!t@@ @  !a @  @ @  @@ @  Ӡ@@ @  @ @  @@k@;@@ @  ;|;{@@ @  ྠ;@ @  @@ @  @ @  @I@;z@!a @  @@ @  9!t@@ @  @ @  @@ @  @ @  @@j@<c;;͠@@ @  Ġ;@ @  @@ @  *;@@ @  @ @  @I@;@&Stdlib#Seq!t@@ @  !a @  @ @  @@ @  6@@ @  @ @  @#@/Stdlib__Hashtblz@R<(@@ @  @<<$<#%@@ @  ʠ<7@ @  @@ @  <"@@ @  @ @  @ @  @J
@<!@Z!a @  @@ @  @D#Seq!t+@@ @  @ @  @@ @  $unitF@@ @  @ @  @ @  @b@?y@<@@ @  @<<<c@@ @  Ѡ<@ @  @@ @  <@@ @  @ @  @ @  @JH@<@!a @  @@ @  @#Seq!ti@@ @  @ @  @@ @  >@@ @  @ @  @ @  @@{x@̠<@@ @  =<<ڠ<@@ @  @ @  @Jx@<@Ƞ!a @  @@ @  #Seq!t@@ @  @ @  @@w@=@@ @  =9==@@ @  @@ @  @ @  @J@=@@ @  @@ @  #Seq!t@@ @  @@ @  @ @  @@v@=d@@ @  =`=]=\@@ @  ݠ=q@ @  @@ @  @ @  @J@=[@!a @  @@ @  #Seq!t@@ @  @ @  @@ @  @ @  @@u@G=@@ @  ===@@ @  @ @  @J@=@B!a @  @@ @  &Stdlib'Hashtbl*statistics@@ @  @ @  @=@t@k=@@ @  =@@ @  @ @  @K@=@d!a @  @@ @  #intA@@ @  @ @  @[@8s@@P@@ @  @>&@>">"@ @  @ @  @ @  @>-@@ @  @>*>*@ @  @ @  @ @  @K<@>@@K@@ @  @!a @  @!b @  @ @  @ @  @ @  @@@ @  @@ @  @ @  @ @  @@kr@@@@ @  @>{>w>~@@ @  @ @  @ @  @ɠ>@@ @  >v@@ @  @ @  @ @  @Kr@>u@@@@ @  @!a @  &optionJ
@@ @  @ @  @ @  @֠@@ @  g@@ @  @ @  @ @  @@q@@@@ @  @>>@@ @  @ @  @ @  @>@@ @  >@@ @  @ @  @ @  @K@>@@@@ @  @!a @  @@ @  @ @  @ @  @
@@ @  @@ @  @ @  @ @  @@p@*?#@@ @  @@@ @   ?@@ @  @ @  @ @  @K@?@(!a @  @@ @  @@@ @  $boolE@@ @  @ @  @ @  @$@o@R?f@@ @  @@@ @  @?n?b@@ @  @ @  @ @  @ @  @L@?a@R!a @  @@ @  @@@ @  @@@ @  @ @  @ @  @ @  @N@+n@|?@@ @  @G@@ @  ??@@ @  
@ @  	@ @  @L+@?@{!a @  @@ @  @B@@ @  $listI@@ @  @ @  @ @  @x@Um@?@@ @  @q@@ @  ??@@ @  @ @  @ @  
@LU@?@!a @  @@ @  @l@@ @  @@ @  @ @  @ @  @@}l@Π@/@@ @  @@@ @  @5@ @  @ @  @Ly@@+@ɠ!a @   @@ @  @@@ @  
@ @  @ @  @@k@@g@@ @  @@@ @  @c@@ @  @ @  @ @  @L@@b@!a @  @@ @  @@@ @  @@ @  @ @  @ @  @@j@@@@ @   @@@ @  @@@@@ @  @ @  @ @  @ @  @L@@@!a @  
@@ @  @@@ @  @@@ @  @ @  @ @  
@ @  	@@i@=@@@ @  #A@@@ @  "@ @  !@L@@@7!a @  @@ @  ?@@ @  @ @  @,@	h@ZA@@ @  &A@@ @  %@ @  $@M@A@S!a @  @@ @  @@ @  @ @  @H@%g@vAJ@@ @  )AF@@ @  (@ @  '@M@AC@o!a @  @@ @  @@ @  @ @  @d@Af@A{@@ @  ,Ay@@ @  +@ @  *@M;@Au@@@ @  !a @  @@ @  @ @  @@]e@@MAA@@ @  @AA@@ @  @ @  @ @  @MAA@@ @  @HOB @@ @  
A@@ @  @ @  @ @  
@ @  	@Mn@A@@Y&Format)formatter@@ @  -@!a @  ($unitF@@ @  ,@ @  +@ @  *@n&Format)formatter@@ @  )@!t@@ @  '@@ @  &@ @  %@ @  $@ @  #@ m m@@b@@HO@@ @  @@ @  IMhBeBdBc@@ @  @@ @  @ @  @M@Bb@+#key@@ @  2@@ @  15#Set$Make!t@@ @  0@@ @  /@ @  .@8@a@u5@@ @  @@ @  |<@@ @  @@ @  @ @  @M@B@Z/@@ @  7@@ @  6a6@@ @  5@@ @  4@ @  3@]@+`@@Y@@ @  "B@ @  !@MBBB@@ @   C @@ @  @ @  @ @  @N@B@@W@@ @  >!a @  ;@ @  =@#Set$Make!t@@ @  <@@ @  :@ @  9@ @  8@@__@ΠC=@@ @  %C9CA@@ @  $@ @  #@N;@C8@!a @  A@@ @  BԠ	@@ @  @@ @  ?@@}^@Cu@@ @  (NCqCpNCo@@ @  '@ @  &@N\@Cn@Π!a @  F@@ @  EO#Set$MakeL!t@@ @  D@ @  C@@]@@@@ @  /@@ @  .@ @  -@C@@ @  , C@@ @  +@ @  *@ @  )@N@C@@@@ @  N@@ @  M@ @  L@!a @  J@@ @  K
@@ @  I@ @  H@ @  G@@\@C@@ @  5@@ @  4@	@@ @  3@@ @  2@ @  1@ @  0@N@D@)@@ @  T@@ @  S@@@ @  R@@ @  Q@ @  P@ @  O@-@[@@DH@DJDJ@ @  =@ @  <@pDO@@ @  ;@vDU@@ @  :zDY@@ @  9@ @  8@ @  7@ @  6@N@DD@@!a @  Y@@ @  ]@ @  \@_@@ @  [@e@@ @  Zi@@ @  X@ @  W@ @  V@ @  U@b@0Z@D@@ @  B@D@@ @  AD@@ @  @@ @  ?@ @  >@O@D@!a @  a@@ @  c@
@@ @  b@@ @  `@ @  _@ @  ^@@YY@ȠD@@ @  G@ΠD@@ @  FҠD@@ @  E@ @  D@ @  C@O;@D@!a @  g@@ @  i@
@@ @  h@@ @  f@ @  e@ @  d@@XEIEG@ED@EFE@@@ @  W@ @  V@ @  U@@ @  TE=ET@OE;E:@@ @  S@EXE9@@ @  R@ @  Q@ @  P@@ @  O@Ea@@ @  N@Eg@@ @  MEk@@ @  L@ @  K@ @  J@ @  I@ @  H@O@E8"eq&optionJ@!a @  o@$boolE@@ @  z@ @  y@ @  x@@ @  w%print@&Format)formatter@@ @  v@/@@ @  u@ @  t@ @  s@@ @  r@%)@@ @  q@+/@@ @  p/3@@ @  n@ @  m@ @  l@ @  k@ @  j@(@W@E٠(@@ @  \E@ @  [@@ @  ZpE@@ @  Y@ @  X@O@E@j$@@ @  !a @  }@ @  @@ @  ~[@@ @  |@ @  {@T@"V@FF$F#V@@ @  aF"@ @  `@@ @  _F&@@ @  ^@ @  ]@P@F@&Stdlib#Seq!tX@@ @  !a @  @ @  @@ @  @@ @  @ @  @@+Stdlib__Mapl@FF~F}@@ @  hF|@ @  g@@ @  f@ՠF@@ @  e٠F@@ @  d@ @  c@ @  b@PB@Fx@;#Seq!t@@ @  !a @  @ @  @@ @  @ɠ
@@ @  ͠@@ @  @ @  @ @  @@>k@@@ @  o@F@@ @  nG!FFڠ@@ @  mF@ @  l@@ @  k@ @  j@ @  i@P~@F@@@ @  @!a @  @@ @  #Seq!t@@ @  @ @  @@ @  @ @  @ @  @@yj@>G9@@ @  tGWG5G4@@ @  sGF@ @  r@@ @  q@ @  p@P@G3@&!a @  @@ @  #Seq!t
@@ @  @ @  @@ @  @ @  @2@i@oG@@ @  yGGG8@@ @  xG@ @  w@@ @  v@ @  u@P@G@W!a @  @@ @  #Seq!t;@@ @  @ @  @@ @  @ @  @c@h@@_@@ @  ̀@GG@ @  @ @  ~@G@@ @  }G@@ @  |@ @  {@ @  z@Q@G@@\@@ @  @!a @  !b @  @ @  @ @  @
@@ @  
@@ @  @ @  @ @  @@g@@H-H)@ @  ͅ@נH2@@ @  ̈́۠H2@@ @  ̓@ @  ͂@ @  ́@QD@H%@@!a @  !b @  @ @  @ 
@@ @  Ơ
@@ @  @ @  @ @  @@7f@@@@ @  ͎H}@@ @  ͍@ @  ͌@H|@@ @  ͋Hx@@ @  ͊H@ @  ͉@@ @  ͈@ @  ͇@ @  ͆@Qz@Hw@@@@ @  $boolE@@ @  @ @  @!a @  @@ @  &optionJ@@ @  @ @  @@ @  @ @  @ @  @@|e@@ @@ @  ͖H@@ @  ͕@ @  ͔@KH@@ @  ͓@@ @  ͒H@ @  ͑@ @  ͐@ @  ͏@Q@H@@@@ @  A@@ @  @ @  @8!a @  @@ @  @@ @  @ @  @ @  @ @  @<@d@@8@@ @  ͟IC@@ @  ͞@ @  ͝@IB@@ @  ͜I>J@@ @  ͛IM@ @  ͚@@ @  ͙@ @  ͘@ @  ͗@Q@I=@@=@@ @  }@@ @  @ @  @t!a @  @@ @  {U@@ @  ʠ@ @  @@ @  @ @  @ @  @}@c@@y@@ @  ͧI@@ @  ͦ@ @  ͥ@ĠI@@ @  ͤ@@ @  ͣI@ @  ͢@ @  ͡@ @  ͠@R4@I@@z@@ @  @@ @  @ @  @!a @  @@ @  @@ @  Ӡ@ @  @ @  @ @  @@-b@@@ @  ͬ@I@@ @  ͫII@@ @  ͪ@ @  ͩ@ @  ͨ@Rd@I@@@ @  @۠!a @  @@ @  	@@ @  @ @  @ @  @@Ua@@@ @  Ͱ@J5@@ @  ͯJ6@ @  ͮ@ @  ͭ@R@J1@@@ @  @!a @  @@ @  @ @  @ @  @@t`@@@ @  ͸@>J{@@ @  ͷEJ@@ @  ʹJwJ@@ @  ͵OJ@@ @  Ͷ@ @  ͳ@ @  Ͳ@ @  ͱ@R@Jv@@@ @  @/!a @  @@ @  :@@ @  >@@ @  E@@ @  @ @  @ @  @ @  @>@_@{J@@ @  ͽJՠB@@ @  ͼJ@ @  ͻ@@ @  ͺ@ @  ͹@R@J@a!a @  @@ @  hB@@ @  @ @  @@ @  @ @  @j@^@K@@ @  k@@ @  K$@ @  Ϳ@ @  ;@S@K@!a @  @@ @  f@@ @  @ @  @ @  @@]@ʠK[@@ @  KW@@ @  ŠKf@ @  @@ @  @ @  @S>@KV@!a @  @@ @  @@ @  @ @  @@ @  @ @  @@1\@K@@ @  @@ @  ɠK@ @  @ @  @Sf@K@ؠ!a @  @@ @  @@ @   @ @  @ @  @@T[@K@@ @  K٠@@ @  ΠK@ @  @@ @  @ @  @S@K@!a @  @@ @  @@ @  @ @  @@ @  @ @  @@Z@EL @@ @  	@@ @  ҠL(@ @  @ @  @S@L@'!a @  @@ @  
@@ @  @ @  
@ @  	@+@Y@hLa@@ @  L]/@@ @  נLl@ @  @@ @  @ @  @S@LZ@N!a @  @@ @  $listI1@@ @  @ @  @@ @  @ @  @Y@X@L@@ @  L@@ @  @ @  @T@L@t!a @  @@ @  #intA@@ @  @ @  @w@W@@s@@ @  @LL@@ @  @ @  @ @  @L@@ @  ǠL@@ @  ߠ̠L@@ @  @ @  @ @  @ @  @T5@L@@{@@ @  "@!a @  @@ @  !@ @   @ @  @
@@ @  @@ @  Ġ@@ @  @ @  @ @  @ @  @@5V@@@@ @  @MVMRMQ@@ @  @ @  @ @  @M_@@ @  M[@@ @  @ @  @ @  @Tt@MM@@@@ @  ,@!a @  (!b @  &@@ @  +@ @  *@ @  )@@@ @  ' @@ @  %@ @  $@ @  #@@qU@@@@ @  @MM@@ @  @ @  @ @  @BM@@ @  FM@@ @  @ @  @ @  @T@M@@@@ @  5@!a @  0;@@ @  4@ @  3@ @  2@2
@@ @  16@@ @  /@ @  .@ @  -@/@T@@+@@ @  @N
N@@ @  @ @  @ @  @xN@@ @  N@@ @  @ @  @ @  @T@N@@*@@ @  >@!a @  :p@@ @  =@ @  <@ @  ;@g
@@ @  9z@@ @  8@ @  7@ @  6@d@S@@`@@ @  @N`N\@@ @  @ @  @ @  @Nh@@ @  N[@@ @   @ @  @ @  @U@NZ@@_@@ @  G@!a @  C@@ @  F@ @  E@ @  D@
@@ @  B@@ @  A@ @  @@ @  ?@@R@@@@ @  
@N@NN@ @  @ @  @ @  
@N@@ @  	@NN@ @  @ @  @ @  @UL@N@@@@ @  Q@!a @  M@!b @  K@ @  P@ @  O@ @  N@Ѡ@@ @  L@@ @  J@ @  I@ @  H@@DQ@@@@ @  @OO@@ @  @ @  @ @  @O@@ @  O@@ @  @ @  @ @  @U@O@@@@ @  Z@!a @  V$unitF@@ @  Y@ @  X@ @  W@@@ @  U@@ @  T@ @  S@ @  R@@{P@@Og@OiOc@@ @  @ @  @ @  @IOq@@ @  @OOw@@ @  Ob@@ @  @ @  @ @  @ @  @U@Oa@@!a @  `@D@@ @  d@ @  c@ @  b@;@@ @  a@A@@ @  _T@@ @  ^@ @  ]@ @  \@ @  [@>@O@@O@OO@@ @  '@ @  &@ @  %@O@@ @  $@O@@ @  #O@@ @  "@ @  !@ @   @ @  @U@O@@!a @  j@@@ @  n@ @  m@ @  l@v@@ @  k@|@@ @  i@@ @  h@ @  g@ @  f@ @  e@y@N@@u@@ @  2@P+@P-P'P0@@ @  1@ @  0@ @  /@ @  .@ŠP6@@ @  -@ˠP<@@ @  ,ϠP@@@ @  +@ @  *@ @  )@ @  (@V8@P&@@~@@ @  z@!a @  s@
@@ @  y@ @  x@ @  w@ @  v@@@ @  u@Ġ@@ @  tȠ@@ @  r@ @  q@ @  p@ @  o@@9M@@@@ @  ?@PP@@ @  >@PP@@ @  =PP@@ @  <@ @  ;@ @  :@ @  9@	P@@ @  8@	P@@ @  7	P@@ @  6@ @  5@ @  4@ @  3@V@P@@@@ @  @ !a @  @@ @  @!b @  @@ @  !c @  @@ @  @ @  @ @  @ @  @	 @@ @  @	&@@ @  	*@@ @  ~@ @  }@ @  |@ @  {@	#@L@	@@ @  D@	eQ*@@ @  C	iQ.@@ @  B@ @  A@ @  @@V@Q&@	@@ @  @	I!a @  @@ @  	Q@@ @  @ @  @ @  @	J@K@	D@@ @  H@Qf	Qi@@ @  G@ @  F@ @  E@V@Qb@	9@@ @  @!a @  	p@@ @  @ @  @ @  @	i@J@	c@@ @  Q@@QQ@@ @  PQQ@@ @  O@ @  N@	Q@@ @  M	Q@@ @  L@ @  K@ @  J@ @  I@W$@Q@	h@@ @  @@!a @  @@ @  	@@ @  @ @  @	@@ @  	@@ @  @ @  @ @  @ @  @	@"I@	@@ @  W@R
@	R@@ @  V	R@@ @  U@ @  T@ @  S@ @  R@W[@R@	@@ @  @!a @  @	ؠ	@@ @  	ܠ
@@ @  @ @  @ @  @ @  @	@MH@	@@ @  \@
RN@@ @  [RJ@@ @  Z@ @  Y@ @  X@W@RI@	@@ @  @	!a @  @@ @  @@ @  @ @  @ @  @	@sG@
8R@@ @  _R@@ @  ^@ @  ]@W@R@
!a @  @@ @  -@@ @  @ @  @
@F
RR@@ @  `@W@R
+!a @  @@ @  @
(@E@@VO@@ @  @@ @  @ @  @VO@@ @  @@ @  @ @  @ @  @W@S@@#elt=@@ @  @@ @  @ @  @!t>@@ @  @@ @  @ @  @ @  @- l. l@@,Q@SV7@@ @  @@ @  1@@ @  @ @  @X
@SS@.@@ @  @@ @  '@@ @  @ @  @!@JP@H@@ @   S@@ @  @ @  @X$@S@9@@ @  &stringO@@ @  @ @  @9@bO@WSS@@ @  @g@@ @  S@@ @  @ @  @ @  @XC@S@,&Format)formatter@@ @  @a@@ @  
@@ @  @ @  @ @  @_@N@XS@@ @  
@@@ @  	S@@ @  @ @  @ @  @Xh@S@P+out_channel@@ @  @@@ @  
@@ @  @ @  @ @  @@M@TT*T)@@ @  @@ @  
@@ @  @ @  @X@T(@&Stdlib#Seq!t@@ @  @@ @  @@ @  @ @  @@+Stdlib__Setn@TTlTk@@ @  @@ @  @@@ @  @@ @  @ @  @ @  @X@Tj@,#Seq!t@@ @  @@ @  @@@ @  @@ @  @ @  @ @  @@.m@@@ @  TTT@@ @  @@ @  @ @  @X@T@@@ @  W#Seq!t	@@ @  @@ @  @ @  @@Ql@ @@ @  UTT2@@ @  @@ @  @ @  @Y@T@@@ @  z#Seq!t,@@ @  @@ @  @ @  @@tk@M@@ @  "@H@@ @  !U)U&U%Z@@ @   @@ @  @ @  @ @  @Y*@U$@J@@ @  @D@@ @  #Seq!tY@@ @  @@ @  @ @  @ @  @I@j@@|@@ @  *Ut@@ @  )@ @  (@z@@ @  'Us@@ @  &@@ @  %@ @  $@ @  #@YZ@Ur@@|@@ @  $boolE@@ @  @ @  @|@@ @  &optionJ@@ @  @@ @  @ @  @ @  @@h@@@@ @  1U@@ @  0@ @  /@@@ @  .@@ @  -@ @  ,@ @  +@Y@U@@@@ @  3@@ @  @ @  @@@ @  @@ @  @ @  @ @  @@g@@@@ @  9V@@ @  8@ @  7@@@ @  6V@@ @  5@@ @  4@ @  3@ @  2@Y@V
@@@@ @  a@@ @  @ @  @@@ @  _@@ @  @@ @  @ @  @ @  @@5f@@@@ @  @VX@@ @  ?@ @  >@@@ @  =@@ @  <@ @  ;@ @  :@Y@VW@@@@ @  @@ @  @ @  @
@@ @   @@ @  @ @  @ @  @@_e@8@@ @  F@3@@ @  EVC@@ @  D@@ @  C@ @  B@ @  A@Z@V@3@@ @  	@-@@ @  ?@@ @  @@ @  @ @  @ @  @/@d@`@@ @  K@[@@ @  Jh@@ @  I@ @  H@ @  G@Z7@V@W@@ @  @Q@@ @  
_@@ @  @ @  @ @  
@N@c@@@ @  S@z@@ @  R@@ @  OW@@ @  P@@ @  Q@ @  N@ @  M@ @  L@Za@W@@@ @  @{@@ @  @@ @  @@ @  @@ @  @ @  @ @  @ @  @@b@@@ @  WW\@@ @  V@@ @  U@ @  T@Z@W[@@@ @  $@@ @  @@ @  @ @  @@a@@@ @  Z@@ @  Y@ @  X@Z@W@@@ @  @@ @  @ @  @@`@@@ @  ^W@@ @  ]@@ @  \@ @  [@Z@W@@@ @  !W@@ @   @@ @  @ @  @@-_@@@ @  a	@@ @  `@ @  _@Z@W@@@ @  $@@ @  #@ @  "@@B^@@@ @  eX!@@ @  d@@ @  c@ @  b@Z@X@@@ @  (@@ @  '@@ @  &@ @  %@@`]@/@@ @  h<@@ @  g@ @  f@[@X0@ @@ @  +.@@ @  *@ @  )@@u\@D@@ @  lXZT@@ @  k@@ @  j@ @  i@[$@XW@9@@ @  /$listIM@@ @  .@@ @  -@ @  ,@=@[@d@@ @  oX@@ @  n@ @  m@[@@X@U@@ @  2#intA@@ @  1@ @  0@U@Z@@@@ @  xX@@ @  w@ @  v@@@ @  u@@ @  s@@ @  t@ @  r@ @  q@ @  p@[i@X@@@@ @  ;@@ @  :@ @  9@@@ @  8@@ @  6@@ @  7@ @  5@ @  4@ @  3@@Y@@@@ @  Y@@ @  @@ @  ~@ @  }@@@ @  |@@ @  {@ @  z@ @  y@[@Y@@@@ @  C9@@ @  B@@ @  A@ @  @@@@ @  ?@@ @  >@ @  =@ @  <@@X@@@@ @  Yc@@ @  @ @  @@@ @  @@ @  @ @  @ @  @[@Yb@@@@ @  Jr@@ @  I@ @  H@@@ @  G@@ @  F@ @  E@ @  D@@AW@@@@ @  Y@@ @  @ @  @@@ @  Y@@ @  @ @  @ @  @[@Y@@@@ @  Q@@ @  P@ @  O@@@ @  N@@ @  M@ @  L@ @  K@@lV@@G@@ @  Y@@ @  @ @  @E@@ @  Y@@ @  @ @  @ @  @\!@Y@@C@@ @  X@@ @  W@ @  V@A@@ @  U@@ @  T@ @  S@ @  R@?@U@@r@@ @  @Z1Z1@ @  @ @  @o@@ @  @Z8Z8@ @  @ @  @ @  @\J@Z-@@l@@ @  `@!a @  \@ @  _@ @  ^@l@@ @  ]@@ @  [@ @  Z@ @  Y@h@T@@@@ @  Zv@@ @  @ @  @@@ @  Zs@@ @  @ @  @ @  @\u@Zr@@@@ @  g$unitF@@ @  f@ @  e@@@ @  d@@ @  c@ @  b@ @  a@@R@@@ @  @@@ @  Z@@ @  @ @  @ @  @\@Z@@@ @  l@@@ @  kF@@ @  j@ @  i@ @  h@@
Q@@@ @  @@@ @  Z@@ @  @ @  @ @  @\@Z@@@ @  q@@@ @  pf@@ @  o@ @  n@ @  m@@-P@@@ @  @@@ @  [!@@ @  @ @  @ @  @\@[@@@ @  v@@@ @  u@@ @  t@ @  s@ @  r@@MO@@@ @  @!@@ @  $@@ @  @ @  @ @  @\@[T@@@ @  {@@@ @  z@@ @  y@ @  x@ @  w@@lN@;@@ @  @@@@ @  [@@ @  @ @  @ @  @]@[@1@@ @  @6@@ @  @@ @  ~@ @  }@ @  |@4@M@[@@ @  @`@@ @  c@@ @  @ @  @ @  @]<@[@Q@@ @  @V@@ @  Y@@ @  @ @  @ @  @S@L@z@@ @  @@@ @  @@ @  @ @  @ @  @][@[@p@@ @  @u@@ @  x@@ @  @ @  @ @  @r@K@@@ @  @@@ @  @@ @  @ @  @ @  @]z@\@@@ @  @@@ @  @@ @  @ @  @ @  @@J@@@ @  @@ @  @ @  @]@\K@@@ @  @@ @  @ @  @@I@@@ @  @@@ @  @@ @  @ @  @ @  @]@\s@@@ @  @@@ @  @@ @  @ @  @ @  @@H@@@ @  @@@ @  \@@ @  @ @  @ @  @]@\@@@ @  @@@ @  v@@ @  @ @  @ @  @@=G@@@ @  \@@ @  @ @  @]@\@@@ @  @@ @  @ @  @@SF @@ @  @]@\@@ @  @@^E >@&Format)formatter@@ @  @!t@@ @  @@ @  @ @  @ @  @K jcmL jc@@JD l@+out_channel@@ @  @@@ @  @@ @  @ @  @ @  @@_C @'@@ @  @-@@ @  
0@@ @  @ @  @ @  @,@A @';@@ @  ,@@ @  @ @  @:@ba @5I@@ @  @;O@@ @  w@@ @  @ @  @ @  @N@v`@^^^@@ @  $@^}O@@ @  #^@@ @  "@ @  !@ @   @^x@^@axw@@ @  @!tl@@ @  w@@ @  @ @  @ @  @__@@v@^G^D@@ @  )@)@@ @  (^C@@ @  '@ @  &@ @  %@^@^@@@@ @  @&@@ @  @@ @  @ @  @ @  @^^@@@F@@ @  .@K@@ @  -^@@ @  ,@ @  +@ @  *@^@^~@B@@ @  @G@@ @  @@ @  @ @  @ @  @\v\v@@@g@@ @  1^@@ @  0@ @  /@^@^@^@@ @  @@ @  @ @  @[HR[Hu@@@~@@ @  6@@@ @  5^@@ @  4@ @  3@ @  2@^@^@z@@ @  @@@ @  @@ @  @ @  @ @  @!@1n@!tr@@ @  #intA@@ @  @ @  @1utils/numbers.mlipp@@'NumbersM1@&Stdlib%Int64!t@@ @  !@@ @  @ @  @nn@@L6@'@@ @  1@@ @  @ @  @(m})m}@@'K8@!tv@@ @  =@@ @  @ @  @;gCE<gCZ@@:H9=@J@@ @  @@ @  @ @  @Kf')Lf'B@@JG<!@@ @  @UdVd%@@TF<+@@ @  @_c	`c	@@^E=D@n@@ @  &stringO@@ @  @ @  @r]s]@@qB>@@@ @  #Set!t@@ @  @ @  @\\@@A@T~AQ@@ @  j@@QQ@ @  i
Q@@ @  h@ @  g@ @  f@_@Q@ @  @@ @  @@ @  @ @  @@ @  @ @  @ @  @@@&QL@@ @  q@@TJ}A@@ @  pQV@ @  o@@@ @  nQ[@ @  m@ @  l@ @  k@_@QJ@* @  @@ @  @@@@ @  @ @  @@@ @  @ @  @ @  @ @  @,@@_QQ`:`QQ@@ @  t]Q@@ @  s@ @  r@`	@Q@| @  @@ @  ^@@ @  @ @  @Q@ꠠ@xQ@@ @  w_QQ)QΠQ@@ @  v@ @  u@`,@Q@v @  @@ @   (	@@ @  @ @  @r@㠠@RIR@@ @  |R@ @  {@@ @  zR@@ @  y@ @  x@`Q@R
@K@@ @   @  @ @  @@ @  @@ @  @ @  @@۠@ RZ@@ @  RVvRU@@ @  Rf@ @  @@ @  ~@ @  }@`z@RT@Ġ @  @@ @  נy@@ @  

@ @  	@@ @  @ @  @@ՠ@S7RR@@ @  R@ @  @@ @  R@@ @  @ @  @`@R@Р@@ @   @  @ @  @@ @  @@ @  @ @  
@@̠@R@@ @  @ShRR@@ @  S@ @  @@ @  R@@ @  @ @  @ @  @`@R@ @  @@ @  @Ơ@@ @  @ @  @@ @  @@ @  @ @  @ @  @$@ @KSL@@ @  @SSHSG+@@ @  S[@ @  @@ @  SF@@ @  @ @  @ @  @a	@SE@S @  !@@ @  "@@/@@ @   @ @  @@ @  @@ @  @ @  @ @  @Y@@S@@ @  SSSS@@ @  @ @  @a2@S@| @  %@@ @  &g@@ @  $@ @  #@v@@S@@ @  SSS̠x@@ @  @@ @  @ @  @aR@S@ @  +@@ @  *s@@ @  )@@ @  (@ @  '@@@T@@ @  TT
T@@ @  T!@ @  @@ @  @ @  @ay@T@à @  0@@ @  1@@ @  /@ @  .@@ @  -@ @  ,@@@TY@@ @  TUTRTQ@@ @  @ @  @a@TP@ @  5@@ @  4@@ @  3@ @  2@@@T@@ @  T@@ @  @ @  @a@T@ @  9@@ @  8@@ @  7@ @  6@@@@@@ @  @T@TT@ @  @ @  @ @  @(T@@ @  @TT@ @  @ @  @ @  @a@T@@@@ @  C@ @  ?@ @  =@ @  B@ @  A@ @  @@-	@@ @  >@		@ @  <@ @  ;@ @  :@"@@@@@ @  @UU
U@@ @  @ @  @ @  @VU@@ @  U	@@ @  @ @  @ @  @b@U@@@@ @  L@ @  H@@ @  K@ @  J@ @  I@]
@@ @  G@@ @  F@ @  E@ @  D@S@@@N@@ @  @U`U\@@ @  @ @  @ @  @Uh@@ @  U[@@ @  @ @  @ @  @b5@UZ@@N@@ @  U@ @  Q@@ @  T@ @  S@ @  R@	@@ @  P@@ @  O@ @  N@ @  M@@@U@@ @  @@@ @  U@@ @  @ @  @ @  @b]@U@ @  [@@ @  Z@{@@ @  Y@@ @  X@ @  W@ @  V@@@ʠU@@ @  @@@ @  @UU@@ @  @ @  @ @  @ @  @b@U@ʠ~ @  `@@ @  b@@@ @  a@	{@@ @  _@ @  ^@ @  ]@ @  \@@z@V%@@ @  @@@ @  V!V.@@ @  @ @  @ @  @b@V@y @  f@@ @  h@@@ @  gv
@@ @  e@ @  d@ @  c@@s@Vd@@ @  @@@ @  V`Vm@@ @  @ @  @ @  @b@V]@r @  l@@ @  n@@@ @  mo
@@ @  k@ @  j@ @  i@@n@5V@@ @  @
@@ @  V@ @  @ @  @b@V@0m @  q@@ @  s@@@ @  r@ @  p@ @  o@)@j@PV@@ @  @(@@ @  V@@ @  @ @  @ @  @c@V@Ni @  y@@ @  x@"@@ @  wf@@ @  v@ @  u@ @  t@J@e@qW
@@ @  @I@@ @  @WW@@ @  @ @  @ @  @ @  @c'@W@qd @  ~@@ @  @E@@ @  @	a@@ @  }@ @  |@ @  {@ @  z@o@`@WF@@ @  WJ@@ @  @ @  @cF@WB@_ @  @@ @  @@ @  @ @  @@\@Ws@@ @  Wo@@ @  @ @  @c^@Wn@[ @  @@ @  X@@ @  @ @  @@W@ƠW@@ @  W@@ @  @ @  @cu@W@V @  @@ @  S@@ @  @ @  @@R@W@@ @  W@@ @  @ @  @c@W@Q@@ @  ٠P @  @@ @  @ @  @@M@@cSX=X<@@ @  @X;X7@@ @  @ @  @ @  @c_X6X5@@ @  @^AXL@@ @  X6@@ @  @ @  @ @  @ @  @c@X5@@LK@@ @  @J @  G@@ @  @ @  @ @  @DC@@ @  @B@@ @  A@@ @  @ @  @ @  @ @  @@@=@0_A@@ @  @@ @  9cXXX@@ @  @@ @  @ @  @c@X@%<@@ @  @@ @  .;:9@@ @  @@ @  @ @  @p@8@`0@@ @  @@ @  g7@@ @  @@ @  @ @  @d@X@O*@@ @  @@ @  V1@@ @  @@ @  @ @  @@7@@S@@ @  Y*@ @  @cY&Y%AY$@@ @  Y6@@ @  @ @  @ @  @dG@Y#@@Q@@ @  6 @  @ @  @:32F1@@ @  
@@ @  @ @  @ @  @@0@Yl@@ @  YhYp@@ @  @ @  @dj@Yg@/ @  @@ @  ,@@ @  @ @  @@+@ʠY@@ @  d6YYY@@ @  @ @  @d@Y@* @  @@ @  v'&%@@ @  @ @  @@$@@@@ @  @@ @  @ @  @Y@@ @  Y@@ @  @ @  @ @  @d@Y@@@@ @  @@ @  @ @  @# @  @@ @  @@ @  @ @  @ @  @&@ @@@ @  @@ @  @@@ @  @@ @  @ @  @ @  @d@Z @@@ @  @@ @  @@@ @  @@ @  @ @  @ @  @L@@@Zf@ZhZh@ @  @ @  @BZm@@ @  @HZs@@ @  LZw@@ @  @ @  @ @  @ @  @e@Zb@@ @  @@ @  @ @  @8@@ @  @>@@ @  B@@ @  @ @  @ @  @ @  @}@@mZ@@ @  @sZ@@ @  wZ@@ @  @ @  @ @   @e,@Z@\ @  @@ @  @c@@ @  g@@ @  @ @  @ @  @@@Z@@ @  	@Z@@ @  Z@@ @  @ @  @ @  @eQ@Z@ @  @@ @  @@@ @  @@ @  @ @  @ @  @@[[[Y@[V@[X[R@@ @  @ @  @ @  @@ @  [O[f@e/[M[L@@ @  @[j[K@@ @  @ @  @ @  @@ @  @֠[s@@ @  @ܠ[y@@ @  [}@@ @  @ @  
@ @  @ @  @ @  
@e@[J@
 @  @
@@ @  @ @  @ @  @@ @  @@@ @  @@@ @  @ @  @ @  @@ @  @@@ @  @$@@ @  (@@ @  @ @  @ @  @ @  @ @  @*@@[ڠ@@ @  [@ @  @@ @  %[@@ @  @ @  @e@[@@@ @    @  @ @  @@ @  @@ @  @ @  @Q@@\\ \@@ @  #\@ @  "@@ @  !N\"@@ @   @ @  @f@\@@@ @   @  @ @  @@ @  A@@ @  @ @  @|@@\\p\oA@@ @  *\n@ @  )@@ @  (@{\t@@ @  '\x@@ @  &@ @  %@ @  $@f4@\j@-D@@ @   @  @ @  @@ @  @t@@ @  x@@ @  @ @  @ @  @@@p@@ @  1@\@@ @  0]
\\Ơ@@ @  /\@ @  .@@ @  -@ @  ,@ @  +@fj@\@r@@ @  @ @  @@ @  m@@ @  @ @  @@ @  @ @  @ @   @@砠@ؠ]@@ @  6]=]]@@ @  5],@ @  4@@ @  3@ @  2@f@]@ʠ @  @@ @  
@@ @  @ @  
@@ @  	@ @  @@ᠠ@]l@@ @  ;]h]e]d@@ @  :]y@ @  9@@ @  8@ @  7@f@]c@ @  @@ @  ܠ@@ @  @ @  @@ @  @ @  @>@۠@@@@ @  B@]]@ @  A@ @  @@7]@@ @  ?;]@@ @  >@ @  =@ @  <@f@]@@@@ @  @ @   @  @ @  @ @  @+@@ @  /
@@ @  @ @  @ @  @j@Ԡ@@^ ]@ @  G@^^@@ @  Fb^@@ @  E@ @  D@ @  C@g@]@@ @  " @   @ @  #@M@@ @  !Q
@@ @  @ @  @ @  @@͠@@K@@ @  P^I@@ @  O@ @  N@^H@@ @  M^D]@@ @  L^S@ @  K@@ @  J@ @  I@ @  H@gF@^C@@P@@ @  -@@ @  ,@ @  +@ @  )@@ @  *Ơc@@ @  (@ @  '@@ @  &@ @  %@ @  $@@à@@@@ @  X^@@ @  W@ @  V@^@@ @  U@@ @  T^@ @  S@ @  R@ @  Q@g}@^@@@@ @  6@@ @  5@ @  4@ @  2@@ @  3@@ @  1	@ @  0@ @  /@ @  .@@@@@@ @  a_ @@ @  `@ @  _@^@@ @  ^^@@ @  ]_
@ @  \@@ @  [@ @  Z@ @  Y@g@^@@@@ @  @@@ @  ?@ @  >@ @  <@@ @  =@@ @  ;@ @  :@@ @  9@ @  8@ @  7@5@@@@@ @  i_]@@ @  h@ @  g@/_\@@ @  f@@ @  e_d@ @  d@ @  c@ @  b@g@_X@@@@ @  I@@ @  H@ @  G@% @  E@@ @  F@@ @  D	@ @  C@ @  B@ @  A@h@@%@@ @  n@]_@@ @  m__@@ @  l@ @  k@ @  j@h@_@@@ @  O@K @  M@@ @  N@@ @  L@ @  K@ @  J@@@H@@ @  r@_@@ @  q_@ @  p@ @  o@h5@_@=@@ @  T@j @  R@@ @  S@ @  Q@ @  P@@@c@@ @  z@`$@@ @  y`+@@ @  v` `0@@ @  w`5@@ @  x@ @  u@ @  t@ @  s@ha@`@i@@ @  ]@ @  Y@@ @  \@@ @  X
@@ @  Z@@ @  [@ @  W@ @  V@ @  U@@@Ӡ`}@@ @  `y@@ @  ~`@ @  }@@ @  |@ @  {@h@`x@à @  b@@ @  c@@ @  a@ @  `@@ @  _@ @  ^@
@@`@@ @  @@ @  `@ @  @ @  @h@`@ @  g@@ @  h@@ @  f	@ @  e@ @  d@)@@`@@ @  `@@ @  a@ @  @@ @  @ @  @h@`@	 @  m@@ @  n@@ @  l@ @  k@@ @  j@ @  i@P@@@a4@@ @  @@ @  a<@ @  @ @  @h@a0@, @  r@@ @  s@@ @  q	@ @  p@ @  o@o@@_ao@@ @  ak6@@ @  az@ @  @@ @  @ @  @i@aj@O @  x@@ @  y2@@ @  w@ @  v@@ @  u@ @  t@@@a@@ @  Z@@ @  a@ @  @ @  @iB@a@r @  }@@ @  ~R@@ @  |	@ @  {@ @  z@@@a@@ @  a|@@ @  a@ @  @@ @  @ @  @ie@a@ @  @@ @  x@@ @  @ @  @@ @  @ @  @@@̠b%@@ @  b!@@ @  @ @  @i@b @ @  @@ @  @@ @  @ @  @@|@@@@ @  @beba@@ @  @ @  @ @  @bm@@ @  bt@@ @  by@@ @  @ @  @ @  @ @  @i@b`@@@@ @  @{ @  x@@ @  @ @  @ @  @	@@ @  @@ @  @@ @  @ @  @ @  @ @  @4@w@@@@ @  @bbȠb@@ @  @ @  @ @  @1b@@ @  5b@@ @  @ @  @ @  @i@b@@@@ @  @v @  sr @  @@ @  @ @  @ @  @)@@ @  -@@ @  @ @  @ @  @h@o@@'@@ @  @c!c@@ @  @ @  @ @  @dc)@@ @  hc-@@ @  @ @  @ @  @j@c@@'@@ @  @n @  k@@ @  @ @  @ @  @Z	@@ @  ^
@@ @  @ @  @ @  @@j@@X@@ @  @csco@@ @  @ @  @ @  @c{@@ @  cn@@ @  @ @  @ @  @jM@cm@@W@@ @  @i @  f@@ @  @ @  @ @  @	@@ @  e@@ @  @ @  @ @  @@d@@@@ @  @cc@@ @  @ @  @ @  @Ġc@@ @  c@@ @  @ @  @ @  @j|@c@@@@ @  @c @  `@@ @  @ @  @ @  @	@@ @  _@@ @  @ @  @ @  @@^@@@@ @  @d@dd@ @  @ @  @ @  @d@@ @  @dd@ @  @ @  @ @  @j@d@@@@ @  @] @  @Z @  @ @  @ @  @ @  @	@@ @  @		@ @  @ @  @ @  @#@W@@@@ @  @dbd^@@ @  @ @  @ @  @dj@@ @  d[@@ @  @ @  @ @  @j@dZ@@@@ @  @V @  S@@ @  @ @  @ @  @	@@ @  P@@ @  @ @  @ @  @R@O@@d@dd@@ @  @ @  @ @  @Kd@@ @  @Qd@@ @  d@@ @  @ @  @ @  @ @  @k	@d@@N @  @K@@ @  @ @  @ @  @C@@ @  @I@@ @  J@@ @  @ @  @ @  @ @  @@I@@e@ee
@@ @  @ @  @ @  @e@@ @  @e@@ @  e	@@ @  @ @  @ @  @ @  @k>@e@@H @  @E@@ @  @ @  @ @  @x@@ @  @~@@ @  D@@ @  @ @  @ @  @ @  @@C@@{@@ @  @em@eoeier@@ @  @ @  @ @  @ @  @ex@@ @  @e~@@ @  Še@@ @  @ @  @ @  @ @  @kz@eh@@@@ @  @B @  @?@@ @  @ @  @ @  @ @  @@@ @  @@@ @  Ġ@@ @  @ @  @ @  @ @  @@>@@@@ @  @ee@@ @   @ee@@ @  ee@@ @  @ @  @ @  @ @  @e@@ @  @e@@ @  e@@ @  @ @  @ @  @ @  @k@e@@@@ @  @=< @  @@ @  @98 @  @@ @  54 @  @@ @  @ @  @ @  @ @  @@@ @  @@@ @  @@ @  @ @  @ @  @ @  @T@1@@@ @  @IfZ@@ @  Mf^@@ @  @ @  @ @  @l@fV@
@@ @  @70 @  @@ @   <@@ @  @ @  @ @  @w@-@4@@ @  
@flf@@ @  	@ @  @ @  @l!@f@)@@ @  @, @  W@@ @  @ @  @ @  @@)@O@@ @  @@f֠f@@ @  fϠf@@ @  @ @  @f@@ @  f@@ @  @ @  
@ @  @ @  @lL@f@T@@ @  @@(' @  @@ @  $@@ @  @ @  
@@@ @  @@ @  
@ @  	@ @  @ @  @@#@@@ @  @g,@Ġg1@@ @  Ƞg5@@ @  @ @  @ @  @ @  @l}@g(@@@ @  @" @  @@@ @  
@@ @  @ @  @ @  @ @  @@@@@ @  @gl@@ @  gh@@ @  @ @  @ @  @l@gg@@@ @  @֠ @  @@ @  @@ @  @ @  @ @  @@@	g@@ @  !g@@ @   @ @  @l@g@ @  !@@ @   @@ @  @ @  @,@	g@@ @  "@l@g @  #@@ @  "@9@@@lA@@ @  5@@ @  4@ @  3@l A@@ @  2@@ @  1@ @  0@ @  /@l@h@@@@ @  -@@ @  ,@ @  +@@@ @  *@@ @  )@ @  (@ @  '@@@h`1@@ @  9@@ @  8+@@ @  7@ @  6@m@h]@
'@@ @  1@@ @  0!@@ @  /@ @  .@*@	@@@@ @  <h@@ @  ;@ @  :@m,@h@2@@ @  4@@ @  3@ @  2@>@@lhh@@ @  A@[@@ @  @h@@ @  ?@ @  >@ @  =@mG@h@$0@@ @  9@T@@ @  8@@ @  7@ @  6@ @  5@`@@mh@@ @  F@|@@ @  Eh@@ @  D@ @  C@ @  B@mh@h@$P @@ @  >@t@@ @  =@@ @  <@ @  ;@ @  :@@@ii'i&@@ @  J@@ @  I@@ @  H@ @  G@m@i%@@@ @  B@@ @  A@@ @  @@ @  ?@@@iibia@@ @  P@@ @  O@@@ @  N@@ @  M@ @  L@ @  K@m@i`@"@@ @  H@@ @  G@@@ @  F@@ @  E@ @  D@ @  C@@@@@ @  Tiii@@ @  S@@ @  R@ @  Q@m@i@@@ @  LJ@@ @  K@@ @  J@ @  I@@@ @@ @  Xiiiנ@@ @  W@@ @  V@ @  U@m@i@@@ @  Pj
@@ @  O@@ @  N@ @  M@
@@*@@ @  ^@%@@ @  ]jjj7@@ @  \@@ @  [@ @  Z@ @  Y@n@j@'@@ @  V@"@@ @  U4@@ @  T@@ @  S@ @  R@ @  Q@4@렠@@V@@ @  fj^@@ @  e@ @  d@T@@ @  cj]d@@ @  b@@ @  a@ @  `@ @  _@nD@j\@@V@@ @  ^@@ @  ]@ @  \@T@@ @  [d@@ @  Z@@ @  Y@ @  X@ @  W@d@䠠@@@@ @  mj@@ @  l@ @  k@@@ @  j@@ @  i@ @  h@ @  g@np@j@@@@ @  e@@ @  d@ @  c@@@ @  b@@ @  a@ @  `@ @  _@@⠠@@@@ @  uj@@ @  t@ @  s@@@ @  rj@@ @  q@@ @  p@ @  o@ @  n@n@j@@@@ @  m@@ @  l@ @  k@@@ @  j@@ @  i@@ @  h@ @  g@ @  f@@ߠ@@@@ @  |k6@@ @  {@ @  z@@@ @  y@@ @  x@ @  w@ @  v@n@k5@@@@ @  t@@ @  s@ @  r@@@ @  q@@ @  p@ @  o@ @  n@@ݠ@@@ @  @@@ @  kv@@ @  @@ @  @ @  ~@ @  }@n@ku@@@ @  z@@@ @  yܠ
@@ @  x@@ @  w@ @  v@ @  u@
@۠@*@@ @  @%@@ @  2@@ @  @ @  @ @  @o@k@!@@ @  @@@ @  ~)@@ @  }@ @  |@ @  {@(@ڠ@H@@ @  @C@@ @  I@@ @  k@@ @  Q@@ @  @ @  @ @  @ @  @o:@k@J@@ @  @E@@ @  K@@ @  @@ @  S@@ @  @ @  @ @  @ @  @\@ؠ@r@@ @  l3@@ @  @@ @  @ @  @ob@l2@h@@ @  נx@@ @  @@ @  @ @  @x@֠@@@ @  @@ @  @ @  @oz@l]@@@ @  @@ @  @ @  @@ՠ@@@ @  l@@ @  @@ @  @ @  @o@l@@@ @  Ԡ@@ @  @@ @  @ @  @@Ӡ@@@ @  @@ @  @ @  @o@l@@@ @  @@ @  @ @  @@Ҡ@@@ @  lՠ@@ @  @@ @  @ @  @o@l@@@ @  Ѡ@@ @  @@ @  @ @  @@Р@@@ @  @@ @  @ @  @o@l@@@ @  @@ @  @ @  @@Ϡ@@@ @  m(@@ @  @@ @  @ @  @o@m%@@@ @  Π@@ @  @@ @  @ @  @@ˠ@@@ @  mS@@ @  @ @  @p
@mR@@@ @  @@ @  @ @  @@Ǡ@@>@@ @  m@@ @  @ @  @<@@ @  B@@ @  F@@ @  @ @  @ @  @ @  @p/@m@@A@@ @  @@ @  @ @  @?@@ @  E@@ @  I@@ @  @ @  @ @  @ @  @R@Š@@t@@ @  mܠz@@ @  @@ @  @ @  @v@@ @  y@@ @  @ @  @ @  @pb@m@@t@@ @  Ġz@@ @  @@ @  @ @  @v@@ @  y@@ @  @ @  @ @  @@à@@@@ @  n%@@ @  @ @  @@@ @  @@ @  @ @  @ @  @p@n$@@@@ @  @@ @  @ @  @@@ @  @@ @  @ @  @ @  @@@@@@ @  ng@@ @  @ @  @@@ @  nf@@ @  @ @  @ @  @p@ne@@@@ @  @@ @  @ @  @@@ @  @@ @  @ @  @ @  @@@@@@ @  n@@ @  @ @  @@@ @  n@@ @  @ @  @ @  @p@n@@@@ @  @@ @  @ @  @@@ @  @@ @  @ @  @ @  @@@@@@ @  @nn@ @  @ @  @@@ @  @nn@ @  @ @  @ @  @q@n@@@@ @  @ @  @ @  @ @  @@@ @  @@ @  @ @  @ @  @@@@A@@ @  o,@@ @  @ @  @?@@ @  o)@@ @  @ @  @ @  @q+@o(@@=@@ @  @@ @  @ @  @;@@ @  @@ @  @ @  @ @  @G@@]@@ @  @b@@ @  oh@@ @  @ @  @ @  @qN@og@T@@ @  @Y@@ @  @@ @  @ @  @ @  @e@@{@@ @  @@@ @  o@@ @  @ @  @ @  @ql@o@r@@ @  @w@@ @  @@ @  @ @  @ @  @@@@@ @  @@@ @  o@@ @  @ @  @ @  @q@o@@@ @  @@@ @  @@ @  @ @  @ @  @@@@@ @  @@@ @  @@ @  @ @  @ @  @q@o@@@ @  @@@ @  @@ @  @ @  @ @  @@@@@ @  @@@ @  p1@@ @  @ @  @ @  @q@p0@@@ @  @@@ @  @@ @  @ @  @ @  @@@@@ @  @@@ @  @@ @  @ @  @ @  @q@pb@@@ @  @@@ @  @@ @  @ @  @ @  @@@@@ @  @@@ @  @@ @   @ @  @ @  @r@p@@@ @  @
@@ @  @@ @  @ @  @ @  @@@9@@ @  @4@@ @  7@@ @  @ @  @ @  @r @p@0@@ @   @+@@ @  .@@ @  @ @  @ @  @7@@W@@ @  
P@@ @  	@ @  @r9@p@I@@ @  B@@ @  @ @  @K@@k@@ @  @f@@ @  i@@ @  
@ @  @ @  @rR@q@b@@ @  @]@@ @  `@@ @  @ @  @ @  @i@@@@ @  @@@ @  qI@@ @  @ @  @ @  @rp@qH@@@ @  
@{@@ @  @@ @  @ @  
@ @  	@@@@@ @  qy@@ @  @ @  @r@qv@@@ @  @@ @  @ @  @@@@ @  @r@q@@ @  @@RC@)@@ @  @@@ @  @@ @  @ @  @ @  @@Ri@)@@ @  @@@ @  @@ @  @ @  @ @  @@R@@@ @  "@@@ @  !@@ @   @ @  @ @  @@R@@@ @  %@@ @  $@ @  #@@R@@@ @  *@@@ @  )@@ @  (@ @  '@ @  &@@@rrr@@ @  `@s
A@@ @  _r@@ @  ^@ @  ]@ @  \@s@r@)@@ @  /@@@ @  .@@ @  -@ @  ,@ @  +@@@rr@@ @  e@%@@ @  dr@@ @  c@ @  b@ @  a@s(@r@*
@@ @  4@"@@ @  3@@ @  2@ @  1@ @  0@@
@?@@ @  j@D@@ @  is@@ @  h@ @  g@ @  f@sG@s@;@@ @  9@@@@ @  8@@ @  7@ @  6@ @  5@@@]@@ @  ms6@@ @  l@ @  k@s`@s3@T@@ @  <@@ @  ;@ @  :@@@q@@ @  r@v@@ @  qsa@@ @  p@ @  o@ @  n@sy@s^@m@@ @  A@r@@ @  @%@@ @  ?@ @  >@ @  =@@$A@sAs%s$@@ @U@s;@@@ @Ts%@@ @S@ @R@ @Q@s_s_@@s'C6@sWsT@@ @Z@@@ @YsS@@ @X@ @W@ @V@s^s^@@sSD@$@@ @_@)@@ @^s@@ @]@ @\@ @[@s\vs\v@@sB@7@@ @bs@@ @a@ @`@s[HRs[Hu@@sBZ@E@@ @g@J@@ @fs@@ @e@ @d@ @c@@sȠ_\`Gb5`$_@	H************************************************************************t#A@@t$A@ L@	H                                                                        t)B M Mt*B M @	H                                 OCaml                                  t/C  t0C  @	H                                                                        t5D  t6D 3@	H                       Pierre Chambart, OCamlPro                        t;E44t<E4@	H           Mark Shinwell and Leo White, Jane Street Europe              tAFtBF@	H                                                                        tGGtHG@	H   Copyright 2013--2016 OCamlPro SAS                                    tMHtNHg@	H   Copyright 2014--2016 Jane Street Group LLC                           tSIhhtTIh@	H                                                                        tYJtZJ@	H   All rights reserved.  This file is distributed under the terms of    t_Kt`KN@	H   the GNU Lesser General Public License version 2.1, with the          teLOOtfLO@	H   special exception on linking described in the file LICENSE.          tkMtlM@	H                                                                        tqNtrN5@	H************************************************************************twO66txO6@@   *./ocamlopt"-g)-nostdlib"-I&stdlib"-I1otherlibs/dynlink0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel2-function-sections"-ct"-I%utilst!. 0/$#"! @0~ByZ5WrLFf  0 eeeeeeee@e@@5Build_path_prefix_map0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠt0h$T<^D~R4O0Z+\\4:WlA?Lt0&!h>jU)R&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ+Stdlib__Int0ʬ<xyd-Stdlib__Int640UY*#/F]&$+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Printf0pJUX빃Ύ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]@@A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Caml1999I030  !  H  F  )Selectgen+environment   8 @@@A@@@@@5asmcomp/selectgen.mliSS@@@@@A@'env_add #mut&optionJ(Asttypes,mutable_flag@@ @@@ @@+Backend_var/With_provenance!t@@ @@%arrayH#Reg!t@@ @@@ @@B@@ @@@ @@ @@ @@ @@ @@CUDZ)@@MA@(env_find @.!t@@ @@@@ @.,!t@@ @@@ @@ @@ @@d\++e\+e@@nB@)size_expr @3@@ @@#Cmm*expression@@ @#intA@@ @@ @@ @@^gg^g@@G@Ӡ&Effect @!t   8 @@$None @@bb@@I%Raise @@cc@@J)Arbitrary @@dd@@K@@A@@@@@a@@A@HA@@@`e@L@@Ӡ(Coeffect @!t   8 @@$None @@i	
i	@@N,Read_mutable @@jj&@@O)Arbitrary @@k'+k'6@@P@@A@@@@@h @@A@MA@@@gl7:@Q@@Ӡ3Effect_and_coeffect @!t   8 @@@A@@@@@o]_o]e@@@@RA@$none @@ @@qgiqgu@@S@)arbitrary 
@@ @@rvxrv@@T@&effect @@@ @!t@@ @@ @@tt@@$U@(coeffect @/@@ @v!t@@ @@ @@.u/u@@8V@+effect_only @%!t@@ @H@@ @@ @@AwBw@@KW@-coeffect_only @$!t@@ @[@@ @@ @@TxUx@@^X@$join @i@@ @@n@@ @q@@ @@ @@ @@jzkz+@@tY@-join_list_map @$listI!a @@@ @@@	@@ @@ @@@ @@ @@ @@{,.{,[@@Z@@@n<<|\_@[@@Š0selector_generic     @,is_immediate@@$Mach1integer_operation@@ @@0@@ @$boolE@@ @@ @@ @@ @1is_immediate_test@@2integer_comparison@@ @@I@@ @ @@ @@ @@ @@ @1select_addressing@@`,memory_chunk@@ @@h*expression@@ @$Arch/addressing_mode@@ @z*expression@@ @@ @	@ @
@ @@ @.is_simple_expr@@*expression@@ @
Q@@ @@ @@ @*effects_of@@*expression@@ @2!t@@ @@ @@ @0select_operation@@)operation@@ @@*expression@@ @@@ @@)Debuginfo!t@@ @)operation@@ @Ѡ*expression@@ @@@ @@ @@ @@ @@ @@ @ 0select_condition@@*expression@@ @!$test@@ @#*expression@@ @"@ @$@ @%@ @&,select_store@@@@ @'@/addressing_mode@@ @(@*expression@@ @))operation@@ @+*expression@@ @*@ @,@ @-@ @.@ @/@ @0(regs_for@@,(machtype@@ @1{y!t@@ @2@@ @3@ @4@ @5)insert_op@@|@@ @6@)operation@@ @7@!t@@ @8@@ @9@!t@@ @:@@ @;!t@@ @<@@ @=@ @>@ @?@ @@@ @A@ @B/insert_op_debug@@@@ @C@R)operation@@ @D@!t@@ @E@٠!t@@ @F@@ @G@!t@@ @H@@ @I!t@@ @J@@ @K@ @L@ @M@ @N@ @O@ @P@ @Q7insert_move_extcall_arg@@@@ @R@'exttype@@ @S@!t@@ @T@@ @U@!t@@ @V@@ @W$unitF@@ @X@ @Y@ @Z@ @[@ @\@ @]1emit_extcall_args@@$@@ @^@'exttype@@ @_@@ @`@*expression@@ @a@@ @bUS!t@@ @d@@ @e@@ @c@ @f@ @g@ @h@ @i@ @j+emit_stores@@[@@ @k@',*expression@@ @l@@ @m@~|!t@@ @n@@ @oa@@ @p@ @q@ @r@ @s@ @t)mark_call@j@@ @u@ @v-mark_tailcall@s@@ @w@ @x/mark_c_tailcall@|@@ @y@ @z*mark_instr@@80instruction_desc@@ @{@@ @|@ @}@ @~,emit_fundecl@0future_funcnames$Misc&Stdlib&String#Set!t@@ @@'fundecl@@ @ a'fundecl@@ @ @ @ @ @ @ @ ,extract_onto@@n+instruction@@ @ t+instruction@@ @ @ @ @ @ 'extract@+instruction@@ @ @ @ &insert@@@@ @ @0instruction_desc@@ @ @!t@@ @ @@ @ @!t@@ @ @@ @  @@ @ @ @ @ @ @ @ @ @ @ @ ,insert_debug@@"@@ @ @0instruction_desc@@ @ @7!t@@ @ @HF!t@@ @ @@ @ @US!t@@ @ @@ @ 8@@ @ @ @ @ @ @ @ @ @ @ @ @ @ +insert_move@@Z@@ @ @j!t@@ @ @r!t@@ @ V@@ @ @ @ @ @ @ @ @ @ 0insert_move_args@@x@@ @ @!t@@ @ @@ @ @!t@@ @ @@ @ @W@@ @ @@ @ @ @ @ @ @ @ @ @ @ @ 3insert_move_results@@@@ @ @!t@@ @ @@ @ @ɠ!t@@ @ @@ @ @@@ @ @@ @ @ @ @ @ @ @ @ @ @ @ ,insert_moves@@@@ @ @!t@@ @ @@ @ @!t@@ @ @@ @ @@ @ @ @ @ @ @ @ @ @ )emit_expr@@@@ @ @*expression@@ @ 5!t@@ @ @@ @ @@ @ @ @ @ @ @ @ )emit_tail@@@@ @ @*expression@@ @ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @֐@ @@.contains_calls@A&Stdlib#ref@@ @@@ @@A@z@O@AB'@@AC@0@Ag@BDz@_@A/@@@ABCa@@@AB@@ACDE@@@AB@@A@B@CDB@|@'@ABEF@ @@~aa @@\A@Ơ @
@7@A6@A)@@@	A@  8 @@@A@|@{V@U@#@"b@a@@@f@e0@/@@@@@@2@1@@	@@@@B@A@@@u@t@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@ @@@@@N@@@KA@1#selector_generic   8 @@@AT@S;@:&@%@ @@@@f@eP@O@@@y@xS@RL@KE@D>@=/@.@@@@@r@qF@E@@@ @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @  @ @ @ @@@@@@@A@%reset @@@ @ @@ @ @ @ @= > @@Gb@@       d  Š)Selectgen0B@,G(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?')Targetint06GpvamT:%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk.Stdlib__Printf0pJUX빃Ύ+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj-Stdlib__Array0XUJө
	ƿ8+Stdlib__Arg0@)6:
Z$o4*&Stdlib0-&fºnr39tߠ#Reg0V×,L0'Profile0WU'>(F9ᠠ)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A$Misc0Z+\\4:WlA?L$Mach0HCAx)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[&Config0g2y#{d#Cmm0ZUmŰI*Cmi_format0vB $V@X'Clflags0lsC^mNˠ0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l+Backend_var0ۺ
+xr`Š(Asttypes0CoࠌD($Arch0r
|r`@            @@Caml1999T030  ʺ  !    ?  4 )SelectgenA  ( +environment QA5asmcomp/selectgen.mliSS@@  8 @@@A@@@@@S@@@@@@@A@@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@A8;@'env_add oEUFU@б#mutг(Asttypes,mutable_flag(AsttypesWVXV@@@@ @@  0 UTTUUUUU@Tb[@A@@б@г+Backend_var/With_provenance!t+Backend_varpWqW@@@@ @@@б@г%arrayXX@г#Reg!t#RegXX@@@@ @p7@@@@@ @r<@@б@г+environmentY
Y@@	@@ @sK@@г+environmentZZ)@@	@@ @tX@@@@ @u[@@@&@ @v^-@@@K@ @waN@@w:k@@ @x
@ @yiV@@
@U@@A@@@p(env_find p\+/\+7@б@гv!t+Backend_var\+:\+G@@@@ @z  0 @"@A@@б@г+environment\+K\+V@@	@@ @{@@г%array \+`\+e@г!t#Reg
\+Z\+_@@@@ @|+@@@@@ @~0@@@%@ @3(@@@9@ @6<@@@ \++ @@.B@"@@<)size_expr +^gk,^gt@б@г6+environment6^gw7^g@@	@@ @  0 43344444@Um@A@@б@г#Cmm*expression#CmmL^gM^g@@@@ @@@г"#intY^gZ^g@@	@@ @#@@@@ @&@@@,@ @)/@@@g^gg@@uG@@@/&Effect Bt`u`@@БA  ( !t Caa@@  8 @@$None @@bb@@I%Raise @@cc@@J)Arbitrary @@dd@@K@@A@@@@@a@@A@H@b@@@ @c@@@@d@@@@@A@@@  0 @}T@A@@>8A@@  0 @@:@A  0 @@A`e@@@`@@(Coeffect Dgg@@БA  ( !t Ehh@@  8 @@$None @@i	
i	@@N,Read_mutable @@jj&@@ O)Arbitrary @@k'+k'6@@	P@@A@@@@@h @@A@M@i	@@@ @j@@@@k'-@@@@@A@@@  0 @]@X@S#L@A@@@:A@@  0 @B<@A  0 @
@Ag l7:@@@"g@@3Effect_and_coeffect F.n<C/n<V@@БA  ( !t G<o]d=o]e@@  8 @@@A@@@@@@o]_@@@@NR@@A@@@  0 ;::;;;;;@0y@)@$RQ@A
@$none OqgmPqgq@г!tXqgtYqgu@@	@@ @  0 VUUVVVVV@'!@A@@@bqgi
@@pS@@@)arbitrary mrv|nrv@г:!tvrvwrv@@	@@ @  0 tssttttt@2@A@@@rvx
@@T@@@&effect tt@б@гZ!ttt@@	@@ @  0 @!4@A@@г3!t&Effecttt@@@@ @@@@@ @@@@t@@U@
@@(coeffect uu@б@г!tuu@@	@@ @  0 @4I@A@@г
!t(Coeffectuu@@@@ @@@@@ @@@@u@@V@
@@+effect_only ww@б@г!t&Effectw w@@@@ @  0 @7L"@A@@гҠ!tww@@	@@ @@@@@ @@@@w@@'W@
@@-coeffect_only $x%x@б@гa!t(Coeffect2x3x@@@@ @  0 0//00000@4L"@A@@г!tAxBx@@	@@ @@@@@ @@@@Lx@@ZX@
@@$join WzXz@б@г&!tbz cz!@@	@@ @  0 `__`````@1I@A@@б@г7!tsz%tz&@@	@@ @@@гD!tz*z+@@	@@ @@@@@ @!@@@'@ @$*@@@z@@Y@@@*-join_list_map {,2{,?@б@г4$list{,E{,I@А!a @H@  0 @I^%@A{,B{,D@@@
@@ @	@@б@б@А!a{,N{,P@@г!t{,T{,U@@	@@ @ @@@(@ @#@@г!t{,Z{,[@@	@@ @0@@@@ @3{,M	@@@2@ @75@@@{,.@@Z@@@=@A@@t@mC@<@@@p@i@@  0 @Pk@A  0 @@An<Y|\_@@@n<<@@  0 @@0selector_generic~ao~a@ H H H1#selector_generic HБ@.*dummy method*@@ @J@,is_immediate@@$Mach1integer_operation@@ @T@@@ @S@@ @R@ @Q@ @P@ @OJ@1is_immediate_test@@2integer_comparison@@ @`@*@@ @_@@ @^@ @]@ @\@ @[J@1select_addressing@@-,memory_chunk@@ @@5*expression@@ @$Arch/addressing_mode@@ @ǠG*expression@@ @@ @@ @@ @@ @J@.is_simple_expr@@X*expression@@ @^@@ @@ @@ @J@*effects_of@@m*expression@@ @!t@@ @@ @@ @J@0select_operation@@)operation@@ @J@c*expression@@ @I@@ @H@)Debuginfo!t@@ @G)operation@@ @D*expression@@ @F@@ @E@ @C@ @B@ @A@ @@@ @?J@"0select_condition@@*expression@@ @V$test@@ @T*expression@@ @U@ @S@ @R@ @QJ@&,select_store@@@@ @j@/addressing_mode@@ @i@*expression@@ @h)operation@@ @f *expression@@ @g@ @e@ @d@ @c@ @b@ @aJ@*(regs_for@@(machtype@@ @u!t@@ @t@@ @s@ @r@ @qJ@.)insert_op@@t@@ @@>)operation@@ @@!t@@ @@@ @@(
!t@@ @@@ @3!t@@ @@@ @@ @@ @@ @@ @@ @J@2/insert_op_debug@@@@ @@z)operation@@ @@!t@@ @@_A!t@@ @@@ @@lN!t@@ @@@ @wY!t@@ @@@ @@ @@ @@ @@ @@ @@ @J@67insert_move_extcall_arg@@@@ @@'exttype@@ @@}!t@@ @@@ @@!t@@ @@@ @@@ @@ @@ @@ @@ @@ @J@:1emit_extcall_args@@)@@ @@'exttype@@ @@@ @@̠*expression@@ @@@ @!t@@ @@@ @@@ @@ @@ @@ @@ @@ @J@>+emit_stores@@e@@ @	 @(*expression@@ @@@ @@!t@@ @@@ @+@@ @@ @@ @@ @@ @J@B)mark_call@8@@ @	@ @	J@F-mark_tailcall@E@@ @	@ @	J@J/mark_c_tailcall@R@@ @	@ @	J@N*mark_instr@@}0instruction_desc@@ @	g@@ @	@ @	@ @	J@R,emit_fundecl@0future_funcnames$Misc&Stdlib&String#Set!t@@ @@'fundecl@@ @'fundecl@@ @@ @@ @@ @J@V,extract_onto@@+instruction@@ @+instruction@@ @@ @@ @J@Z'extract@+instruction@@ @@ @J@^&insert@@@@ @
@0instruction_desc@@ @
@Ġ!t@@ @
@@ @
@Ѡ!t@@ @
@@ @
@@ @
@ @
@ @
@ @

@ @
@ @
J@b,insert_debug@@R@@ @
4@0instruction_desc@@ @
3@!t@@ @
2@!t@@ @
1@@ @
0@!t@@ @
/@@ @
.(@@ @
-@ @
,@ @
+@ @
*@ @
)@ @
(@ @
'J@f+insert_move@@@@ @
D@!t@@ @
C@!t@@ @
BK@@ @
A@ @
@@ @
?@ @
>@ @
=J@j0insert_move_args@@@@ @
^@Q3!t@@ @
]@@ @
\@^@!t@@ @
[@@ @
Z@@@ @
Y~@@ @
X@ @
W@ @
V@ @
U@ @
T@ @
SJ@n3insert_move_results@@@@ @
x@f!t@@ @
w@@ @
v@s!t@@ @
u@@ @
t@@@ @
s@@ @
r@ @
q@ @
p@ @
o@ @
n@ @
mJ@r,insert_moves@@	@@ @
@!t@@ @
@@ @
@Ġ!t@@ @
@@ @
@@ @
@ @
@ @
@ @
@ @
J@v)emit_expr@@	E@@ @
@*expression@@ @
Ġ!t@@ @
@@ @
@@ @
@ @
@ @
@ @
J@z)emit_tail@@	l@@ @
@+*expression@@ @
	 @@ @
@ @
@ @
@ @
J@~@ @ @J@{ @|J@w @xJ@s @tJ@o @pJ@k @lJ@g @hJ@c @dJ@_ @`J@[ @\J@W @XJ@S @TJ@O @PJ@K @LJ@G @HJ@C @DJ@? @@J@; @<J@7 @8J@3 @4J@/ @0J@+ @,J@' @(J@# @$J@ @ J@ @J@ @J@ @J@ @J@ @
J@	@ @
J@  0 	q	p	p	q	q	q	q	q@;U@@z	[l  8 @@@A@S@Pq@n@9@64@1@@@V@S@@@@@@@=@|@ya@^@@.@+	@%@"n@kT@Q@@@@ @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
 @
I@ @ @@@@@	~aa	 @@@@	\  8 @@@A(@%@@@@|z@w@@@@a@^@@= @@@@L@I@@c@`X@Ut@qO@Lk@h@@@G@D@@I@
I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@I@ I@!I@"I@#I@$I@%I@&I@'I@(I@)I@*I@+I@@I@@@@@K@@@H    @@.contains_calls@A#ref	@@ @@@ @@A@|@@AB@d@AC@@A&@BD=@@A@@@ABCE@V@$@AB@@ACDE@@@AB@@A@B@CD<@z@@ABEF@'*undef*B@@
@v(@@I@@@@@
@{@A
A~a@@AAШ@б@г$Mach
Q A
R A@@@@ @Iް@@б@г#int
_ A
` A@@"@@ @J@@г"$bool
k A
l A @@*@@ @K@@@@ @L@@C$	@@D
v A@@@0A@Ш@б@г-$Mach/
 F	/	T
 F	/	k@@6@@ @U@@б@г4#int
 F	/	o
 F	/	r@@<@@ @V!@@г<$bool
 F	/	v
 F	/	z@@D@@ @W-@@@@ @X0@@[1$	@@\2
 F	/	1@@@JA@Ш@б@гG#CmmI
 J


 J

.@@P@@ @aH@@б@гN#CmmP
 J

2
 J

@@@W@@ @bW@@ВгU$ArchU
 J

D
 J

X@@^@@ @g@@гZ#Cmm\
 J

[
 J

i@@c@@ @u@@@@ @z
@@@)@ @},
@@~<@@
 I		@@@lAAШ@б@гi#Cmmk L

	 L

@@r@@ @@@гp$bool L

 L

@@x@@ @@@@@ L

@@@{AAШ@б@гx#Cmmz, M

- M

@@@@ @@@г3Effect_and_coeffect9 M

: M
@@@@ @ư@@ǰ@@ȰA M

@@@AAШ@б@г#CmmQ PrvR Pr@@@@ @ް@@б@г$list_ Q` Q@г#Cmmi Qj Q@@@@ @@@@@@ @@@б@г)Debuginfo} R~ R@@@@ @5
@@Вг$Mach S S@@@@ @6@@г$list S S@г#Cmm S S@@@@ @71@@@@@ @96@@@#	@ @:;'@@@7@ @;>:@@@J@ @<AQ@@Bj @@C OVX"@@@AAШ@б@гĠ#Cmmư U'C U'Q@@@@ @KY@@Вгˠ$MachͰ U'U U'^@@@@ @Li@@гҠ#Cmm԰ U'a U'o@@@@ @Mw@@@@ @N|
@@}*@@~ U')
@@@AAШ@б@гޠ$bool X X@@@@ @W@@б@г校$Arch X X@@@@ @X@@б@г#Cmm$ X% X@@@@ @Y@@Вг$Mach4 Y

*5 Y

8@@@@ @Z@@г#CmmB Y

;C Y

I@@@@ @[ϰ@@@@ @\԰
@@@)@ @]װ,
@@@;@ @^ڰ>@@5۰N@@6ܰU W@@@AAШ@б@г
#Cmme [

f [

@@@@ @k@@г%arrayq [

r [

@г#Reg{ [

| [

@@"@@ @l@@@*@@ @n
@@9"@@: [

@@@'AAШ@б@г$+environment a a@@,@@ @v$@@б@г,$Mach. a a@@5@@ @w3@@б@г3%array a a@г8#Reg: a a@@A@@ @xK@@@I@@ @zP@@б@гC%array a a@гH#RegJ a a@@Q@@ @{h@@@Y@@ @}m@@гS%array a a@гX#RegZ a a@@a@@ @~@@@i@@ @@@@"@ @)@@@B@ @I@@@a@ @d@@t@@
 ` @@@oAAШ@б@гl+environment
 e
 e@@t@@ @@@б@гt$Machv
* e
+ e@@}@@ @@@б@г{)Debuginfo}
9 e
: e@@@@ @ư@@б@г%array
G e
H e@г#Reg
Q e
R e@@@@ @ް@@@@@ @@@б@г%array
d f
e f@г#Reg
n f
o f@@@@ @@@@@@ @ @@г%array
 f
 f@г#Reg
 f
 f@@@@ @@@@@@ @@@@"@ @)@@@B@ @!I@@@a@ @$d@@@s@ @'v @@(!@@)
 duw#@@@AAШ@б@г+environment
 j
 j@@@@ @>@@б@гƠ#CmmȰ
 j
 j@@@@ @M@@б@г͠%array
 j
 j@гҠ#Reg԰
 j
 j@@@@ @e@@@@@ @j@@б@гݠ%array
 j
 j@г⠡#Reg
 j
 j@@@@ @@@@@@ @@@г$unit j j@@@@ @@@@@ @@@@3@ @:@@@R@ @U@@,e@@- iqs@@@AAШ@б@г+environment& o' o@@@@ @@@б@г$list4 o5 o@г#Cmm
> o? o@@@@ @˰@@@@@ @а@@б@г$listQ oR o@г#Cmm[ o\ o@@$@@ @@@@,@@ @@@Вг&%arrayo op o@г+#Reg-y oz o@@4@@ @@@@<@@ @@@г6#int o o@@>@@ @@@@@ @
@@@7@ @ >
@@@W@ @#^@@~$w@@% n@@@LAAШ@б@гI+environment rUY rUd@@Q@@ @:@@б@гQ$list rUw rU{@гV#CmmX rUh rUv@@_@@ @R@@@g@@ @W@@б@гa%array rU rU@гf#Regh rU rU@@o@@ @o@@@w@@ @t@@гq$unit rU rU@@y@@ @@@@@ @@@@3@ @:@@S@@ q>@@@@AAШ@г$unit v+ v/@@@@ v@@@AAШ@г$unit {  {@@@@# {@@@AAШ@г$unit0 a|1 a@@@@4 ac@@@AAШ@б@г$MachD OeE Oz@@@@ @	
Ѱ@@г$unitP O~Q O@@@@ @	ݰ@@ް@@߰X OQ@@@AAШ@бг$Misck kl k@@@@ @@@б@г#Cmmz { @@@@ @@@г$Mach  @@@@ @@@@@ @@@ k
@@ km@@@AAШ@б@г$Mach  @@@@ @0@@г$Mach  
@@@@ @=@@>@@? @@@AAШ@г$Mach ! 1@@P@@Q @@@AAШ@б@г+environment DH DS@@@@ @f@@б@гŠ$Machǰ DW Dl@@@@ @u@@б@г̠%array Dv D{@гѠ#RegӰ  Dp Du@@@@ @@@@@@ @
@@б@гܠ%array D D@гᠡ#Reg D D@@@@ @
@@@@@ @
@@г점$unit. D/ D@@@@ @
@@@@ @
@@@3@ @
:@@@R@ @
İU@@+Űe@@,ư? 24@@@ AAШ@б@г+environmentN O @@@@ @
۰@@б@г$Mach] ^ @@@@ @
@@б@г)Debuginfol m @@@@ @
@@б@г%arrayz { @г#Reg  @@!@@ @
@@@)@@ @
@@б@г#%array  @г(#Reg*   @@1@@ @
.@@@9@@ @
3@@г3$unit 
 @@;@@ @
 ?@@@@ @
!B@@@3@ @
"E:@@@R@ @
#HU@@@d@ @
$Kg@@}Lw@@~M @@@JAAШ@б@гG+environment & 1@@O@@ @
5b@@б@гO#RegQ 5 :@@X@@ @
6q@@б@гV#RegX > C@@_@@ @
7@@г]$unit G  K@@e@@ @
8@@@@ @
9@@@$@ @
:'@@7@@
 @@@nAAШ@б@гk+environment hl hw@@s@@ @
E@@б@гs%array* h+ h@гx#Regz4 h{5 h@@@@ @
F@@@@@ @
Hư@@б@г%arrayG hH h@г#RegQ hR h@@@@ @
Iް@@@@@ @
K@@б@г#intd he h@@@@ @
L@@г$unitp hq h@@@@ @
M@@@@ @
N @@@$@ @
O+@@@D@ @
PK@@d@@ LN@@@AAШ@б@г+environment  @@@@ @
_@@б@г%array  @г#Reg  @@@@ @
`5@@@ʠ@@ @
b:@@б@гĠ%array  @гɠ#Reg˰  @@@@ @
cR@@@ڠ@@ @
eW@@б@гԠ#int  @@@@ @
fe@@гܠ$unit   @@@@ @
gq@@@@ @
ht@@@$@ @
iw+@@@D@ @
jzK@@	{d@@	| @@@AAШ@б@г+environment  $@@@@ @
y@@б@г%array . 3@г#Reg ( -@@	@@ @
z@@@	@@ @
|@@б@г	%array/ =0 B@г	
#Reg	9 7: <@@	@@ @
}ư@@@	@@ @
˰@@г	$unitJ FK J@@	@@ @
װ@@@@ @
ڰ@@@3@ @
ݰ:@@	IްS@@	J߰X @@@	&AAШ@б@г	#+environmentg `dh `o@@	+@@ @
@@б@г	+#Cmm	-v `sw `@@	4@@ @
	@@г	2&option ` `@г	7%array ` `@г	<#Reg	> ` `@@	E@@ @
	"@@@	M@@ @
	'@@@	V@@ @
	,"@@@/@ @
	/2%@@	n	0B&@@	o	1 KM(@@@	QAAШ@б@г	N+environment  @@	V@@ @
	F@@б@г	V#Cmm	X  @@	_@@ @
	U@@г	]$unit  @@	e@@ @
	a@@@@ @
	d@@	|	e%	@@	}	f @@@@AгѠҰ  @гԠ$bool  @@	|@@@	}@@ @@@	~a	6@@    @
ސA@I@L
@

@

@

}@
z
j@
g
U@
R
@
@@@z@w8@5@@@@@@|l@iE@B0@-#@ 
@

@

@

c@
`
2@
/
@
	@		: @K @J @I @H @G @F @E @D @C @B @A @@ @? @> @= @< @; @: @9 @8 @7 @6 @5 @4 @3 @2 @1 @0 @/ @.I@-@ @,@	2@A	1@A	'@1@@	@	@K3@	@		@@  0 @??@@@@@@	@A		@%reset ܠQ R @б@г$unit\ ] @@	@@ @|  0 ZYYZZZZZ@	V    @	[V@@	@	W@	]X@	@	Z    @E@@B?@@ @r@>@@ @q=@@ @p@ @o@ @n@ @m:@@76@@ @l@5@@ @k4@@ @j@ @i@ @h@ @g1@@.-@@ @f@,+@@ @e*'@@ @c&%@@ @d@ @b@ @a@ @`@ @_"@@@@ @^@@ @]@ @\@ @[@@@@ @Z@@ @Y@ @X@ @W@@
@@ @V@
@@ @U@@ @T@	@@ @S@@ @P@@ @R@@ @Q@ @O@ @N@ @M@ @L@ @K
@@

@@ @J

@@ @H

@@ @I@ @G@ @F@ @E
@@
@@ @D@

@@ @C@

@@ @B

@@ @@

@@ @A@ @?@ @>@ @=@ @<@ @;
@@

@@ @:


@@ @9@@ @8@ @7@ @6
@@
@@ @5@

@@ @4@
ՠ

@@ @3@@ @2@
Ҡ

@@ @1@@ @0
Ϡ

@@ @/@@ @.@ @-@ @,@ @+@ @*@ @)
@@
@@ @(@

@@ @'@

@@ @&@
 

@@ @%@@ @$@


@@ @#@@ @"


@@ @!@@ @ @ @@ @@ @@ @@ @@ @
@@
@@ @@

@@ @@


@@ @@@ @@


@@ @@@ @
@@ @@ @@ @@ @@ @@ @
@@
@@ @
@


@@ @@@ @@


@@ @
@@ @	


@@ @@@ @
@@ @@ @@ @@ @@ @@ @
@@
@@ @ @


@@ @@@ @@


@@ @@@ @
@@ @@ @@ @@ @@ @
@
@@ @@ @
@
@@ @@ @
@
|@@ @@ @
y@@
v
u@@ @
t@@ @@ @@ @
q@
n
l
i
h
g
f@@ @@
e
d@@ @
c
b@@ @@ @@ @@ @
_@@
\
[@@ @
Z
Y@@ @@ @@ @
V@
S
R@@ @@ @
O@@
L@@ @@
K
J@@ @@
I
H
G@@ @@@ @@
F
E
D@@ @@@ @
C@@ @@ @@ @@ @@ @@ @
@@@
=@@ @@
<
;@@ @@
:
9@@ @@
8
7
6@@ @@@ @@
5
4
3@@ @@@ @
2@@ @@ @@ @@ @@ @@ @@ @
/@@
,@@ @@
+
*@@ @@
)
(@@ @
'@@ @@ @@ @@ @@ @
$@@
!@@ @@
 

@@ @@@ @@


@@ @@@ @@
@@ @
@@ @@ @@ @@ @@ @@ @
@@
@@ @@


@@ @@@ @@



@@ @@@ @@
@@ @
@@ @@ @@ @@ @@ @@ @
@@
@@ @@


@@ @@@ @@

 @@ @@@ @@@ @@ @@ @@ @@ @@@@@ @@@@ @@@ @@@ @@@ @@ @@ @@ @@@@@ @@@@ @@@ @@ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @~ @} @| @{ @z @y @x @w @v @u @t @s @r@ @q@N@A*ML@@ @p@@ @o@AK@$@@@U@A@@>;@@ @v@:@@ @u9@@ @t@ @s@ @r@ @q6@@32@@ @p@1@@ @o0@@ @n@ @m@ @l@ @k-@@*)@@ @j@('@@ @i&#@@ @g"!@@ @h@ @f@ @e@ @d@ @c@@@@ @b@@ @a@ @`@ @_@@@@ @^@@ @]@ @\@ @[
@@
	@@ @Z@@@ @Y@@ @X@@@ @W @@ @T@@ @V@@ @U@ @S@ @R@ @Q@ @P@ @O@@@@ @N@@ @L@@ @M@ @K@ @J@ @I@@@@ @H@@@ @G@@@ @F@@ @D@@ @E@ @C@ @B@ @A@ @@@ @?@@@@ @>ܠ@@ @=@@ @<@ @;@ @:@@@@ @9@@@ @8@Ѡ@@ @7@@ @6@Π@@ @5@@ @4ˠ@@ @3@@ @2@ @1@ @0@ @/@ @.@ @-@@@@ @,@@@ @+@@@ @*@@@ @)@@ @(@@@ @'@@ @&@@ @%@@ @$@ @#@ @"@ @!@ @ @ @@ @@@@@ @@@@ @@@@ @@@ @@@@ @@@ @@@ @@ @@ @@ @@ @@ @@@@@ @@@@ @@@ @@@@ @@@ @
@@ @@@ @
@@ @@ @	@ @@ @@ @@ @@@@@ @@@@ @@@ @@@@ @@@ @ @@ @@ @@ @@ @@ @@@@ @@ @@~@@ @@ @{@x@@ @@ @u@@rq@@ @p@@ @@ @@ @m@jhedcb@@ @@a`@@ @_^@@ @@ @@ @@ @[@@XW@@ @VU@@ @@ @@ @R@ON@@ @@ @K@@H@@ @@GF@@ @@EDC@@ @@@ @@BA@@@ @@@ @?@@ @@ @@ @@ @@ @@ @<@@9@@ @@87@@ @@65@@ @@432@@ @@@ @@10/@@ @@@ @.@@ @@ @@ @@ @@ @@ @@ @+@@(@@ @@'&@@ @@%$@@ @#@@ @@ @@ @@ @@ @ @@@@ @@@@ @@@ @@@@ @@@ @@@@ @@@ @@ @@ @@ @@ @@ @@@@@ @@
@@ @@@ @@
	@@ @@@ @@@@ @@@ @@ @@ @@ @@ @@ @@@@@ @@ @@ @@@ @@@@ @@@ @@@ @@ @@ @@ @@ @@@@@ @@@@ @@@ @@@ @@@ @@ @@ @@ @@@@@ @@@@ @@@ @@ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @~ @} @| @{ @z @y @x @w @v@ @u@J@A&IH@@ @t@@ @s@AG@@@O  8 @@@A<@@96@@ @x@5@@ @w4@@ @v@ @u@ @t@ @s1@@.-@@ @r@,@@ @q+@@ @p@ @o@ @n@ @m(@@%$@@ @l@#"@@ @k!@@ @i@@ @j@ @h@ @g@ @f@ @e@@@@ @d@@ @c@ @b@ @a@@
@@ @`@@ @_@ @^@ @]@@@@ @\@@@ @[@@ @Z@ @@ @Y@@ @V@@ @X@@ @W@ @U@ @T@ @S@ @R@ @Q@@@@ @P@@ @N@@ @O@ @M@ @L@ @K@@@@ @J@@@ @I@@@ @H@@ @F@@ @G@ @E@ @D@ @C@ @B@ @A@@@@ @@נ@@ @?@@ @>@ @=@ @<@@@@ @;@@@ @:@̠@@ @9@@ @8@ɠ@@ @7@@ @6Ơ@@ @5@@ @4@ @3@ @2@ @1@ @0@ @/@@@@ @.@@@ @-@@@ @,@@@ @+@@ @*@@@ @)@@ @(@@ @'@@ @&@ @%@ @$@ @#@ @"@ @!@ @ @@@@ @@@@ @@@@ @@@ @@@@ @@@ @@@ @@ @@ @@ @@ @@ @@@@@ @@@@ @@@ @@@@ @@@ @@@ @
@@ @@@ @@ @@ @
@ @	@ @@ @@@@@ @@@@ @@@ @@@@ @@@ @@@ @@ @ @ @@ @@ @@@@ @@ @|@y@@ @@ @v@s@@ @@ @p@@ml@@ @k@@ @@ @@ @h@ec`_^]@@ @@\[@@ @ZY@@ @@ @@ @@ @V@@SR@@ @QP@@ @@ @@ @M@JI@@ @@ @F@@C@@ @@BA@@ @@@?>@@ @@@ @@=<;@@ @@@ @:@@ @@ @@ @@ @@ @@ @7@@4@@ @@32@@ @@10@@ @@/.-@@ @@@ @@,+*@@ @@@ @)@@ @@ @@ @@ @@ @@ @@ @&@@#@@ @@"!@@ @@ @@ @@@ @@ @@ @@ @@ @@@@@ @@@@ @@@ @@@@ @@@ @@@@ @@@ @@ @@ @@ @@ @@ @
@@
@@ @@	@@ @@@ @@@@ @@@ @@@@ @@@ @@ @@ @@ @@ @@ @@@@@ @@@@ @@@ @@@@ @@@ @@@ @@ @@ @@ @@ @@@@@ @@@@ @@@ @@@ @@@ @@ @@ @@ @@@@@ @@@@ @@@ @@ @@ @@ @N @l @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @~ @} @| @{ @z @y @xE@ @w@@@@@@@F  8 @@@A@@@@ @{@@ @z@ @y@ @x7@@4@@ @w@32@@ @v10/.@@ @u@@ @t@@ @s@ @r@ @q@ @pn@@k@@ @o@jih@@ @n@@ @m@gfe@@ @l@@ @kdcb@@ @i@@ @ha@@ @j@ @g@ @f@ @e@ @d@ @c@@@ @b@@@ @a@@ @`@ @_@ @^@ @]u@@r@@ @\@qpo@@ @[@@ @Z@nml@@ @Y@@ @Xk@@ @W@ @V@ @U@ @T@ @S@@@@ @R@@@ @Q@@ @P@ @O@ @N@ @M@@@ @L@ @K@@@@ @J@@ @I@ @H@ @G@@@@ @F@ @@ @E@@@ @D@@ @C@@@ @B@@ @A@@ @@@ @?@ @>@ @=@ @<@ @;@@@@ @:@@@ @9@@@ @8@@@ @7@@ @6@@@ @5@@ @4@@ @3@ @2@ @1@ @0@ @/@ @.@ @-@@@@ @,@@@ @+@@@ @*@@ @)@ @(@ @'@ @&@ @%@@@@ @$@֠@@ @#@@ @"@Ӡ@@ @!@@ @ @@@ @@@ @@ @@ @@ @@ @@ @@@@@ @@@@ @@@@ @@@ @@@@ @@@ @@@ @@ @@ @@ @@ @@ @
@@@@ @@@@ @@@ @
@@@ @	@@ @@@@ @@@ @@ @@ @@ @@ @@ @@@@@ @ @@@ @@@ @@ݠ@@ @@@ @@@ @@ @@ @@ @@ @@@@@ @@@@ @@@@ @@@ @@@@ @@@ @@@ @@@ @@ @@ @@ @@ @@ @@@@@ @@@@ @@@@ @@@@ @@@ @@@@ @@@ @@@ @@@ @@ @@ @@ @@ @@ @@ @<@@96@@ @@5@@ @4@@ @@ @@ @@ @1@@.-@@ @@,@@ @+@@ @@ @@ @@ @@@@@ @@@ @@ @@ @@@@ @@ @@@@ @@ @@@@@ @@@ @@ @@ @%@"@@ @@ @s@@po@@ @nml@@ @@@ @@ @@ @i@@fe@@ @@dc@@ @b_@@ @^]@@ @@ @@ @@ @@ @@@@@ @@@ @@@ @@ @@ @@ @D@@A@@@ @@?>=@@ @@@ @@<9@@ @87@@ @654@@ @@@ @@ @@ @@ @@ @@ @@@
@@ @@@@ @@
	@@ @@@ @@@ @@ @@ @@ @@ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @~ @} @| @{ @z@ @y@@@@@@@@A@@г$unitT U @@	@@ @}@@@@ @~@@@_ @@mb@
@@@haA@%@J@C@@W@@@*@@G@@@`    @x/@@@A@b@{0@@A@d  8 @@@A@@@@@@@A@g  8 @@@A_A@I@m[@X@@='@$@@@@|@yO@L5@2@@@L@I!@@@ @@@@@q@n6@3@@@@c@`m @k @j @i @h @g @f @e @d @c @b @a @` @_ @^ @] @\ @[ @Z @Y @X @W @V @U @T @S @R @Q @P @OI@Nlq@ @M@@@@@@@ A@zj@@  0 @g|l@A@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        D  D 3@	H             Xavier Leroy, projet Cristal, INRIA Rocquencourt           E44E4@	H                                                                        FF@	H   Copyright 1996 Institut National de Recherche en Informatique et     GG@	H     en Automatique.                                                    HHg@	H                                                                        IhhIh@	H   All rights reserved.  This file is distributed under the terms of     J J@	H   the GNU Lesser General Public License version 2.1, with the           	K 
KN@	H   special exception on linking described in the file LICENSE.           LOO LO@	H                                                                         M M@	H************************************************************************ N N5@	Y Selection of pseudo-instructions, assignment of pseudo-registers,
   sequentialization.  !P77 "Q|@	S The following methods must or can be overridden by the processor
     description  ' ( @@
   Must be overridden to indicate whether a constant is a suitable
       immediate operand to the given integer arithmetic instruction.
       The default implementation handles shifts by immediate amounts,
       but produces no immediate operations otherwise.  - B!% . E	.@	q Must be defined to indicate whether a constant is a suitable
       immediate operand to the given integer test  3 G	{	 4 H		@	, Must be defined to select addressing modes  9 K
j
n : K
j
@	@ Can be overridden to reflect special extcalls known to be pure  ? N
 @ N
U@	@ Can be overridden to deal with special arithmetic instructions  E T F T&@	: Can be overridden to deal with special test instructions  K Vpt L Vp@	D Can be overridden to deal with special store constant instructions  Q Z
J
N R Z
J
@	 Return an array of fresh registers of the given type.
       Default implementation is like Reg.createv.
       Can be overridden if float values are stored as pairs of
       integer registers.  W \

 X _w@	t Can be overridden to deal with 2-address instructions
       or instructions with hardwired input/output registers  ] b ^ c5t@	t Can be overridden to deal with 2-address instructions
       or instructions with hardwired input/output registers  c g d h1p@	 Can be overridden to deal with unusual unboxed calling conventions,
       e.g. on a 64-bit platform, passing unboxed 32-bit arguments
       in 32-bit stack slots.  i k j mg@	@ Can be overridden to deal with stack-based calling conventions  o p p p=@	y Fill a freshly allocated block.  Can be overridden for architectures
       that do not provide Arch.offset_addressing.  u s v t@	 informs the code emitter that the current function is non-leaf:
     it may perform a (non-tail) call; by default, sets
     [contains_calls := true]  { w02 | y@	l informs the code emitter that the current function may end with
     a tail-call; by default, does nothing   |  }2_@
   informs the code emitter that the current function may call
     a C function that never returns; by default, does nothing.

     It is unnecessary to save the stack pointer in this situation
     (which is the main purpose of tracking leaf functions) but some
     architectures still need to ensure that the stack is properly
     aligned when the C function is called. This is achieved by
     overloading this method to set [contains_calls := true]     M@	 dispatches on instructions to call one of the marking function
     above; overloading this is useful if Ispecific instructions need
     marking     
@	F The following method is the entry point and should not be overridden      j@	 The following methods should not be overridden.  They cannot be
     declared "private" in the current implementation because they
     are not always applied to "self", but ideally they should be private.     @	 [contains_calls] is declared as a reference instance variable,
     instead of a mutable boolean instance variable,
     because the traversal uses functional object copies.     M@@   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-c ͐ !. - @0)*h%(&  0         @ @@$Arch0r
|r`۠0CoࠌD(0ۺ
+xr`Š5Build_path_prefix_map0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5g'Clflags0lsC^mNˠ*Cmi_format0vB $V@X#Cmm0ZUmŰI&Config0g2y#{d)Debuginfo0=Shڷg^Rz[#Env0>(yӒê)t%Ident0f4nAm\zb,Identifiable0h$T<^D~R4&Lambda0{ʮ1f~u)Load_path0'ޓtz
ʠ(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T0HCAx$Misc0Z+\\4:WlA?L+Outcometree0V/Qcy,A)Parsetree0e3S#ʌo$Path0}%/Qߵ)Primitive0,͘'Profile0WU'>(F9ᠠӐ0V×,L0!o0B@,G&Stdlib0-&fºnr39tߠ+Stdlib__Arg0@)6:
Z$o4*-Stdlib__Array0XUJө
	ƿ8.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Printf0pJUX빃Ύ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]%Subst0r˿&qCJ )Targetint06GpvamT:.Type_immediacy0y,G?'%Types0^ qARh(Warnings0^1]/3W@0B@,GA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Caml1999Y030        
:  ( )Selectgen@(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?')Targetint06GpvamT:%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk.Stdlib__Printf0pJUX빃Ύ+Stdlib__Obj0_bE@Xt1Stdlib__Nativeint0 oB	(+Stdlib__Map0@mŘ`rnࠠ,Stdlib__List0U#r&L.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7-Stdlib__Int640UY*#/F]&$-Stdlib__Int320Z(I+Stdlib__Int0ʬ<xyd/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj-Stdlib__Array0XUJө
	ƿ8+Stdlib__Arg0@)6:
Z$o4*&Stdlib0-&fºnr39tߠ0B@,G#Reg0V×,L0'Profile0WU'>(F9ᠠ$Proc05m*{!OeBq)Primitive0,͘'Polling0v69Fg!jՊ$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A'Numbers0&!h>jU)R$Misc0Z+\\4:WlA?L$Mach0HCAx)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[&Config0g2y#{d#Cmm0ZUmŰI*Cmi_format0vB $V@X'Clflags0lsC^mNˠ.CamlinternalOO0
,&'(w30CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l+Backend_var0ۺ
+xr`Š(Asttypes0CoࠌD($Arch0r
|r`@,Stdlib__List0!?$JOjĠ-Stdlib__Int640"rԓni;Fᠠ+Stdlib__Int0W0F*3濠-Stdlib__Array0Hw
@&Stdlib0~tV*e #Reg0D0-3(7P$Proc0U2ol-͸'Polling0~R*GX{`'Numbers0˂I
z"$Misc0ٍ/rR0	2$Mach0@A 	-<nPJ
頠%Ident0o͚BZd)Debuginfo0=euiP#Cmm0X_Ұt>qꠠ.CamlinternalOO0ϻcRf	`mb+Backend_var0pZ\/Z
Pɠ$Arch0S/c٧++tG@   EFCDB@FEDCB@B@C@   ;camlSelectgen__env_add_1047DA%*opt*#var$regs#env@@@#mut@@    4asmcomp/selectgen.mldRd$$dA1Selectgen.env_add7Selectgen.env_add.(fun)@@	!camlSelectgen__env_add_inner_3549" @@A@<camlSelectgen__env_find_1072BA"id2#env3@@@'*match*
Ҳ9camlStdlib__Map__find_212@@    ,mnvjjmA2Selectgen.env_find8Selectgen.env_find.(fun)@[F)camlIdent@    ;m`jjjm@@    =m`jjjm@@    ?m`jjjm@@    Am`vjjm@@&@    GmF]jjm@A@=camlSelectgen__size_expr_1211BA@A@1camlSelectgen__56@@@@    1camlSelectgen__48@@@@1camlSelectgen__57@BB@:camlSelectgen__effect_1383 A%param@A@<camlSelectgen__coeffect_1388 A
@A@?camlSelectgen__effect_only_1398AA!ex@@@@@@	@@    #Vf  #A	)Selectgen.Effect_and_coeffect.effect_only	/Selectgen.Effect_and_coeffect.effect_only.(fun)@A@		!camlSelectgen__coeffect_only_1401AA"ce{@@@@@@@@    $Yh  $A	+Selectgen.Effect_and_coeffect.coeffect_only	1Selectgen.Effect_and_coeffect.coeffect_only.(fun)@A@8camlSelectgen__join_1404BA@A@@	!camlSelectgen__join_list_map_1411B@@A@@7camlSelectgen__fun_3630A@@A7camlSelectgen__fun_4440B@@A@@@9camlSelectgen__reset_2739AA%param
@@A@T-camlSelectgen@@@@1camlSelectgen__55 @    B]    A/Selectgen.reset5Selectgen.reset.(fun)@A@	,camlSelectgen__env_add_static_exception_1066CA@A@@	 camlSelectgen__env_find_mut_1079BA@A@	-camlSelectgen__env_find_static_exception_1098BA"idL#envM@9camlStdlib__Map__find_212
A@    
zRgzA	#Selectgen.env_find_static_exception	)Selectgen.env_find_static_exception.(fun)@[G@+camlNumbers@    zBNz@@    zBNz@@     zBNz@@    "zBNz@@    $zBgz@A@ϐ@@@@	$camlSelectgen__oper_result_type_1103AA@A@	"camlSelectgen__size_component_1145AA@A@	!camlSelectgen__size_machtype_1151AA@A@	 camlSelectgen__swap_intcomp_1299AA@A@	&camlSelectgen__all_regs_anonymous_1304AA@A@=camlSelectgen__name_regs_1308BA@A@8camlSelectgen__join_1317EA@A@>camlSelectgen__join_array_1330BA@A@-camlSelectgenT8camlSelectgen__join_1358BA@A@8camlSelectgen__pure_1363AA}U@@AA@8camlSelectgen__join_1371BA@A@:camlSelectgen__copure_1376AAb@@AA@$Y%Z&['\(])^*_+`,a-b@2 -	)}cm!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         (**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*             Xavier Leroy, projet Cristal, INRIA Rocquencourt           *)
(*                                                                        *)
(*   Copyright 1996 Institut National de Recherche en Informatique et     *)
(*     en Automatique.                                                    *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

(* Selection of pseudo-instructions, assignment of pseudo-registers,
   sequentialization. *)

type environment

val env_add
   : ?mut:Asttypes.mutable_flag
  -> Backend_var.With_provenance.t
  -> Reg.t array
  -> environment
  -> environment

val env_find : Backend_var.t -> environment -> Reg.t array

val size_expr : environment -> Cmm.expression -> int

module Effect : sig
  type t =
    | None
    | Raise
    | Arbitrary
end

module Coeffect : sig
  type t =
    | None
    | Read_mutable
    | Arbitrary
end

module Effect_and_coeffect : sig
  type t

  val none : t
  val arbitrary : t

  val effect : t -> Effect.t
  val coeffect : t -> Coeffect.t

  val effect_only : Effect.t -> t
  val coeffect_only : Coeffect.t -> t

  val join : t -> t -> t
  val join_list_map : 'a list -> ('a -> t) -> t
end

class virtual selector_generic : object
  (* The following methods must or can be overridden by the processor
     description *)
  method is_immediate : Mach.integer_operation -> int -> bool
    (* Must be overridden to indicate whether a constant is a suitable
       immediate operand to the given integer arithmetic instruction.
       The default implementation handles shifts by immediate amounts,
       but produces no immediate operations otherwise. *)
  method virtual is_immediate_test : Mach.integer_comparison -> int -> bool
    (* Must be defined to indicate whether a constant is a suitable
       immediate operand to the given integer test *)
  method virtual select_addressing :
    Cmm.memory_chunk -> Cmm.expression -> Arch.addressing_mode * Cmm.expression
    (* Must be defined to select addressing modes *)
  method is_simple_expr: Cmm.expression -> bool
  method effects_of : Cmm.expression -> Effect_and_coeffect.t
    (* Can be overridden to reflect special extcalls known to be pure *)
  method select_operation :
    Cmm.operation ->
    Cmm.expression list ->
    Debuginfo.t ->
    Mach.operation * Cmm.expression list
    (* Can be overridden to deal with special arithmetic instructions *)
  method select_condition : Cmm.expression -> Mach.test * Cmm.expression
    (* Can be overridden to deal with special test instructions *)
  method select_store :
    bool -> Arch.addressing_mode -> Cmm.expression ->
                                         Mach.operation * Cmm.expression
    (* Can be overridden to deal with special store constant instructions *)
  method regs_for : Cmm.machtype -> Reg.t array
    (* Return an array of fresh registers of the given type.
       Default implementation is like Reg.createv.
       Can be overridden if float values are stored as pairs of
       integer registers. *)
  method insert_op :
    environment -> Mach.operation -> Reg.t array -> Reg.t array -> Reg.t array
    (* Can be overridden to deal with 2-address instructions
       or instructions with hardwired input/output registers *)
  method insert_op_debug :
    environment -> Mach.operation -> Debuginfo.t -> Reg.t array
      -> Reg.t array -> Reg.t array
    (* Can be overridden to deal with 2-address instructions
       or instructions with hardwired input/output registers *)
  method insert_move_extcall_arg :
    environment -> Cmm.exttype -> Reg.t array -> Reg.t array -> unit
    (* Can be overridden to deal with unusual unboxed calling conventions,
       e.g. on a 64-bit platform, passing unboxed 32-bit arguments
       in 32-bit stack slots. *)
  method emit_extcall_args :
    environment -> Cmm.exttype list -> Cmm.expression list -> Reg.t array * int
    (* Can be overridden to deal with stack-based calling conventions *)
  method emit_stores :
    environment -> Cmm.expression list -> Reg.t array -> unit
    (* Fill a freshly allocated block.  Can be overridden for architectures
       that do not provide Arch.offset_addressing. *)

  method mark_call : unit
  (* informs the code emitter that the current function is non-leaf:
     it may perform a (non-tail) call; by default, sets
     [contains_calls := true] *)

  method mark_tailcall : unit
  (* informs the code emitter that the current function may end with
     a tail-call; by default, does nothing *)

  method mark_c_tailcall : unit
  (* informs the code emitter that the current function may call
     a C function that never returns; by default, does nothing.

     It is unnecessary to save the stack pointer in this situation
     (which is the main purpose of tracking leaf functions) but some
     architectures still need to ensure that the stack is properly
     aligned when the C function is called. This is achieved by
     overloading this method to set [contains_calls := true] *)

  method mark_instr : Mach.instruction_desc -> unit
  (* dispatches on instructions to call one of the marking function
     above; overloading this is useful if Ispecific instructions need
     marking *)

  (* The following method is the entry point and should not be overridden *)
  method emit_fundecl : future_funcnames:Misc.Stdlib.String.Set.t
                                              -> Cmm.fundecl -> Mach.fundecl

  (* The following methods should not be overridden.  They cannot be
     declared "private" in the current implementation because they
     are not always applied to "self", but ideally they should be private. *)
  method extract_onto : Mach.instruction -> Mach.instruction
  method extract : Mach.instruction
  method insert :
    environment -> Mach.instruction_desc -> Reg.t array -> Reg.t array -> unit
  method insert_debug :
    environment -> Mach.instruction_desc -> Debuginfo.t ->
      Reg.t array -> Reg.t array -> unit
  method insert_move : environment -> Reg.t -> Reg.t -> unit
  method insert_move_args :
    environment -> Reg.t array -> Reg.t array -> int -> unit
  method insert_move_results :
    environment -> Reg.t array -> Reg.t array -> int -> unit
  method insert_moves : environment -> Reg.t array -> Reg.t array -> unit
  method emit_expr :
    environment -> Cmm.expression -> Reg.t array option
  method emit_tail : environment -> Cmm.expression -> unit

  (* [contains_calls] is declared as a reference instance variable,
     instead of a mutable boolean instance variable,
     because the traversal uses functional object copies. *)
  val contains_calls : bool ref
end

val reset : unit -> unit
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Caml1999I030      0      )Selection'fundecl 0future_funcnames$Misc&Stdlib&String#Set!t@@ @ @#Cmm'fundecl@@ @ $Mach'fundecl@@ @ @ @ @ @ @5asmcomp/selection.mliST@@/I@@       d  Š)Selection0yK'i>d(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?')Targetint06GpvamT:%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk.Stdlib__Printf0pJUX빃Ύ+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj-Stdlib__Array0XUJө
	ƿ8+Stdlib__Arg0@)6:
Z$o4*&Stdlib0-&fºnr39tߠ#Reg0V×,L0'Profile0WU'>(F9ᠠ)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A$Misc0Z+\\4:WlA?L$Mach0HCAx)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[&Config0g2y#{d#Cmm0ZUmŰI*Cmi_format0vB $V@X'Clflags0lsC^mNˠ0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l+Backend_var0ۺ
+xr`Š(Asttypes0CoࠌD($Arch0r
|r`@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 Caml1999I030      0      )Selection'fundecl 0future_funcnames$Misc&Stdlib&String#Set!t@@ @ @#Cmm'fundecl@@ @ $Mach'fundecl@@ @ @ @ @ @ @5asmcomp/selection.mliST@@/I@@       d  Š)Selection0yK'i>d(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?')Targetint06GpvamT:%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk.Stdlib__Printf0pJUX빃Ύ+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj-Stdlib__Array0XUJө
	ƿ8+Stdlib__Arg0@)6:
Z$o4*&Stdlib0-&fºnr39tߠ#Reg0V×,L0'Profile0WU'>(F9ᠠ)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A$Misc0Z+\\4:WlA?L$Mach0HCAx)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[&Config0g2y#{d#Cmm0ZUmŰI*Cmi_format0vB $V@X'Clflags0lsC^mNˠ0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l+Backend_var0ۺ
+xr`Š(Asttypes0CoࠌD($Arch0r
|r`@            @@Caml1999T030    #  
F    4 )Selection'fundecl ~5asmcomp/selection.mliSS@б0future_funcnamesг$Misc&Stdlib&String#Set!t$Misc
	SS@@@@ @  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@A;:@@б@г#Cmm'fundecl#CmmeTfT@@@@ @3I@@г$Mach'fundecl$MachwTxT@@@@ @[@@@@ @^@@}d@ @aS@@@S@@I@@@h@@@  0 jiijjjjj@i	@A@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        D  D 3@	H             Xavier Leroy, projet Cristal, INRIA Rocquencourt           E44E4@	H                                                                        FF@	H   Copyright 1996 Institut National de Recherche en Informatique et     GG@	H     en Automatique.                                                    HHg@	H                                                                        IhhIh@	H   All rights reserved.  This file is distributed under the terms of    JJ@	H   the GNU Lesser General Public License version 2.1, with the          KKN@	H   special exception on linking described in the file LICENSE.          LOOLO@	H                                                                        MM@	H************************************************************************NN5@	Y Selection of pseudo-instructions, assignment of pseudo-registers,
   sequentialization. P77Q|@@   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-c!. - @0#Έ!J׈PA'  0 @@@$Arch0r
|r`۠(Asttypes0CoࠌD(+Backend_var0ۺ
+xr`Š5Build_path_prefix_map0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5g'Clflags0lsC^mNˠ*Cmi_format0vB $V@X0ZUmŰI&Config0g2y#{d)Debuginfo0=Shڷg^Rz[#Env0>(yӒê)t%Ident0f4nAm\zb,Identifiable0h$T<^D~R4&Lambda0{ʮ1f~u)Load_path0'ޓtz
ʠ(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T0HCAxn0Z+\\4:WlA?L+Outcometree0V/Qcy,A)Parsetree0e3S#ʌo$Path0}%/Qߵ)Primitive0,͘'Profile0WU'>(F9ᠠ#Reg0V×,L00yK'i>d&Stdlib0-&fºnr39tߠ+Stdlib__Arg0@)6:
Z$o4*-Stdlib__Array0XUJө
	ƿ8.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Printf0pJUX빃Ύ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]%Subst0r˿&qCJ )Targetint06GpvamT:.Type_immediacy0y,G?'%Types0^ qARh(Warnings0^1]/3W@0yK'i>dA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Caml1999Y030          ( )Selection@(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?')Targetint06GpvamT:%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk.Stdlib__Printf0pJUX빃Ύ+Stdlib__Obj0_bE@Xt1Stdlib__Nativeint0 oB	(+Stdlib__Map0@mŘ`rnࠠ,Stdlib__List0U#r&L.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7-Stdlib__Int320Z(I/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj-Stdlib__Array0XUJө
	ƿ8+Stdlib__Arg0@)6:
Z$o4*&Stdlib0-&fºnr39tߠ0yK'i>d)Selectgen0B@,G#Reg0V×,L0'Profile0WU'>(F9ᠠ$Proc05m*{!OeBq)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A$Misc0Z+\\4:WlA?L$Mach0HCAx)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[&Config0g2y#{d#Cmm0ZUmŰI*Cmi_format0vB $V@X'Clflags0lsC^mNˠ.CamlinternalOO0
,&'(w30CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l+Backend_var0ۺ
+xr`Š(Asttypes0CoࠌD($Arch0r
|r`@,Stdlib__List0!?$JOjĠ-Stdlib__Array0Hw
@)Selectgen02 -	)}cm!$Proc0U2ol-͸'Clflags0O(RYiE[.CamlinternalOO0ϻcRf	`mb@FEDCB@FEDBC@B@  0 :camlSelection__fundecl_594BA@A@>camlSelection__select_addr_113AA@A@1camlSelection__375Selection.Use_default@-camlSelectionCDE	+camlSelection__pseudoregs_for_operation_183CA@A@1camlSelection__47@1camlSelection__38$sqrt1camlSelection__46@1camlSelection__393caml_bswap16_direct1camlSelection__45@1camlSelection__407caml_int32_direct_bswap1camlSelection__44@1camlSelection__417caml_int64_direct_bswap1camlSelection__43@1camlSelection__42;caml_nativeint_direct_bswap@@@@@@?camlSelection__is_immediate_245AA!n @AD    @    4asmcomp/selection.ml |Ue;; |A6Selection.is_immediate<Selection.is_immediate.(fun)@E   @     |iz;; |
@@     |Uz;; |@A@	&camlSelection__is_immediate_natint_248AA!n @A  '@D1camlSelection__48_n @    ( ~\mww ~A=Selection.is_immediate_natint	#Selection.is_immediate_natint.(fun)@  '@E1camlSelection__49_n    @    9 ~q Cww ~@@    ; ~\ Cww ~@A@@@@@K@d[=y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  (**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*             Xavier Leroy, projet Cristal, INRIA Rocquencourt           *)
(*                                                                        *)
(*   Copyright 1996 Institut National de Recherche en Informatique et     *)
(*     en Automatique.                                                    *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

(* Selection of pseudo-instructions, assignment of pseudo-registers,
   sequentialization. *)

val fundecl: future_funcnames:Misc.Stdlib.String.Set.t
    -> Cmm.fundecl -> Mach.fundecl
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Caml1999I030  D     c  C7Semantics_of_primitives'effects m  8 @@*No_effects R@@	&middle_end/semantics_of_primitives.mlix:Ix:S@@A7Only_generative_effects S@@
x:Tx:m@@B1Arbitrary_effects T@@x:nx:@@#C@@A@@@@@x::@@A@&@A@)coeffects n  8 @@,No_coeffects V@@%y&y@@5E-Has_coeffects W@@.y/y@@>F@@A@@@@@2y@@A@ADA@-for_primitive o@2Clambda_primitives)primitive@@ @ S@@ @ 3@@ @ @ @ @ @ @P

Q

@@`I@+return_type p  8 @@%Float j@@_ B` B@@oK%Other k@@h Ci C&@@xL@@A@@@@@l A  @@A@{JA@8return_type_of_primitive q@:)primitive@@ @ )@@ @ @ @ @ E(( E(q@@M@@         )7Semantics_of_primitives0 ]xP`,[{(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?'%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A$Misc0Z+\\4:WlA?L)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[*Cmi_format0vB $V@X2Clambda_primitives0&>$e?<x(0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l(Asttypes0CoࠌD(@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Caml1999T030      j[  f  4 7Semantics_of_primitives-ocaml.warning	%middle_end/semantics_of_primitives.mlQQ@2+a-4-9-30-40-41-42Q
Q@@QQ@@@@@QQ@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@@A  ( 'effects QASSTS@@  8 @@*No_effects R@@]S^S@@jA7Only_generative_effects S@@fSgS@@sB1Arbitrary_effects T@@oSpS@@|C@@A@@@@@sS@@A@@@@@@@S@@@@S@@@@@A@@@@sA  ( )coeffects UBTT@@  8 @@,No_coeffects V@@TT@@E-Has_coeffects W@@TT"@@F@@A@@@@@T@@A@D@@@@@T@@@@@A@@@@  0 @jd@@@ࠠ-for_primitive XV$(V$5@@@@2Clambda_primitives)primitive@@ @C@$@@ @C@Y@@ @C@@ @C@%@ @&C@#  0 @1\V@@@@$prim j@V$7V$;@@(@@ @  0 @9V$$ @@@@
@г62Clambda_primitives6
V$>V$Z@@?@@ @@@V$6V$[@@@F@@ఐ-$primW^fW^j@*@-@*J@@T@@ @  0 @-;@@@Ġ*Pmakeblock2Xpt3Xp~@  < *Pmakeblock2Clambda_primitives)primitive@@ @@#intA@@ @,mutable_flag@@ @+block_shape@@ @@CAeq V@A	!middle_end/clambda_primitives.mlidd@@@X@ZXp[Xp@@@@G@d;@@@@@G@e@@@
@@@G@fE@@@8@@@@G@gI@@I@Ġ*PmakearrayuYvY@  < *PmakearrayC@D*array_kind@@ @:@@ @@BQeq V@A2 D
a
c3 D
a
@@@M H@YY@@@@G@ll@Ġ'MutableYY@  < 'Mutable(Asttypes,mutable_flag@@ @@@@AB@B@A4parsing/asttypes.mligWugW~@@@	S@@@@d@@G@@@@9Y@@@@G@@@@@@@@@F@@@ภ7Only_generative_effectsYY@  < _@@ @@@@AC@C@Aa@@^@@@@@D@@ภ,No_coeffectsYY@  < <@@ @"@@@@B@B@A>@@;@@@@@D@@@@@@Ġ*PmakearrayZZ@r@ZZ@@t@@F@@Ġ)ImmutableZZ@  < )Immutablea@@@@B@B@AYgWkZgWt@@@aR@@
	@@@@F@@@@Z@@:@@F@@@@@ภ*No_effectsZZ@  < T@@@@C@C@A@@@@@<@@D@@ภ,No_coeffects"Z#Z@Q@@@B@@D@@@@@TC@@Ġ)Pduparray5[ 6[ 
@  < )Pduparray@@@ @@@ @@BReq V@A H35 H3]@@@ I@I[ J[ @@@@F@*@Ġ)ImmutableU[ V[ @]@@@@@@F@7@@@'\[ @@@@F@<@@<@@ภ*No_effectsi\ &j\ 0@V@@@@@D@K@ภ,No_coeffectsv\ 2w\ >@@@@@@D@X@@@@C@[@Ġ)Pduparray^^@V@^^@@@@G@q@Ġ'Mutable^^@@@@@Y@@G@~@@@^@@@@G@@@@Ġ*Pduprecord^^@  < *Pduprecord}@%Types5record_representation@@ @~@@ @@BGeq V@Apkqk/@@@_@^^@@@@G@@@@@@G@@@@%
@@@@G@@@@@M@@@@F@@@ภ7Only_generative_effects__@%@@@@@D@@ภ-Has_coeffects__ @  < S @@@AB@B@AR@@O@@@@@D@@@@@%C@@Ġ&Pccall``@  < &Pccall@)Primitive+description@@ @@AHeq V@AmFHmFi@@@`ঠ)prim_name!`"`@  , )prim_name)Primitive+description@@ @&stringO@@ @@@  , *prim_arity#intA@@ @@A	@@4typing/primitive.mli^^@@K  , *prim_alloc$boolE@@ @@B@@
__
@@#L  , 0prim_native_name*"@@ @@C @@`9=`9V@@-M  , 5prim_native_repr_args4$listI:+native_repr@@ @@@ @@D2@@)a*a@@?N  , 4prim_native_repr_resF@@ @@E;@@2b3b@@HO@@6]y}7]y@@LJ1caml_format_floata,a=@@a+a>@@]@@J@sJ@ri@/caml_format_intaBaQ@@aAaR@@l@@J@uJ@tx@@@@p@@I@v|@1caml_int32_formataVag@@aUah@@@@I@xI@w@@*@@@@H@y@5caml_nativeint_formatbi{bi@@bizbi@@@@H@{H@z@@=@@@@G@|@1caml_int64_formatbibi@@bibi@@@@G@~G@}@@a)bi@@@@F@@@@`bi@@@@F@F@@@@@@@@F@@@@@ภ*No_effectscc@@@@@@D@@ภ,No_coeffectscc@,@@@@@D@@@@@/C@@Ġ&Pccalldd@
@dd@@@@F@@@@@@N@@F@@@@@ภ1Arbitrary_effects'd(d@  < h@@@BC@C@A@@@@@P@@D@@ภ-Has_coeffects6d7d@E@@@V@@D@@@@@hC@@Ġ&PraiseIeJe	@  < &Praise@*raise_kind@@ @@AIeq V@Ao}o}@@@a@[e
\e@@@@F@<@@@@@@@F@@@@@@@ภ1Arbitrary_effectsmene @F@@@@@D@O@ภ,No_coeffectsze"{e.@@@@@@D@\@@@@C@_@Ġ$Pnotf/3f/7@  < $Pnotq@@@Ceq V@AVqWq@@@qd@@
	@@@@Q@@@@Ġ'Pnegintg8<g8C@  < 'Pnegint@@@Deq V@Aksls@@@e@@
	@@@@Q@@@@@#
@@@@P@@Ġ'PaddinthDHhDO@  < 'Paddint@@@Eeq V@Ass@@@f@@
	@@@@P@@@@@<
@@@@O@@Ġ'PsubintiPTiP[@  < 'Psubint@@@Feq V@As s	@@@g@@
	@@'@@O@@@@@U
@@+@@N@@Ġ'Pmulintj\`j\g@  < 'Pmulint@@@Geq V@As
s@@@h@@
	@@@@@N@@@@@n
@@D@@M@@Ġ'Pandintkhlkhs@  < 'Pandint@@@Heq V@Au@Bu@K@@@k@@
	@@Y@@M@@@@@
@@]@@L@	@Ġ&Porint5ltx6lt~@  < &Porint@@@Ieq V@Au@Lu@T@@@l@@
	@@r@@L@@@@@
@@v@@K@"@Ġ'PxorintNmOm@  < 'Pxorint@@@Jeq V@Au@Uu@^@@@m@@
	@@@@K@7@@7@@
@@@@J@;@Ġ'Plslintgnhn@  < 'Plslint5@@@Keq V@Av_av_j@@@5n@@
	@@@@J@P@@P@@
@@@@I@T@Ġ'Plsrintoo@  < 'PlsrintN@@@Leq V@A3v_k4v_t@@@No@@
	@@@@I@i@@i@@
@@@@H@m@Ġ'Pasrintpp@  < 'Pasrintg@@@Meq V@ALv_uMv_~@@@gp@@
	@@@@H@@@@@
@@@@G@@Ġ(Pintcompqq@  < (Pintcomp@2integer_comparison@@ @@ALeq V@Akwlw@@@q@qq@@@@G@@@@@@@@G@@@@@+	@@@@F@@@ภ*No_effectsqq@@@@@@D@@ภ,No_coeffectsqq@@@@@@D@@@@@C@@Ġ-Pcompare_intsrr@  < -Pcompare_ints@@@Neq V@Axx@@@r@@
	@@;@@H@@@@Ġ/Pcompare_floatsrr@  < /Pcompare_floats@@@Oeq V@Axx@@@s@@
	@@P@@H@@@@@#
@@T@@G@ @Ġ.Pcompare_bints,r	 -r	@  < .Pcompare_bints@-boxed_integer@@ @@AMeq V@Axx@@@ t@>r	?r	@@@@G@@@@@@w@@G@#@@#@@J	@@{@@F@'@@ภ*No_effectsTs		Us		"@A@@@{@@D@
 6@ภ,No_coeffectsas		$bs		0@@@@@@D@
C@@@@C@F@Ġ(Pdivbintzt	1	5{t	1	=@  < (PdivbintH@J@@ @@A_eq V@A2 ]3 ]@@  8 @@$size@]@@ @? ]@ ]@@Z X'is_safe@c'is_safe@@ @L ]M ]@@g Y@_A@@@@@j@@@Ij Zঠ'is_safet	1	@t	1	G@  , 2@@ @@A  , )(@@A%@"A@Ġ&Unsafet	1	Jt	1	P@  < &Unsafe&Lambda'is_safe@@ @@@@AB@B@A1lambda/lambda.mlinn@@@	R@@@@6@@I@
E@@@t	1	>t	1	R@@X@@I@
GI@
F@@@a@@@@I@
H@@@Ġ(Pmodbintu	S	Wu	S	_@  < (Pmodbint@@@ @@A`eq V@A ^ ^@@  8 @@$size
@@@ @ ^ ^@@ ['is_safe@l@@ @ ^ ^@@ \@`A@@@@@@@@H ]ঠ'is_safeu	S	bu	S	i@  , 0@@ @
N@A  , '&@@A#@ A@Ġ&Unsafe&u	S	l'u	S	r@j@@@@@@I@
Y@@@-u	S	`.u	S	t@@F@@I@
[I@
Z@@@O@@h@@I@
\@@@@@@l@@H@
]@Ġ'PdivintDv	u	yEv	u	@  < 'Pdivint@@@ @@AJeq V@Att*@@@iĠ&UnsafeXv	u	Yv	u	@@@@@@@H@
g:@@@@@@@H@
h>@@>@@
@@@@G@
iB@Ġ'Pmodintnw		ow		@  < 'Pmodint<@@@ @@AKeq V@A%t+&t?@@@@jĠ&Unsafew		w		@@@@@@@G@
sd@@@@@@@G@
th@@h@@
@@@@F@
ul@@ภ*No_effectsx		x		@@@@@@D@
{@ภ,No_coeffectsx		x		@@@@@@D@
@@@@C@
	@Ġ(Pdivbinty		y		@Eঠ'is_safey		y		@  , 5N@@ @
|7@A  , ED@@0AA@>0A4@1Ġ$Safey	
 y	
@  < $Safe@@@@B@B@Amm@@@Q@@
	@@I@@I@
@@@y		y	
@@k@@I@
I@
@@@/@@!@@I@
@@@Ġ(Pmodbintz

z

@ঠ'is_safe	z

	z

@  , @@ @
@A  , @@ A@ A@Ġ$Safe	z

 	z

$@:@@@@|@@I@
@@@	z

	z

&@@2@@I@
I@
@@@(@@T@@I@
 @@ @@f@@X@@H@
@Ġ'Pdivint	0{
'
+	1{
'
2@Ġ$Safe	9{
'
3	:{
'
7@a@@@@@@H@
@@@@@s@@H@
@@@@
@@w@@G@
#@Ġ'Pmodint	O|
8
<	P|
8
C@Ġ$Safe	X|
8
D	Y|
8
H@@@@@@@G@
:@@@@@@@G@
>@@>@@
@@@@F@
B@@ภ1Arbitrary_effects	o}
L
R	p}
L
c@H@@@@@D@
Q@ภ,No_coeffects	|}
L
e	}}
L
q@@@@@@D@
^@@@@C@
a@Ġ*Poffsetint	~
r
v	~
r
@  < *Poffsetint]@U@@ @@ANeq V@AGyHy@@@bu@	~
r
	~
r
@@@@F@
@@@@@@@F@
@@@@ภ*No_effects	~
r
	~
r
@@@@@@D@
$@ภ,No_coeffects	~
r
	~
r
@@@@@@D@
'@@@@C@
!@Ġ*Poffsetref	

	

@  < *Poffsetref@@@ @@AOeq V@Az	 z	@@@v@	

	

@@@@F@
@@@@@@@F@
@@@@ภ1Arbitrary_effects	

	

@@@@@@D@
0@ภ-Has_coeffects





@@@@"@@D@
3@@@@4C@
-@Ġ+Pintoffloat
% @


& @

@  < +Pintoffloat@@@Peq V@A|	-	/|	-	<@@@w@@
	@@b@@N@
@@@Ġ+Pfloatofint
: A


; A

@  < +Pfloatofint@@@Qeq V@A|	-	=|	-	J@@@x@@
	@@w@@N@
#@@#@@#
@@{@@M@
'@Ġ)Pnegfloat
S B


T B
@  < )Pnegfloat!@@@Req V@A}	K	M}	K	X@@@!y@@
	@@@@M@
<@@<@@<
@@@@L@
@@Ġ)Pabsfloat
l C
m C@  < )Pabsfloat:@@@Seq V@A}	K	Y }	K	d@@@:z@@
	@@@@L@
U@@U@@U
@@@@K@
Y@Ġ)Paddfloat
 D
 D@  < )PaddfloatS@@@Teq V@A8~	e	g9~	e	r@@@S{@@
	@@@@K@
n@@n@@n
@@@@J@
r@Ġ)Psubfloat
 E"
 E+@  < )Psubfloatl@@@Ueq V@AQ~	e	sR~	e	~@@@l|@@
	@@@@J@
@@@@
@@@@I@
@Ġ)Pmulfloat
 F,0
 F,9@  < )Pmulfloat@@@Veq V@Aj~	e	k~	e	@@@}@@
	@@@@I@
@@@@
@@@@H@
@Ġ)Pdivfloat
 G:>
 G:G@  < )Pdivfloat@@@Weq V@A~	e	~	e	@@@~@@
	@@	
@@H@
@@@@
@@	@@G@
@Ġ*Pfloatcomp
 HHL
 HHV@  < *Pfloatcomp@0float_comparison@@ @@APeq V@A				@@@@
 HHW
 HHX@@@@G@
@@@@@	4@@G@
@@@@	@@	8@@F@
@@ภ*No_effects HH\ HHf@@@@	8@@D@
<@ภ,No_coeffects HHh HHt@M@@@	>@@D@
?	 @@@@	PC@
9	@Ġ-Pstringlength5 Iuy6 Iu@  < -Pstringlength	@@@Xeq V@A A		 A		@@@	 @@@
	@@	r@@H@
	@@	@Ġ,PbyteslengthJ IuK Iu@  < ,Pbyteslength	@@@[eq V@A B

 B

@@@	 C@@
	@@	@@H@
	3@@	3@@#
@@	@@G@
	7@Ġ,Parraylengthc Jd J@  < ,Parraylength	1@@@ @@ASeq V@A	 L	 L7@@@	5 J@s Jt J@@@@G@
	T@@@@@	@@G@
	X@@	X@@H	@@	@@F@
	\@@ภ*No_effects K K@v@@@	@@D@
H	k@ภ-Has_coeffects K K@@@@	@@D@
K	x@@@@	C@
E	{@Ġ&Pisint L L @  < &Pisint	@@@`eq V@A	z R	{ R@@@	 O@@
	@@
@@U@
	@@	@Ġ&Pisout M M@  < &Pisout	@@@aeq V@A	 T
5
7	 T
5
?@@@	 P@@
	@@
@@U@
	@@	@@#
@@
@@T@
	@Ġ*Pbintofint N N@  < *Pbintofint	@@@ @@AXeq V@A	 V

	 V

@@@	 Q@ N N@@@@T@	@@@@@
>@@T@	@@	@@H	@@
B@@S@	@Ġ*Pintofbint O! O+@  < *Pintofbint	@@@ @@AYeq V@A	 W

	 W

@@@	 R@* O,+ O-@@@@S@	
@@@@@
c@@S@

@@
@@m	@@
g@@R@
@Ġ(Pcvtbint? P.2@ P.:@  < (Pcvtbint

@@@ @@@ @@BZeq V@A	 X

	 X

@@@
 S@S P.;T P.<@@$@@R@
4@@@)@@R@
9@@@
@@
@@R@
=@@
=@@@@
@@Q@
A@Ġ(Pnegbintm Q=An Q=I@  < (Pnegbint
;@A@@ @@A[eq V@A
$ Y
% Y+@@@
? T@} Q=J~ Q=K@@N@@Q@
^@@@@@
@@Q@
b@@
b@@	@@
@@P@
f@Ġ(Paddbint RLP RLX@  < (Paddbint
`@f@@ @@A\eq V@A
I Z,.
J Z,I@@@
d U@ RLY RLZ@@s@@P@
@@@@@
@@P@
@@
@@	@@
@@O@
@Ġ(Psubbint S[_ S[g@  < (Psubbint
@@@ @@A]eq V@A
n [JL
o [Jg@@@
 V@ S[h S[i@@@@O@#
@@@@@ @@O@$
@@
@@
	@@@@N@%
@Ġ(Pmulbint Tjn Tjv@  < (Pmulbint
@@@ @@A^eq V@A
 \hj
 \h@@@
 W@ Tjw Tjx@@@@N@)
@@@@@%@@N@*
@@
@@/	@@)@@M@+
@Ġ(Pandbint
 Uy}
 Uy@  < (Pandbint
@@@ @@Aaeq V@A
 _ 
 _@@@
 ^@
 Uy
 Uy@@@@M@/
@@@@@J@@M@0
@@
@@T	@@N@@L@1
@Ġ'Porbint
& V
' V@  < 'Porbint
@@@ @@Abeq V@A
 `
 `8@@@
 _@
6 V
7 V@@@@L@5@@@@@o@@L@6@@@@y	@@s@@K@7@Ġ(Pxorbint
K W
L W@  < (Pxorbint@@@ @@Aceq V@A a9; a9V@@@ `@
[ W
\ W@@,@@K@;<@@@@@@@K@<@@@@@@	@@@@J@=D@Ġ(Plslbint
p X
q X@  < (Plslbint>@D@@ @@Adeq V@A' bWY( bWt@@@B a@
 X
 X@@Q@@J@Aa@@@@@@@J@Be@@e@@	@@@@I@Ci@Ġ(Plsrbint
 Y
 Y@  < (Plsrbintc@i@@ @@Aeeq V@AL cuwM cu@@@g b@
 Y
 Y@@v@@I@G@@@@@@@I@H@@@@	@@@@H@I@Ġ(Pasrbint
 Z
 Z@  < (Pasrbint@@@ @@Afeq V@Aq dr d@@@ c@
 Z
 Z@@@@H@M@@@@@@@H@N@@@@
	@@@@G@O@Ġ)Pbintcomp
 [
 [@  < )Pbintcomp@@@ @1@@ @@Bgeq V@A e e@@@ d@
 [
 [@@@@G@T@@@C@@G@U@@@
@@1@@G@V@@@@;@@5@@F@W@@ภ*No_effects [ [@
@@@5@@D@
T@ภ,No_coeffects [ [@J@@@;@@D@
W@@@@MC@
Q @Ġ,Pbigarraydim. \
/ \
@  < ,Pbigarraydim@@@ @@Ajeq V@A j j@@@ g@? \
@ \
@@@@F@\ @@@@@x@@F@]$@@$@@ภ*No_effectsQ ]

R ]

$@>@@@x@@D@
`3@ภ-Has_coeffects^ ]

&_ ]

3@
m@@@~@@D@
c@@@@@C@
]C@Ġ,Pread_symbol ^
b
f ^
b
r@  < ,Pread_symbolS@&stringO@@ @@A@eq V@A?b}@b}@@@ZW@ ^
b
s ^
b
t@@@@P@by@@@@@@@P@c}@@}@Ġ&Pfield _
u
y _
u
@  < &Pfieldw@o@@ @@ABeq V@Aaebe@@@|Y@ _
u
 _
u
@@@@P@g@@@@@@@P@h@@@@?	@@@@O@i@Ġ/Pfield_computed `

 `

@  < /Pfield_computed@@@@eq V@Aff@@@Z@@
	@@
@@O@l@@@@X
@@
@@N@m@Ġ+Pfloatfield a

 a

@  < +Pfloatfield@@@ @@AEeq V@Aii@@@]@ a

 a

@@@@N@q@@@@@
2@@N@r@@@@~	@@
6@@M@s@Ġ*Parrayrefu b

 b

@  < *Parrayrefu@@@ @@ATeq V@A M8: M8T@@@ K@ b

 b

@@@@M@w@@@@@
W@@M@x
@@
@@	@@
[@@L@y
@Ġ+Pstringrefu3 c

4 c

@  < +Pstringrefu
@@@Yeq V@A A		 A		@@@
 A@@
	@@
p@@L@|
@@
@@
@@
t@@K@}
 @Ġ*PbytesrefuL d

M d

@  < *Pbytesrefu
@@@\eq V@A B


  B

 @@@
 D@@
	@@
@@K@
5@@
5@@
@@
@@J@
9@Ġ,Pstring_loade e

f e

@  < ,Pstring_load
3@
72memory_access_size@@ @@@ @@ @@Akeq V@A
% l,.
& l,^@@@
@ h@ e

 e

@@@@J@
b@Ġ&Unsafe e

 e

@@@@@@@J@
o@@ e

 e

@@
@J@
v@@@6@@
@@J@
z@@
z@@
@@
@@I@
~@Ġ+Pbytes_load f

 f
@  < +Pbytes_load
x@E@@ @@@ @@ @@Aleq V@A
h m_a
i m_@@@
 i@ f
 f
@@Y@@I@
@Ġ&Unsafe f
	 f
@@@@@:@@I@
@@ f
 f
@@
@I@
@@@4@@@@I@
@@
@@]
@@@@H@
@Ġ,Pbigarrayref g g!@  < ,Pbigarrayref
@$boolE@@ @
@@ @
-bigarray_kind@@ @
/bigarray_layout@@ @@Dheq V@A
 g+-
 g+k@@@
 eĠ$true g# g'@  < @@ @M@@@AB@B@A@@@@	@@,@@H@
@@$ g)% g*@@-@@H@@@, g,- g-@@0@@H@
@@4 g/5 g0@@2@@H@@@@M: g1@@n@@H@@@@@@@r@@G@@Ġ/Pbigstring_loadJ h26K h2E@  < /Pbigstring_load@@@ @Ǡ@@ @@ @@Aneq V@A q.0	 q.c@@@# k@d h2Ge h2H@@@@G@E@Ġ&Unsafep h2Jq h2P@@@@@@@G@R@@w h2Fx h2Q@@
@G@Y@@@4@@@@G@]@@]@@
@@@@F@a@@ภ*No_effects iU[ iUe@
{@@@@@D@
lp@ภ-Has_coeffects iUg iUt@@@@@@D@
o}@@@@C@
i@Ġ*Parrayrefs juy ju@  < *Parrayrefs@E@@ @@AVeq V@Aq Ortr Or@@@ M@ ju ju@@R@@L@@@@@@@@L@@@@Ġ+Pstringrefs k k@  < +Pstringrefs@@@Zeq V@A A		 A	
@@@ B@@
	@@@@L@@@@@/
@@@@K@@Ġ*Pbytesrefs l l@  < *Pbytesrefs@@@^eq V@A B

. B

:@@@ F@@
	@@1@@K@@@@@H
@@5@@J@@Ġ,Pstring_load
 m m@@ m m@@@@J@@Ġ$Safe! m" m@I@@@@	@@J@@@( m) m@@
@J@
@@@"@@b@@J@@@@@y
@@f@@I@@Ġ+Pbytes_load> n? n@@F nG n@@@@I@'@Ġ$SafeR nS n@z@@@@	@@I@4@@Y nZ n@@
@I@	;@@@"@@@@I@
?@@?@@
@@@@H@C@Ġ,Pbigarrayrefo op o@Ġ%falsex oy o@  < #c@@@@B@B@AC@@"@@@@@@H@\@@ o o@@@@H@d@@ o o@@@@H@l@@ o o@@@@H@t@@@* o@@@@H@y@@y@@@@@@G@}@Ġ/Pbigstring_load p  p@_@ p p@@F@@G@%@Ġ$Safe p p@@@@@
'@@G@,@@ p p@@
@G@-@@@"@@@@G@.@@@@
@@@@F@/@@ภ1Arbitrary_effects rOU rOf@@@@@@D@
x@ภ-Has_coeffects rOh rOu@
@@@@@D@
{@@@@C@
u@Ġ)Psetfield
 svz sv@  < )Psetfield@@@ @4immediate_or_pointer@@ @<initialization_or_assignment@@ @@CCeq V@Agg]@@@[@* sv+ sv@@@@O@6@@@@@O@7@@
@@@O@8@@@-@@m@@O@9@@@Ġ2Psetfield_computedE tF t@  < 2Psetfield_computed@3@@ @1@@ @@BDeq V@A h^`h^@@@\@Y tZ t@@D@@O@>:@@@C@@O@??@@@
@@@@O@@C@@C@@[@@@@N@AG@Ġ.Psetfloatfields ut u@  < .PsetfloatfieldA@9@@ @`@@ @@BFeq V@A/j0j@@@J^@ u u@@@@N@Fi@@@r@@N@Gn@@@ 
@@@@N@Hr@@r@@@@@@M@Iv@Ġ*Parraysetu v v@  < *Parraysetup@-@@ @@AUeq V@AY NUWZ NUq@@@t L@ v v@@:@@M@M@@@@@@@M@N@@@@	@@@@L@O@Ġ*Parraysets w w@  < *Parraysets@R@@ @@AWeq V@A~ P P@@@ N@ w w@@_@@L@S@@@@@@@L@T@@@@	@@@@K@U@Ġ*Pbytessetu x x@  < *Pbytessetu@@@]eq V@A B

! B

-@@@ E@@
	@@)@@K@X@@@@
@@-@@J@Y@Ġ*Pbytessets y y@  < *Pbytessets@@@_eq V@A B

; B

G@@@ G@@
	@@B@@J@\@@@@
@@F@@I@]@Ġ*Pbytes_set z z@  < *Pbytes_set@@@ @Ġ@@ @@ @@Ameq V@A n n@@@ j@5 z6 z@@@@I@d@@I@e@I@c@@@$@@u@@I@f!@@!@@9@@y@@H@g%@Ġ,PbigarraysetQ {	R {@  < ,Pbigarrayset@d@@ @@@ @b@@ @`@@ @@Dieq V@A hln hl@@@1 f@o {p {@@@@H@nP@@@@@H@oU@@
@}@@H@pZ@@@|@@H@q_@@@3@@@@H@rc@@c@@{@@@@G@sg@Ġ.Pbigstring_set | |*@  < .Pbigstring_seta@.@@ @ʠ@@ @@ @@Aoeq V@AQ rdfR rd@@@l l@ |+ |,@@B@@G@z@@G@{@G@y@@@$@@@@G@|@@@@@@@@F@}@@ภ1Arbitrary_effects  @@@@@@D@
@ภ,No_coeffects  @@@@@@D@
@@@@C@
@Ġ(Pbswap16  @  < (Pbswap16@@@beq V@A t t@@@ m@@
	@@&@@G@@@@Ġ'Pbbswap  @  < 'Pbbswap@@@ @@Apeq V@A u u@@@ n@  @@@@G@@@@@@G@@G@@@@@/	@@K@@F@@@ภ*No_effects$ % @@@@K@@D@
@ภ,No_coeffects1 2 @`@@@Q@@D@
@@@@cC@
@Ġ/Pint_as_pointerD E 
@  < /Pint_as_pointer@@@ceq V@A w w@@@ o@@
	@@@@F@-@@-@@ภ*No_effectsZ [ @G@@@@@D@
<@ภ,No_coeffectsg h &@@@@@@D@
I@@@@C@
L@Ġ'Popaquez '+{ '2@  < 'PopaqueH@@@deq V@A- y02. y0;@@@H p@@
	@@@@F@c@@c@@ภ1Arbitrary_effects '6 'G@i@@@@@D@
r@ภ-Has_coeffects 'I 'V@@@@@@D@
@@@@C@
@Ġ(Psequand W[ Wc@  < (Psequand@@@Aeq V@Aeqfq@@@b@@
	@@@@G@@@@Ġ'Psequor dh do@  < 'Psequor@@@Beq V@Azq{q@@@c@@
	@@@@G@@@@@#
@@@@F@@@ภ*No_effects  @@@@@@D@
@ภ,No_coeffects @@@@
@@D@
@@@@C@
@@AW^`@@!@@AA@@.$@ @m  0 @@@@@@ @A  ( +return_typeC  @@  8 @@%Float@@  @@N%Other@@  @@&O@@A@@@@@ @@A@)M@$ @@@@* @@@@@A@@@@  0 @Goi@j@;G@@@ࠠ8return_type_of_primitive<  =  @@@@x)primitive@@ @{D@vN@@ @D@w@ @xD@u  0 <;;<<<<<@%QK@@@@$prim@]  ^  "@@@@ @|  0 MLLMMMMM@+f   g $@@@@
@г(2Clambda_primitives*t  #u  ?@@1@@ @y@@{  |  @@@@8@@ఐ-$prim CK CO@*@-@Q@@F@@ @  0 yxxyyyyy@-;@@@Ġ+Pfloatofint UY Ud@r@@@@j@@P@$@@$@Ġ)Pnegfloat ei er@g@@@@x@@P@2@@2@@@@|@@O@6@Ġ)Pabsfloat sw s@`@@@@@@O@D@@D@@'@@@@N@H@Ġ)Paddfloat  @Y@@@@@@N@V@@V@@9@@@@M@Z@Ġ)Psubfloat  @R@@@@@@M@h@@h@@K@@@@L@l@Ġ)Pmulfloat  @K@@@@@@L@z@@z@@]@@@@K@~@Ġ)Pdivfloat  @D@@@@@@K@@@@@o@@@@J@@Ġ+Pfloatfield& ' @>@+ , @@@@@J@@@@@@@@J@@@@@	@@@@I@@Ġ*Parrayrefu@ A @2Ġ+PfloatarrayI J @  < +Pfloatarray@@ @@@@CD@D@A =d  =q@@@ @@
@@@@I@@@@@@@@I@@@@@@@@@H@@Ġ*Parrayrefsi j @Ġ+Pfloatarrayr s  @)@@@@@@H@@@@@@4@@H@@@@@
@@8@@G@@@ภ%Float 
 @  < |<@@ @t@@@@B@B@A~@@{@@@A @@  @@Q@@G@@@@@ภ%Other 9@  < @@@AB@B@A@@@<@@XD@@@A CE@@@Z@@A-AA@@e]@ @  0 @H@@@@F@FE@[@_YA@#A@@A@~x@y@P@@  0 @h@@@2Clambda_primitives)primitive@@ @+return_type@@ @@ @@	&middle_end/semantics_of_primitives.mli E(( E(q@@7Semantics_of_primitivesM@)primitive@@ @'effects@@ @͠)coeffects@@ @@ @@ @@!

"

@@ I@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        D  	D 3@	H                       Pierre Chambart, OCamlPro                        E44E4@	H           Mark Shinwell and Leo White, Jane Street Europe              FF@	H                                                                        GG@	H   Copyright 2013--2016 OCamlPro SAS                                     H!Hg@	H   Copyright 2014--2016 Jane Street Group LLC                           &Ihh'Ih@	H                                                                        ,J-J@	H   All rights reserved.  This file is distributed under the terms of    2K3KN@	H   the GNU Lesser General Public License version 2.1, with the          8LOO9LO@	H   special exception on linking described in the file LICENSE.          >M?M@	H                                                                        DNEN5@	H************************************************************************JO66KO6@	b Pduparray (_, Immutable) is allowed only on
                                   immutable arrays. P\ @Q]o@	$ Will not raise [Division_by_zero]. Vx		Wx		@	$ That old chestnut: [Obj.truncate]. \ K] K@	( Some people resize bigarrays in place. b ]

5c ]

a@	' May trigger a bounds check exception. h q#i qN@	_ Whether or not some of these are "unsafe" is irrelevant; they always
         have an effect. n }06o ~~@	: Removed by [Closure_conversion] in the flambda pipeline. t syu s@@   *./ocamlopt"-g)-nostdlib"-I&stdlib"-I1otherlibs/dynlink0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel2-function-sections"-c"-I*middle_end!. 0/$#"! @0qla}ulO  0 @@@(Asttypes0CoࠌD(5Build_path_prefix_map0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5gː0&>$e?<x(*Cmi_format0vB $V@X)Debuginfo0=Shڷg^Rz[#Env0>(yӒê)t%Ident0f4nAm\zb,Identifiable0h$T<^D~R4&Lambda0{ʮ1f~u)Load_path0'ޓtz
ʠ(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T$Misc0Z+\\4:WlA?L+Outcometree0V/Qcy,A)Parsetree0e3S#ʌo$Path0}%/Qߵ)Primitive0,͘'0 ]xP`,[{&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]%Subst0r˿&qCJ .Type_immediacy0y,G?'%Types0^ qARh(Warnings0^1]/3W@@A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Caml1999I030  D     c  C7Semantics_of_primitives'effects m  8 @@*No_effects R@@	&middle_end/semantics_of_primitives.mlix:Ix:S@@A7Only_generative_effects S@@
x:Tx:m@@B1Arbitrary_effects T@@x:nx:@@#C@@A@@@@@x::@@A@&@A@)coeffects n  8 @@,No_coeffects V@@%y&y@@5E-Has_coeffects W@@.y/y@@>F@@A@@@@@2y@@A@ADA@-for_primitive o@2Clambda_primitives)primitive@@ @ S@@ @ 3@@ @ @ @ @ @ @P

Q

@@`I@+return_type p  8 @@%Float j@@_ B` B@@oK%Other k@@h Ci C&@@xL@@A@@@@@l A  @@A@{JA@8return_type_of_primitive q@:)primitive@@ @ )@@ @ @ @ @ E(( E(q@@M@@         )7Semantics_of_primitives0 ]xP`,[{(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?'%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A$Misc0Z+\\4:WlA?L)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[*Cmi_format0vB $V@X2Clambda_primitives0&>$e?<x(0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l(Asttypes0CoࠌD(@            @@Caml1999T030  +    W    4 7Semantics_of_primitives-ocaml.warning	&middle_end/semantics_of_primitives.mliQQ@2+a-4-9-30-40-41-42Q
Q@@QQ@@@@@QQ@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@A87@*ocaml.text
   Description of the semantics of primitives, to be used for optimization
    purposes.

    "No effects" means that the primitive does not change the observable state
    of the world.  For example, it must not write to any mutable storage,
    call arbitrary external functions or change control flow (e.g. by raising
    an exception).  Note that allocation is not "No effects" (see below).

    It is assumed in the compiler that applications of primitives with no
    effects, whose results are not used, may be eliminated.  It is further
    assumed that applications of primitives with no effects may be
    duplicated (and thus possibly executed more than once).

    (Exceptions arising from allocation points, for example "out of memory" or
    exceptions propagated from finalizers or signal handlers, are treated as
    "effects out of the ether" and thus ignored for our determination here
    of effectfulness.  The same goes for floating point operations that may
    cause hardware traps on some platforms.)

    "Only generative effects" means that a primitive does not change the
    observable state of the world save for possibly affecting the state of
    the garbage collector by performing an allocation.  Applications of
    primitives that only have generative effects and whose results are unused
    may be eliminated by the compiler.  However, unlike "No effects"
    primitives, such applications will never be eligible for duplication.

    "Arbitrary effects" covers all other primitives.

    "No coeffects" means that the primitive does not observe the effects (in
    the sense described above) of other expressions.  For example, it must not
    read from any mutable storage or call arbitrary external functions.

    It is assumed in the compiler that, subject to data dependencies,
    expressions with neither effects nor coeffects may be reordered with
    respect to other expressions.
YSZv68@@@@@@GA  ( 'effects QAdx:?ex:F@@  8 @@*No_effects R@@nx:Iox:S@@{A7Only_generative_effects S@@wx:Txx:m@@B1Arbitrary_effects T@@x:nx:@@C@@A@@@@@x::@@A@@@@@@@x:V@@@@x:p@@@@@A@@@@A  ( )coeffects UByy@@  8 @@,No_coeffects V@@yy@@E-Has_coeffects W@@yy@@F@@A@@@@@y@@A@D@@@@@y@@@@@A@@@  0 @ic@A@-for_primitive h



@б@г2Clambda_primitives)primitive2Clambda_primitives



@@@@ @  0 @!KE@A@@Вг'effects



@@	@@ @@@г`)coeffects



@@	@@ @ @@@@ @%
@@@+@ @(.
@@@

@)ocaml.docߐ
   Describe the semantics of a primitive.  This does not take into account of
    the (non-)(co)effectfulness of the arguments in a primitive application.
    To determine whether such an application is (co)effectful, the arguments
    must also be analysed.  {!~

@@@@@@@-I@!@=A  ( +return_type iC- A . A @@  8 @@%Float j@@7 B8 B@@DK%Other k@@@ CA C&@@ML@@A@@@@@D A  @@A@PJ@K B@@@@Q C!@@@@@A@@@  0 ?>>?????@mE@A@8return_type_of_primitive l^ E(,_ E(D@б@г)primitive2Clambda_primitivesl E(Fm E(b@@@@ @  0 ]\\]]]]]@JD@A@@гN+return_type{ E(f| E(q@@	@@ @@@@@ @@@@ E((@@M@
@@@+%A@A@@hbA@9@@  0 ~~@#;@A@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        D  D 3@	H                       Pierre Chambart, OCamlPro                        E44E4@	H           Mark Shinwell and Leo White, Jane Street Europe              FF@	H                                                                        GG@	H   Copyright 2013--2016 OCamlPro SAS                                    HHg@	H   Copyright 2014--2016 Jane Street Group LLC                           IhhIh@	H                                                                        JJ@	H   All rights reserved.  This file is distributed under the terms of    KKN@	H   the GNU Lesser General Public License version 2.1, with the          LOOLO@	H   special exception on linking described in the file LICENSE.          MM@	H                                                                        NN5@	H************************************************************************O66O6@
  * Description of the semantics of primitives, to be used for optimization
    purposes.

    "No effects" means that the primitive does not change the observable state
    of the world.  For example, it must not write to any mutable storage,
    call arbitrary external functions or change control flow (e.g. by raising
    an exception).  Note that allocation is not "No effects" (see below).

    It is assumed in the compiler that applications of primitives with no
    effects, whose results are not used, may be eliminated.  It is further
    assumed that applications of primitives with no effects may be
    duplicated (and thus possibly executed more than once).

    (Exceptions arising from allocation points, for example "out of memory" or
    exceptions propagated from finalizers or signal handlers, are treated as
    "effects out of the ether" and thus ignored for our determination here
    of effectfulness.  The same goes for floating point operations that may
    cause hardware traps on some platforms.)

    "Only generative effects" means that a primitive does not change the
    observable state of the world save for possibly affecting the state of
    the garbage collector by performing an allocation.  Applications of
    primitives that only have generative effects and whose results are unused
    may be eliminated by the compiler.  However, unlike "No effects"
    primitives, such applications will never be eligible for duplication.

    "Arbitrary effects" covers all other primitives.

    "No coeffects" means that the primitive does not observe the effects (in
    the sense described above) of other expressions.  For example, it must not
    read from any mutable storage or call arbitrary external functions.

    It is assumed in the compiler that, subject to data dependencies,
    expressions with neither effects nor coeffects may be reordered with
    respect to other expressions.

  * Describe the semantics of a primitive.  This does not take into account of
    the (non-)(co)effectfulness of the arguments in a primitive application.
    To determine whether such an application is (co)effectful, the arguments
    must also be analysed. @   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-c!"!. - @0/t	}  0 "!!"""""@ @@(Asttypes0CoࠌD(5Build_path_prefix_map0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5gm0&>$e?<x(*Cmi_format0vB $V@X)Debuginfo0=Shڷg^Rz[#Env0>(yӒê)t%Ident0f4nAm\zb,Identifiable0h$T<^D~R4&Lambda0{ʮ1f~u)Load_path0'ޓtz
ʠ(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T$Misc0Z+\\4:WlA?L+Outcometree0V/Qcy,A)Parsetree0e3S#ʌo$Path0}%/Qߵ)Primitive0,͘0 ]xP`,[{&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]%Subst0r˿&qCJ .Type_immediacy0y,G?'%Types0^ qARh(Warnings0^1]/3W@0 ]xP`,[{A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Caml1999Y030  4       `  ( 7Semantics_of_primitives@(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?'%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠY0 ]xP`,[{)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A$Misc0Z+\\4:WlA?L)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ&Lambda0{ʮ1f~u,Identifiable0h$T<^D~R4%Ident0f4nAm\zb#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[*Cmi_format0vB $V@X2Clambda_primitives0&>$e?<x(0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l(Asttypes0CoࠌD(@@@@@	-camlSemantics_of_primitives__for_primitive_88AA@A@	9camlSemantics_of_primitives__return_type_of_primitive_279AA@A@@\Ș'%,32P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*                       Pierre Chambart, OCamlPro                        *)
(*           Mark Shinwell and Leo White, Jane Street Europe              *)
(*                                                                        *)
(*   Copyright 2013--2016 OCamlPro SAS                                    *)
(*   Copyright 2014--2016 Jane Street Group LLC                           *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

[@@@ocaml.warning "+a-4-9-30-40-41-42"]

(** Description of the semantics of primitives, to be used for optimization
    purposes.

    "No effects" means that the primitive does not change the observable state
    of the world.  For example, it must not write to any mutable storage,
    call arbitrary external functions or change control flow (e.g. by raising
    an exception).  Note that allocation is not "No effects" (see below).

    It is assumed in the compiler that applications of primitives with no
    effects, whose results are not used, may be eliminated.  It is further
    assumed that applications of primitives with no effects may be
    duplicated (and thus possibly executed more than once).

    (Exceptions arising from allocation points, for example "out of memory" or
    exceptions propagated from finalizers or signal handlers, are treated as
    "effects out of the ether" and thus ignored for our determination here
    of effectfulness.  The same goes for floating point operations that may
    cause hardware traps on some platforms.)

    "Only generative effects" means that a primitive does not change the
    observable state of the world save for possibly affecting the state of
    the garbage collector by performing an allocation.  Applications of
    primitives that only have generative effects and whose results are unused
    may be eliminated by the compiler.  However, unlike "No effects"
    primitives, such applications will never be eligible for duplication.

    "Arbitrary effects" covers all other primitives.

    "No coeffects" means that the primitive does not observe the effects (in
    the sense described above) of other expressions.  For example, it must not
    read from any mutable storage or call arbitrary external functions.

    It is assumed in the compiler that, subject to data dependencies,
    expressions with neither effects nor coeffects may be reordered with
    respect to other expressions.
*)

type effects = No_effects | Only_generative_effects | Arbitrary_effects
type coeffects = No_coeffects | Has_coeffects

(** Describe the semantics of a primitive.  This does not take into account of
    the (non-)(co)effectfulness of the arguments in a primitive application.
    To determine whether such an application is (co)effectful, the arguments
    must also be analysed. *)
val for_primitive: Clambda_primitives.primitive -> effects * coeffects

type return_type =
  | Float
  | Other

val return_type_of_primitive: Clambda_primitives.primitive -> return_type
                                                                                                                                                                                                                                                                                                                                                                                                              Caml1999I030  HM  C  8b  72Set_of_closures_id!t	  8 @@@A@@@@@6utils/identifiable.mli g68 g6>@@@@,IdentifiableqA@Ӡ!T	@!t	  8 @@@A@@ @@@@@ i@X i@b@@@@rA@%equal	@@@ @@@@ @$boolE@@ @@ @@ @@0[HR1[Hu@@/Stdlib__Hashtbl`@$hash	@@@ @#intA@@ @@ @@@a@'compare	@,@@ @@1@@ @#intA@@ @@ @@ @@[\v\\v@@+Stdlib__MapA@&output	@&Stdlib+out_channel@@ @@P@@ @$unitF@@ @@ @@ @@z^{^@@yC@%print	@&Format)formatter@@ @@m@@ @@@ @@ @@ @@__@@D@@@ i@B@s@@	@!t@@ @@@@ @@@ @@ @@ @@ jcm jc@@@	@@@ @@@ @@ @@@|@{	@%$@@ @@+*@@ @|@@ @@ @@ @@#@v@t	 @sp@@ @@>=@@ @p@@ @@ @@ @@6@j@i	!@hg@@ @@RQ@@ @g@@ @@ @@ @@J@c@Ӡ#Set	"@#elt	}  8 @@@Ae!t@@ @@@@@ l
 l@@@@KA@!t	~  8 @@@A#Set$Makey!t@@ @@@@@@@@LA@%empty	@@ @@@+Stdlib__SetE@(is_empty	@
@@ @$boolE@@ @@ @@0@F@#mem	@D@@ @@$@@ @@@ @@ @@ @@E@'G@#add	@@@ @@8@@ @;@@ @@ @@ @@X@:H@)singleton	@(@@ @I@@ @@ @@f@HI@&remove	@6@@ @@Y@@ @\@@ @@ @@ @@y@[J@%union	@g@@ @@l@@ @o@@ @@ @@ @@@nK@%inter	@z@@ @@@@ @@@ @@ @@ @@@L@(disjoint	@@@ @@@@ @@@ @@ @@ @@@M@$diff	@@@ @@@@ @@@ @@ @@ @@@N@'compare	@@@ @@@@ @#intA@@ @@ @@ @@@O@%equal	@@@ @@@@ @@@ @@ @@ @@@P@&subset	@@@ @@@@ @@@ @ @ @@ @@@Q@$iter	@@@@ @$unitF@@ @@ @@@@ @@@ @@ @@ @	@ @R@$fold	@@@@ @
@!a @@ @@ @@@@ @
@@ @@ @@ @@:@T@'for_all	@@@@ @@@ @@ @@3@@ @&@@ @@ @@ @@T@6U@&exists	@@&@@ @7@@ @@ @@M@@ @@@@ @@ @@ @@n@PV@&filter	@@@@@ @ Q@@ @!@ @"@g@@ @#j@@ @$@ @%@ @&@@iW@*filter_map	@@Y@@ @'&optionJb@@ @(@@ @)@ @*@@@ @+@@ @,@ @-@ @.@@X@)partition	@@x@@ @/@@ @0@ @1@@@ @2@@ @4@@ @3@ @5@ @6@ @7@@Y@(cardinal	@@@ @8@@ @9@ @:@@Z@(elements	@@@ @;$listI@@ @<@@ @=@ @>@@[@'min_elt	@@@ @?@@ @@@ @A@@\@+min_elt_opt	@@@ @Bo@@ @C@@ @D@ @E@@]@'max_elt	@@@ @F@@ @G@ @H@@^@+max_elt_opt	@@@ @I@@ @J@@ @K@ @L@,@_@&choose	@@@ @M@@ @N@ @O@:@`@*choose_opt	@(@@ @P@@ @Q@@ @R@ @S@M@/a@%split	@@@ @T@@@@ @UF@@ @X:@@ @WO@@ @V@ @Y@ @Z@ @[@l@Nb@$find	@<@@ @\@_@@ @]D@@ @^@ @_@ @`@@ac@(find_opt	@O@@ @a@r@@ @b[@@ @c@@ @d@ @e@ @f@@yd@*find_first	@@i@@ @gz@@ @h@ @i@@@ @ju@@ @k@ @l@ @m@@e@.find_first_opt	@@@@ @n@@ @o@ @p@@@ @q2@@ @r@@ @s@ @t@ @u@@f@)find_last	@@@@ @v@@ @w@ @x@@@ @y@@ @z@ @{@ @|@@g@-find_last_opt	@@@@ @}@@ @~@ @@@@ @i@@ @@@ @@ @@ @@@h@+to_seq_from	@@@ @@@@ @&Stdlib#Seq!t@@ @@@ @@ @@ @@#@j@&to_seq	@@@ @#Seq!t@@ @@@ @@ @@9@k@*to_rev_seq	@'@@ @/#Seq!t@@ @@@ @@ @@O@1l@'add_seq	@B#Seq!t&@@ @@@ @@J@@ @M@@ @@ @@ @@j@Lm@&of_seq	@]#Seq!tA@@ @@@ @c@@ @@ @@@bn@&output	@-+out_channel@@ @@u@@ @*@@ @@ @@ @@@M@%print	@D&Format)formatter@@ @@@@ @B@@ @@ @@ @@@N@)to_string	@@@ @&stringO@@ @@ @@@O@'of_list	@$listI@@ @@@ @@@ @@ @@@P@#map	@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@Q@@@ l@u@@Ӡ#Map	#@#key	F  8 @@@Af!t@@ @@@@@
 m m@@@@TA@!t	G  8 !a @@A@A#Map$Make!t@@ @I@B@@@@@@%UA@%empty	H!a @@@ @@+@E@(is_empty	I@!a @@@ @$boolE@@ @@ @@A@F@#mem	J@U@@ @@-!a @@@ @@@ @@ @@ @@[@
G@#add	K@@@ @@!a @@L	@@ @P
@@ @@ @@ @@ @@v@%H@&update	L@5@@ @@@&optionJ!a @@@ @	@@ @@ @@u@@ @y@@ @@ @@ @@ @@@NI@)singleton	M@^@@ @@!a @@@ @@ @@ @@@cJ@&remove	N@s@@ @@!a @@@ @@@ @@ @@ @@@|K@%merge	O@@@@ @@W!a @@@ @@b!b @@@ @k!c @@@ @@ @@ @@ @@٠@@ @@ߠ@@ @@@ @@ @@ @@ @@	@L@%union	P@@@@ @@!a @@
@@ @@ @@ @@ @@@@ @@	@@ @
@@ @@ @@ @@ @@3@M@'compare	Q@@!a @ @@@ @@ @@ @@'@@ @@-@@ @@@ @@ @@ @@ @@W@N@%equal	R@@!a @
@,@@ @@ @@ @@K@@ @	@Q@@ @<@@ @@ @
@ @@ @@{@*O@$iter	S@@<@@ @@!a @$unitF@@ @@ @@ @@t@@ @@@ @@ @@ @@@MP@$fold	T@@_@@ @@!a @@!b @@ @@ @@ @@@@ @@@ @ @ @!@ @"@@nQ@'for_all	U@@@@ @#@!a @'@@ @$@ @%@ @&@
@@ @(@@ @)@ @*@ @+@@R@&exists	V@@@@ @,@!a @0@@ @-@ @.@ @/@נ
@@ @1@@ @2@ @3@ @4@@S@&filter	W@@@@ @5@!a @:@@ @6@ @7@ @8@
@@ @9@@ @;@ @<@ @=@"@T@*filter_map	X@@@@ @>@!a @B!b @D@@ @?@ @@@ @A@@@ @C"@@ @E@ @F@ @G@H@U@)partition	Y@@	@@ @H@!a @N @@ @I@ @J@ @K@?
@@ @LF@@ @OK@@ @M@ @P@ @Q@ @R@q@ V@(cardinal	Z@W!a @S@@ @T9@@ @U@ @V@@4W@(bindings	[@k!a @X@@ @W$listIU@@ @Y@ @Z@@ @[@ @\@@RX@+min_binding	\@!a @^@@ @]m@@ @_@ @`@ @a@@iY@/min_binding_opt	]@!a @c@@ @bE@@ @d@ @e@@ @f@ @g@@Z@+max_binding	^@!a @i@@ @h@@ @j@ @k@ @l@@[@/max_binding_opt	_@Ӡ!a @n@@ @mx@@ @o@ @p@@ @q@ @r@	@\@&choose	`@!a @t@@ @s@@ @u@ @v@ @w@ @]@*choose_opt	a@!a @y@@ @x@@ @z@ @{@@ @|@ @}@<@^@%split	b@@@ @~@'!a @@@ @2@@ @Ԡ@@ @=@@ @@ @@ @@ @@c@_@$find	c@"@@ @@N!a @@@ @@ @@ @@x@'`@(find_opt	d@7@@ @@c!a @@@ @	@@ @@ @@ @@@Aa@*find_first	e@@S@@ @d@@ @@ @@!a @@@ @g@@ @@ @@ @@ @@@cb@.find_first_opt	f@@u@@ @@@ @@ @@!a @@@ @J@@ @@ @@@ @@ @@ @@@c@)find_last	g@@@@ @@@ @@ @@̠!a @@@ @@@ @@ @@ @@ @@@d@-find_last_opt	h@@@@ @@@ @@ @@!a @@@ @@@ @@ @@@ @@ @@ @@$@e@#map	i@@!a @!b @@ @@
@@ @
@@ @@ @@ @@@@f@$mapi	j@@@@ @@!a @!b @@ @@ @@7
@@ @;
@@ @@ @@ @@a@	g@&to_seq	k@G!a @@@ @&Stdlib#Seq!t5@@ @ʠ@ @@@ @@ @@@	2h@*to_rev_seq	l@i!a @@@ @"#Seq!tT@@ @Р@ @@@ @@ @@@	Qi@+to_seq_from	m@a@@ @@!a @@@ @F#Seq!tx@@ @נ@ @@@ @@ @@ @@@	uj@'add_seq	n@]#Seq!t@@ @ܠ!a @@ @@@ @@
@@ @Š@@ @@ @@ @@@	k@&of_seq	o@#Seq!t@@ @!a @@ @@@ @@@ @@ @@
@	l@'of_list	p@L@@ @!a @@ @@@ @ @@ @@ @@&@
/V@.disjoint_union	q"eq&optionJ@!a @@$boolE@@ @@ @@ @@@ @%print@	&Format)formatter@@ @@	@@ @@ @@ @@@ @@<)@@ @@B/@@ @F3@@ @@ @@ @@ @@ @ @l@
uW@+union_right	r@R!a @@@ @@\
@@ @`@@ @@ @@ @@@
X@*union_left	s@l!a @	@@ @@v
@@ @z@@ @
@ @@ @@@
Y@+union_merge	t@@!a @@@ @
@ @@@@ @@@@ @@@ @@ @@ @@ @@@
Z@&rename	u@@@ @@@ @@@@ @@@ @@ @@ @@@
[@(map_keys	v@@@@ @@@ @@ @@Ǡ!a @ @@ @Ϡ@@ @!@ @"@ @#@@
\@$keys	w@۠!a @$@@ @%
#Set$Make
u!t@@ @&@ @'@@]@$data	x@!a @)@@ @(Y	@@ @*@ @+@$@-^@&of_set	y@@@@ @,!a @/@ @-@
#Set$Make
!t@@ @.@@ @0@ @1@ @2@E@N_@7transpose_keys_and_data	z@+@@ @3@@ @42@@ @5@@ @6@ @7@[@d`@;transpose_keys_and_data_set	{@A@@ @8@@ @9H#Set$Make
!t@@ @:@@ @;@ @<@x@a@%print	|@@)&Format)formatter@@ @=@!a @B(@@ @>@ @?@ @@@<&Format)formatter@@ @A@|@@ @C;@@ @D@ @E@ @F@ @G@@b@@@ m@v@@Ӡ#Tbl	$@#key	(  8 @@@A!!t@@ @H@@@@ n n@@@@hA@!t	)  8 !a @I@A@As'Hashtbl$Make:!t@@ @JO@B@@@@@@iA@&create	*@@@ @K%!a @L@@ @M@ @N@1@e@%clear	+@!a @O@@ @P$unitF@@ @Q@ @R@G@f@%reset	,@'!a @S@@ @T@@ @U@ @V@[@g@$copy	-@;!a @X@@ @WC@@ @Y@ @Z@o@h@#add	.@O!a @]@@ @[@@@ @\@
F@@ @^@ @_@ @`@ @a@@ i@&remove	/@k!a @b@@ @c@@@ @d_@@ @e@ @f@ @g@@9j@$find	0@!a @j@@ @h@5@@ @i
@ @k@ @l@@Nk@(find_opt	1@!a @o@@ @m@J@@ @n&optionJ@@ @p@ @q@ @r@@jl@(find_all	2@!a @u@@ @s@f@@ @t$listI@@ @v@ @w@ @x@@m@'replace	3@Ѡ!a @{@@ @y@@@ @z@@@ @|@ @}@ @~@ @@@n@#mem	4@!a @ @@ @ @@@ @ @@ @ @ @ @ @ @%@o@$iter	5@@@@ @ @!a @ @@ @ @ @ @ @ @
@@ @ @@ @ @ @ @ @ @F@p@2filter_map_inplace	6@@@@ @ @!a @ @@ @ @ @ @ @ @8@@ @ #@@ @ @ @ @ @ @h@q@$fold	7@@@@ @ @!a @ @!b @ @ @ @ @ @ @ @[@@ @ @@ @ @ @ @ @ @@
r@&length	8@i!a @ @@ @ 
"@@ @ @ @ @@
2s@%stats	9@}!a @ @@ @ &Stdlib'Hashtbl*statistics@@ @ @ @ @@
Lt@&to_seq	:@!a @ @@ @ &Stdlib#Seq!tS@@ @ @ @ @@ @ @ @ @@
nu@+to_seq_keys	;@@ @ @@ @  #Seq!tm@@ @ @@ @ @ @ @@
v@-to_seq_values	<@Ҡ!a @ @@ @ ;#Seq!t@@ @ @ @ @
@
w@'add_seq	=@!a @ @@ @ @U#Seq!t@@ @ @ @ @@ @ @@ @ @ @ @ @ @/@
x@+replace_seq	>@!a @ @@ @ @z#Seq!t@@ @ à@ @ @@ @ @@ @ @ @ @ @ @T@
y@&of_seq	?@#Seq!t@@ @ ɠ!a @ @ @ @@ @ G@@ @ @ @ @s@z@'to_list	@@S!a @ @@ @ 	x
!t@@ @ Ѡ@ @ @@ @ @ @ @@Uj@'of_list	A@	
!t@@ @ ՠ!a @ @ @ @@ @ @@ @ @ @ @@sk@&to_map	B@!a @ @@ @ ##Map$Make
!t@@ @ @ @ @@l@&of_map	C@6#Map$Make
!t!a @ @@ @ @@ @ @ @ @@m@'memoize	D@Š!a @ @@ @ @@x@@ @ @ @ @}@@ @ @ @ @ @ @ @ @@n@#map	E@!a @ @@ @ @@	!b @ @ @ @@ @ @ @ @ @ @@o@@@ n@w@@&create	%$name&optionJ&stringO@@ @ @@ @ @0Compilation_unit!t@@ @ @@ @ @ @ @ @ @	4middle_end/flambda/base_types/set_of_closures_id.mliX==X=q@@@@$name	&@@@ @ )'@@ @ @@ @ @ @ @YrrYr@@.A@4get_compilation_unit	'@@@ @ 1!t@@ @ @ @ @,Z-Z@@BB@@      K     㠠2Set_of_closures_id0KaN<'&Sڠ-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ,Linkage_name0Q'͗3c,Identifiable0h$T<^D~R4%Ident0f4nAm\zb0Compilation_unit0&U6JD8CamlinternalFormatBasics0ĵ'(jd@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Caml1999I030  HM  C  8b  72Set_of_closures_id!t	  8 @@@A@@@@@6utils/identifiable.mli g68 g6>@@@@,IdentifiableqA@Ӡ!T	@!t	  8 @@@A@@ @@@@@ i@X i@b@@@@rA@%equal	@@@ @@@@ @$boolE@@ @@ @@ @@0[HR1[Hu@@/Stdlib__Hashtbl`@$hash	@@@ @#intA@@ @@ @@@a@'compare	@,@@ @@1@@ @#intA@@ @@ @@ @@[\v\\v@@+Stdlib__MapA@&output	@&Stdlib+out_channel@@ @@P@@ @$unitF@@ @@ @@ @@z^{^@@yC@%print	@&Format)formatter@@ @@m@@ @@@ @@ @@ @@__@@D@@@ i@B@s@@	@!t@@ @@@@ @@@ @@ @@ @@ jcm jc@@@	@@@ @@@ @@ @@@|@{	@%$@@ @@+*@@ @|@@ @@ @@ @@#@v@t	 @sp@@ @@>=@@ @p@@ @@ @@ @@6@j@i	!@hg@@ @@RQ@@ @g@@ @@ @@ @@J@c@Ӡ#Set	"@#elt	}  8 @@@Ae!t@@ @@@@@ l
 l@@@@KA@!t	~  8 @@@A#Set$Makey!t@@ @@@@@@@@LA@%empty	@@ @@@+Stdlib__SetE@(is_empty	@
@@ @$boolE@@ @@ @@0@F@#mem	@D@@ @@$@@ @@@ @@ @@ @@E@'G@#add	@@@ @@8@@ @;@@ @@ @@ @@X@:H@)singleton	@(@@ @I@@ @@ @@f@HI@&remove	@6@@ @@Y@@ @\@@ @@ @@ @@y@[J@%union	@g@@ @@l@@ @o@@ @@ @@ @@@nK@%inter	@z@@ @@@@ @@@ @@ @@ @@@L@(disjoint	@@@ @@@@ @@@ @@ @@ @@@M@$diff	@@@ @@@@ @@@ @@ @@ @@@N@'compare	@@@ @@@@ @#intA@@ @@ @@ @@@O@%equal	@@@ @@@@ @@@ @@ @@ @@@P@&subset	@@@ @@@@ @@@ @ @ @@ @@@Q@$iter	@@@@ @$unitF@@ @@ @@@@ @@@ @@ @@ @	@ @R@$fold	@@@@ @
@!a @@ @@ @@@@ @
@@ @@ @@ @@:@T@'for_all	@@@@ @@@ @@ @@3@@ @&@@ @@ @@ @@T@6U@&exists	@@&@@ @7@@ @@ @@M@@ @@@@ @@ @@ @@n@PV@&filter	@@@@@ @ Q@@ @!@ @"@g@@ @#j@@ @$@ @%@ @&@@iW@*filter_map	@@Y@@ @'&optionJb@@ @(@@ @)@ @*@@@ @+@@ @,@ @-@ @.@@X@)partition	@@x@@ @/@@ @0@ @1@@@ @2@@ @4@@ @3@ @5@ @6@ @7@@Y@(cardinal	@@@ @8@@ @9@ @:@@Z@(elements	@@@ @;$listI@@ @<@@ @=@ @>@@[@'min_elt	@@@ @?@@ @@@ @A@@\@+min_elt_opt	@@@ @Bo@@ @C@@ @D@ @E@@]@'max_elt	@@@ @F@@ @G@ @H@@^@+max_elt_opt	@@@ @I@@ @J@@ @K@ @L@,@_@&choose	@@@ @M@@ @N@ @O@:@`@*choose_opt	@(@@ @P@@ @Q@@ @R@ @S@M@/a@%split	@@@ @T@@@@ @UF@@ @X:@@ @WO@@ @V@ @Y@ @Z@ @[@l@Nb@$find	@<@@ @\@_@@ @]D@@ @^@ @_@ @`@@ac@(find_opt	@O@@ @a@r@@ @b[@@ @c@@ @d@ @e@ @f@@yd@*find_first	@@i@@ @gz@@ @h@ @i@@@ @ju@@ @k@ @l@ @m@@e@.find_first_opt	@@@@ @n@@ @o@ @p@@@ @q2@@ @r@@ @s@ @t@ @u@@f@)find_last	@@@@ @v@@ @w@ @x@@@ @y@@ @z@ @{@ @|@@g@-find_last_opt	@@@@ @}@@ @~@ @@@@ @i@@ @@@ @@ @@ @@@h@+to_seq_from	@@@ @@@@ @&Stdlib#Seq!t@@ @@@ @@ @@ @@#@j@&to_seq	@@@ @#Seq!t@@ @@@ @@ @@9@k@*to_rev_seq	@'@@ @/#Seq!t@@ @@@ @@ @@O@1l@'add_seq	@B#Seq!t&@@ @@@ @@J@@ @M@@ @@ @@ @@j@Lm@&of_seq	@]#Seq!tA@@ @@@ @c@@ @@ @@@bn@&output	@-+out_channel@@ @@u@@ @*@@ @@ @@ @@@M@%print	@D&Format)formatter@@ @@@@ @B@@ @@ @@ @@@N@)to_string	@@@ @&stringO@@ @@ @@@O@'of_list	@$listI@@ @@@ @@@ @@ @@@P@#map	@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@Q@@@ l@u@@Ӡ#Map	#@#key	F  8 @@@Af!t@@ @@@@@
 m m@@@@TA@!t	G  8 !a @@A@A#Map$Make!t@@ @I@B@@@@@@%UA@%empty	H!a @@@ @@+@E@(is_empty	I@!a @@@ @$boolE@@ @@ @@A@F@#mem	J@U@@ @@-!a @@@ @@@ @@ @@ @@[@
G@#add	K@@@ @@!a @@L	@@ @P
@@ @@ @@ @@ @@v@%H@&update	L@5@@ @@@&optionJ!a @@@ @	@@ @@ @@u@@ @y@@ @@ @@ @@ @@@NI@)singleton	M@^@@ @@!a @@@ @@ @@ @@@cJ@&remove	N@s@@ @@!a @@@ @@@ @@ @@ @@@|K@%merge	O@@@@ @@W!a @@@ @@b!b @@@ @k!c @@@ @@ @@ @@ @@٠@@ @@ߠ@@ @@@ @@ @@ @@ @@	@L@%union	P@@@@ @@!a @@
@@ @@ @@ @@ @@@@ @@	@@ @
@@ @@ @@ @@ @@3@M@'compare	Q@@!a @ @@@ @@ @@ @@'@@ @@-@@ @@@ @@ @@ @@ @@W@N@%equal	R@@!a @
@,@@ @@ @@ @@K@@ @	@Q@@ @<@@ @@ @
@ @@ @@{@*O@$iter	S@@<@@ @@!a @$unitF@@ @@ @@ @@t@@ @@@ @@ @@ @@@MP@$fold	T@@_@@ @@!a @@!b @@ @@ @@ @@@@ @@@ @ @ @!@ @"@@nQ@'for_all	U@@@@ @#@!a @'@@ @$@ @%@ @&@
@@ @(@@ @)@ @*@ @+@@R@&exists	V@@@@ @,@!a @0@@ @-@ @.@ @/@נ
@@ @1@@ @2@ @3@ @4@@S@&filter	W@@@@ @5@!a @:@@ @6@ @7@ @8@
@@ @9@@ @;@ @<@ @=@"@T@*filter_map	X@@@@ @>@!a @B!b @D@@ @?@ @@@ @A@@@ @C"@@ @E@ @F@ @G@H@U@)partition	Y@@	@@ @H@!a @N @@ @I@ @J@ @K@?
@@ @LF@@ @OK@@ @M@ @P@ @Q@ @R@q@ V@(cardinal	Z@W!a @S@@ @T9@@ @U@ @V@@4W@(bindings	[@k!a @X@@ @W$listIU@@ @Y@ @Z@@ @[@ @\@@RX@+min_binding	\@!a @^@@ @]m@@ @_@ @`@ @a@@iY@/min_binding_opt	]@!a @c@@ @bE@@ @d@ @e@@ @f@ @g@@Z@+max_binding	^@!a @i@@ @h@@ @j@ @k@ @l@@[@/max_binding_opt	_@Ӡ!a @n@@ @mx@@ @o@ @p@@ @q@ @r@	@\@&choose	`@!a @t@@ @s@@ @u@ @v@ @w@ @]@*choose_opt	a@!a @y@@ @x@@ @z@ @{@@ @|@ @}@<@^@%split	b@@@ @~@'!a @@@ @2@@ @Ԡ@@ @=@@ @@ @@ @@ @@c@_@$find	c@"@@ @@N!a @@@ @@ @@ @@x@'`@(find_opt	d@7@@ @@c!a @@@ @	@@ @@ @@ @@@Aa@*find_first	e@@S@@ @d@@ @@ @@!a @@@ @g@@ @@ @@ @@ @@@cb@.find_first_opt	f@@u@@ @@@ @@ @@!a @@@ @J@@ @@ @@@ @@ @@ @@@c@)find_last	g@@@@ @@@ @@ @@̠!a @@@ @@@ @@ @@ @@ @@@d@-find_last_opt	h@@@@ @@@ @@ @@!a @@@ @@@ @@ @@@ @@ @@ @@$@e@#map	i@@!a @!b @@ @@
@@ @
@@ @@ @@ @@@@f@$mapi	j@@@@ @@!a @!b @@ @@ @@7
@@ @;
@@ @@ @@ @@a@	g@&to_seq	k@G!a @@@ @&Stdlib#Seq!t5@@ @ʠ@ @@@ @@ @@@	2h@*to_rev_seq	l@i!a @@@ @"#Seq!tT@@ @Р@ @@@ @@ @@@	Qi@+to_seq_from	m@a@@ @@!a @@@ @F#Seq!tx@@ @נ@ @@@ @@ @@ @@@	uj@'add_seq	n@]#Seq!t@@ @ܠ!a @@ @@@ @@
@@ @Š@@ @@ @@ @@@	k@&of_seq	o@#Seq!t@@ @!a @@ @@@ @@@ @@ @@
@	l@'of_list	p@L@@ @!a @@ @@@ @ @@ @@ @@&@
/V@.disjoint_union	q"eq&optionJ@!a @@$boolE@@ @@ @@ @@@ @%print@	&Format)formatter@@ @@	@@ @@ @@ @@@ @@<)@@ @@B/@@ @F3@@ @@ @@ @@ @@ @ @l@
uW@+union_right	r@R!a @@@ @@\
@@ @`@@ @@ @@ @@@
X@*union_left	s@l!a @	@@ @@v
@@ @z@@ @
@ @@ @@@
Y@+union_merge	t@@!a @@@ @
@ @@@@ @@@@ @@@ @@ @@ @@ @@@
Z@&rename	u@@@ @@@ @@@@ @@@ @@ @@ @@@
[@(map_keys	v@@@@ @@@ @@ @@Ǡ!a @ @@ @Ϡ@@ @!@ @"@ @#@@
\@$keys	w@۠!a @$@@ @%
#Set$Make
u!t@@ @&@ @'@@]@$data	x@!a @)@@ @(Y	@@ @*@ @+@$@-^@&of_set	y@@@@ @,!a @/@ @-@
#Set$Make
!t@@ @.@@ @0@ @1@ @2@E@N_@7transpose_keys_and_data	z@+@@ @3@@ @42@@ @5@@ @6@ @7@[@d`@;transpose_keys_and_data_set	{@A@@ @8@@ @9H#Set$Make
!t@@ @:@@ @;@ @<@x@a@%print	|@@)&Format)formatter@@ @=@!a @B(@@ @>@ @?@ @@@<&Format)formatter@@ @A@|@@ @C;@@ @D@ @E@ @F@ @G@@b@@@ m@v@@Ӡ#Tbl	$@#key	(  8 @@@A!!t@@ @H@@@@ n n@@@@hA@!t	)  8 !a @I@A@As'Hashtbl$Make:!t@@ @JO@B@@@@@@iA@&create	*@@@ @K%!a @L@@ @M@ @N@1@e@%clear	+@!a @O@@ @P$unitF@@ @Q@ @R@G@f@%reset	,@'!a @S@@ @T@@ @U@ @V@[@g@$copy	-@;!a @X@@ @WC@@ @Y@ @Z@o@h@#add	.@O!a @]@@ @[@@@ @\@
F@@ @^@ @_@ @`@ @a@@ i@&remove	/@k!a @b@@ @c@@@ @d_@@ @e@ @f@ @g@@9j@$find	0@!a @j@@ @h@5@@ @i
@ @k@ @l@@Nk@(find_opt	1@!a @o@@ @m@J@@ @n&optionJ@@ @p@ @q@ @r@@jl@(find_all	2@!a @u@@ @s@f@@ @t$listI@@ @v@ @w@ @x@@m@'replace	3@Ѡ!a @{@@ @y@@@ @z@@@ @|@ @}@ @~@ @@@n@#mem	4@!a @ @@ @ @@@ @ @@ @ @ @ @ @ @%@o@$iter	5@@@@ @ @!a @ @@ @ @ @ @ @ @
@@ @ @@ @ @ @ @ @ @F@p@2filter_map_inplace	6@@@@ @ @!a @ @@ @ @ @ @ @ @8@@ @ #@@ @ @ @ @ @ @h@q@$fold	7@@@@ @ @!a @ @!b @ @ @ @ @ @ @ @[@@ @ @@ @ @ @ @ @ @@
r@&length	8@i!a @ @@ @ 
"@@ @ @ @ @@
2s@%stats	9@}!a @ @@ @ &Stdlib'Hashtbl*statistics@@ @ @ @ @@
Lt@&to_seq	:@!a @ @@ @ &Stdlib#Seq!tS@@ @ @ @ @@ @ @ @ @@
nu@+to_seq_keys	;@@ @ @@ @  #Seq!tm@@ @ @@ @ @ @ @@
v@-to_seq_values	<@Ҡ!a @ @@ @ ;#Seq!t@@ @ @ @ @
@
w@'add_seq	=@!a @ @@ @ @U#Seq!t@@ @ @ @ @@ @ @@ @ @ @ @ @ @/@
x@+replace_seq	>@!a @ @@ @ @z#Seq!t@@ @ à@ @ @@ @ @@ @ @ @ @ @ @T@
y@&of_seq	?@#Seq!t@@ @ ɠ!a @ @ @ @@ @ G@@ @ @ @ @s@z@'to_list	@@S!a @ @@ @ 	x
!t@@ @ Ѡ@ @ @@ @ @ @ @@Uj@'of_list	A@	
!t@@ @ ՠ!a @ @ @ @@ @ @@ @ @ @ @@sk@&to_map	B@!a @ @@ @ ##Map$Make
!t@@ @ @ @ @@l@&of_map	C@6#Map$Make
!t!a @ @@ @ @@ @ @ @ @@m@'memoize	D@Š!a @ @@ @ @@x@@ @ @ @ @}@@ @ @ @ @ @ @ @ @@n@#map	E@!a @ @@ @ @@	!b @ @ @ @@ @ @ @ @ @ @@o@@@ n@w@@&create	%$name&optionJ&stringO@@ @ @@ @ @0Compilation_unit!t@@ @ @@ @ @ @ @ @ @	4middle_end/flambda/base_types/set_of_closures_id.mliX==X=q@@@@$name	&@@@ @ )'@@ @ @@ @ @ @ @YrrYr@@.A@4get_compilation_unit	'@@@ @ 1!t@@ @ @ @ @,Z-Z@@BB@@      K     㠠2Set_of_closures_id0KaN<'&Sڠ-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ,Linkage_name0Q'͗3c,Identifiable0h$T<^D~R4%Ident0f4nAm\zb0Compilation_unit0&U6JD8CamlinternalFormatBasics0ĵ'(jd@            @@Caml1999T030  ]  0  Ew  Cg  4 2Set_of_closures_id-ocaml.warning	4middle_end/flambda/base_types/set_of_closures_id.mliQQ@2+a-4-9-30-40-41-42Q
Q@@QQ@@@@@QQ@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@A87@*ocaml.text	q An identifier, unique across the whole program, that identifies a set
    of closures (viz. [Set_of_closures]). YSZT#@@@@@@GР,Identifiable!S,IdentifiablekV%-lV%;@
Z@@!tA  8 @@@A@@@@@6utils/identifiable.mli g68 g6>@@@@,IdentifiableqA@ӱ!TA@!t0A  8 @@@A@@ @@@@@ i@X i@b@@@@rA@%equal1@@@ @@@@ @$boolE@@ @@ @@ @@0[HR1[Hu@@/Stdlib__Hashtbl`@$hash2@@@ @#intA@@ @@ @@@a@'compare3@,@@ @@1@@ @#intA@@ @@ @@ @@[\v\\v@@+Stdlib__MapA@&output4@&Stdlib+out_channel@@ @@P@@ @$unitF@@ @@ @@ @@z^{^@@yC@%print5@&Format)formatter@@ @@m@@ @@@ @@ @@ @@__@@D@@@ i@B@s@@@!t@@ @@@@ @@@ @@ @@ @@ jcm jc@@@@@@ @@@ @@ @@@|@{@%$@@ @@+*@@ @|@@ @@ @@ @@#@v@t@sp@@ @@>=@@ @p@@ @@ @@ @@6@j@i@hg@@ @@RQ@@ @g@@ @@ @@ @@J@c@ӱ#SetA@#eltA  8 @@@Ae!t@@ @@@@@ l
 l@@@@KA@!tA  8 @@@A#Set$Makey!t@@ @@@@@@@@LA@%empty@@ @@@+Stdlib__SetE@(is_empty@
@@ @~$boolE@@ @}@ @|@0@F@#mem@D@@ @{@$@@ @z@@ @y@ @x@ @w@E@'G@#add@@@ @v@8@@ @u;@@ @t@ @s@ @r@X@:H@)singleton@(@@ @qI@@ @p@ @o@f@HI@&remove@6@@ @n@Y@@ @m\@@ @l@ @k@ @j@y@[J@%union	@g@@ @i@l@@ @ho@@ @g@ @f@ @e@@nK@%inter
@z@@ @d@@@ @c@@ @b@ @a@ @`@@L@(disjoint@@@ @_@@@ @^@@ @]@ @\@ @[@@M@$diff@@@ @Z@@@ @Y@@ @X@ @W@ @V@@N@'compare
@@@ @U@@@ @T#intA@@ @S@ @R@ @Q@@O@%equal@@@ @P@@@ @O@@ @N@ @M@ @L@@P@&subset@@@ @K@@@ @J@@ @I@ @H@ @G@@Q@$iter@@@@ @F$unitF@@ @E@ @D@@@ @C@@ @B@ @A@ @@@ @R@$fold@@@@ @?@!a @;@ @>@ @=@@@ @<@@ @;@ @:@ @9@:@T@'for_all@@@@ @8@@ @7@ @6@3@@ @5&@@ @4@ @3@ @2@T@6U@&exists@@&@@ @17@@ @0@ @/@M@@ @.@@@ @-@ @,@ @+@n@PV@&filter@@@@@ @*Q@@ @)@ @(@g@@ @'j@@ @&@ @%@ @$@@iW@*filter_map@@Y@@ @#&optionJb@@ @"@@ @!@ @ @@@ @@@ @@ @@ @@@X@)partition@@x@@ @@@ @@ @@@@ @@@ @@@ @@ @@ @@ @@@Y@(cardinal@@@ @@@ @@ @@@Z@(elements@@@ @$listI@@ @@@ @
@ @@@[@'min_elt@@@ @@@ @
@ @	@@\@+min_elt_opt@@@ @o@@ @@@ @@ @@@]@'max_elt@@@ @@@ @@ @@@^@+max_elt_opt@@@ @@@ @ @@ @@ @@,@_@&choose@@@ @@@ @@ @@:@`@*choose_opt@(@@ @@@ @@@ @@ @@M@/a@%split@@@ @@@@@ @F@@ @:@@ @O@@ @@ @@ @@ @@l@Nb@$find @<@@ @@_@@ @D@@ @@ @@ @@@ac@(find_opt!@O@@ @@r@@ @[@@ @@@ @@ @@ @@@yd@*find_first"@@i@@ @z@@ @@ @@@@ @u@@ @@ @@ @@@e@.find_first_opt#@@@@ @@@ @@ @@@@ @2@@ @@@ @@ @@ @@@f@)find_last$@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@g@-find_last_opt%@@@@ @@@ @@ @@@@ @i@@ @@@ @@ @@ @@@h@+to_seq_from&@@@ @@@@ @&Stdlib#Seq!t@@ @@@ @@ @@ @@#@j@&to_seq'@@@ @#Seq!t@@ @@@ @@ @@9@k@*to_rev_seq(@'@@ @/#Seq!t@@ @@@ @@ @@O@1l@'add_seq)@B#Seq!t&@@ @@@ @@J@@ @M@@ @@ @@ @@j@Lm@&of_seq*@]#Seq!tA@@ @@@ @c@@ @@ @@@bn@&output+@-+out_channel@@ @@u@@ @*@@ @@ @@ @@@M@%print,@D&Format)formatter@@ @@@@ @B@@ @@ @@ @@@N@)to_string-@@@ @&stringO@@ @@ @@@O@'of_list.@$listI@@ @@@ @@@ @@ @@@P@#map/@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@Q@@@ l@u@@ӱ#MapA@#keyA  8 @@@Af!t@@ @@@@@
 m m@@@@TA@!tA  8 !a @@A@A#Map$Make!t@@ @I@B@@@@@@%UA@%empty!a @@@ @@+@E@(is_empty@!a @@@ @$boolE@@ @@ @@A@F@#mem@U@@ @@-!a @@@ @@@ @@ @@ @@[@
G@#add@@@ @@!a @@L	@@ @P
@@ @@ @@ @@ @@v@%H@&update@5@@ @@@&optionJ!a @y@@ @	@@ @@ @@u@@ @y@@ @@ @~@ @}@ @|@@NI@)singleton@^@@ @{@!a @s@@ @z@ @y@ @x@@cJ@&remove@s@@ @w@!a @m@@ @v@@ @u@ @t@ @s@@|K@%merge@@@@ @r@W!a @b@@ @q@b!b @`@@ @pk!c @^@@ @o@ @n@ @m@ @l@٠@@ @k@ߠ@@ @j@@ @i@ @h@ @g@ @f@	@L@%union@@@@ @e@!a @R@
@@ @d@ @c@ @b@ @a@@@ @`@	@@ @_
@@ @^@ @]@ @\@ @[@3@M@'compare@@!a @I@@@ @Z@ @Y@ @X@'@@ @W@-@@ @V@@ @U@ @T@ @S@ @R@W@N@%equal@@!a @?@,@@ @Q@ @P@ @O@K@@ @N@Q@@ @M<@@ @L@ @K@ @J@ @I@{@*O@$iter@@<@@ @H@!a @5$unitF@@ @G@ @F@ @E@t@@ @D@@ @C@ @B@ @A@@MP@$fold@@_@@ @@@!a @,@!b @*@ @?@ @>@ @=@@@ @<@@ @;@ @:@ @9@@nQ@'for_all@@@@ @8@!a @"@@ @7@ @6@ @5@
@@ @4@@ @3@ @2@ @1@@R@&exists@@@@ @0@!a @@@ @/@ @.@ @-@נ
@@ @,@@ @+@ @*@ @)@@S@&filter@@@@ @(@!a @@@ @'@ @&@ @%@
@@ @$@@ @#@ @"@ @!@"@T@*filter_map@@@@ @ @!a @!b @@@ @@ @@ @@@@ @"@@ @@ @@ @@H@U@)partition@@	@@ @@!a @
 @@ @@ @@ @@?
@@ @F@@ @K@@ @@ @@ @@ @@q@ V@(cardinal@W!a @
@@ @9@@ @
@ @@@4W@(bindings@k!a @
@@ @$listIU@@ @
@ @	@@ @@ @@@RX@+min_binding@!a @
@@ @m@@ @@ @@ @@@iY@/min_binding_opt@!a @
@@ @E@@ @@ @ @@ @@ @@@Z@+max_binding@!a @
@@ @@@ @@ @@ @@@[@/max_binding_opt@Ӡ!a @
@@ @x@@ @@ @@@ @@ @@	@\@&choose@!a @
@@ @@@ @@ @@ @@ @]@*choose_opt@!a @
@@ @@@ @@ @@@ @@ @@<@^@%split@@@ @@'!a @
@@ @2@@ @Ԡ@@ @=@@ @@ @@ @@ @@c@_@$find@"@@ @@N!a @
@@ @@ @@ @@x@'`@(find_opt@7@@ @@c!a @
@@ @	@@ @@ @@ @@@Aa@*find_first@@S@@ @d@@ @@ @@!a @
@@ @g@@ @֠@ @@ @@ @@@cb@.find_first_opt@@u@@ @@@ @@ @@!a @
@@ @J@@ @Π@ @@@ @@ @@ @@@c@)find_last@@@@ @@@ @@ @@̠!a @
@@ @@@ @Š@ @@ @@ @@@d@-find_last_opt@@@@ @@@ @@ @@!a @
@@ @@@ @@ @@@ @@ @@ @@$@e@#map@@!a @
!b @
@ @@
@@ @
@@ @@ @@ @@@@f@$mapi@@@@ @@!a @
!b @
@ @@ @@7
@@ @;
@@ @@ @@ @@a@	g@&to_seq@G!a @
@@ @&Stdlib#Seq!t5@@ @@ @@@ @@ @@@	2h@*to_rev_seq@i!a @
z@@ @"#Seq!tT@@ @@ @@@ @@ @@@	Qi@+to_seq_from@a@@ @@!a @
s@@ @F#Seq!tx@@ @@ @@@ @@ @@ @@@	uj@'add_seq@]#Seq!t@@ @!a @
i@ @@@ @@
@@ @Š@@ @@ @@ @@@	k@&of_seq@#Seq!t@@ @!a @
b@ @@@ @@@ @@ @@
@	l@'of_list@L@@ @!a @
\@ @@@ @ @@ @@ @@&@
/V@.disjoint_union"eq&optionJ@!a @
N@$boolE@@ @@ @@ @@@ @%print@	&Format)formatter@@ @@	@@ @@ @@ @@@ @@<)@@ @@B/@@ @F3@@ @@ @~@ @}@ @|@ @{@l@
uW@+union_right@R!a @
F@@ @z@\
@@ @y`@@ @x@ @w@ @v@@
X@*union_left@l!a @
@@@ @u@v
@@ @tz@@ @s@ @r@ @q@@
Y@+union_merge@@!a @
8@@ @p@ @o@@@ @n@@@ @m@@ @l@ @k@ @j@ @i@@
Z@&rename@@@ @h@@ @g@@@ @f@@ @e@ @d@ @c@@
[@(map_keys@@@@ @b@@ @a@ @`@Ǡ!a @
)@@ @_Ϡ@@ @^@ @]@ @\@@
\@$keys@۠!a @
%@@ @[
#Set$Make
u!t@@ @Z@ @Y@@]@$data@!a @
 @@ @XY	@@ @W@ @V@$@-^@&of_set@@@@ @U!a @
@ @T@
#Set$Make
!t@@ @S@@ @R@ @Q@ @P@E@N_@7transpose_keys_and_data@+@@ @O@@ @N2@@ @M@@ @L@ @K@[@d`@;transpose_keys_and_data_set@A@@ @J@@ @IH#Set$Make
!t@@ @H@@ @G@ @F@x@a@%print @@)&Format)formatter@@ @E@!a @
(@@ @D@ @C@ @B@<&Format)formatter@@ @A@|@@ @@;@@ @?@ @>@ @=@ @<@@b@@@ m@v@@ӱ#TblA@#keyA  8 @@@A!!t@@ @;@@@@ n n@@@@hA@!tA  8 !a @
 @A@As'Hashtbl$Make:!t@@ @:O@B@@@@@@iA@&create@@@ @9%!a @	@@ @8@ @7@1@e@%clear@!a @	@@ @6$unitF@@ @5@ @4@G@f@%reset@'!a @	@@ @3@@ @2@ @1@[@g@$copy@;!a @	@@ @0C@@ @/@ @.@o@h@#add@O!a @	@@ @-@@@ @,@
F@@ @+@ @*@ @)@ @(@@ i@&remove@k!a @	@@ @'@@@ @&_@@ @%@ @$@ @#@@9j@$find@!a @	@@ @"@5@@ @!
@ @ @ @@@Nk@(find_opt@!a @	@@ @@J@@ @&optionJ@@ @@ @@ @@@jl@(find_all@!a @	@@ @@f@@ @$listI@@ @@ @@ @@@m@'replace@Ѡ!a @	@@ @@@@ @@@@ @@ @@ @@ @@@n@#mem@!a @	@@ @@@@ @
@@ @@ @@ @
@%@o@$iter@@@@ @	@!a @	@@ @@ @@ @@
@@ @@@ @@ @@ @@F@p@2filter_map_inplace@@@@ @@!a @	@@ @ @ @@ @@8@@ @#@@ @@ @@ @@h@q@$fold@@@@ @@!a @	@!b @	@ @@ @@ @@[@@ @@@ @@ @@ @@@
r@&length@i!a @	@@ @
"@@ @@ @@@
2s@%stats@}!a @	@@ @&Stdlib'Hashtbl*statistics@@ @@ @@@
Lt@&to_seq@!a @	@@ @&Stdlib#Seq!tS@@ @@ @@@ @@ @@@
nu@+to_seq_keys@@ @	@@ @ #Seq!tm@@ @@@ @@ @@@
v@-to_seq_values@Ҡ!a @	@@ @;#Seq!t@@ @@ @@
@
w@'add_seq@!a @	@@ @@U#Seq!t@@ @ޠ@ @@@ @@@ @@ @@ @@/@
x@+replace_seq@!a @	@@ @@z#Seq!t@@ @נ@ @@@ @@@ @@ @@ @@T@
y@&of_seq@#Seq!t@@ @Ѡ!a @	}@ @@@ @G@@ @@ @@s@z@'to_list@S!a @	y@@ @	x
!t@@ @ˠ@ @@@ @@ @@@Uj@'of_list@	
!t@@ @Ǡ!a @	q@ @@@ @@@ @@ @@@sk@&to_map@!a @	m@@ @##Map$Make
!t@@ @@ @@@l@&of_map@6#Map$Make
!t!a @	i@@ @@@ @@ @@@m@'memoize@Š!a @	b@@ @@@x@@ @@ @@}@@ @@ @@ @@ @@@n@#map@!a @	]@@ @@@	!b @	[@ @@@ @@ @@ @@@o@@@ n@w@@@^V%%@@K@&create;hX=AiX=G@б$nameг)&stringuX=PvX=V@@	@@ @  0 feefffff@ðñn	@sr[ZNM;:('@
@
X@V@A@@б@г0Compilation_unit!t0Compilation_unitX=ZX=l@@@@ @@@г,!tX=pX=q@@	@@ @,@@@@ @/@@@9@@ @
@ @7X=J@@
@X==@@@@@@>$name<YrvYrz@б@гV!tYr}Yr~@@	@@ @  0 @Wn@A@@г@&optionYrYr@г&stringYrYr@@	@@ @@@@@@ @@@@$@ @!'@@@Yrr@@ A@@@'4get_compilation_unit=Z Z@б@г!t
ZZ@@	@@ @  0 @@U@A@@г!t0Compilation_unitZZ@@@@ @@@@@ @@@@'Z@@3B@
@@@ՠ 
 @|F@?@@  0 &%%&&&&&@,A@A@	H************************************************************************@A@@AA@ L@	H                                                                        FB M MGB M @	H                                 OCaml                                  LC  MC  @	H                                                                        RD  SD 3@	H                       Pierre Chambart, OCamlPro                        XE44YE4@	H           Mark Shinwell and Leo White, Jane Street Europe              ^F_F@	H                                                                        dGeG@	H   Copyright 2013--2016 OCamlPro SAS                                    jHkHg@	H   Copyright 2014--2016 Jane Street Group LLC                           pIhhqIh@	H                                                                        vJwJ@	H   All rights reserved.  This file is distributed under the terms of    |K}KN@	H   the GNU Lesser General Public License version 2.1, with the          LOOLO@	H   special exception on linking described in the file LICENSE.          MM@	H                                                                        NN5@	H************************************************************************O66O6@	r* An identifier, unique across the whole program, that identifies a set
    of closures (viz. [Set_of_closures]). A@   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-cŐ!. - @0z\u^? TtGi  0 @@@8CamlinternalFormatBasics0ĵ'(jdǠP0&U6JD%Ident0f4nAm\zb0h$T<^D~R4,Linkage_name0Q'͗3c0KaN<'&Sڠ&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8-Stdlib__Uchar0o9us:2[]@0KaN<'&SA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    Caml1999Y030  *        ( 2Set_of_closures_id@-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ10KaN<'&Sڠ,Linkage_name0Q'͗3c?Int_replace_polymorphic_compare0¼f%3;,Identifiable0h$T<^D~R4%Ident0f4nAm\zb(Id_types0	G'B?Ct+g0Compilation_unit0&U6JD8CamlinternalFormatBasics0ĵ'(jd@,Identifiable0uun`pӝrV8(Id_types0(l(Nz0Rk
d0Compilation_unit0x%Vْ.Y@@@@  8 6camlSet_of_closures_id@ABCDE   @=camlStdlib__Set__is_empty_273AA%param@@AA@8camlStdlib__Set__mem_276B@@A@8camlStdlib__Set__add_189B@@A@>camlStdlib__Set__singleton_198AA@A@@@A;camlStdlib__Set__remove_283B@@A@:camlStdlib__Set__union_292B@@A@:camlStdlib__Set__inter_309B@@A@=camlStdlib__Set__disjoint_336B@@A@9camlStdlib__Set__diff_345B@@A@<camlStdlib__Set__compare_376B@@A@:camlStdlib__Set__equal_379B@"s1}"s2~#env&@@C@@@    &set.mlgFS..gA6Stdlib__Set.Make.equal<Stdlib__Set.Make.equal.(fun)@@@    	gFW..g@A@;camlStdlib__Set__subset_383B@@A@9camlStdlib__Set__iter_394BA@A@9camlStdlib__Set__fold_400CA@A@<camlStdlib__Set__for_all_407BA@A@;camlStdlib__Set__exists_413BA@A@;camlStdlib__Set__filter_419BA@A@?camlStdlib__Set__filter_map_540B@@A@>camlStdlib__Set__partition_428BA@A@=camlStdlib__Set__cardinal_439AA@A@=camlStdlib__Set__elements_449AA!s@	!camlStdlib__Set__elements_aux_443@	@    6FW6m6mA9Stdlib__Set.Make.elements?Stdlib__Set.Make.elements.(fun)@A@<camlStdlib__Set__min_elt_225AA@A@	 camlStdlib__Set__min_elt_opt_229AA@A@<camlStdlib__Set__max_elt_233AA@A@	 camlStdlib__Set__max_elt_opt_237AA@A@	:camlStdlib__Set__split_259B@@A@9camlStdlib__Set__find_454B@@A@=camlStdlib__Set__find_opt_513B@@A@?camlStdlib__Set__find_first_468BA@A@	#camlStdlib__Set__find_first_opt_481BA@A@>camlStdlib__Set__find_last_494BA@A@	"camlStdlib__Set__find_last_opt_507BA@A@	 camlStdlib__Set__to_seq_from_692B@@A9camlStdlib__Set__fun_1209A@#argy@	!camlStdlib__Set__seq_of_enum__668B@@C@@@    ykFbKKkA<Stdlib__Set.Make.to_seq_from	"Stdlib__Set.Make.to_seq_from.(fun)@A@;camlStdlib__Set__to_seq_674A@@A9camlStdlib__Set__fun_1156A@"@!B@@C@@@    TSqI'I'TA7Stdlib__Set.Make.to_seq=Stdlib__Set.Make.to_seq.(fun)@A@?camlStdlib__Set__to_rev_seq_689A@@A9camlStdlib__Set__fun_1187A@B@	%camlStdlib__Set__rev_seq_of_enum__683B@@
C@@@    _WyJjJj_A;Stdlib__Set.Make.to_rev_seq	!Stdlib__Set.Make.to_rev_seq.(fun)@A@<camlStdlib__Set__add_seq_657B@@A@;camlStdlib__Set__of_seq_665A@!ii@$C@@@    NSbHsHsNA7Stdlib__Set.Make.of_seq=Stdlib__Set.Make.of_seq.(fun)@A@=camlIdentifiable__output_2527B@@A@<camlIdentifiable__print_2575B@@A@	 camlIdentifiable__to_string_2584A@@A@>camlIdentifiable__of_list_2587A@@A@:camlIdentifiable__map_2594B@@A@   @=camlStdlib__Map__is_empty_197AA%param @@AA@8camlStdlib__Map__mem_292B@@A@8camlStdlib__Map__add_200C@@A@;camlStdlib__Map__update_344C@@A@>camlStdlib__Map__singleton_166BA@AВ@@@@A;camlStdlib__Map__remove_334B@@A@:camlStdlib__Map__merge_469C@@A@:camlStdlib__Map__union_488C@@A@<camlStdlib__Map__compare_559C@@A@:camlStdlib__Map__equal_576C@@A@9camlStdlib__Map__iter_358BA@A@9camlStdlib__Map__fold_387CA@A@<camlStdlib__Map__for_all_395BA@A@;camlStdlib__Map__exists_402BA@A@;camlStdlib__Map__filter_516BA@A@?camlStdlib__Map__filter_map_526BA@A@>camlStdlib__Map__partition_537BA@A@=camlStdlib__Map__cardinal_592AA@A@=camlStdlib__Map__bindings_603AA!s]@	!camlStdlib__Map__bindings_aux_596@	@    &map.mlFW??A9Stdlib__Map.Make.bindings?Stdlib__Map.Make.bindings.(fun)@A@	 camlStdlib__Map__min_binding_299AA@A@	$camlStdlib__Map__min_binding_opt_304AA@A@	 camlStdlib__Map__max_binding_309AA@A@	$camlStdlib__Map__max_binding_opt_314AA@A@	:camlStdlib__Map__split_455B@@A@9camlStdlib__Map__find_212B@@A@=camlStdlib__Map__find_opt_284B@@A@?camlStdlib__Map__find_first_229BA@A@	#camlStdlib__Map__find_first_opt_245BA@A@>camlStdlib__Map__find_last_261BA@A@	"camlStdlib__Map__find_last_opt_277BA@A@8camlStdlib__Map__map_365BA@A@9camlStdlib__Map__mapi_376BA@A@;camlStdlib__Map__to_seq_628A@@A9camlStdlib__Map__fun_1218A@#arg#env@	!camlStdlib__Map__seq_of_enum__621B	@@C@@@    KFd@@A7Stdlib__Map.Make.to_seq=Stdlib__Map.Make.to_seq.(fun)@A@?camlStdlib__Map__to_rev_seq_645A@@A9camlStdlib__Map__fun_1249A@#ߠ"@	%camlStdlib__Map__rev_seq_of_enum__638B@@
C@@@    lFhAAA;Stdlib__Map.Make.to_rev_seq	!Stdlib__Map.Make.to_rev_seq.(fun)@A@	 camlStdlib__Map__to_seq_from_648B@@A9camlStdlib__Map__fun_1271A@DC@BB@@C@@@    FbCcCcA<Stdlib__Map.Make.to_seq_from	"Stdlib__Map.Make.to_seq_from.(fun)@A@<camlStdlib__Map__add_seq_608B@@A@;camlStdlib__Map__of_seq_618A@!ild@ C@@@    Sb??A7Stdlib__Map.Make.of_seq=Stdlib__Map.Make.of_seq.(fun)@A@>camlIdentifiable__of_list_2045A@@A@	%camlIdentifiable__disjoint_union_2200D@@A@	"camlIdentifiable__union_right_2225B@@A@	!camlIdentifiable__union_left_2235B@"m1"m2#env@	C@@@    5utils/identifiable.ml Yj A	 Identifiable.Make_map.union_left	&Identifiable.Make_map.union_left.(fun)@A@	"camlIdentifiable__union_merge_2239C@@A@=camlIdentifiable__rename_2253B@@A@?camlIdentifiable__map_keys_2257B@@A@;camlIdentifiable__keys_2320A@@A@;camlIdentifiable__data_2414AA@A@=camlIdentifiable__of_set_2417B@@A@	.camlIdentifiable__transpose_keys_and_data_2423A@@A@	2camlIdentifiable__transpose_keys_and_data_set_2429A@@A@<camlIdentifiable__print_2264C@@A@  p ?camlStdlib__Hashtbl__create_922AA"sz@@@&random6camlStdlib__Hashtbl__6@@@@b3camlStdlib__Hashtbl@    *hashtbl.mlTk88A;Stdlib__Hashtbl.Make.create	!Stdlib__Hashtbl.Make.create.(fun)@@@@     IVa

 IA6Stdlib__Hashtbl.create<Stdlib__Hashtbl.create.(fun)@	&camlStdlib__Hashtbl__create_inner_1702%+@@A@>camlStdlib__Hashtbl__clear_466AA@A@>camlStdlib__Hashtbl__reset_469AA@A@=camlStdlib__Hashtbl__copy_488AA@A@<camlStdlib__Hashtbl__add_726C@@A@?camlStdlib__Hashtbl__remove_742B@@A@=camlStdlib__Hashtbl__find_753B@@A@	!camlStdlib__Hashtbl__find_opt_772B@@A@	!camlStdlib__Hashtbl__find_all_785B@@A@	 camlStdlib__Hashtbl__replace_801C@@A@<camlStdlib__Hashtbl__mem_808B@@A@=camlStdlib__Hashtbl__iter_522BA@A@	+camlStdlib__Hashtbl__filter_map_inplace_548BA@A@=camlStdlib__Hashtbl__fold_556CA@A@?camlStdlib__Hashtbl__length_491AA!h@@@    H qOU qA6Stdlib__Hashtbl.length<Stdlib__Hashtbl.length.(fun)@A@>camlStdlib__Hashtbl__stats_581AA@A@@@@?camlStdlib__Hashtbl__to_seq_620AA@A=camlStdlib__Hashtbl__fun_1779A@#arg񠐠#env@<camlStdlib__Hashtbl__aux_624B	@@C@@D@@@    u
BM
A6Stdlib__Hashtbl.to_seq<Stdlib__Hashtbl.to_seq.(fun)@A@	$camlStdlib__Hashtbl__to_seq_keys_650AA@A=camlStdlib__Hashtbl__fun_1792A@('@8camlStdlib__Seq__map_103B@@C
@@D@@@    TjA;Stdlib__Hashtbl.to_seq_keys	!Stdlib__Hashtbl.to_seq_keys.(fun)@A@	&camlStdlib__Hashtbl__to_seq_values_653AA@A=camlStdlib__Hashtbl__fun_1802A@NM@&B@@C@@D@@@    VlA=Stdlib__Hashtbl.to_seq_values	#Stdlib__Hashtbl.to_seq_values.(fun)@A@	 camlStdlib__Hashtbl__add_seq_816B@@A@	$camlStdlib__Hashtbl__replace_seq_823B@@A@?camlStdlib__Hashtbl__of_seq_924A@@A@>camlIdentifiable__to_list_2767AA@A@>camlIdentifiable__of_list_2821A@@A@=camlIdentifiable__to_map_2828A@!v-@CB
@@@    + V_ հA<Identifiable.Make_tbl.to_map	"Identifiable.Make_tbl.to_map.(fun)@b@    4 Qm 	@A@=camlIdentifiable__of_map_2873A@@A@>camlIdentifiable__memoize_2879C@@A@:camlIdentifiable__map_2885B@@A@9camlId_types__create_1277B@@A@@7camlId_types__name_1271A@!o#env@CB
@@@    	)middle_end/flambda/base_types/id_types.ml TO[ TA4Id_types.UnitId.name:Id_types.UnitId.name.(fun)@@@     T\` T
@@    
 TO` T@A@7camlId_types__unit_1282AA!x@A@     \OU \A4Id_types.UnitId.unit:Id_types.UnitId.unit.(fun)@A@    7camlId_types__equal_886BA%param{z@@@$prim{@	@    7pSYpA1Id_types.Id.equal7Id_types.Id.equal.(fun)@@@
|@@    CpLRp@@@    Kp\ip    	(utils/int_replace_polymorphic_compare.mlAco@@AA	#Int_replace_polymorphic_compare.(=)	)Int_replace_polymorphic_compare.(=).(fun)@A@9camlId_types__compare_892BA03@F@
@    dqNTqA3Id_types.Id.compare9Id_types.Id.compare.(fun)@@@    nqU[q
@@    pq^eq@A@6camlId_types__hash_897 A%paramgh@A@6camlId_types__name_901 A
ij@@/camlId_types__1 @    tG[tA0Id_types.Id.name6Id_types.Id.name.(fun)@@@@@@@    vIR22v
@A@;camlId_types__to_string_905 A@A@8camlId_types__output_973B@"fdΠ!tϠ@=camlStdlib__output_string_249
C@@@    {er{A2Id_types.Id.output8Id_types.Id.output.(fun)@@    {Tr{@A@7camlId_types__print_976B@#ppfҠ!vӠ@	'camlStdlib__Format__pp_print_string_570
C@@@    |o||A1Id_types.Id.print7Id_types.Id.print.(fun)@@    |T||@A@6camlId_types__fun_1394B@%*opt*rux@@@$names@@    oP\XXo@8Id_types.Id.create.(fun)@{<camlId_types__fun_inner_1395D@@A@  $ 8camlId_types__equal_1267B@"o1"o20@@@9camlId_types__compare_996C@@@    5 STa SA5Id_types.UnitId.equal;Id_types.UnitId.equal.(fun)@@@    @ STe SA@B@@A@7camlId_types__hash_1007AA#off@)caml_hashD@ @@@@@@J d@@    a RQa`` RA4Id_types.UnitId.hash:Id_types.UnitId.hash.(fun)    *hashtbl.mlMi:3:3A4Stdlib__Hashtbl.hash:Stdlib__Hashtbl.hash.(fun)@A@<camlId_types__to_string_1274A@@A@9camlId_types__output_1000B@@A@8camlId_types__print_1003B@@A@f@ql W5>6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*                       Pierre Chambart, OCamlPro                        *)
(*           Mark Shinwell and Leo White, Jane Street Europe              *)
(*                                                                        *)
(*   Copyright 2013--2016 OCamlPro SAS                                    *)
(*   Copyright 2014--2016 Jane Street Group LLC                           *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

[@@@ocaml.warning "+a-4-9-30-40-41-42"]

(** An identifier, unique across the whole program, that identifies a set
    of closures (viz. [Set_of_closures]). *)

include Identifiable.S

val create : ?name:string -> Compilation_unit.t -> t
val name : t -> string option
val get_compilation_unit : t -> Compilation_unit.t
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Caml1999I030  HV  >  8Z  76Set_of_closures_origin!t	   8 @@@A@@@@@6utils/identifiable.mli g68 g6>@@@@,IdentifiableqA@Ӡ!T	!@!t	  8 @@@A@@ @@@@@ i@X i@b@@@@rA@%equal	@@@ @@@@ @$boolE@@ @@ @@ @@0[HR1[Hu@@/Stdlib__Hashtbl`@$hash	@@@ @#intA@@ @@ @@@a@'compare	@,@@ @@1@@ @#intA@@ @@ @@ @@[\v\\v@@+Stdlib__MapA@&output	@&Stdlib+out_channel@@ @@P@@ @$unitF@@ @@ @@ @@z^{^@@yC@%print	@&Format)formatter@@ @@m@@ @@@ @@ @@ @@__@@D@@@ i@B@s@@	"@!t@@ @@@@ @@@ @@ @@ @@ jcm jc@@@	#@@@ @@@ @@ @@@|@{	$@%$@@ @@+*@@ @|@@ @@ @@ @@#@v@t	%@sp@@ @@>=@@ @p@@ @@ @@ @@6@j@i	&@hg@@ @@RQ@@ @g@@ @@ @@ @@J@c@Ӡ#Set	'@#elt	  8 @@@Ae!t@@ @@@@@ l
 l@@@@KA@!t	  8 @@@A#Set$Makey!t@@ @@@@@@@@LA@%empty	@@ @@@+Stdlib__SetE@(is_empty	@
@@ @$boolE@@ @@ @@0@F@#mem	@D@@ @@$@@ @@@ @@ @@ @@E@'G@#add	@@@ @@8@@ @;@@ @@ @@ @@X@:H@)singleton	@(@@ @I@@ @@ @@f@HI@&remove	@6@@ @@Y@@ @\@@ @@ @@ @@y@[J@%union	@g@@ @@l@@ @o@@ @@ @@ @@@nK@%inter	@z@@ @@@@ @@@ @@ @@ @@@L@(disjoint	@@@ @@@@ @@@ @@ @@ @@@M@$diff	@@@ @@@@ @@@ @@ @@ @@@N@'compare	@@@ @@@@ @#intA@@ @@ @@ @@@O@%equal	@@@ @@@@ @@@ @@ @@ @@@P@&subset	@@@ @@@@ @@@ @ @ @@ @@@Q@$iter	@@@@ @$unitF@@ @@ @@@@ @@@ @@ @@ @	@ @R@$fold	@@@@ @
@!a @@ @@ @@@@ @
@@ @@ @@ @@:@T@'for_all	@@@@ @@@ @@ @@3@@ @&@@ @@ @@ @@T@6U@&exists	@@&@@ @7@@ @@ @@M@@ @@@@ @@ @@ @@n@PV@&filter	@@@@@ @ Q@@ @!@ @"@g@@ @#j@@ @$@ @%@ @&@@iW@*filter_map	@@Y@@ @'&optionJb@@ @(@@ @)@ @*@@@ @+@@ @,@ @-@ @.@@X@)partition	@@x@@ @/@@ @0@ @1@@@ @2@@ @4@@ @3@ @5@ @6@ @7@@Y@(cardinal	@@@ @8@@ @9@ @:@@Z@(elements	@@@ @;$listI@@ @<@@ @=@ @>@@[@'min_elt	@@@ @?@@ @@@ @A@@\@+min_elt_opt	@@@ @Bo@@ @C@@ @D@ @E@@]@'max_elt	@@@ @F@@ @G@ @H@@^@+max_elt_opt	@@@ @I@@ @J@@ @K@ @L@,@_@&choose	@@@ @M@@ @N@ @O@:@`@*choose_opt	@(@@ @P@@ @Q@@ @R@ @S@M@/a@%split	@@@ @T@@@@ @UF@@ @X:@@ @WO@@ @V@ @Y@ @Z@ @[@l@Nb@$find	@<@@ @\@_@@ @]D@@ @^@ @_@ @`@@ac@(find_opt	@O@@ @a@r@@ @b[@@ @c@@ @d@ @e@ @f@@yd@*find_first	@@i@@ @gz@@ @h@ @i@@@ @ju@@ @k@ @l@ @m@@e@.find_first_opt	@@@@ @n@@ @o@ @p@@@ @q2@@ @r@@ @s@ @t@ @u@@f@)find_last	@@@@ @v@@ @w@ @x@@@ @y@@ @z@ @{@ @|@@g@-find_last_opt	@@@@ @}@@ @~@ @@@@ @i@@ @@@ @@ @@ @@@h@+to_seq_from	@@@ @@@@ @&Stdlib#Seq!t@@ @@@ @@ @@ @@#@j@&to_seq	@@@ @#Seq!t@@ @@@ @@ @@9@k@*to_rev_seq	@'@@ @/#Seq!t@@ @@@ @@ @@O@1l@'add_seq	@B#Seq!t&@@ @@@ @@J@@ @M@@ @@ @@ @@j@Lm@&of_seq	@]#Seq!tA@@ @@@ @c@@ @@ @@@bn@&output	@-+out_channel@@ @@u@@ @*@@ @@ @@ @@@M@%print	@D&Format)formatter@@ @@@@ @B@@ @@ @@ @@@N@)to_string	@@@ @&stringO@@ @@ @@@O@'of_list	@$listI@@ @@@ @@@ @@ @@@P@#map	@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@Q@@@ l@u@@Ӡ#Map	(@#key	K  8 @@@Af!t@@ @@@@@
 m m@@@@TA@!t	L  8 !a @@A@A#Map$Make!t@@ @I@B@@@@@@%UA@%empty	M!a @@@ @@+@E@(is_empty	N@!a @@@ @$boolE@@ @@ @@A@F@#mem	O@U@@ @@-!a @@@ @@@ @@ @@ @@[@
G@#add	P@@@ @@!a @@L	@@ @P
@@ @@ @@ @@ @@v@%H@&update	Q@5@@ @@@&optionJ!a @@@ @	@@ @@ @@u@@ @y@@ @@ @@ @@ @@@NI@)singleton	R@^@@ @@!a @@@ @@ @@ @@@cJ@&remove	S@s@@ @@!a @@@ @@@ @@ @@ @@@|K@%merge	T@@@@ @@W!a @@@ @@b!b @@@ @k!c @@@ @@ @@ @@ @@٠@@ @@ߠ@@ @@@ @@ @@ @@ @@	@L@%union	U@@@@ @@!a @@
@@ @@ @@ @@ @@@@ @@	@@ @
@@ @@ @@ @@ @@3@M@'compare	V@@!a @ @@@ @@ @@ @@'@@ @@-@@ @@@ @@ @@ @@ @@W@N@%equal	W@@!a @
@,@@ @@ @@ @@K@@ @	@Q@@ @<@@ @@ @
@ @@ @@{@*O@$iter	X@@<@@ @@!a @$unitF@@ @@ @@ @@t@@ @@@ @@ @@ @@@MP@$fold	Y@@_@@ @@!a @@!b @@ @@ @@ @@@@ @@@ @ @ @!@ @"@@nQ@'for_all	Z@@@@ @#@!a @'@@ @$@ @%@ @&@
@@ @(@@ @)@ @*@ @+@@R@&exists	[@@@@ @,@!a @0@@ @-@ @.@ @/@נ
@@ @1@@ @2@ @3@ @4@@S@&filter	\@@@@ @5@!a @:@@ @6@ @7@ @8@
@@ @9@@ @;@ @<@ @=@"@T@*filter_map	]@@@@ @>@!a @B!b @D@@ @?@ @@@ @A@@@ @C"@@ @E@ @F@ @G@H@U@)partition	^@@	@@ @H@!a @N @@ @I@ @J@ @K@?
@@ @LF@@ @OK@@ @M@ @P@ @Q@ @R@q@ V@(cardinal	_@W!a @S@@ @T9@@ @U@ @V@@4W@(bindings	`@k!a @X@@ @W$listIU@@ @Y@ @Z@@ @[@ @\@@RX@+min_binding	a@!a @^@@ @]m@@ @_@ @`@ @a@@iY@/min_binding_opt	b@!a @c@@ @bE@@ @d@ @e@@ @f@ @g@@Z@+max_binding	c@!a @i@@ @h@@ @j@ @k@ @l@@[@/max_binding_opt	d@Ӡ!a @n@@ @mx@@ @o@ @p@@ @q@ @r@	@\@&choose	e@!a @t@@ @s@@ @u@ @v@ @w@ @]@*choose_opt	f@!a @y@@ @x@@ @z@ @{@@ @|@ @}@<@^@%split	g@@@ @~@'!a @@@ @2@@ @Ԡ@@ @=@@ @@ @@ @@ @@c@_@$find	h@"@@ @@N!a @@@ @@ @@ @@x@'`@(find_opt	i@7@@ @@c!a @@@ @	@@ @@ @@ @@@Aa@*find_first	j@@S@@ @d@@ @@ @@!a @@@ @g@@ @@ @@ @@ @@@cb@.find_first_opt	k@@u@@ @@@ @@ @@!a @@@ @J@@ @@ @@@ @@ @@ @@@c@)find_last	l@@@@ @@@ @@ @@̠!a @@@ @@@ @@ @@ @@ @@@d@-find_last_opt	m@@@@ @@@ @@ @@!a @@@ @@@ @@ @@@ @@ @@ @@$@e@#map	n@@!a @!b @@ @@
@@ @
@@ @@ @@ @@@@f@$mapi	o@@@@ @@!a @!b @@ @@ @@7
@@ @;
@@ @@ @@ @@a@	g@&to_seq	p@G!a @@@ @&Stdlib#Seq!t5@@ @ʠ@ @@@ @@ @@@	2h@*to_rev_seq	q@i!a @@@ @"#Seq!tT@@ @Р@ @@@ @@ @@@	Qi@+to_seq_from	r@a@@ @@!a @@@ @F#Seq!tx@@ @נ@ @@@ @@ @@ @@@	uj@'add_seq	s@]#Seq!t@@ @ܠ!a @@ @@@ @@
@@ @Š@@ @@ @@ @@@	k@&of_seq	t@#Seq!t@@ @!a @@ @@@ @@@ @@ @@
@	l@'of_list	u@L@@ @!a @@ @@@ @ @@ @@ @@&@
/V@.disjoint_union	v"eq&optionJ@!a @@$boolE@@ @@ @@ @@@ @%print@	&Format)formatter@@ @@	@@ @@ @@ @@@ @@<)@@ @@B/@@ @F3@@ @@ @@ @@ @@ @ @l@
uW@+union_right	w@R!a @@@ @@\
@@ @`@@ @@ @@ @@@
X@*union_left	x@l!a @	@@ @@v
@@ @z@@ @
@ @@ @@@
Y@+union_merge	y@@!a @@@ @
@ @@@@ @@@@ @@@ @@ @@ @@ @@@
Z@&rename	z@@@ @@@ @@@@ @@@ @@ @@ @@@
[@(map_keys	{@@@@ @@@ @@ @@Ǡ!a @ @@ @Ϡ@@ @!@ @"@ @#@@
\@$keys	|@۠!a @$@@ @%
#Set$Make
u!t@@ @&@ @'@@]@$data	}@!a @)@@ @(Y	@@ @*@ @+@$@-^@&of_set	~@@@@ @,!a @/@ @-@
#Set$Make
!t@@ @.@@ @0@ @1@ @2@E@N_@7transpose_keys_and_data	@+@@ @3@@ @42@@ @5@@ @6@ @7@[@d`@;transpose_keys_and_data_set	@A@@ @8@@ @9H#Set$Make
!t@@ @:@@ @;@ @<@x@a@%print	@@)&Format)formatter@@ @=@!a @B(@@ @>@ @?@ @@@<&Format)formatter@@ @A@|@@ @C;@@ @D@ @E@ @F@ @G@@b@@@ m@v@@Ӡ#Tbl	)@#key	-  8 @@@A!!t@@ @H@@@@ n n@@@@hA@!t	.  8 !a @I@A@As'Hashtbl$Make:!t@@ @JO@B@@@@@@iA@&create	/@@@ @K%!a @L@@ @M@ @N@1@e@%clear	0@!a @O@@ @P$unitF@@ @Q@ @R@G@f@%reset	1@'!a @S@@ @T@@ @U@ @V@[@g@$copy	2@;!a @X@@ @WC@@ @Y@ @Z@o@h@#add	3@O!a @]@@ @[@@@ @\@
F@@ @^@ @_@ @`@ @a@@ i@&remove	4@k!a @b@@ @c@@@ @d_@@ @e@ @f@ @g@@9j@$find	5@!a @j@@ @h@5@@ @i
@ @k@ @l@@Nk@(find_opt	6@!a @o@@ @m@J@@ @n&optionJ@@ @p@ @q@ @r@@jl@(find_all	7@!a @u@@ @s@f@@ @t$listI@@ @v@ @w@ @x@@m@'replace	8@Ѡ!a @{@@ @y@@@ @z@@@ @|@ @}@ @~@ @@@n@#mem	9@!a @ @@ @ @@@ @ @@ @ @ @ @ @ @%@o@$iter	:@@@@ @ @!a @ @@ @ @ @ @ @ @
@@ @ @@ @ @ @ @ @ @F@p@2filter_map_inplace	;@@@@ @ @!a @ @@ @ @ @ @ @ @8@@ @ #@@ @ @ @ @ @ @h@q@$fold	<@@@@ @ @!a @ @!b @ @ @ @ @ @ @ @[@@ @ @@ @ @ @ @ @ @@
r@&length	=@i!a @ @@ @ 
"@@ @ @ @ @@
2s@%stats	>@}!a @ @@ @ &Stdlib'Hashtbl*statistics@@ @ @ @ @@
Lt@&to_seq	?@!a @ @@ @ &Stdlib#Seq!tS@@ @ @ @ @@ @ @ @ @@
nu@+to_seq_keys	@@@ @ @@ @  #Seq!tm@@ @ @@ @ @ @ @@
v@-to_seq_values	A@Ҡ!a @ @@ @ ;#Seq!t@@ @ @ @ @
@
w@'add_seq	B@!a @ @@ @ @U#Seq!t@@ @ @ @ @@ @ @@ @ @ @ @ @ @/@
x@+replace_seq	C@!a @ @@ @ @z#Seq!t@@ @ à@ @ @@ @ @@ @ @ @ @ @ @T@
y@&of_seq	D@#Seq!t@@ @ ɠ!a @ @ @ @@ @ G@@ @ @ @ @s@z@'to_list	E@S!a @ @@ @ 	x
!t@@ @ Ѡ@ @ @@ @ @ @ @@Uj@'of_list	F@	
!t@@ @ ՠ!a @ @ @ @@ @ @@ @ @ @ @@sk@&to_map	G@!a @ @@ @ ##Map$Make
!t@@ @ @ @ @@l@&of_map	H@6#Map$Make
!t!a @ @@ @ @@ @ @ @ @@m@'memoize	I@Š!a @ @@ @ @@x@@ @ @ @ @}@@ @ @ @ @ @ @ @ @@n@#map	J@!a @ @@ @ @@	!b @ @ @ @@ @ @ @ @ @ @@o@@@ n@w@@&create	*@2Set_of_closures_id!t@@ @ @@ @ @ @ @	8middle_end/flambda/base_types/set_of_closures_origin.mliSS@@@@4get_compilation_unit	+@@@ @ 0Compilation_unit!t@@ @ @ @ @UU@@A@&rename	,@@/!t@@ @ 5!t@@ @ @ @ @@@ @ @@ @ @ @ @ @ @8V9V<@@=B@@  +   P  0   6Set_of_closures_origin0ZҴ
S=cR
-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ2Set_of_closures_id0KaN<'&Sڠ,Linkage_name0Q'͗3c,Identifiable0h$T<^D~R4%Ident0f4nAm\zb0Compilation_unit0&U6JD8CamlinternalFormatBasics0ĵ'(jd@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Caml1999T030  !s  N  y  	  4 6Set_of_closures_origin-ocaml.warning	7middle_end/flambda/base_types/set_of_closures_origin.mlQQ@5+a-4-9-30-40-41-42-66Q
Q@@QQ@@@@@QQ@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@@Р?Int_replace_polymorphic_compare?Int_replace_polymorphic_compareWRXR@@  0 FEEFFFFF@D@@@@@  0 GFFGGGGG@F@@_R@@	@LР2Set_of_closures_id2Set_of_closures_idnToT@@!t Q  8 @@@A@@ @@@@@6utils/identifiable.mli g68 g6>@@@@,IdentifiableqA@Ӡ!T R@"@
 i@B i@b@s@@%equal S@!t@@ @@@@ @$boolE@@ @@ @@ @@* jcm+ jc@@/Stdlib__Hashtbl`@$hash T@@@ @#intA@@ @@ @~@@a@'compare U@0/@@ @}@65@@ @|#intA@@ @{@ @z@ @y@.@+Stdlib__MapA@&output V@&Stdlib+out_channel@@ @x@SR@@ @w$unitF@@ @v@ @u@ @t@K@qC@%print W@&Format)formatter@@ @s@nm@@ @r@@ @q@ @p@ @o@d@D@Ӡ#Set X@@ l l@u@@Ӡ#Map Y@@ m m@v@@Ӡ#Tbl Z@@ n n@w@@&create [$name&optionJ&stringO@@ @D@@ @C@0Compilation_unit!t@@ @B@@ @A@ @@@ @?@	4middle_end/flambda/base_types/set_of_closures_id.mliX==X=q@@2Set_of_closures_id@@$name \@@@ @>+)@@ @=@@ @<@ @;@YrrYr@@A@4get_compilation_unit ]@(@@ @:3!t@@ @9@ @8@-Z.Z@@,B@@  0 lkklllll@%@@@ A  8 @@@A#@@ @@@@@@@@A@ӱ	 A@*@@@ @@@ @@	@@ @@@ @@ @@ @@@@ @@@ @@@ @@ @@@@ @!#@@ @@')@@ @@@ @@ @@ @@@@ @@@ @@:<@@ @@@ @@ @@ @@2@@ @@@ @@NP@@ @@@ @@ @@ @@F@@ӱ A@@@@ӱ A@@@@ӱ A@@@@ Ϡ@@ @@@ @@@@ @@@ @@ @@ @@@@ @
@@ @@@ @@@ @@ @@@@ @@@ @@@ @@ @@@@@3T@@@@ࠠ&create @VAV@@@@@ @B@@ @B@  0 65566666@ðñ@~k@je@d_@^YXBA21@@@@!t cVdV@@@  0 QPPQQQQQ@@@@@ఐ!tnVoV@*@@|A@@,B@  0 _^^_____@*@@@@AA@@00@ @.@@zV@@
@1@ࠠ&rename WW
@@@@@@ @@ @B@ߐA @B@@B@
@ @B@@ @B@  0 @Vf`@a@@@@@@!f WW@@@#  0 @/WW@@@@@@!t WW@@@&  0 @ 9@@C@@@@ఐ'!fWW@
@@FB@  0 @:@@D@@@@ఐ&!tW.@
/@@GB@@@1@@SB@@@A(3A@M  0 @%@@@@A=5A@@]Q@ @  0 @<@@@@:@:9@O@me`MA/
 ֠\@}w@x@B@@  0 @c@@@@2Set_of_closures_id!t@@ @!t@@ @@ @@!t @@ @@@ @@ @@ @@	8middle_end/flambda/base_types/set_of_closures_origin.mliVV<@@6Set_of_closures_originB@@@ @0Compilation_unit!t@@ @@ @@UU@@A@8!t@@ @.@@ @@ @@(S)S@@'@@	H************************************************************************TA@@UA@ L@	H                                                                        ZB M M[B M @	H                                 OCaml                                  `C  aC  @	H                                                                        fD  gD 3@	H                       Pierre Chambart, OCamlPro                        lE44mE4@	H           Mark Shinwell and Leo White, Jane Street Europe              rFsF@	H                                                                        xGyG@	H   Copyright 2013--2016 OCamlPro SAS                                    ~HHg@	H   Copyright 2014--2016 Jane Street Group LLC                           IhhIh@	H                                                                        JJ@	H   All rights reserved.  This file is distributed under the terms of    KKN@	H   the GNU Lesser General Public License version 2.1, with the          LOOLO@	H   special exception on linking described in the file LICENSE.          MM@	H                                                                        NN5@	H************************************************************************O66O6@@   *./ocamlopt"-g)-nostdlib"-I&stdlib"-I1otherlibs/dynlink0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel2-function-sections"-c"-I=middle_end/flambda/base_types!. 0/$#"! @0+%'ރn	6T  0 @@@8CamlinternalFormatBasics0ĵ'(jdǠ0Compilation_unit0&U6JD%Ident0f4nAm\zb,Identifiable0h$T<^D~R40¼f%3;,Linkage_name0Q'͗3c0KaN<'&Sڠ0ZҴ
S=cR
&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8-Stdlib__Uchar0o9us:2[]@@A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             Caml1999I030  HV  >  8Z  76Set_of_closures_origin!t	   8 @@@A@@@@@6utils/identifiable.mli g68 g6>@@@@,IdentifiableqA@Ӡ!T	!@!t	  8 @@@A@@ @@@@@ i@X i@b@@@@rA@%equal	@@@ @@@@ @$boolE@@ @@ @@ @@0[HR1[Hu@@/Stdlib__Hashtbl`@$hash	@@@ @#intA@@ @@ @@@a@'compare	@,@@ @@1@@ @#intA@@ @@ @@ @@[\v\\v@@+Stdlib__MapA@&output	@&Stdlib+out_channel@@ @@P@@ @$unitF@@ @@ @@ @@z^{^@@yC@%print	@&Format)formatter@@ @@m@@ @@@ @@ @@ @@__@@D@@@ i@B@s@@	"@!t@@ @@@@ @@@ @@ @@ @@ jcm jc@@@	#@@@ @@@ @@ @@@|@{	$@%$@@ @@+*@@ @|@@ @@ @@ @@#@v@t	%@sp@@ @@>=@@ @p@@ @@ @@ @@6@j@i	&@hg@@ @@RQ@@ @g@@ @@ @@ @@J@c@Ӡ#Set	'@#elt	  8 @@@Ae!t@@ @@@@@ l
 l@@@@KA@!t	  8 @@@A#Set$Makey!t@@ @@@@@@@@LA@%empty	@@ @@@+Stdlib__SetE@(is_empty	@
@@ @$boolE@@ @@ @@0@F@#mem	@D@@ @@$@@ @@@ @@ @@ @@E@'G@#add	@@@ @@8@@ @;@@ @@ @@ @@X@:H@)singleton	@(@@ @I@@ @@ @@f@HI@&remove	@6@@ @@Y@@ @\@@ @@ @@ @@y@[J@%union	@g@@ @@l@@ @o@@ @@ @@ @@@nK@%inter	@z@@ @@@@ @@@ @@ @@ @@@L@(disjoint	@@@ @@@@ @@@ @@ @@ @@@M@$diff	@@@ @@@@ @@@ @@ @@ @@@N@'compare	@@@ @@@@ @#intA@@ @@ @@ @@@O@%equal	@@@ @@@@ @@@ @@ @@ @@@P@&subset	@@@ @@@@ @@@ @ @ @@ @@@Q@$iter	@@@@ @$unitF@@ @@ @@@@ @@@ @@ @@ @	@ @R@$fold	@@@@ @
@!a @@ @@ @@@@ @
@@ @@ @@ @@:@T@'for_all	@@@@ @@@ @@ @@3@@ @&@@ @@ @@ @@T@6U@&exists	@@&@@ @7@@ @@ @@M@@ @@@@ @@ @@ @@n@PV@&filter	@@@@@ @ Q@@ @!@ @"@g@@ @#j@@ @$@ @%@ @&@@iW@*filter_map	@@Y@@ @'&optionJb@@ @(@@ @)@ @*@@@ @+@@ @,@ @-@ @.@@X@)partition	@@x@@ @/@@ @0@ @1@@@ @2@@ @4@@ @3@ @5@ @6@ @7@@Y@(cardinal	@@@ @8@@ @9@ @:@@Z@(elements	@@@ @;$listI@@ @<@@ @=@ @>@@[@'min_elt	@@@ @?@@ @@@ @A@@\@+min_elt_opt	@@@ @Bo@@ @C@@ @D@ @E@@]@'max_elt	@@@ @F@@ @G@ @H@@^@+max_elt_opt	@@@ @I@@ @J@@ @K@ @L@,@_@&choose	@@@ @M@@ @N@ @O@:@`@*choose_opt	@(@@ @P@@ @Q@@ @R@ @S@M@/a@%split	@@@ @T@@@@ @UF@@ @X:@@ @WO@@ @V@ @Y@ @Z@ @[@l@Nb@$find	@<@@ @\@_@@ @]D@@ @^@ @_@ @`@@ac@(find_opt	@O@@ @a@r@@ @b[@@ @c@@ @d@ @e@ @f@@yd@*find_first	@@i@@ @gz@@ @h@ @i@@@ @ju@@ @k@ @l@ @m@@e@.find_first_opt	@@@@ @n@@ @o@ @p@@@ @q2@@ @r@@ @s@ @t@ @u@@f@)find_last	@@@@ @v@@ @w@ @x@@@ @y@@ @z@ @{@ @|@@g@-find_last_opt	@@@@ @}@@ @~@ @@@@ @i@@ @@@ @@ @@ @@@h@+to_seq_from	@@@ @@@@ @&Stdlib#Seq!t@@ @@@ @@ @@ @@#@j@&to_seq	@@@ @#Seq!t@@ @@@ @@ @@9@k@*to_rev_seq	@'@@ @/#Seq!t@@ @@@ @@ @@O@1l@'add_seq	@B#Seq!t&@@ @@@ @@J@@ @M@@ @@ @@ @@j@Lm@&of_seq	@]#Seq!tA@@ @@@ @c@@ @@ @@@bn@&output	@-+out_channel@@ @@u@@ @*@@ @@ @@ @@@M@%print	@D&Format)formatter@@ @@@@ @B@@ @@ @@ @@@N@)to_string	@@@ @&stringO@@ @@ @@@O@'of_list	@$listI@@ @@@ @@@ @@ @@@P@#map	@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@Q@@@ l@u@@Ӡ#Map	(@#key	K  8 @@@Af!t@@ @@@@@
 m m@@@@TA@!t	L  8 !a @@A@A#Map$Make!t@@ @I@B@@@@@@%UA@%empty	M!a @@@ @@+@E@(is_empty	N@!a @@@ @$boolE@@ @@ @@A@F@#mem	O@U@@ @@-!a @@@ @@@ @@ @@ @@[@
G@#add	P@@@ @@!a @@L	@@ @P
@@ @@ @@ @@ @@v@%H@&update	Q@5@@ @@@&optionJ!a @@@ @	@@ @@ @@u@@ @y@@ @@ @@ @@ @@@NI@)singleton	R@^@@ @@!a @@@ @@ @@ @@@cJ@&remove	S@s@@ @@!a @@@ @@@ @@ @@ @@@|K@%merge	T@@@@ @@W!a @@@ @@b!b @@@ @k!c @@@ @@ @@ @@ @@٠@@ @@ߠ@@ @@@ @@ @@ @@ @@	@L@%union	U@@@@ @@!a @@
@@ @@ @@ @@ @@@@ @@	@@ @
@@ @@ @@ @@ @@3@M@'compare	V@@!a @ @@@ @@ @@ @@'@@ @@-@@ @@@ @@ @@ @@ @@W@N@%equal	W@@!a @
@,@@ @@ @@ @@K@@ @	@Q@@ @<@@ @@ @
@ @@ @@{@*O@$iter	X@@<@@ @@!a @$unitF@@ @@ @@ @@t@@ @@@ @@ @@ @@@MP@$fold	Y@@_@@ @@!a @@!b @@ @@ @@ @@@@ @@@ @ @ @!@ @"@@nQ@'for_all	Z@@@@ @#@!a @'@@ @$@ @%@ @&@
@@ @(@@ @)@ @*@ @+@@R@&exists	[@@@@ @,@!a @0@@ @-@ @.@ @/@נ
@@ @1@@ @2@ @3@ @4@@S@&filter	\@@@@ @5@!a @:@@ @6@ @7@ @8@
@@ @9@@ @;@ @<@ @=@"@T@*filter_map	]@@@@ @>@!a @B!b @D@@ @?@ @@@ @A@@@ @C"@@ @E@ @F@ @G@H@U@)partition	^@@	@@ @H@!a @N @@ @I@ @J@ @K@?
@@ @LF@@ @OK@@ @M@ @P@ @Q@ @R@q@ V@(cardinal	_@W!a @S@@ @T9@@ @U@ @V@@4W@(bindings	`@k!a @X@@ @W$listIU@@ @Y@ @Z@@ @[@ @\@@RX@+min_binding	a@!a @^@@ @]m@@ @_@ @`@ @a@@iY@/min_binding_opt	b@!a @c@@ @bE@@ @d@ @e@@ @f@ @g@@Z@+max_binding	c@!a @i@@ @h@@ @j@ @k@ @l@@[@/max_binding_opt	d@Ӡ!a @n@@ @mx@@ @o@ @p@@ @q@ @r@	@\@&choose	e@!a @t@@ @s@@ @u@ @v@ @w@ @]@*choose_opt	f@!a @y@@ @x@@ @z@ @{@@ @|@ @}@<@^@%split	g@@@ @~@'!a @@@ @2@@ @Ԡ@@ @=@@ @@ @@ @@ @@c@_@$find	h@"@@ @@N!a @@@ @@ @@ @@x@'`@(find_opt	i@7@@ @@c!a @@@ @	@@ @@ @@ @@@Aa@*find_first	j@@S@@ @d@@ @@ @@!a @@@ @g@@ @@ @@ @@ @@@cb@.find_first_opt	k@@u@@ @@@ @@ @@!a @@@ @J@@ @@ @@@ @@ @@ @@@c@)find_last	l@@@@ @@@ @@ @@̠!a @@@ @@@ @@ @@ @@ @@@d@-find_last_opt	m@@@@ @@@ @@ @@!a @@@ @@@ @@ @@@ @@ @@ @@$@e@#map	n@@!a @!b @@ @@
@@ @
@@ @@ @@ @@@@f@$mapi	o@@@@ @@!a @!b @@ @@ @@7
@@ @;
@@ @@ @@ @@a@	g@&to_seq	p@G!a @@@ @&Stdlib#Seq!t5@@ @ʠ@ @@@ @@ @@@	2h@*to_rev_seq	q@i!a @@@ @"#Seq!tT@@ @Р@ @@@ @@ @@@	Qi@+to_seq_from	r@a@@ @@!a @@@ @F#Seq!tx@@ @נ@ @@@ @@ @@ @@@	uj@'add_seq	s@]#Seq!t@@ @ܠ!a @@ @@@ @@
@@ @Š@@ @@ @@ @@@	k@&of_seq	t@#Seq!t@@ @!a @@ @@@ @@@ @@ @@
@	l@'of_list	u@L@@ @!a @@ @@@ @ @@ @@ @@&@
/V@.disjoint_union	v"eq&optionJ@!a @@$boolE@@ @@ @@ @@@ @%print@	&Format)formatter@@ @@	@@ @@ @@ @@@ @@<)@@ @@B/@@ @F3@@ @@ @@ @@ @@ @ @l@
uW@+union_right	w@R!a @@@ @@\
@@ @`@@ @@ @@ @@@
X@*union_left	x@l!a @	@@ @@v
@@ @z@@ @
@ @@ @@@
Y@+union_merge	y@@!a @@@ @
@ @@@@ @@@@ @@@ @@ @@ @@ @@@
Z@&rename	z@@@ @@@ @@@@ @@@ @@ @@ @@@
[@(map_keys	{@@@@ @@@ @@ @@Ǡ!a @ @@ @Ϡ@@ @!@ @"@ @#@@
\@$keys	|@۠!a @$@@ @%
#Set$Make
u!t@@ @&@ @'@@]@$data	}@!a @)@@ @(Y	@@ @*@ @+@$@-^@&of_set	~@@@@ @,!a @/@ @-@
#Set$Make
!t@@ @.@@ @0@ @1@ @2@E@N_@7transpose_keys_and_data	@+@@ @3@@ @42@@ @5@@ @6@ @7@[@d`@;transpose_keys_and_data_set	@A@@ @8@@ @9H#Set$Make
!t@@ @:@@ @;@ @<@x@a@%print	@@)&Format)formatter@@ @=@!a @B(@@ @>@ @?@ @@@<&Format)formatter@@ @A@|@@ @C;@@ @D@ @E@ @F@ @G@@b@@@ m@v@@Ӡ#Tbl	)@#key	-  8 @@@A!!t@@ @H@@@@ n n@@@@hA@!t	.  8 !a @I@A@As'Hashtbl$Make:!t@@ @JO@B@@@@@@iA@&create	/@@@ @K%!a @L@@ @M@ @N@1@e@%clear	0@!a @O@@ @P$unitF@@ @Q@ @R@G@f@%reset	1@'!a @S@@ @T@@ @U@ @V@[@g@$copy	2@;!a @X@@ @WC@@ @Y@ @Z@o@h@#add	3@O!a @]@@ @[@@@ @\@
F@@ @^@ @_@ @`@ @a@@ i@&remove	4@k!a @b@@ @c@@@ @d_@@ @e@ @f@ @g@@9j@$find	5@!a @j@@ @h@5@@ @i
@ @k@ @l@@Nk@(find_opt	6@!a @o@@ @m@J@@ @n&optionJ@@ @p@ @q@ @r@@jl@(find_all	7@!a @u@@ @s@f@@ @t$listI@@ @v@ @w@ @x@@m@'replace	8@Ѡ!a @{@@ @y@@@ @z@@@ @|@ @}@ @~@ @@@n@#mem	9@!a @ @@ @ @@@ @ @@ @ @ @ @ @ @%@o@$iter	:@@@@ @ @!a @ @@ @ @ @ @ @ @
@@ @ @@ @ @ @ @ @ @F@p@2filter_map_inplace	;@@@@ @ @!a @ @@ @ @ @ @ @ @8@@ @ #@@ @ @ @ @ @ @h@q@$fold	<@@@@ @ @!a @ @!b @ @ @ @ @ @ @ @[@@ @ @@ @ @ @ @ @ @@
r@&length	=@i!a @ @@ @ 
"@@ @ @ @ @@
2s@%stats	>@}!a @ @@ @ &Stdlib'Hashtbl*statistics@@ @ @ @ @@
Lt@&to_seq	?@!a @ @@ @ &Stdlib#Seq!tS@@ @ @ @ @@ @ @ @ @@
nu@+to_seq_keys	@@@ @ @@ @  #Seq!tm@@ @ @@ @ @ @ @@
v@-to_seq_values	A@Ҡ!a @ @@ @ ;#Seq!t@@ @ @ @ @
@
w@'add_seq	B@!a @ @@ @ @U#Seq!t@@ @ @ @ @@ @ @@ @ @ @ @ @ @/@
x@+replace_seq	C@!a @ @@ @ @z#Seq!t@@ @ à@ @ @@ @ @@ @ @ @ @ @ @T@
y@&of_seq	D@#Seq!t@@ @ ɠ!a @ @ @ @@ @ G@@ @ @ @ @s@z@'to_list	E@S!a @ @@ @ 	x
!t@@ @ Ѡ@ @ @@ @ @ @ @@Uj@'of_list	F@	
!t@@ @ ՠ!a @ @ @ @@ @ @@ @ @ @ @@sk@&to_map	G@!a @ @@ @ ##Map$Make
!t@@ @ @ @ @@l@&of_map	H@6#Map$Make
!t!a @ @@ @ @@ @ @ @ @@m@'memoize	I@Š!a @ @@ @ @@x@@ @ @ @ @}@@ @ @ @ @ @ @ @ @@n@#map	J@!a @ @@ @ @@	!b @ @ @ @@ @ @ @ @ @ @@o@@@ n@w@@&create	*@2Set_of_closures_id!t@@ @ @@ @ @ @ @	8middle_end/flambda/base_types/set_of_closures_origin.mliSS@@@@4get_compilation_unit	+@@@ @ 0Compilation_unit!t@@ @ @ @ @UU@@A@&rename	,@@/!t@@ @ 5!t@@ @ @ @ @@@ @ @@ @ @ @ @ @ @8V9V<@@=B@@  +   P  0   6Set_of_closures_origin0ZҴ
S=cR
-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ2Set_of_closures_id0KaN<'&Sڠ,Linkage_name0Q'͗3c,Identifiable0h$T<^D~R4%Ident0f4nAm\zb0Compilation_unit0&U6JD8CamlinternalFormatBasics0ĵ'(jd@            @@Caml1999T030  \~  
  D  B  4 6Set_of_closures_originР,Identifiable!S,Identifiable	8middle_end/flambda/base_types/set_of_closures_origin.mliQQ@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@A:8@@!tA  8 @@@A@@@@@6utils/identifiable.mli g68 g6>@@@@,IdentifiableqA@ӱ!TA@!t0A  8 @@@A@@ @@@@@ i@X i@b@@@@rA@%equal1@@@ @@@@ @$boolE@@ @@ @@ @@0[HR1[Hu@@/Stdlib__Hashtbl`@$hash2@@@ @#intA@@ @@ @@@a@'compare3@,@@ @@1@@ @#intA@@ @@ @@ @@[\v\\v@@+Stdlib__MapA@&output4@&Stdlib+out_channel@@ @@P@@ @$unitF@@ @@ @@ @@z^{^@@yC@%print5@&Format)formatter@@ @@m@@ @@@ @@ @@ @@__@@D@@@ i@B@s@@@!t@@ @@@@ @@@ @@ @@ @@ jcm jc@@@@@@ @@@ @@ @@@|@{@%$@@ @@+*@@ @|@@ @@ @@ @@#@v@t@sp@@ @@>=@@ @p@@ @@ @@ @@6@j@i@hg@@ @@RQ@@ @g@@ @@ @@ @@J@c@ӱ#SetA@#eltA  8 @@@Ae!t@@ @@@@@ l
 l@@@@KA@!tA  8 @@@A#Set$Makey!t@@ @@@@@@@@LA@%empty@@ @@@+Stdlib__SetE@(is_empty@
@@ @~$boolE@@ @}@ @|@0@F@#mem@D@@ @{@$@@ @z@@ @y@ @x@ @w@E@'G@#add@@@ @v@8@@ @u;@@ @t@ @s@ @r@X@:H@)singleton@(@@ @qI@@ @p@ @o@f@HI@&remove@6@@ @n@Y@@ @m\@@ @l@ @k@ @j@y@[J@%union	@g@@ @i@l@@ @ho@@ @g@ @f@ @e@@nK@%inter
@z@@ @d@@@ @c@@ @b@ @a@ @`@@L@(disjoint@@@ @_@@@ @^@@ @]@ @\@ @[@@M@$diff@@@ @Z@@@ @Y@@ @X@ @W@ @V@@N@'compare
@@@ @U@@@ @T#intA@@ @S@ @R@ @Q@@O@%equal@@@ @P@@@ @O@@ @N@ @M@ @L@@P@&subset@@@ @K@@@ @J@@ @I@ @H@ @G@@Q@$iter@@@@ @F$unitF@@ @E@ @D@@@ @C@@ @B@ @A@ @@@ @R@$fold@@@@ @?@!a @;@ @>@ @=@@@ @<@@ @;@ @:@ @9@:@T@'for_all@@@@ @8@@ @7@ @6@3@@ @5&@@ @4@ @3@ @2@T@6U@&exists@@&@@ @17@@ @0@ @/@M@@ @.@@@ @-@ @,@ @+@n@PV@&filter@@@@@ @*Q@@ @)@ @(@g@@ @'j@@ @&@ @%@ @$@@iW@*filter_map@@Y@@ @#&optionJb@@ @"@@ @!@ @ @@@ @@@ @@ @@ @@@X@)partition@@x@@ @@@ @@ @@@@ @@@ @@@ @@ @@ @@ @@@Y@(cardinal@@@ @@@ @@ @@@Z@(elements@@@ @$listI@@ @@@ @
@ @@@[@'min_elt@@@ @@@ @
@ @	@@\@+min_elt_opt@@@ @o@@ @@@ @@ @@@]@'max_elt@@@ @@@ @@ @@@^@+max_elt_opt@@@ @@@ @ @@ @@ @@,@_@&choose@@@ @@@ @@ @@:@`@*choose_opt@(@@ @@@ @@@ @@ @@M@/a@%split@@@ @@@@@ @F@@ @:@@ @O@@ @@ @@ @@ @@l@Nb@$find @<@@ @@_@@ @D@@ @@ @@ @@@ac@(find_opt!@O@@ @@r@@ @[@@ @@@ @@ @@ @@@yd@*find_first"@@i@@ @z@@ @@ @@@@ @u@@ @@ @@ @@@e@.find_first_opt#@@@@ @@@ @@ @@@@ @2@@ @@@ @@ @@ @@@f@)find_last$@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@g@-find_last_opt%@@@@ @@@ @@ @@@@ @i@@ @@@ @@ @@ @@@h@+to_seq_from&@@@ @@@@ @&Stdlib#Seq!t@@ @@@ @@ @@ @@#@j@&to_seq'@@@ @#Seq!t@@ @@@ @@ @@9@k@*to_rev_seq(@'@@ @/#Seq!t@@ @@@ @@ @@O@1l@'add_seq)@B#Seq!t&@@ @@@ @@J@@ @M@@ @@ @@ @@j@Lm@&of_seq*@]#Seq!tA@@ @@@ @c@@ @@ @@@bn@&output+@-+out_channel@@ @@u@@ @*@@ @@ @@ @@@M@%print,@D&Format)formatter@@ @@@@ @B@@ @@ @@ @@@N@)to_string-@@@ @&stringO@@ @@ @@@O@'of_list.@$listI@@ @@@ @@@ @@ @@@P@#map/@@@@ @@@ @@ @@@@ @@@ @@ @@ @@@Q@@@ l@u@@ӱ#MapA@#keyA  8 @@@Af!t@@ @@@@@
 m m@@@@TA@!tA  8 !a @@A@A#Map$Make!t@@ @I@B@@@@@@%UA@%empty!a @@@ @@+@E@(is_empty@!a @@@ @$boolE@@ @@ @@A@F@#mem@U@@ @@-!a @@@ @@@ @@ @@ @@[@
G@#add@@@ @@!a @@L	@@ @P
@@ @@ @@ @@ @@v@%H@&update@5@@ @@@&optionJ!a @y@@ @	@@ @@ @@u@@ @y@@ @@ @~@ @}@ @|@@NI@)singleton@^@@ @{@!a @s@@ @z@ @y@ @x@@cJ@&remove@s@@ @w@!a @m@@ @v@@ @u@ @t@ @s@@|K@%merge@@@@ @r@W!a @b@@ @q@b!b @`@@ @pk!c @^@@ @o@ @n@ @m@ @l@٠@@ @k@ߠ@@ @j@@ @i@ @h@ @g@ @f@	@L@%union@@@@ @e@!a @R@
@@ @d@ @c@ @b@ @a@@@ @`@	@@ @_
@@ @^@ @]@ @\@ @[@3@M@'compare@@!a @I@@@ @Z@ @Y@ @X@'@@ @W@-@@ @V@@ @U@ @T@ @S@ @R@W@N@%equal@@!a @?@,@@ @Q@ @P@ @O@K@@ @N@Q@@ @M<@@ @L@ @K@ @J@ @I@{@*O@$iter@@<@@ @H@!a @5$unitF@@ @G@ @F@ @E@t@@ @D@@ @C@ @B@ @A@@MP@$fold@@_@@ @@@!a @,@!b @*@ @?@ @>@ @=@@@ @<@@ @;@ @:@ @9@@nQ@'for_all@@@@ @8@!a @"@@ @7@ @6@ @5@
@@ @4@@ @3@ @2@ @1@@R@&exists@@@@ @0@!a @@@ @/@ @.@ @-@נ
@@ @,@@ @+@ @*@ @)@@S@&filter@@@@ @(@!a @@@ @'@ @&@ @%@
@@ @$@@ @#@ @"@ @!@"@T@*filter_map@@@@ @ @!a @!b @@@ @@ @@ @@@@ @"@@ @@ @@ @@H@U@)partition@@	@@ @@!a @
 @@ @@ @@ @@?
@@ @F@@ @K@@ @@ @@ @@ @@q@ V@(cardinal@W!a @
@@ @9@@ @
@ @@@4W@(bindings@k!a @
@@ @$listIU@@ @
@ @	@@ @@ @@@RX@+min_binding@!a @
@@ @m@@ @@ @@ @@@iY@/min_binding_opt@!a @
@@ @E@@ @@ @ @@ @@ @@@Z@+max_binding@!a @
@@ @@@ @@ @@ @@@[@/max_binding_opt@Ӡ!a @
@@ @x@@ @@ @@@ @@ @@	@\@&choose@!a @
@@ @@@ @@ @@ @@ @]@*choose_opt@!a @
@@ @@@ @@ @@@ @@ @@<@^@%split@@@ @@'!a @
@@ @2@@ @Ԡ@@ @=@@ @@ @@ @@ @@c@_@$find@"@@ @@N!a @
@@ @@ @@ @@x@'`@(find_opt@7@@ @@c!a @
@@ @	@@ @@ @@ @@@Aa@*find_first@@S@@ @d@@ @@ @@!a @
@@ @g@@ @֠@ @@ @@ @@@cb@.find_first_opt@@u@@ @@@ @@ @@!a @
@@ @J@@ @Π@ @@@ @@ @@ @@@c@)find_last@@@@ @@@ @@ @@̠!a @
@@ @@@ @Š@ @@ @@ @@@d@-find_last_opt@@@@ @@@ @@ @@!a @
@@ @@@ @@ @@@ @@ @@ @@$@e@#map@@!a @
!b @
@ @@
@@ @
@@ @@ @@ @@@@f@$mapi@@@@ @@!a @
!b @
@ @@ @@7
@@ @;
@@ @@ @@ @@a@	g@&to_seq@G!a @
@@ @&Stdlib#Seq!t5@@ @@ @@@ @@ @@@	2h@*to_rev_seq@i!a @
z@@ @"#Seq!tT@@ @@ @@@ @@ @@@	Qi@+to_seq_from@a@@ @@!a @
s@@ @F#Seq!tx@@ @@ @@@ @@ @@ @@@	uj@'add_seq@]#Seq!t@@ @!a @
i@ @@@ @@
@@ @Š@@ @@ @@ @@@	k@&of_seq@#Seq!t@@ @!a @
b@ @@@ @@@ @@ @@
@	l@'of_list@L@@ @!a @
\@ @@@ @ @@ @@ @@&@
/V@.disjoint_union"eq&optionJ@!a @
N@$boolE@@ @@ @@ @@@ @%print@	&Format)formatter@@ @@	@@ @@ @@ @@@ @@<)@@ @@B/@@ @F3@@ @@ @~@ @}@ @|@ @{@l@
uW@+union_right@R!a @
F@@ @z@\
@@ @y`@@ @x@ @w@ @v@@
X@*union_left@l!a @
@@@ @u@v
@@ @tz@@ @s@ @r@ @q@@
Y@+union_merge@@!a @
8@@ @p@ @o@@@ @n@@@ @m@@ @l@ @k@ @j@ @i@@
Z@&rename@@@ @h@@ @g@@@ @f@@ @e@ @d@ @c@@
[@(map_keys@@@@ @b@@ @a@ @`@Ǡ!a @
)@@ @_Ϡ@@ @^@ @]@ @\@@
\@$keys@۠!a @
%@@ @[
#Set$Make
u!t@@ @Z@ @Y@@]@$data@!a @
 @@ @XY	@@ @W@ @V@$@-^@&of_set@@@@ @U!a @
@ @T@
#Set$Make
!t@@ @S@@ @R@ @Q@ @P@E@N_@7transpose_keys_and_data@+@@ @O@@ @N2@@ @M@@ @L@ @K@[@d`@;transpose_keys_and_data_set@A@@ @J@@ @IH#Set$Make
!t@@ @H@@ @G@ @F@x@a@%print @@)&Format)formatter@@ @E@!a @
(@@ @D@ @C@ @B@<&Format)formatter@@ @A@|@@ @@;@@ @?@ @>@ @=@ @<@@b@@@ m@v@@ӱ#TblA@#keyA  8 @@@A!!t@@ @;@@@@ n n@@@@hA@!tA  8 !a @
 @A@As'Hashtbl$Make:!t@@ @:O@B@@@@@@iA@&create@@@ @9%!a @	@@ @8@ @7@1@e@%clear@!a @	@@ @6$unitF@@ @5@ @4@G@f@%reset@'!a @	@@ @3@@ @2@ @1@[@g@$copy@;!a @	@@ @0C@@ @/@ @.@o@h@#add@O!a @	@@ @-@@@ @,@
F@@ @+@ @*@ @)@ @(@@ i@&remove@k!a @	@@ @'@@@ @&_@@ @%@ @$@ @#@@9j@$find@!a @	@@ @"@5@@ @!
@ @ @ @@@Nk@(find_opt@!a @	@@ @@J@@ @&optionJ@@ @@ @@ @@@jl@(find_all@!a @	@@ @@f@@ @$listI@@ @@ @@ @@@m@'replace@Ѡ!a @	@@ @@@@ @@@@ @@ @@ @@ @@@n@#mem@!a @	@@ @@@@ @
@@ @@ @@ @
@%@o@$iter@@@@ @	@!a @	@@ @@ @@ @@
@@ @@@ @@ @@ @@F@p@2filter_map_inplace@@@@ @@!a @	@@ @ @ @@ @@8@@ @#@@ @@ @@ @@h@q@$fold@@@@ @@!a @	@!b @	@ @@ @@ @@[@@ @@@ @@ @@ @@@
r@&length@i!a @	@@ @
"@@ @@ @@@
2s@%stats@}!a @	@@ @&Stdlib'Hashtbl*statistics@@ @@ @@@
Lt@&to_seq@!a @	@@ @&Stdlib#Seq!tS@@ @@ @@@ @@ @@@
nu@+to_seq_keys@@ @	@@ @ #Seq!tm@@ @@@ @@ @@@
v@-to_seq_values@Ҡ!a @	@@ @;#Seq!t@@ @@ @@
@
w@'add_seq@!a @	@@ @@U#Seq!t@@ @ޠ@ @@@ @@@ @@ @@ @@/@
x@+replace_seq@!a @	@@ @@z#Seq!t@@ @נ@ @@@ @@@ @@ @@ @@T@
y@&of_seq@#Seq!t@@ @Ѡ!a @	}@ @@@ @G@@ @@ @@s@z@'to_list@S!a @	y@@ @	x
!t@@ @ˠ@ @@@ @@ @@@Uj@'of_list@	
!t@@ @Ǡ!a @	q@ @@@ @@@ @@ @@@sk@&to_map@!a @	m@@ @##Map$Make
!t@@ @@ @@@l@&of_map@6#Map$Make
!t!a @	i@@ @@@ @@ @@@m@'memoize@Š!a @	b@@ @@@x@@ @@ @@}@@ @@ @@ @@ @@@n@#map@!a @	]@@ @@@	!b @	[@ @@@ @@ @@ @@@o@@@ n@w@@@)Q(@@&)@&create;3S4S@б@г2Set_of_closures_id!t2Set_of_closures_idCSDS@@@@ @  0 DCCDDDDD@ðñL@
vu^]QP>=+*@
@
[@Y@A@@г!t[S\S@@	@@ @@@@@ @!@@@fS@@{@@
@@!4get_compilation_unitAqUrU@б@г<!t|U}U@@	@@ @  0 }||}}}}}@:T@A@@г0Compilation_unit!t0Compilation_unitUU@@@@ @@@@@ @@@@U@@A@
@@&renameBVV@б@б@гu!t2Set_of_closures_idVV@@@@ @  0 @;P$@A@@г!t2Set_of_closures_idVV1@@@@ @@@@@ @@@б@г!tV6V7@@	@@ @$@@г!tV;V<@@	@@ @1@@@@ @4@@@$@ @7V@@@V@@B@@@>@ 	٠Ơ
Ơ@n@g@@  0 @Oi@A@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        !D  "D 3@	H                       Pierre Chambart, OCamlPro                        'E44(E4@	H           Mark Shinwell and Leo White, Jane Street Europe              -F.F@	H                                                                        3G4G@	H   Copyright 2013--2016 OCamlPro SAS                                    9H:Hg@	H   Copyright 2014--2016 Jane Street Group LLC                           ?Ihh@Ih@	H                                                                        EJFJ@	H   All rights reserved.  This file is distributed under the terms of    KKLKN@	H   the GNU Lesser General Public License version 2.1, with the          QLOORLO@	H   special exception on linking described in the file LICENSE.          WMXM@	H                                                                        ]N^N5@	H************************************************************************cO66dO6@@   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-c!. - @0zZdۂZ  0 @@@8CamlinternalFormatBasics0ĵ'(jdǠ0Compilation_unit0&U6JD%Ident0f4nAm\zb0h$T<^D~R4,Linkage_name0Q'͗3c0KaN<'&Sڠؐ0ZҴ
S=cR
&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8-Stdlib__Uchar0o9us:2[]@0ZҴ
S=cR
A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Caml1999Y030  #  s  T  4  ( 6Set_of_closures_origin@-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ10ZҴ
S=cR
2Set_of_closures_id0KaN<'&Sڠ,Linkage_name0Q'͗3c?Int_replace_polymorphic_compare0¼f%3;,Identifiable0h$T<^D~R4%Ident0f4nAm\zb0Compilation_unit0&U6JD8CamlinternalFormatBasics0ĵ'(jd@2Set_of_closures_id0ql W5>6@B@@@  8 6camlSet_of_closures_id@ABCDE   @=camlStdlib__Set__is_empty_273AA%param@@AA@8camlStdlib__Set__mem_276B@@A@8camlStdlib__Set__add_189B@@A@>camlStdlib__Set__singleton_198AA@A@@@A;camlStdlib__Set__remove_283B@@A@:camlStdlib__Set__union_292B@@A@:camlStdlib__Set__inter_309B@@A@=camlStdlib__Set__disjoint_336B@@A@9camlStdlib__Set__diff_345B@@A@<camlStdlib__Set__compare_376B@@A@:camlStdlib__Set__equal_379B@"s1}"s2~#env&@@C@@@    &set.mlgFS..gA6Stdlib__Set.Make.equal<Stdlib__Set.Make.equal.(fun)@@@    	gFW..g@A@;camlStdlib__Set__subset_383B@@A@9camlStdlib__Set__iter_394BA@A@9camlStdlib__Set__fold_400CA@A@<camlStdlib__Set__for_all_407BA@A@;camlStdlib__Set__exists_413BA@A@;camlStdlib__Set__filter_419BA@A@?camlStdlib__Set__filter_map_540B@@A@>camlStdlib__Set__partition_428BA@A@=camlStdlib__Set__cardinal_439AA@A@=camlStdlib__Set__elements_449AA!s@	!camlStdlib__Set__elements_aux_443@	@    6FW6m6mA9Stdlib__Set.Make.elements?Stdlib__Set.Make.elements.(fun)@A@<camlStdlib__Set__min_elt_225AA@A@	 camlStdlib__Set__min_elt_opt_229AA@A@<camlStdlib__Set__max_elt_233AA@A@	 camlStdlib__Set__max_elt_opt_237AA@A@	:camlStdlib__Set__split_259B@@A@9camlStdlib__Set__find_454B@@A@=camlStdlib__Set__find_opt_513B@@A@?camlStdlib__Set__find_first_468BA@A@	#camlStdlib__Set__find_first_opt_481BA@A@>camlStdlib__Set__find_last_494BA@A@	"camlStdlib__Set__find_last_opt_507BA@A@	 camlStdlib__Set__to_seq_from_692B@@A9camlStdlib__Set__fun_1209A@#argy@	!camlStdlib__Set__seq_of_enum__668B@@C@@@    ykFbKKkA<Stdlib__Set.Make.to_seq_from	"Stdlib__Set.Make.to_seq_from.(fun)@A@;camlStdlib__Set__to_seq_674A@@A9camlStdlib__Set__fun_1156A@"@!B@@C@@@    TSqI'I'TA7Stdlib__Set.Make.to_seq=Stdlib__Set.Make.to_seq.(fun)@A@?camlStdlib__Set__to_rev_seq_689A@@A9camlStdlib__Set__fun_1187A@B@	%camlStdlib__Set__rev_seq_of_enum__683B@@
C@@@    _WyJjJj_A;Stdlib__Set.Make.to_rev_seq	!Stdlib__Set.Make.to_rev_seq.(fun)@A@<camlStdlib__Set__add_seq_657B@@A@;camlStdlib__Set__of_seq_665A@!ii@$C@@@    NSbHsHsNA7Stdlib__Set.Make.of_seq=Stdlib__Set.Make.of_seq.(fun)@A@=camlIdentifiable__output_2527B@@A@<camlIdentifiable__print_2575B@@A@	 camlIdentifiable__to_string_2584A@@A@>camlIdentifiable__of_list_2587A@@A@:camlIdentifiable__map_2594B@@A@   @=camlStdlib__Map__is_empty_197AA%param @@AA@8camlStdlib__Map__mem_292B@@A@8camlStdlib__Map__add_200C@@A@;camlStdlib__Map__update_344C@@A@>camlStdlib__Map__singleton_166BA@AВ@@@@A;camlStdlib__Map__remove_334B@@A@:camlStdlib__Map__merge_469C@@A@:camlStdlib__Map__union_488C@@A@<camlStdlib__Map__compare_559C@@A@:camlStdlib__Map__equal_576C@@A@9camlStdlib__Map__iter_358BA@A@9camlStdlib__Map__fold_387CA@A@<camlStdlib__Map__for_all_395BA@A@;camlStdlib__Map__exists_402BA@A@;camlStdlib__Map__filter_516BA@A@?camlStdlib__Map__filter_map_526BA@A@>camlStdlib__Map__partition_537BA@A@=camlStdlib__Map__cardinal_592AA@A@=camlStdlib__Map__bindings_603AA!s]@	!camlStdlib__Map__bindings_aux_596@	@    &map.mlFW??A9Stdlib__Map.Make.bindings?Stdlib__Map.Make.bindings.(fun)@A@	 camlStdlib__Map__min_binding_299AA@A@	$camlStdlib__Map__min_binding_opt_304AA@A@	 camlStdlib__Map__max_binding_309AA@A@	$camlStdlib__Map__max_binding_opt_314AA@A@	:camlStdlib__Map__split_455B@@A@9camlStdlib__Map__find_212B@@A@=camlStdlib__Map__find_opt_284B@@A@?camlStdlib__Map__find_first_229BA@A@	#camlStdlib__Map__find_first_opt_245BA@A@>camlStdlib__Map__find_last_261BA@A@	"camlStdlib__Map__find_last_opt_277BA@A@8camlStdlib__Map__map_365BA@A@9camlStdlib__Map__mapi_376BA@A@;camlStdlib__Map__to_seq_628A@@A9camlStdlib__Map__fun_1218A@#arg#env@	!camlStdlib__Map__seq_of_enum__621B	@@C@@@    KFd@@A7Stdlib__Map.Make.to_seq=Stdlib__Map.Make.to_seq.(fun)@A@?camlStdlib__Map__to_rev_seq_645A@@A9camlStdlib__Map__fun_1249A@#ߠ"@	%camlStdlib__Map__rev_seq_of_enum__638B@@
C@@@    lFhAAA;Stdlib__Map.Make.to_rev_seq	!Stdlib__Map.Make.to_rev_seq.(fun)@A@	 camlStdlib__Map__to_seq_from_648B@@A9camlStdlib__Map__fun_1271A@DC@BB@@C@@@    FbCcCcA<Stdlib__Map.Make.to_seq_from	"Stdlib__Map.Make.to_seq_from.(fun)@A@<camlStdlib__Map__add_seq_608B@@A@;camlStdlib__Map__of_seq_618A@!ild@ C@@@    Sb??A7Stdlib__Map.Make.of_seq=Stdlib__Map.Make.of_seq.(fun)@A@>camlIdentifiable__of_list_2045A@@A@	%camlIdentifiable__disjoint_union_2200D@@A@	"camlIdentifiable__union_right_2225B@@A@	!camlIdentifiable__union_left_2235B@"m1"m2#env@	C@@@    5utils/identifiable.ml Yj A	 Identifiable.Make_map.union_left	&Identifiable.Make_map.union_left.(fun)@A@	"camlIdentifiable__union_merge_2239C@@A@=camlIdentifiable__rename_2253B@@A@?camlIdentifiable__map_keys_2257B@@A@;camlIdentifiable__keys_2320A@@A@;camlIdentifiable__data_2414AA@A@=camlIdentifiable__of_set_2417B@@A@	.camlIdentifiable__transpose_keys_and_data_2423A@@A@	2camlIdentifiable__transpose_keys_and_data_set_2429A@@A@<camlIdentifiable__print_2264C@@A@  p ?camlStdlib__Hashtbl__create_922AA"sz@@@&random6camlStdlib__Hashtbl__6@@@@b3camlStdlib__Hashtbl@    *hashtbl.mlTk88A;Stdlib__Hashtbl.Make.create	!Stdlib__Hashtbl.Make.create.(fun)@@@@     IVa

 IA6Stdlib__Hashtbl.create<Stdlib__Hashtbl.create.(fun)@	&camlStdlib__Hashtbl__create_inner_1702%+@@A@>camlStdlib__Hashtbl__clear_466AA@A@>camlStdlib__Hashtbl__reset_469AA@A@=camlStdlib__Hashtbl__copy_488AA@A@<camlStdlib__Hashtbl__add_726C@@A@?camlStdlib__Hashtbl__remove_742B@@A@=camlStdlib__Hashtbl__find_753B@@A@	!camlStdlib__Hashtbl__find_opt_772B@@A@	!camlStdlib__Hashtbl__find_all_785B@@A@	 camlStdlib__Hashtbl__replace_801C@@A@<camlStdlib__Hashtbl__mem_808B@@A@=camlStdlib__Hashtbl__iter_522BA@A@	+camlStdlib__Hashtbl__filter_map_inplace_548BA@A@=camlStdlib__Hashtbl__fold_556CA@A@?camlStdlib__Hashtbl__length_491AA!h@@@    H qOU qA6Stdlib__Hashtbl.length<Stdlib__Hashtbl.length.(fun)@A@>camlStdlib__Hashtbl__stats_581AA@A@@@@?camlStdlib__Hashtbl__to_seq_620AA@A=camlStdlib__Hashtbl__fun_1779A@#arg񠐠#env@<camlStdlib__Hashtbl__aux_624B	@@C@@D@@@    u
BM
A6Stdlib__Hashtbl.to_seq<Stdlib__Hashtbl.to_seq.(fun)@A@	$camlStdlib__Hashtbl__to_seq_keys_650AA@A=camlStdlib__Hashtbl__fun_1792A@('@8camlStdlib__Seq__map_103B@@C
@@D@@@    TjA;Stdlib__Hashtbl.to_seq_keys	!Stdlib__Hashtbl.to_seq_keys.(fun)@A@	&camlStdlib__Hashtbl__to_seq_values_653AA@A=camlStdlib__Hashtbl__fun_1802A@NM@&B@@C@@D@@@    VlA=Stdlib__Hashtbl.to_seq_values	#Stdlib__Hashtbl.to_seq_values.(fun)@A@	 camlStdlib__Hashtbl__add_seq_816B@@A@	$camlStdlib__Hashtbl__replace_seq_823B@@A@?camlStdlib__Hashtbl__of_seq_924A@@A@>camlIdentifiable__to_list_2767AA@A@>camlIdentifiable__of_list_2821A@@A@=camlIdentifiable__to_map_2828A@!v-@CB
@@@    + V_ հA<Identifiable.Make_tbl.to_map	"Identifiable.Make_tbl.to_map.(fun)@b@    4 Qm 	@A@=camlIdentifiable__of_map_2873A@@A@>camlIdentifiable__memoize_2879C@@A@:camlIdentifiable__map_2885B@@A@	&camlSet_of_closures_origin__create_245AA!t @A@7camlId_types__unit_1282AA!x@A@    	)middle_end/flambda/base_types/id_types.ml \OU \A4Id_types.UnitId.unit:Id_types.UnitId.unit.(fun)@A@	&camlSet_of_closures_origin__rename_247BA!f !t @@    	7middle_end/flambda/base_types/set_of_closures_origin.mlWQTWA=Set_of_closures_origin.rename	#Set_of_closures_origin.rename.(fun)@A@9camlId_types__create_1277B@@A@@7camlId_types__name_1271A@!o#env@CB
@@@    7 TO[ TA4Id_types.UnitId.name:Id_types.UnitId.name.(fun)@@@    A T\` T
@@    C TO` T@A@@CYM4g#!tf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 (**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*                       Pierre Chambart, OCamlPro                        *)
(*           Mark Shinwell and Leo White, Jane Street Europe              *)
(*                                                                        *)
(*   Copyright 2013--2016 OCamlPro SAS                                    *)
(*   Copyright 2014--2016 Jane Street Group LLC                           *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

include Identifiable.S

val create : Set_of_closures_id.t -> t

val get_compilation_unit : t -> Compilation_unit.t
val rename : (Set_of_closures_id.t -> Set_of_closures_id.t) -> t -> t
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Caml1999I030         n   b/Share_constants/share_constants l@'Flambda'program@@ @ 'program@@ @ @ @ @	&middle_end/flambda/share_constants.mliVVU@@@@@  E       W/Share_constants0}?,^PfX(Warnings0^1]/3W(Variable0:3 2Var_within_closure0`lkkY'EMK%Types0^ qARh.Type_immediacy0y,G?'#Tag0{Y 7|̲_&Symbol0$Ub%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7-Stdlib__Int640UY*#/F]&$/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ0Static_exception0<k{N|S̠6Set_of_closures_origin0ZҴ
S=cR
2Set_of_closures_id0KaN<'&Sڠ*Projection0rwz`ub)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo)Parameter0(w"ꥺ
ڠ+Outcometree0V/Qcy,A'Numbers0&!h>jU)R0Mutable_variable0Xbős$Misc0Z+\\4:WlA?L)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ,Linkage_name0Q'͗3c&Lambda0{ʮ1f~u7Internal_variable_names0óWS]E,Identifiable0h$T<^D~R4%Ident0f4nAm\zb'Flambda0#@M	vqMvѠ#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[0Compilation_unit0&U6JD*Cmi_format0vB $V@X.Closure_origin0:Zncaꠠ*Closure_id0	e|E\Uwࠠ/Closure_element0$tW÷+{3MƠ2Clambda_primitives0&>$e?<x(0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l(Asttypes0CoࠌD(/Allocated_const0K;0A:1Nθ%@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Caml1999T030  4  
  gs  d   4 /Share_constants-ocaml.warning	%middle_end/flambda/share_constants.mlQQ@5+a-4-9-30-40-41-42-66Q
Q@@QQ@@@@@QQ@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@@Р?Int_replace_polymorphic_compare?Int_replace_polymorphic_compareWRXR@@  0 FEEFFFFF@D@@@@@  0 GFFGGGGG@F@@_R@@	@L7Constant_defining_value kAkTlT@AР'Flambda7Constant_defining_value'FlambdayTzT@@  0 hgghhhhh@!@@@@T@@@ࠠ;update_constant_for_sharing lVV7@@@@&Symbol#Tbl!t#key@@ @B@@@ @QB@@@7constant_defining_value@@ @%B@@@ @B@@ @B@@ @B@  0 @]TA?@=@@@@@2sharing_symbol_tbl nV8VJ@@@6  0 @BVo@@@@@@%const oVKVP@@@1  0 @ L@@B@@@@@ࠠ1substitute_symbol pX{X{@@@@RC@TC@@ @C@  0 @&M@@C@@@@#sym rX{X{@@@  0 @!
X{}[@@@@@డ&Symbol#Tbl$find&SymbolY Y@@!a @>@@ @@@@@ @?
@ @=@ @<@6utils/identifiable.mli n n@@/Stdlib__Hashtblk@@@@@D@@@@D@@D@@D@  0 .--.....@>JU@A@QE@@@@ఐ2sharing_symbol_tblQYRY@u@@B@@@ఐ`#sym_Y`Y@@@sC@{C@"@@G@@#@Ġ)Not_foundpZqZ@  < )Not_found#exnG@@ @ C@@@&StdlibA   @A&_none_@@ A@@I@@@@@@F@  0 rqqrrrrr@D@@@Z@@B@B@@@ఐ#symZZ@Q@@@ࠠ&symbolo[[@@@a@@a@@ఐ
&symbol[ @#@
@F@@B@  0 @n@@@@AY@@-@@AA@@@ @  0 @@@@@@ఐ점%const]]@̰@гZ7constant_defining_value'Flambda]]:@@@@ @  0 @@@D@@
	@@]];A@@@@ @@Ġ/Allocated_const^AE^AT@  < /Allocated_const'Flambda7constant_defining_value@@ @O@/Allocated_const!t@@ @H@A@@DD@A>middle_end/flambda/flambda.mlia@A a@A&@@@ k@	^AU
^AV@@@@E@  0 @8@@@@@%@@I@@E@@@@@ఐE%const^AZ^A_@%@@r@@C@C@&@Ġ%Block,_`d-_`i@  < %BlockA@#Tag!t@@ @I$listIQ	#constant_defining_value_block_field@@ @K@@ @J@BA@DD@AFdAAGdAA@@@W lࠠ#tagSR_`kS_`n@@@$@@ @  0 CBBCCCCC@@@@ࠠ&fieldsT`_`pa_`v@@@)&@@ @
@@ @@@@?k_`w@@@@E@@@@@@ࠠ+subst_fieldXy`{z`{@@@@	#constant_defining_value_block_field@@ @/D@*	#constant_defining_value_block_field@@ @6D@+@ @,D@)  0 {zz{{{{{@E?@@@G93@4@H@@@@%fieldZ@`{`{@@!@@ @0  0 @2`{e?e@@@@
@г/'Flambda1`{`{@@8@@ @-@@`{`{@@@?@@ఐ-%fieldbb
@*@-@J@@M@@ @9  0 @-;@@@Ġ%Constcc@  < %Const@@ @T@%const@@ @S@AA@BB@ApCCpCD@@@ p@cc@@@@G@>  0 @&@@@@@@@x@@G@?@@@@ఐg%fieldc#c(@:@@@@E@bE@L@Ġ&Symbold)1d)7@  < &Symbol8@&Symbol!t@@ @R@A@@BB@A#oCC$oCC@@@4 oࠠ#sym[/d)80d);@@@@@ @Dc@@@ @@@@G@Eg@@g@@ภ&Symbol?e?G@e?M@)ఐa1substitute_symbolKe?OLe?`@u@@@@E@V  0 ;::;;;;;@'!@"@^K@@@@ఐ/#sym^e?a_e?d@@@B@^@@de?N@@@@'@@_E@a@@Aib@г㠡'Flambdataua@@@@ @5@@{`{A@@@@AA@@@ @l  0 jiijjjjj@@@@@@@ࠠ&fields\gmugm{@@@$listI
@@ @D@@@ @D@n  0 @("@#@I@@@డ^$List#mapgm~gm@@@!a @!b @@ @@-@@ @2@@ @@ @@ @@(list.mli  @@,Stdlib__ListU! @@@@P@@D@D@@@D@@
@@D@LI@@D@@D@@D@D@@ఐp+subst_fieldgmgm@N@@@l@@E@g@@E@@E@Y@@ఐ&fieldsgmgm@k@@I8@@E@E@E@n@@_@@{o@@gmq
@@ภ%Blockhh@ఐʠ#taghh@@@@@C@C@C@  0 @@@4L@@@ఐ&fields2h3h@@@@@C@@@C@C@	C@@@/Ah@@S@@C@@;@@@@@*C@@Ġ/Set_of_closuresSiTi@  < /Set_of_closuresh@i/set_of_closures@@ @L@AB@DD@A]gBlBn^gBlB@@@n mࠠ/set_of_closuresUiiji@@@@@ @  0 ZYYZZZZZ@@@@@@@@@@E@@@@@ภ/Set_of_closureszj{j@'డ1Flambda_iterators>map_symbols_on_set_of_closures1Flambda_iteratorskk(@@'Flambda/set_of_closures@@ @!f@&Symbol!t@@ @!t@@ @@ @/set_of_closures@@ @@ @@ @@	(middle_end/flambda/flambda_iterators.mli  %A@@1Flambda_iteratorsX.-@@@+@@C@H&@$@@C@G@@C@F@C@E@@C@D@C@C@C@B  0 @hb@c@M@@@@ఐp/set_of_closuresl)Fl)U@@@P@@D@XD@ZD@Y@Kఐ1substitute_symboll)4l)E@@@@QQ@D@a'@@jmV[@@@@C@C@dD@T1@@	@@C@e4@Ġ/Project_closure	n\`
n\o@  < /Project_closure@!t@@ @M*Closure_id!t@@ @N@BC@DD@AjCCjCC0@@@. nࠠ#symV)n\q*n\t@@@@@ @Y@ࠠ*closure_idW6n\v7n\@@@$@@ @f@@@4=n\@@w@@E@k@@k@@ภ/Project_closureGoHo@>ఐi1substitute_symbolSoTo@}@@@@C@q  0 CBBCCCCC@60@1@gN+%@&@iO@@@@ఐ@#symiojo@@@B@y@@@@@ఐA*closure_idwoxo@@@i@@C@oC@C@)@@;@@eC@,@@A]@@@@B@B@.}@@г⠡'FlambdaWQYWQx@@@@ @@@WQWA@@@@AA@  0 @@@@@AA@@@ @.  0 @@@@@@@@ࠠ,cannot_shareqq@@@@L7constant_defining_value@@ @.B@.s@@ @/'B@.@ @.B@.  0 @?9@:@A@@@@%const@qq@@@@ @.  0 @-qv		@@@@
@г*'Flambda,qq@@3@@ @.@@qq@@@:@@ఐ-%constr	r	@*@-@
Q@@H@@ @.  0 @-;@@@Ġ/Allocated_constt	Q	Ut	Q	d@%Ġ&Stringt	Q	gt	Q	m@  < &String/Allocated_const!t@@ @.@&stringO@@ @.@AF@HH@A	&middle_end/flambda/allocated_const.mli_24_2F@@@G@7t	Q	n8t	Q	o@@@@F@.8@@@=t	Q	f>t	Q	p@@G@@F@.>@Ġ+Float_arrayHt	Q	tIt	Q	@  < +Float_array-@$listI%floatD@@ @.@@ @.@AD@HH@A,]-]	@@@;E@bt	Q	ct	Q	@@@@F@/@@F@/ g@@@lt	Q	smt	Q	@@v@@F@/m@@rt	Q	est	Q	@@|@@E@/s@@@h@@@@E@/w@@w@@ภ$truet	Q	t	Q	@  < &@@ @M@@@AB@B@AO@@(@@@@Ġ/Allocated_constu		u		@@u		u		@@@@H@/	@@@@@@@H@/
@@@Ġ/Set_of_closuresu		u		@\@u		u		@@^@@H@/@@@@@@@H@/@@@@%	@@@@G@/@Ġ/Project_closureu		u		@@u		u		@@@@G@/@@@@@G@/@@@
@@ @@G@/@@@@D@@$@@F@/@Ġ%Blocku		u		@@u		u		@@@@F@/@@@@@F@/ @@F@/@@@@@C@@F@/!@@@@g@@G@@E@/"@@ภ%false	v		-@  < @@@@B@B@A@@@0@@NB@/,@@Ar4@@P
@@A!5A@@[S@ @/9  0 @<@@@@:@:9@Q@ࠠ0share_definition!x		"x		@@@@#Tbl!t!T!t@@ @/B@4@@ @6vB@/;@@@ @/sB@/{@@ @/zB@/B@B@/I@@@ @/qB@/P@,*@@ @/B@/WҠ@@ @/B@/@@ @/B@/X@ @/YB@/Q@ @/RB@/J@ @/KB@/C@ @/DB@/<@ @/=B@/:  0 [ZZ[[[[[@@@~P@@@@6constant_to_symbol_tbl~x		x	

@@@Y  0 lkklllll@ex		 G@@@@@@2sharing_symbol_tblx	
x	
 @@@T  0 ~~@ o@@S@@@@@&symboly
!
%y
!
+@@@V  0 @h@@T@@@@@#defy
!
,y
!
/@@@a  0 @j@@U@@@@@*end_symboly
!
0y
!
:@@@i  0 @u@@V@@@@@ࠠ#defz
=
Cz
=
F@@@-@@ @/pC@/^  0 @#@@W@@@ఐ^;update_constant_for_sharingz
=
Iz
=
d@%@@@ZQ@@C@/e@@C@/d@K@@C@/cN@@C@/b@C@/a@C@/`!@@ఐ{2sharing_symbol_tbl	z
=
e		z
=
w@c@@B@/E/@@ఐg#def	z
=
x	z
=
{@O@@B@/B@/S?@@3@@C@@@	z
=
?@@డ"||	*{

	+{

@@$boolE@@ @ @@@ @ @@ @ @ @ @ @ '%sequorBA @@@@*stdlib.mli %% %%F@@_! @@@@@B@/@@@B@/@@B@/@B@/@B@/  0 	C	B	B	C	C	C	C	C@|@@	fX@@@@ఐ,cannot_share	h{

	i{

@@@@@@C@/@@C@/@C@/@@ఐ#def	}{

	~{

@%@@@@D@/D@/D@//@@ 
@@]@@C@/C@/D@/7@@డ%equal&Symbol	{

	{

@@o@@ @@H@@ @$boolE@@ @@ @@ @@ jcm jc@@`@@@@@C@/@]@@C@/@@C@/@C@/@C@/k@@ఐ/&symbol	{

	{

@@@B@/B@/L{@@ఐ*end_symbol	{

	{

@ @@B@/B@/Z@@F@@@@C@/C@/D@/@@@@	@@B@/C@/@ภ$Some	~MQ	~MU@  < 	T	c@ @T@	UA@AAB@A	@@	Uఐ2#def
~MV
~MY@@@@@@@@డ#Tbl$find7Constant_defining_value
 @aq
 @a@@!a @3@@ @4 @#key@@ @4@ @4@ @4@6utils/identifiable.mli n n@@/Stdlib__Hashtblk@@@@@C@4@@@C@4@C@4@C@4@@ఐӠ6constant_to_symbol_tbl
M @a
N @a@@@(B@/>@@ఐ#def
[ @a
\ @a@@@4@@D@6D@6@@G@@2@Ġ)Not_found
n A
o A@@@@@	@@E@6  0 
_
^
^
_
_
_
_
_@@@@
v A@@EB@/@@డ	#Tbl#add7Constant_defining_value
 B
 B@@d!a @3@@ @4@l@@ @4@$unitF@@ @4@ @4@ @4@ @4@r@ni@@@}xB@6@@D@6@@@D@6@	@@D@6@D@6@D@6@D@6B@@ఐF6constant_to_symbol_tbl
 B
 B@,@@O@@ఐ#def
 B
 B@u@@@@E@6E@6a@@ఐA&symbol
 B
 B@)@@n@@Z@@
@@C@6D@6u@ภ$Some
 C
 C"@ఐ$#def
 C#
 C&@@@B@7@@@@B@7@@C@7@}@@B@/B@7@ࠠ,equal_symbol D'- D'9@@@@@@@డ	#Tbl#add&Symbol( E=C) E=Q@@	!a @3@@ @5@	@@ @4@$unitF@@ @2@ @1@ @0@ @/@	@	
i@@@	B@7
@@D@7@	@@D@7@
@@D@7@D@7@D@7
@D@7	  0 A@@AAAAA@H@C@dY@@@@ఐנ2sharing_symbol_tbld E=Re E=d@@@%@@ఐӠ&symbolq E=er E=k@@@@@@ఐj,equal_symbol~ E=l E=x@(@@M+@@Z@@@@C@7MD@71@ภ$None Fz Fz@  < 
@@@@AAB@AX@@
@@@,+B@7O@@C@7QB@q@@B@7PE@@A @ae@@)@{

@@9+@@@:@@AA@E  0 @@@@@AA@P  0 @@@@@AA@X  0 @ @@@@A!A@i  0 @@@@@A+#A@@m@ @7\  0 @*@@@@(@('@=Aࠠ*end_symbol I I@@@@
R,program_body@@ @7eB@7^!t@@ @7B@7_@B@7a  0 @^@@R@@@@'program@ I I@@@@ @7f  0 @.@*"@ @7`C@7]@-@Z@@@@г.'Flambda0 I I@@7@@ @7c@@ I I@@@>@@ఐ/'program J J@,@/@[@@L@@ @7l  0 @/=@@@Ġ#End K K@  < #End	/,program_body@@ @w@]@@ @v@AD@EE@A	'KK	(KK@@@	8 yࠠ&symbol3 K4 K@@@o@@ @7q  0 $##$$$$$@+@@@@@!@@|@@E@7r@@@@ఐ&symbolE KF K@@@S\@@  0 54455555@=@@@Ġ*Let_symbol\ L] L
 @  < *Let_symbolB@F!t@@ @g	y@@ @hN@@ @i@C@@EE@A	o|EE	p|EE@@@	 u@w L
x L
@@@@H@7yn@@ L
 L
@@	@@H@7zv@ࠠ'program L
 L
@@@r@@ @7G@7{@@@8 L
@@@@H@7|@@@Ġ.Let_rec_symbol M

 M

#@  < .Let_rec_symbol@	k!t@@ @l	@@ @m@ @k@@ @j@@ @n@BA@EE@A	~FF	~FFh@@@	 v@ M

% M

&@@ @@H@7	@@H@7@H@7@@H@7@O'program M

( M

/@@@PE@7F@7@@@@ M

0@@"@@H@7@@@@@@&@@G@7@Ġ1Initialize_symbol N
1
5 N
1
F@  < 1Initialize_symbol@!t@@ @o	!t@@ @p	ɠ
!t@@ @r@@ @q@@ @s@DB@EE@A
II
II@@@
" w@
 N
1
H
 N
1
I@@&@@G@7@@
! N
1
K
" N
1
L@@'@@G@7@@
) N
1
N
* N
1
O@@('@@G@7@@G@7$@'program
8 N
1
Q
9 N
1
X@@@]-@@@L
< N
1
Y@@~@@G@72@@2@@@@@@F@76@Ġ&Effect
L O
Z
^
M O
Z
d@  < &Effect2@J@@ @t7@@ @u@BC@EE@A
XJJ
YJJ@@@
i x@
` O
Z
f
a O
Z
g@@[@@F@7W@'program
k O
Z
i
l O
Z
p@@@`@@@#
o O
Z
q@@@@F@7e@@e@@@@@@E@7i@@ఐȠ*end_symbol
 P
u
y
 P
u
@@@@@C@7  0 
p
o
o
p
p
p
p
p@x @@
]@@@@ఐ'program
 P
u

 P
u
@@@D@7@@@@B@7@@A
 J@@  0 







@@@@@A
A@@@ @7  0 







@@@@@
 I@@@נ@ࠠ/share_constants
 R


 R

@@@@K'program@@ @7B@7
'program@@ @;oB@7@ @7B@7@@'program@
 R


 R

@@@@ @7  0 







@*
 R


 @@@@
@г''Flambda)
 R


 R

@@0@@ @7@@
 R


 R

@@@7@@@ࠠ*end_symbol
 S


 S

@@@7@@ @7C@7  0 







@.<3@6@_@@@ఐV*end_symbol S

 S

@.@@@T@@C@7O@@C@7@C@7@@ఐZ'program% S

& S

@$@@j@@D@7 @7,@,program_body1 S

2 S

@  , ,program_bodyu@@ @|@@ @{@A  , 0imported_symbols	
$#Set!t@@ @z@@@AEL)L+FL)LK@@V {@AILLLNJLLLj@@Z |*@@@@D@7D@7D@7U@@I%@@YV@@X S

'@@@ࠠ2sharing_symbol_tblc T

d T

@@@Ӡ@@B@9tB@7@@ @7C@7  0 \[[\\\\\@q~x@y@`@@@డg#Tbl&create&Symbol T
 T
!@@#intA@@ @"!a @!@@ @ @ @@f@be@@@@@C@7
	6@@C@7@C@71@@j T
" T
$@@&@@D@7D@7D@7A@@/	@@KB@@ T

@@@ࠠ6constant_to_symbol_tbl U(. U(D@@@@@B@8B@8B@8@@ @8C@8  0 @_rl@m@a@@@డ
t#Tbl&create7Constant_defining_value U(G U(i@@#intA@@ @4à!a @3@@ @4@ @4@@e@@@@@C@8Ҡ8@@C@8@C@81@@j U(j U(l@@&@@D@8D@8"D@8!A@@/	@@MB@@ U(*@@Aࠠ$loop Vpz Vp~@@@@
,program_body@@ @8/C@8&
,program_body@@ @8+@C@8*  0 @bwq@r@>b@@@@'program@> Vp? Vp@@@@ @80  0 .--.....@,@( @@ @8(@ @8)D@8%@.@Xc@@@@г/'Flambda1Z Vp[ Vp@@8@@ @8-@@a Vpb Vp@@@? @@ఐ2'programl Wm W@/@2@zd@@M@@ @89  0 _^^_____@2@@@@Ġ*Let_symbol X X@$ࠠ&symbol X X@@@+@@ @8@  0 zyyzzzzz@@@@ࠠ#def X X@@@@@ @8A@ࠠ'program X X@@@@@ @8B@@@+ X@@@@F@8C @@ @@ఐ0share_definition Z Z#@@@@@@E@8@@E@8@3*@@E@8@@E@8@@&@@E@8@x@@E@8u1@@E@8@@E@8@E@8@E@8@E@8@E@8@E@8  0 @qa[@\@eUO@P@fJD@E@g@@@@ఐ76constant_to_symbol_tbl Z$ Z:@ư@@Ϡ5@@F@8@@ఐ2sharing_symbol_tbl Z; ZM@8@@u@@F@8,@@ఐ&symbol ZN ZT@4@@@@B@8F@8>@@ఐ#def* [U_+ [Ub@D@@@@F@8F@8F@8R@@ఐE*end_symbol> [Uc? [Um@Ͱ@@@@F@8F@8d@@@@@@ @8@@ @8l@Ġ$NoneX ]yY ]y@@@@@@@G@8@@G@8  0 MLLMMMMM@@@@	@@@ఐO$loopl ^m ^@)@@@MG@@E@9@E@9
@@ఐڠ'program~ ^ ^@@@_F@9!@@@@\@@E@91E@9)@Ġ$Some _ _@ࠠ$def' _ _@@@@@ @9@@@@@?@@G@9@@G@9@@@@ภ*Let_symbol ` `@Vఐ3&symbol ` `@ذ@@b@@E@9E@9"E@9!  0 @.(@)@h@@@ఐ4$def' ` `@@@
@@E@9E@9$E@9#@ఐɠ$loop ` `@@@@@@E@9'@E@9&(@@ఐT'program ` `@@@F@9-7@@@@@@E@9 E@9/F@9,?@@T `@@E@90C@@A
 Y a@@@@D@;D@9<@Ġ.Let_rec_symbol b b@{ࠠ$defs$ b% b@@@@@ @8NB@@ @8O@ @8M@@ @8L  0       @@@@ࠠ'program= b> b
@@@"@@ @8P@@@)D b@@!@@F@8Q@@@@@ࠠ$defsR cS c @@@Ƞ@@ @9E@9@@ @9E@9@ @9E@9D@@ @9QE@9?  0 VUUVVVVV@NH@I@zi71@2@|j@@@డ1$List#map~ d#+ d#3@Ӱ@@@@+E@9V@@E@9rE@9W@E@9XE@9F7@E@9G@נ@@E@9E
@@@E@9C@E@9B@E@9A  0 @0@@@@@%param ࠠ&symbol d#: d#@@@@'@ࠠ#def d#B d#E@@@/ @@ d#9 d#F@@76@H@9Y'@@@ࠠ#def eJZ eJ]@@@$@@ @9qG@9_  0 @k-N@(@l%N@ @m@@@ఐX;update_constant_for_sharing eJ` eJ{@@@@TK@@G@9f@@G@9e@E@@G@9dH@@G@9c@G@9b@G@9a$@@ఐ2sharing_symbol_tbl eJ| eJ@3@@pB@9}B@8@@H@9{8@@ఐ^#def eJ eJ@?@@E@@6@@IF@@ eJV@@ఐx&symbol& f' f@Q@@  0 @Vc]@^@7n@@@ఐi#def5 f6 f@@@@@@@@F@9@#@@j@@A? d#4@ f@@@@F@9SF@9@@ఐ+$defsO gP g@@@
@@F@9RF@9F@9@@@@@@\ c
@@ภ.Let_rec_symbolc id i@àఐ$defsm in i@@@{k@@Ѡ@@D@9@@D@9@D@9@@D@9D@9D@9  0 onnooooo@8@@@ఐs$loop i i@M@@@qk@@D@9@D@9@@ఐe'program i i@4@@E@9#@@@@@@D@9D@9E@9+@@M i@@@@D@90@Y@@D@9L@Ġ1Initialize_symbol j j@Ѡࠠ&symbol j
 j@@@@@ @8Z  0 @\@@@ࠠ#tag j j@@@@@ @8[@ࠠ&fields j j@@@@@ @8]@@ @8\@ࠠ'program j j#@@@@@ @8^,@@@< j$@@@@F@8_1@@1@@@ࠠ&fieldsà k(2 k(8@@@
!t@@ @9E@9@@ @9E@9  0 @[U@V@-oOI@J@/pD>@?@1q5/@0@3r@@@డ$List#map5 l;C6 l;K@@@@@
!t@@E@9E@91@E@9@
@@E@9:@@E@9@E@9@E@9  0 98899999@2@@@@@%fieldĠ\ l;Q] l;V@@@#@@డ
+map_symbols1Flambda_iteratorsk mZfl mZ@@2@@ @!f@
!t@@ @
!t@@ @@ @p@@ @@ @@ @@
 {{
 @@
W"!@@@Q@@F@9@@@F@9@@F@9@F@9@@F@9@F@9@F@9  0 @Mf@D@t@@@@ఐU%field q  q%@@@vE@9E@9  0 @@@@A@&symbolŠ n n@@@K@@H@:(@@డ#Tbl$find&Symbol o o@@@@HuG@:	@@G@:@D@@G@:
@G@:@G@:  0 @J1r@@ @: @+@u@@@@ఐ2sharing_symbol_tbl o o@*@@g@@H@:@@ఐM&symbol
 o o@"@@n@@H@:5H@:4*@@;@@+@Ġ)Not_found p p@@@@@Z@@J@:G9@@ఐk&symbol( p
) p@@@@@@H@:NH@:MH@@1 o	@@@@G@:RG@:QO@@A8 n9 p@@@@@G@9@@G@9@G@9G@:T@@@@0@@AF l;LG q&@@@9@F@9F@:Y0@@ఐq&fieldsV r'1W r'7@3@@$@@F@9F@:\F@:Z@@-@@RF@@c k(.
@@ภ1Initialize_symbolj tAGk tAX@zఐ&symbolt tAZu tA`@U@@@@D@:hD@:nD@:m  0 ihhiiiii@cys@t@s@@@ఐ#tag tAa tAd@i@@@@D@:iD@:pD@:o@ఐ&fields tAe tAk@@@@@D@:k@@D@:jD@:sD@:q,@ఐ$loop tAl tAp@q@@@@@D@:w@D@:v>@@ఐР'program tAq tAx@@@E@:}M@@@@@@D@:lD@:E@:|U@@j tAy@@@@D@:gZ@v@@D@:@Ġ&Effect uz uz@ࠠ$expr uz uz@@@@@ @8e  0 @@@@ࠠ'program uz uz@@@@@ @8f@@@ uz@@@@F@8g@@@@@ࠠ$exprƠ v v@@@@@ @:E@:  0 @2,@-@(v& @!@*w@@@డ+map_symbols1Flambda_iterators, w- w@@@@@@E@:@@@E@:@@E@:@E@:)@@E@:@E@:@E@:  0 ,++,,,,,@(@@@@ఐ^$exprL {R\M {R`@2@@@@F@:F@:F@:=@@&symbolǠc xd x@@@@@G@:(@@డ]#Tbl$find&Symbolz y{ y
@[@@@F@:@@F@:@@@F@:@F@:@F@:  0 uttuuuuu@r1@@ @:@+@y@@@@ఐ82sharing_symbol_tbl y y @̰@@	4@@G@:@@ఐM&symbol y! y'@"@@@@G@:G@:*@@;@@H+@Ġ)Not_found z-= z-F@M@@@@@@I@:9@@ఐk&symbol z-J z-P@@@@P@@G@:G@:H@@ y	@@W@@F@:F@:O@@A x z-Q@@@g@@F@:d@@F@:@F@:F@:@@@@@@ v@@ภ&Effect }jp }jv@ఐ蠐$expr }jx }j|@@@x@@@@D@;D@;D@;  0 @@@@ఐ$loop }j~ }j@ΰ@@@@@D@;
@D@;	@@ఐ''program# }j$ }j@@@E@;#@@@@
@@D@;D@;E@;+@@B1 }j@@
@@D@;0@N@@*D@;@Ġ#EndB ~C ~@
(ࠠ$rootK ~L ~@@@
@@ @8l@@@@@.@@F@8m@@@@ภ#End[ ~\ ~@
Aఐ$roote ~f ~@@@sz@@
@@D@;D@;D@;  0 \[[\\\\\@,@@@@@@hD@;@@Aw W@г'FlambdaS Vp Vp@@@@ @85  0 rqqrrrrr@@@@@ Vp%A@@cC@86@@A-(A@@lf@ @;J  0 {zz{{{{{@M@@@@ Vpr-@@ຠ[\@@B@;nB@;lk,program_body  @ఐ$loop  @k@@@@@C@;[@@C@;Z@C@;Yv@@ఐ'program  @İ@@	
@@D@;f @;d@,program_body  @@@@@D@;bD@;gD@;e@@.
@@
@@C@;WC@;iD@;a@@ఐ	 'program  @@@	2@@B@;qB@;mB@;k@ 	@@	7@f	@@	8@	 @@	9*@F	!@@	:@	"@@	;@@A		#A@@	F	>@ @;s  0 @	*@@@@	(@	(	'@ @A@H@@}>@[@:@W)@	b	\@	]@^@@  0 @0	f@@@'Flambda'program@@ @;v'program@@ @;u@ @;t@	&middle_end/flambda/share_constants.mliVVU@@/Share_constants@@	H************************************************************************.A@@/A@ L@	H                                                                        4B M M5B M @	H                                 OCaml                                  :C  ;C  @	H                                                                        @D  AD 3@	H                       Pierre Chambart, OCamlPro                        FE44GE4@	H           Mark Shinwell and Leo White, Jane Street Europe              LFMF@	H                                                                        RGSG@	H   Copyright 2013--2016 OCamlPro SAS                                    XHYHg@	H   Copyright 2014--2016 Jane Street Group LLC                           ^Ihh_Ih@	H                                                                        dJeJ@	H   All rights reserved.  This file is distributed under the terms of    jKkKN@	H   the GNU Lesser General Public License version 2.1, with the          pLOOqLO@	H   special exception on linking described in the file LICENSE.          vMwM@	H                                                                        |N}N5@	H************************************************************************O66O6@	< Strings and float arrays are mutable; we never share them. s		s		P@	 The symbol exported by the unit (end_symbol), cannot be removed
       from the module. We prevent it from being shared to avoid that. |

}L@@   *./ocamlopt"-g)-nostdlib"-I&stdlib"-I1otherlibs/dynlink0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel2-function-sections"-c"-I2middle_end/flambda!. 0/$#"! @0Jmhʿ}  0 @@@/Allocated_const0K;0A:1Nθ%֠(Asttypes0CoࠌD(5Build_path_prefix_map0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5g2Clambda_primitives0&>$e?<x(/Closure_element0$tW÷+{3MƠ*Closure_id0	e|E\Uwࠠ.Closure_origin0:Zncaꠠ*Cmi_format0vB $V@X0Compilation_unit0&U6JD)Debuginfo0=Shڷg^Rz[#Env0>(yӒê)t0#@M	vqMvѠ0wpFsS،%Ident0f4nAm\zb,Identifiable0h$T<^D~R4א0¼f%3;7Internal_variable_names0óWS]E&Lambda0{ʮ1f~u,Linkage_name0Q'͗3c)Load_path0'ޓtz
ʠ(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T$Misc0Z+\\4:WlA?L0Mutable_variable0Xbős'Numbers0&!h>jU)R+Outcometree0V/Qcy,A)Parameter0(w"ꥺ
ڠ)Parsetree0e3S#ʌo$Path0}%/Qߵ)Primitive0,͘*Projection0rwz`ub2Set_of_closures_id0KaN<'&Sڠ6Set_of_closures_origin0ZҴ
S=cR
0}?,^PfX0Static_exception0<k{N|S̠&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ-Stdlib__Int640UY*#/F]&$,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E,Stdlib__List0U#r&L+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]%Subst0r˿&qCJ &Symbol0$Ub#Tag0{Y 7|̲_.Type_immediacy0y,G?'%Types0^ qARh2Var_within_closure0`lkkY'EMK(Variable0:3 (Warnings0^1]/3W@@A                                                                                                                                                                            Caml1999I030         n   b/Share_constants/share_constants l@'Flambda'program@@ @ 'program@@ @ @ @ @	&middle_end/flambda/share_constants.mliVVU@@@@@  E       W/Share_constants0}?,^PfX(Warnings0^1]/3W(Variable0:3 2Var_within_closure0`lkkY'EMK%Types0^ qARh.Type_immediacy0y,G?'#Tag0{Y 7|̲_&Symbol0$Ub%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7-Stdlib__Int640UY*#/F]&$/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ0Static_exception0<k{N|S̠6Set_of_closures_origin0ZҴ
S=cR
2Set_of_closures_id0KaN<'&Sڠ*Projection0rwz`ub)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo)Parameter0(w"ꥺ
ڠ+Outcometree0V/Qcy,A'Numbers0&!h>jU)R0Mutable_variable0Xbős$Misc0Z+\\4:WlA?L)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ,Linkage_name0Q'͗3c&Lambda0{ʮ1f~u7Internal_variable_names0óWS]E,Identifiable0h$T<^D~R4%Ident0f4nAm\zb'Flambda0#@M	vqMvѠ#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[0Compilation_unit0&U6JD*Cmi_format0vB $V@X.Closure_origin0:Zncaꠠ*Closure_id0	e|E\Uwࠠ/Closure_element0$tW÷+{3MƠ2Clambda_primitives0&>$e?<x(0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l(Asttypes0CoࠌD(/Allocated_const0K;0A:1Nθ%@            @@Caml1999T030    \  l    4 /Share_constants-ocaml.warning	&middle_end/flambda/share_constants.mliQQ@2+a-4-9-30-40-41-42Q
Q@@QQ@@@@@QQ@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@A87@*ocaml.text	i Share lifted constants that are eligible for sharing (e.g. not strings)
    and have equal definitions. YSZT@@@@@@G/share_constants kcV!dV0@б@г'Flambda'program'FlambdasV3tVB@@@@ @d@@г'program'FlambdaVFVU@@@@ @t@@@@ @w@@@V@@@@
@@}@4@@  0 ~~@~6	@A@	H************************************************************************A@@A@ L@	H                                                                        B M MB M @	H                                 OCaml                                  C  C  @	H                                                                        D  D 3@	H                       Pierre Chambart, OCamlPro                        E44E4@	H           Mark Shinwell and Leo White, Jane Street Europe              FF@	H                                                                        GG@	H   Copyright 2013--2016 OCamlPro SAS                                    HHg@	H   Copyright 2014--2016 Jane Street Group LLC                           IhhIh@	H                                                                        JJ@	H   All rights reserved.  This file is distributed under the terms of    KKN@	H   the GNU Lesser General Public License version 2.1, with the          LOOLO@	H   special exception on linking described in the file LICENSE.          MM@	H                                                                        NN5@	H************************************************************************O66O6@	j* Share lifted constants that are eligible for sharing (e.g. not strings)
    and have equal definitions. @   -./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-c!. - @0a[x~eF  0 @@@/Allocated_const0K;0A:1Nθ%֠(Asttypes0CoࠌD(5Build_path_prefix_map0vFgj9l8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5g2Clambda_primitives0&>$e?<x(/Closure_element0$tW÷+{3MƠ*Closure_id0	e|E\Uwࠠ.Closure_origin0:Zncaꠠ*Cmi_format0vB $V@X0Compilation_unit0&U6JD)Debuginfo0=Shڷg^Rz[#Env0>(yӒê)t0#@M	vqMvѠ%Ident0f4nAm\zb,Identifiable0h$T<^D~R47Internal_variable_names0óWS]E&Lambda0{ʮ1f~u,Linkage_name0Q'͗3c)Load_path0'ޓtz
ʠ(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T$Misc0Z+\\4:WlA?L0Mutable_variable0Xbős'Numbers0&!h>jU)R+Outcometree0V/Qcy,A)Parameter0(w"ꥺ
ڠ)Parsetree0e3S#ʌo$Path0}%/Qߵ)Primitive0,͘*Projection0rwz`ub2Set_of_closures_id0KaN<'&Sڠ6Set_of_closures_origin0ZҴ
S=cR
0}?,^PfX0Static_exception0<k{N|S̠&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Digest0Bł[5	>շ.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ-Stdlib__Int640UY*#/F]&$,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8.Stdlib__String0.BdJP.F4Y3-Stdlib__Uchar0o9us:2[]%Subst0r˿&qCJ &Symbol0$Ub#Tag0{Y 7|̲_.Type_immediacy0y,G?'%Types0^ qARh2Var_within_closure0`lkkY'EMK(Variable0:3 (Warnings0^1]/3W@0}?,^PfXA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Caml1999Y030  	x  _  K  H  ( /Share_constants@(Warnings0^1]/3W(Variable0:3 2Var_within_closure0`lkkY'EMK%Types0^ qARh.Type_immediacy0y,G?'#Tag0{Y 7|̲_&Symbol0$Ub%Subst0r˿&qCJ -Stdlib__Uchar0o9us:2[].Stdlib__String0.BdJP.F4Y3+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ,Stdlib__List0U#r&L.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7-Stdlib__Int640UY*#/F]&$/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Digest0Bł[5	>շ.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ0Static_exception0<k{N|S̠|0}?,^PfX6Set_of_closures_origin0ZҴ
S=cR
2Set_of_closures_id0KaN<'&Sڠ*Projection0rwz`ub)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo)Parameter0(w"ꥺ
ڠ+Outcometree0V/Qcy,A'Numbers0&!h>jU)R0Mutable_variable0Xbős$Misc0Z+\\4:WlA?L)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ)Load_path0'ޓtz
ʠ,Linkage_name0Q'͗3c&Lambda0{ʮ1f~u7Internal_variable_names0óWS]E?Int_replace_polymorphic_compare0¼f%3;,Identifiable0h$T<^D~R4%Ident0f4nAm\zb1Flambda_iterators0wpFsS،'Flambda0#@M	vqMvѠ#Env0>(yӒê)t)Debuginfo0=Shڷg^Rz[0Compilation_unit0&U6JD*Cmi_format0vB $V@X.Closure_origin0:Zncaꠠ*Closure_id0	e|E\Uwࠠ/Closure_element0$tW÷+{3MƠ2Clambda_primitives0&>$e?<x(0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ5Build_path_prefix_map0vFgj9l(Asttypes0CoࠌD(/Allocated_const0K;0A:1Nθ%@&Symbol0N)5q'Z,Stdlib__List0!?$JOjĠ&Stdlib0~tV*e 1Flambda_iterators0;N#fQ-@f$3'Flambda0!>/j4@BE @B@@Р	)camlShare_constants__share_constants_1705AA@A@@	4camlShare_constants__update_constant_for_sharing_108BA@A@	&camlShare_constants__cannot_share_1443AA@A@	*camlShare_constants__share_definition_1451EA@A@	$camlShare_constants__end_symbol_1698AA@A@@N .$((vuX                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        (**************************************************************************)
(*                                                                        *)
(*                                 OCaml                                  *)
(*                                                                        *)
(*                       Pierre Chambart, OCamlPro                        *)
(*           Mark Shinwell and Leo White, Jane Street Europe              *)
(*                                                                        *)
(*   Copyright 2013--2016 OCamlPro SAS                                    *)
(*   Copyright 2014--2016 Jane Street Group LLC                           *)
(*                                                                        *)
(*   All rights reserved.  This file is distributed under the terms of    *)
(*   the GNU Lesser General Public License version 2.1, with the          *)
(*   special exception on linking described in the file LICENSE.          *)
(*                                                                        *)
(**************************************************************************)

[@@@ocaml.warning "+a-4-9-30-40-41-42"]

(** Share lifted constants that are eligible for sharing (e.g. not strings)
    and have equal definitions. *)

val share_constants : Flambda.program -> Flambda.program
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          Caml1999I030  U    x  D/Signature_group(sig_item   8 @@#src @%Types.signature_item@@ @ İ:typing/signature_group.mliaosb@@A+post_ghosts @$listI.signature_item@@ @ @@ @ ðcd@@-B@@A@@@@@_[[e	@@@@1@A@'flatten @8@@ @ 1)signature@@ @ @ @ @/hAA0hAi@@FC@.core_rec_group   8 @@'Not_rec @@ @ @@BlCl@@YE)Rec_group C+@@ @ @@ @ @@TmUm@@kF@@A@@@@@Xk@@@@nDA@)rec_items @0@@ @ ]E@@ @ @@ @ @ @ @np((op(V@@G@)rec_group   8 @@*pre_ghosts @s.signature_item@@ @ @@ @ Ѱv		v		C@@I%group @-@@ @ ϰv		Dv		X@@J@@A@@@@@u		v		Z@@@@HA@$next @)signature@@ @ &optionJ?@@ @ Ԡ)signature@@ @ @ @ @@ @ @ @ @}
,
,}
,
m@@K@#seq @)signature@@ @ &Stdlib#Seq!t'@@ @ @@ @ @ @ @~
n
n~
n
@@L@$iter @@8@@ @ $unitF@@ @ @ @ @)signature@@ @ @@ @ @ @ @ @ @ @

 @

@@M@$fold @@#acc @ @`@@ @ 	@ @ @ @ @@)signature@@ @ @ @ @ @ @ @ @ A

 A
@@4N@.in_place_patch   8 @@&ghosts @3)signature@@ @ 1 Enp2 En@@HP*replace_by @E.signature_item@@ @ @@ @ D FE F@@[Q@@A@@@@@H DVVI H@@@@_OA@0replace_in_place @)rec_groupN6@@ @ @@ @ &ghostsk)signature@@ @ @s.signature_item@@ @ ʠ!a @ ]@@ @ @ @ @@ @ @ @ @ @ @ @ @)signature@@ @ )signature@@ @ @ @ @@ @ @ @ @ @ @ R
h
h U
'@@R@@  G       /Signature_group0ǭqgoɑҒBi(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?'-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ,Identifiable0h$T<^D~R4%Ident0f4nAm\zb0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ(Asttypes0CoࠌD(@            @@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Caml1999T030    (  :    4 /Signature_group*ocaml.text&_none_@@ A	1 Fold on a signature by syntactic group of items 9typing/signature_group.mlP77P7m@@@@@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@3@@@5extension_constructorP  8 @@@A@@@@@7@@@#intA  8 @@@A@@@@@;@A@$charB  8 @@@A@@@@@?@A@&stringO  8 @@@A@@@@@C@@@%floatD  8 @@@A@@@@@G@@@$boolE  8 @@%false^@@Q@$true_@@W@@@A@@@@@X@A@$unitF  8 @@"()`@@b@@@A@@@@@c@A@
#exnG  8 @@AA@@@@@g@@@%arrayH  8 @ @O@A@A@ @@@@@p@@@$listI  8 @ @P@A"[]a@@}@"::b@@ @Q@@@
@@A@Y@@@@@@@@&optionJ  8 @ @S@A$Nonec@@@$Somed@@@@@A@Y@@@@@@@@&lazy_tN  8 @ @U@A@A@Y@@@@@@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A͠=ocaml.warn_on_literal_patternѐ@@.Assert_failure\    @@ @X@@Aݠ@
0Division_by_zeroY    '@@@A堰@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@A)(@.Sys_blocked_io[    @@@@A10@)Not_foundV    H@@@A9	8	@'FailureU    P@L@@ABA@0Invalid_argumentT    Y@U@@AKJ@.Stack_overflowZ    b@@@A S#R#@-Out_of_memoryS    j@@@A([+Z+@-Match_failureR    r@qmn@ @c@@A6i9h9@
%bytesC  8 @@@A@@@@@=@@@&Stdlib@@A  ( (sig_item QA>T?T@@  8 @@#src @%Types.signature_item@@ @OVPV@@gA+post_ghosts @.signature_item@@ @@@ @bW
cX8i@)ocaml.doct	' ghost classes types are post-declared qX8<rX8h@@@@@@@B@@A@@@@@uTvYjm@	e Classes and class types generate ghosts signature items, we group them
    together before printing RooS@@@@@@@@@@@DD;V@@Ш@гG%TypesGVV@@P  0 @^  8 @@@A@@@@@%"@@@@@@V@C@@N@JJ>W
@@Ш@гM$listW
3W
7@гR%TypesTW
W
2@@[@@@` 
@@c@C@#@XU@A@EB@ED@@ࠠ'flatten ZnrZny@@@@@@ @B@r@@ @B@@@ @B@@ @B@  0 @@@@@!x ZnzZn{@@@!  0 @-ZnnZn@@@@@ภ"::ZnZn@  < (@ @R@B@AAB@A@@ఐ$!x
Zn~Zn@A@!@#D@@GB@B@B@  0 @(4
@@@#srcZnZn@  , O@@ @@@  , @A@A@A@Ѱ@@I@ఐG!x-Zn.Zn@#@@@+post_ghosts4ZnC@	D@@e@@B@B@B@*@@5M@@k+@@AVNA@@tn@ @  0 ?>>?????@U@@@@S@SR@fA  ( .core_rec_group BM\N\@@  8 @@'Not_rec  @@ @@@\]]]@@tF)Rec_group 2@@ @@@ @@@o^p^@@G@@A@@@@@s\@@@@E@%%z]{]@г'(sig_item](@@.  0 @@@CA  8 @@@A@@@@@@@@@@/@@@@1@--^^@г/$list^+@г3(sig_item^^@@;@@@@ 6@@@@8@@A@4@@47@  0 @!@@@ࠠ)rec_items ``@@@@v@@ @C@p@@ @C@@@ @C@@ @C@  0 @F~@@@@%param Ġ'Not_recaa@  <  @@ @@A@@BB@A@@ࠠ!x a	a
@@@@@ @  0 @#?`b&@@@@@@@@8@@ภ"::aaAఐ!x
a@@@I@@A  0 @'@@@ภ"[]
A  < @@@@AAB@A@@@A@T@@D@D@@@a!@@Z@Ġ)Rec_group$b%b@  < K@AA@BB@A@@ࠠ!x /b 0b!@@@͠@@ @@@ @  0 65566666@L@@@@@@@@@ఐ!xBb%Q@@@ZJT@@C@  0 EDDEEEEE@\@@@@AK`Z@@@@ @  0 KJJKKKKK@a@@@@_@_^@A  ( )rec_group CYgZg@@  8 @@*pre_ghosts @.signature_item@@ @@@ @mhnh@@L%group @.@@ @yhzh'@@M@@A@@@@@}g~h)@	 Private row types are manifested as a sequence of definitions
    preceding a recursive group, we collect them and separate them from the
    syntatic recursive group. d((f@@@@@@@@@K@11%h@@Ш@г4$listh
h@г9%Types;hh@@B  0 @@@HW  8 @@@A@@@@@1.@@!@@	@@@M
@@P@E@
@E@AA<h@@Ш@гD.core_rec_grouphE@@KF@@N@E@@J@@A@FC@FE@  0 @@@@ࠠ*next_group j+/j+9@@@@@@ @D@@@ @D@d @@ @D@{@@ @D@@ @D@
@@ @D@@ @ D@  0 @R@@@@.Ġ"[]kEIkEK@@@@@1  0 @?
j++ A
T
|@@@@@ภ$NonekEOkES@  < 5@ @T@@@@AAB@A(@@@@@:@Ġ"::%lT\&lT^@,ࠠ#src .lTX/lT[@@@V  0 .--.....@(@@@ࠠ!q 9lT_:lT`@@@àd@@ @@@@@@i@@@ࠠ&ghosts NmdnOmdt@@@D@D@F@y@@ @{F@  0 YXXYYYYY@U5@0@vO,&@'@xP@@@ࠠ!q jmdvkmdw@@@D@@@ @F@@@'
@@'@ @@ఐT#srcnznz@%@@  0 @)@@@Ġ%Types)Sig_classoo@  < )Sig_class%Types.signature_item@@ @@%Ident!t@@ @1class_declaration@@ @	*rec_status@@ @
*visibility@@ @@DE@GG@A0typing/types.mliCCCD"@@@$ @oo@@%@@I@  0 @k@@@@	@"@@I@@@@!@@I@ @@@ @@I@!@@@F@@f@@f@@ఐ!qr=Ur=V@@@ku@@ @Z!@ĠͰs\ls\n@ࠠ"ct s\j
@@@4@Ġݰ s\os\q@ࠠ!t 	@
@@C@Ġs\ss\u@ࠠ"ht 	@
@@R@ࠠ!q  s\v@@@@@ @h_@@@&@@@@J@id@@@;@@@@J@ji@@@8@@@@J@kn@@n@@ภD<s\{=s\ACఐM"ct
Fs\}@@N@^S@@  0 GFFGGGGG@ZJ@G@fT=@:@hU72@3@jV@@@ภbZs\~A`ఐZ!t	cs\@@@@ภrjs\.Apఐ["ht	ss\@#@@+@ภk=Ai@>A@@@H@H@7@@EA@@@H@H@>@@/LA@8@@H@}H@E@@s\zT@@>@@H@|K@ఐ}!qs\s\@L@@1V@@@@.F@wY@@tt@@2<@@J@m@@@@  ภ%falsett@  < w@@ @M@@@@B@B@A@@z@	@@@@H@@t
@@&F@ @@Ar=Iu@@)n@Ġ%Types.Sig_class_typevv@  < .Sig_class_typeD@<!t@@ @L6class_type_declaration@@ @
:@@ @8@@ @@DF@GG@A6D#D%7D#Ds@@@Y @vv@@@@I@'  0 @@@@@	@@@I@(@@@V@@I@)@@@U@@I@*@@@7@@@@@@ఐݠ!qy	]	ty	]	u@@@@@ @!@Ġ%z	{	&z	{	@,ࠠ!t .z	{	
@@@4@Ġ5z	{	6z	{	@<ࠠ"ht 	@
@@C@ࠠ!q Fz	{	@@@Ϡ@@ @P@@@'@@Ԡ@@J@U@@@$@@٠@@J@Z@@Z@@ภe]z	{	^z	{	Adఐ9!t
gz	{	@@:@W@@  0 hgghhhhh@E5@2@X/*@+@Y@@@ภxz	{	A~ఐC"ht	z	{	@@@@ภy*Aw@+A@@@H@H@$@@2A@%F@@@H@H@-@@z	{	<@@Ơ@@H@3@ఐ`!qz	{	z	{	@7@@<F@@@@@@9F@C@@{		{		@@=G@@J@@@@@  ภ{		{		@
@@@
@@H@@{		@@F@@@Ay	]	h|		@@"@Ġ*Sig_module}		}		@  < *Sig_moduleN@F!t@@ @ V/module_presence@@ @\2module_declaration@@ @J@@ @H@@ @@EC@GG@AFC=C?GCOC@@@i @}		}		@@$@@M@1  0 						@@@@@@%@@M@2@@@$@@M@3
@@@m@@M@4@@@l@@M@5@@@D@@@@@Ġ)Sig_value,}		-}		@  < )Sig_value@!t@@ @1value_description@@ @@@ @@C@@GG@ABrBvBrB@@@ @I}		J}		@@@@M@:B@@@@@M@;G@@
@@@M@<L@@@-@@M@@M@@z@@N@Ġ(Sig_typeb}		c}	
@  < (Sig_type@!t@@ @0type_declaration@@ @@@ @@@ @@DA@GG@ABBBB@@@ @}	
}	
@@@@L@B|@@@@@L@C@@
@@@L@D@@@@@L@E@@@6@@&@@&@@@@'@Ġ*Sig_typext}	
	}	
@  < *Sig_typext@!t@@ @5extension_constructor@@ @*ext_status@@ @@@ @@DB@GG@ABBBC<@@@& @}	
}	
@@ @@K@K@@@@@K@L@@
@@@K@M@@@!@@K@N@@@8@@g@@g@@@@h@Ġ+Sig_modtype~

(~

3@  < +Sig_modtypeP@H!t@@ @X3modtype_declaration@@ @@@@ @@CD@GG@A>CC?CC@@@a @~

4 ~

5@@@@J@S@@@@@J@T@@
@W@@J@U@@@-@@@@@@0@%Types}		}		@
~

6@@@@@ภ#
:
F$
:
H@@@@RF@@@G@  0 )(()))))@@@@ఐ!q5
:
I6
:
J@ְ@@F@@@@@F@@@A>nz	@@@@@mdj@@ภ$SomeG A
T
ZH A
T
^@  < 2@A@AAB@AW@@ຠ7#srcX A
T
`Y A
T
c@ఐ3	A	A@  0 ^]]^^^^^@@@{Q @@}R@@@H+post_ghostsn A
T
eo A
T
p@ఐ)&ghostsw A
T
qx A
T
w@@@(@@F@F@F@!@@@ A
T
_ A
T
x@@$@ఐ#!q A
T
z A
T
{@)@@/@@I@@D@	2@@M@@D@@@E@9@[@@D@A@@Aj+<@@@@ @@@@@@ࠠ1recursive_sigitem C
~
 C
~
@@@@ @@ @D@ؠ@@ @jD@g@@ @kD@h@ @iD@d@@ @eD@@ @D@  0 @ @@N@@@@ǠĠ%Types(Sig_type D

 D

@ࠠ%ident D

 D

@@@@@ @@I@   0 @)O C
~
~ HI@@@@@	  D

	 D

@@@@J@!@ࠠ"rs	 D

	
 D

@@@c@@ @CI@"@@	 D

	 D

@@e@@J@#%@@@7	 D

@@h'@Ġ%Types)Sig_class	& E

	' E

@@%ident	. E

	/ E

@@@AG@4H@)=@@	7 E

	8 E

@@@@J@*E@7"rs	B E

	C E

@@@8G@6H@+Q@@	K E

	L E

@@@@J@,Y@@@+	Q E

@@[@@m@@\@Ġ%Types.Sig_class_type	[ F

	\ F

@u%ident	c F

	d F
@@@3o@@	i F
	j F
@@@@I@5w@i"rs	t F
	u F
	@@@0@@	z F

	{ F
@@@@I@7@@@%	 F
@@@@@@@Ġ%Types*Sig_module	 G
	 G
!@%ident	 G
"	 G
'@@@@@	 G
)	 G
*@@@@H@A@@	 G
,	 G
-@@@@H@B@"rs	 G
/	 G
1@@@@@	 G
3	 G
4@@@@H@D@@@-	 G
5@@@@@@@@ภ$Some	 G
9	 G
=@xఐݠ%ident	 G
?	 G
D@@@	[@@  0 								@@@	\@@@ఐҠ"rs	 G
E	 G
G@@@@@	 G
>	 G
H@@&D@l@@(@@,@Ġ)Sig_value	 HIT	 HI]@Ǡ@	 HI^	 HI_@@@@I@K  0 								@@@@@@@@I@L@@@S@@I@M
@@@@@U@Ġ+Sig_modtype
 HIb
 HIm@/@
 HIn
 HIo@@1@@I@R@@@/@@I@S#@@
@n@@I@T(@@@@@p)@@4@@q*@Ġ*Sig_typext
- HIr
. HI|@@
2 HI}
3 HI~@@@@H@Z:@@@@@H@[?@@
@@@H@\D@@@@@H@]I@@@@@J@@U@L%Types
O HIM
P HIR@T
R HI@@@V@@ภ$None
Y HI^@C@_@@D@q  0 
Z
Y
Y
Z
Z
Z
Z
Z@f@@@@A
_ C
~
d@@@@ @  0 
_
^
^
_
_
_
_
_@k@@@@i@ih@@ࠠ$nextȠ
o J
p J@@@@		!@@ @ @@ @ D@5@@ @ 
@@ @ @ @ @@ @ D@@ @D@  0 







@@@
Z@@@@!xʠ
 J
 J@@@,  0 







@8
 J
 e@@@@@@ࠠ*cons_groupˠ
 K
 K@@@@$listI^@@ @E@@@ @E@@i@@ @E@k@@ @sE@@@ @~E@c@@ @E@}@ @E@z@@ @{E@@ @E@	@ @
E@@ @E@   0 







@NZ|@Q@^@@@@#pre͠
 K
 K@@@G  0 







@S K M@@@@@@%groupΠ K K@@@H  0 @ ]@@,`@@@@@!qϠ! K" K@@@J  0 !  !!!!!@\@@=a@@@@@ࠠ%groupР2 L3 L@@@{@@ @F@  0 76677777@#c@@Sb@@@ภ)Rec_groupD LE L@ డ
$List#revS LT L@@!a @@@ @	@@ @@ @@(list.mli Z

 Z

@@,Stdlib__ListK@@@@@F@l@@F@j@F@i<@@ఐt%group L L@\@@E@tE@L@@ L L@@	(@@F@F@vF@rW@@N
@@@@ @[@@ L@@ภ$Some M M@Vຠ  , H!@@ @J@@  , :9@A@A5@2@AA@>*pre_ghosts M M@డ
$List#rev M M@m@@@
@@F@i@@F@@F@  0 @@@c@@@@ఐ⠐#pre M M@Ȱ@@'E@E@@@"@@&@@F@F@F@@?%group M	 M@ఐǠ	A)	A@@@F@F@F@3@@@ M M@@6@ఐ!q M M@Ѱ@@4E@B@@r@@-E@E@@v@@03@@E@|J@@@8@@AA@A  0 @@@@@AA@R  0 @@@@@A A@@dV@ @  0 @@@@@@Aࠠ,not_in_group* O#+ O/@@@@v@@ @@@ @E@@à
@@ @@@ @E@b@@ @ؠ@@ @/F@@ @@@ @E@@ @@E@  0 SRRSSSSS@h@@o_@@@@#pred O0e O3@@@8  0 dccddddd@D@@@7.@ @@ @F@@E@d(in_group#preLE@#ids
@@ @E@@@ @E@%group

-@@ @E@$@@ @&E@@ME@[E@@ @@ @@ @@ @F@@ \39 \3A@@e@@@@@!l O4 O5@@@xE@E@  0 @NZ@Q@f@@@@ఐ*next_group O> OH@@@@
q@@F@@@F@@@F@Ϡ`@@F@@F@@@F@@F@  0 @+;1@2@g@@@@ఐC!l OI OJ@@@AE@E@@@0@@	+@@ @ޠ@@ @@ @@@ @$@Ġ$None
 PPV

 PPZ@@@@@	,G@@H@@@H@@H@@@H@  0 







@@@@@@@@  డ!=
, Q^q
- Q^r@@!a @ S@$boolE@@ @ R@ @ Q@ @ P&%equalBA @@@@*stdlib.mli y y@@&StdlibQ@@@%E@E@E@E@E@@ @@G@@G@@G@<@@ఐ#pre
d Q^n9@:@@E@J@@ภ	kC
p Q^t@
`@E@@&E@ V@@
u Q^m
v Q^u@@
@@@G@"H@_@
~ Q^f	@@
7@@F@%G@#g@ภ$None
 Rw
 Rw@	v@@@	ME@ E@'@@F@)x@@@TE@(z@Ġ$Some
 S
 S@[ࠠ#elt
 S
 S@@@@@ @@ࠠ!q
 S
 S@@@
E@@ @@@ 
 S@@
@H@@@@'@@	@@H@
Z@@H@	@H@@@H@@@@@ఐ61recursive_sigitem
 T
 T@R@@@	R@@G@3
@@G@1	G@@G@2@G@0@@G@/@G@.  0 







@RL@M@hGA@B@i@@@@ఐ^#elt T
 T@@@C@@H@D @B@#src T T@@@	@@H@@H@EH@C)@@@
@@
@D@@ @>	@@ @?@ @=@@ @<8@Ġ$Some; U< U@ࠠ"idG UH U@@@e@@ @W  0 JIIJJJJJ@T@@@@Q UR U@@	@@I@X	@@W UX U@@
@I@Y@@@#@@
{@@I@\	@@I@]@I@[@@I@Z@@@డ%Btype+is_row_name%Btype{ U| U@@&stringO@@ @$boolE@@ @@ @@0typing/btype.mli dVV dVu@@%Btype^@@@@@G@@@G@@G@  0 @ZT@U@j@@@@డ%Ident$name%Ident U U
@@%Ident!t@@ @&stringO@@ @@ @@0typing/ident.mlij77j7L@@H@@@@@H@@@H@@H@6@@ఐ"id U
 U
@@@@-@@I@I@I@J@@ U U
@@l@@H@H@I@T@@u	@@y@@G@H@Z@ఐԠ,not_in_group V
	
 V
	
!@@@@@@G@@G@j@@ภ
 V
	
*
 V
	
,@
ఐj#elt V
	
# V
	
&@@@
O@@H@ @@#src$ V
	
'@
	@@E@E@E@E@E@E@@ఐڠ#pre-: V
	
/@/@@@@= V
	
"> V
	
0@@E@@@ఐ!qK V
	
1L V
	
2@O@@@@Q@@E@E@*E@@Ġ$Nonea W
3
=b W
3
A@L@@@@@@J@j
@@J@k@J@i@@J@h  0 onnooooo@y@@@@@Ġ$Some{ W
3
D| W
3
H@4@ W
3
J W
3
K@@@@J@x@Ġ%Types(Trec_not W
3
M W
3
[@  < (Trec_not
@@ @%@@@@C@C@A
EE
EE@@@ @@
@@
@@J@{/@@ W
3
I W
3
\@@"
@J@|6@@@.@@Ơ@@J@@@J@@J@~@@J@}E@@E@@W@@ՠ@@I@@@I@@I@@@I@T@@@ࠠ&sgroup X
`
p X
`
v@@@N@@ @H@@ຠ5*pre_ghosts X
`
{ X
`
@డ$List#rev X
`
 X
`
@@@@9E@@@I@@@I@@I@@@ఐ#pre X
`
 X
`
@S@@@@@@@@I@I@I@@h%group X
`
 X
`
@ภ'Not_rec! X
`
" X
`
@
Hఐ}#elt+ X
`
, X
`
@1@@
@@I@I@I@@@
@@@@I@I@@@@< X
`
y= X
`
@@i@@? X
`
l@@ภ$SomeF Y

G Y

@ఐ&sgroupS Y

T Y

@@@lk@@E@  0 WVVWWWWW@b@@@ఐ!qd Y

e Y

@h@@E@E@@@k Y

l Y

@@E@@@*@@E@@@G@@8@@$*@Ġ$Some Z

 Z

@:ࠠ"id Z

 Z

@@@	@@ @  0 @@@@Ġ*Trec_first Z

 Z

@  < *Trec_first@@@AC@C@A
FF

FF@@@ @@
	@@@@J@  0 @c@@@Ġ)Trec_next Z

 Z

@  < )Trec_next"@@@BC@C@AFKFMFKFX@@@! @@
	@@@@J@@@$
@%Types Z

 Z

@  Z

@@@@@I@%@@ Z

 Z

@@E
@I@  0 @@@@@@W@@	@@I@4@@I@@I@@@I@@@@@ఐy(in_group [  [ @}@@{yxvki@^\@G@
@G@	@G@@G@  0 @sm@n@l@@@ఐ#pre [ 	 [ @T@@@ภ [   [ #Aఐ"id
 [ "@!@@$@ภA@A@@@H@H@"0@@+ [ @@E@4@ภ=5 [ ,6 [ 0A<ఐ#elt
? [ /@D@@E@E@)J@ภ:
A8@A@Ӡ@@H@(H@.V@@Q [ +@@E@'Z@@ఐ!q^ [ 1_ [ 2@b@@g@@s@@E@j@@Ae T@@  0 cbbccccc@m@@@@Ah O8
@@K@@AA@4E@  0 ihhiiiii@@@@@A
A@@8@ @n  0 mllmmmmm@	@@@@r O@@@ @@ @@ @@ @@E@  0 ~}}~~~~~@+@@@  \3C \3F@@@:  0 @'@@@@! \3H \3K@@@E@uE@t  0 @9N@@m@@@@" \3M \3R@@@"E@E@{  0 @$@@n@@@@@#rem# \3S \3V@@@]E@  0 @"@@o@@@@ఐ*next_group \3_ \3i@	@@@@@F@@@F@
@@F@q@@F@@F@@@F@@F@  0 @+8.@/@p@@@@ఐ@#rem \3j \3m@@@E@E@E@@@3	@@$?@@ @E@@@ @@ @@@ @)@Ġ$None" ]sy# ]s}@
@@@@B]@@H@@@H@@H@@@H@  0 10011111@E@@@@@@ఐ*cons_group> ]s? ]s@@@@@@F@@@F@@@@F@@@F@@r@@F@Ԡ@F@@@F@@F@@F@@F@,@@ఐ⠐#prej ]sk ]s@˰@@9@@ఐΠ%groupw ]sx ]s@@@E@E@}E@E@E@E@~Q@@ภ ]s ]s@~@@@)F@^@@U@@N_@Ġ$Some ^ ^@
Vࠠ#elt$ ^ ^@@@@@ @@ࠠ$next% ^ ^@@@@@@ @@@ ^ ^@@@H@@@@(@@@@H@ǠV@@H@@H@@@H@@@@@ఐ
21recursive_sigitem _ _@N@@@N@@G@@@G@C@@G@@G@ @@G@@G@  0 @SM@N@qHB@C@r@@@@ఐ_#elt _	 _@@@?@@H@ @@#src _ _@@@@@H@H@H@)@@@
@@<@@@ @{@@ @@ @
@@ @8@Ġ$Some7 `8 `@
ࠠ"id&C `D `@@@a@@ @'  0 FEEFFFFF@T@@@Ġ%Types)Trec_nextS `T `@@@@@@@I@*@@Z `[ `@@
@I@+@@@*@@~@@I@.@@I@/@I@-@@I@,&@@&@@ఐ(in_groupx ay a@@@PE@E@ @5@G@c@G@b@G@a@G@`  0 @IC@D@s@@@ఐ#pre a a @@@@ภ a) a+@ఐe"id a'@!@@%H@v&@ఐ#ids a.@ @@E@wE@w3@@ a& a/@@<E@t8@3ภΰ a; a=@̠ఐ&#elt a8@ذ@@H@~M@ఐ2%group aB@@@_W@@ a7 aC@@QE@|\@@ఐ6$next aD aH@@@E@k@@z@@[l@Ġ$None bIS bIW@@@@@
"@@J@<]@@J@=@J@;@@J@:@@@Ġ$Some bIZ bI^@Р@ bI`  bIa@@
<@@J@J  0 !  !!!!!@/@@@Ġ(Trec_not. bIj/ bIr@@@@@@@K@M  0 10011111@@@@@Ġ*Trec_first= bIs> bI}@@@@@@@K@P@@@%TypesK bIcL bIh@N bI~@@@@@J@Q@@S bI_T bI@@7
@J@R  0 VUUVVVVV@d@@@@@D@@x
|@@J@U@@J@V@J@T@@J@S@@@@l@@
@@I@Y@@I@Z@I@X@@I@W/@@ఐ	Ϡ*cons_group c c@+@@@	ˠ$@@G@@@G@@	Ԡ)@@G@@@G@@G@
@@G@@G@@@G@@G@@G@@G@\@@ఐ'#pre c c@@@5i@@ఐ%group c c@@@=v@@ఐ#rem c c@ڰ@@@@L@@8E@@@A _@@:  0 @@@@@A \3Y
@@@@AA@XE@  0 @@@@@A \3LA@_E@}  0 @)@@@@A \3GA@fE@v  0 @B@@@@A \3BA@mk@ @  0 @@@@@ \35@@ఐȠ,not_in_group e e@@@@
<@@D@@@D@@@@D@@@D@$
@@D@@@D@@D@@@D@@D@@D@@@ภ e e@@@@
h@@E@ 
@@E@ 	E@ @@ఐ
!x4 e
@
D
@@
D@ D@@@H
@@
@
@@
@
8
@@

M@@A

A@@

@ @   0 <;;<<<<<@
@@@@
@

@
@ࠠ#seq'L gM g@@@@ܠ@@ @!_@@ @!`D@ #Seq!t
@@ @!]D@ @@ @!BD@ @ @ D@   0 jiijjjjj@

@
@]@@@@!l){ g| g@@@+  0 {zz{{{{{@7 g g@@@@@డX#Seq&unfold g g@@@!b @ #&optionJ!a @ "@ @ @@ @ @ @ @N@@ @ @ @ @ @ @'seq.mli fcc fc@@+Stdlib__SeqP'&@@@@hD@ "\	@D@ @@D@ @D@ @ic@@D@ @D@ @D@   0 @NZ{@Q@u@@@@ఐj$next g g@l@@@e@@E@!X@@E@!Yd@@E@!Vv@@E@!W@E@!U@@E@!T@E@!S)@@ఐ!l g|@2}@@D@ 6@@r@@7@@AA@@@ @!c  0 @@@@@@@@ࠠ$iter= h h@@@@@@@ @!D@!x$unitF@@ @!@ @!D@!e@@@ @!@@ @!D@!l@@ @!D@!m@ @!nD@!f@ @!gD@!d  0 87788888@@@Tt@@@@!f?I hJ h@@@3  0 IHHIIIII@?P hQ h@@@@@@!l@\ h] h@@@3  0 \[[\\\\\@ I@@xw@@@@డ7#Seq$itero hp h@@@!a @ +X@@ @ @ @ @!@@ @ L@@ @ @ @ @ @ @ a a@@O@@@@rm@@D@!z@D@!y@6z@@D@!wa@@D@!v@D@!u@D@!t  0 @=Ir@@@x@@@@ఐd!f h h@J@@D@!@@ఐm#seq h h@~@@@Eg@@F@!@@F@!gA@@F@!@@F@!@F@!1@@ఐ~!l h h @;@@D@!D@!oA@@ h@@Z@@E@!@@E@!J@@w@@K@@AA@  0 @@@@@AA@@@ @!  0 @@@@@@@@ࠠ$foldA i i
@@@@@@ @!D@!@@@ @"KD@!@ @"@ @"
D@!@D@!@@@ @"7@@ @"6D@!@ @!D@!@ @!D@!@ @!D@!  0 @@@9v@@@@!fC. i/ i@@@2  0 .--.....@>5 i6 i0@@@@@@#accDA i
B i@@@2  0 A@@AAAAA@ H@@]z@@@@@!lER iS i@@@>  0 RQQRRRRR@F@@n{@@@@డ-#Seq)fold_lefte if i"@@@!a @ 1@!b @ 3
@ @ @ @ @@@@ @ @ @ @ @ @ @ @ Y
e
e Y
e
@@N@@@@@@D@!@D@!@@/@@D@!@D@!@D@!@D@!  0 @=I}@@@|@@@@ఐu!f i# i$@[@@D@"@@ఐp#acc i% i(@X@@D@!!@@ఐr#seq i* i-@@@@Jl@@F@"@@F@"l
F@@F@"@@F@"@F@"@@@ఐ!l i. i/@J@@D@"=D@!P@@ i)@@
_@@E@"I@@E@"HY@@@@D@![@@AA@  0 @@@@@AA@  0 @@@@@AA@@@ @"b  0 @@@@@@@ՠ@ࠠ/update_rec_nextF  k26 k2E@@@@[@@ @+2D@"d@>@@ @+-D@+@@ @+D@"kD@"l@ @"mD@"e@ @"fD@"c  0 @+%@&@6y@@@@"rsH+ k2F, k2H@@@'  0 +**+++++@32 k223 t@@@@@@#remI> k2I? k2L@@@1  0 >==>>>>>@ =@@Z~@@@@ఐ'"rsN lOWO lOY@
@@RD@+:D@+D@+D@"sD@"g  0 WVVWWWWW@&M@@s@@@Ġ%Types)Trec_nextj m_ck m_r@@@@@  0 jiijjjjj@@@@@@@ఐ;#remu m_vv m_y@@@hD@"w@Ġ*Trec_first nz nz@@@@@5  0 @/A@@@@8@Ġ(Trec_not nz nz@	@@@@C@@C@@@%Types nz~ nz@ nz@@@O@@ఐq#rem o o@Q@@6  0 @T@@@Ġ p p@Ġ%Types(Sig_type p p@`ࠠ"idJ p p@@@g@@ @"  0 @w@@@ࠠ$declK p p@@@n@@ @"@Ġ)Trec_next p p@3@@@@;@@H@*@ࠠ$priv p p@@@B@@ @*(@@@8 p@@D@+D@"-@ࠠ#rem p p@@@@@ @*;@@@K@@D@"|=@@=@@ภ q q!@ภ%Types(Sig_type q q	@ఐ\"id' q( q
@\@]@@ @@@@@F@+F@+F@+  0 0//00000@qc]@^@O AKE@F@Q B;5@6@S C@@@ఐm$declF qG q@@@@@F@+F@+F@+@ఐ1"rsX qY q@@@(@ఐp$privc qd q@+@@@@F@+F@+F@+:@@Qn q@@tF@+>@ఐt#remy q"z q%@?@@n@@F@+
F@+F@+Q@@h@@sR@Ġj r&` r&b@Ġ%Types*Sig_module r&. r&>@ࠠ"id r&@ r&B@@@@@ @*@ࠠ$pres r&D r&H@@@@@ @*@ࠠ#mty r&J r&M@@@@@ @*@Ġ)Trec_next r&O r&X@	@@@@@@H@* @ࠠ$priv r&Z r&^@@@$@@ @*-@@@D r&_@@/@ࠠ#rem r&c r&f@@@n@@ @*=@@@T@@>@@>@@ภ sj sj@ภ%Types*Sig_module sjt sj@ఐd"id sj sj@d@e@ D@@)@@F@+/F@+5F@+4  0 

@zmg@h@. Eb\@]@0 FJD@E@2 G=7@8@4 H@@@ఐy$pres' sj( sj@@@B@@F@+0F@+7F@+6 @ఐ~#mty9 sj: sj@"@@N@@F@+1F@+9F@+82@ఐ$"rsK sjL sj@
@@=@ఐ$privV sjW sj@=@@@@F@+3F@+<F@+;O@@fa sj@@MF@+.S@ఐ#reml sjm sj@Q@@aD@+"@@F@+&F@+>F@+=h@@
@@jD@+$k@@ t t@@w@@w@@ఐQ#rem tY@0Z@@@@A o\@@}  0 @5@@@@A lOQ_@@%@@AU`A@  0 @R@@@@AjbA@@@ @+  0 @i@@@@g@gf@|A  ( .in_place_patchD v v@@  8 @@&ghosts@d)signature@@ @+˰ w w@@ J*replace_by@9v.signature_item@@ @+@@ @+а x x@@ K@@A@@@@@ v y@@@@ I@&& w@@Ш@г)%Types+ w w@@2  0 @@@}C  8 @@@A@@@@@@@@@@	@@;@F@+	@5@11% x@@Ш@г4&option x x@г9%Types; x x
@@B"@@@G#
@@J@F@+&@?@@A@;@@;:@  0       @&@@@ࠠ0replace_in_place  | |.@@@@)rec_group@@ @/@@ @/&ghostsƠ@@ @/@@ @/@@@ @/P@ @/~@@ @/@ @/@@ @/A @/A @/A @/E@+@Ԡ&@@ @/E@+p 4@@ @/@ @/@@ @/E@+@ @+E@+@ @+E@+  0 ]\\]]]]]@@@@@!fĠl |/m |0@@@Y  0 lkklllll@es |t @@@@@@"sgŠ |1 |3@@@7  0 ~~@ o@@ M@@@@Aࠠ*next_groupƠ }6@ }6J@@@@"I@@ @,F@-2@@ @-dF@-[IH@@ @,@@ @,F@-^@q@@ @-fF@-a٠@ @.F@-k@@ @-pF@-l@ @-mF@-j@@ @-iF@-bA @-cF@-_A @-`F@-\A @-]F@+@$listI4F@-@@ @-RF@+@m
F@,:@@ @,F@+
/F@.@@ @.F@.@ @.F@.@@ @.F@+@ @,
@ @,	@F@,  0 @}@@ N@@@@!fȠ }6K
 }6L@@@z  0 @@@B@70@ @+@ @+@ @+G@+@@1 O*core_group@F@+&beforeQF@+&ghostsF@+,before_groupaF@,@@ @,F@+@k@@ @,F@+"sgcF@, ^F@,@ @,@ @,@ @,@ @,@ @,@ @,G@+@K L #@@c P@@@@@&beforeɠX }6MY }6S@@@5F@,  0 ZYYZZZZZ@O[@R@v Q@@@@@)signatureʠk }6Tl }6]@@@F@-F@-F@,;F@,  0 rqqrrrrr@'@@ R@@@@ఐ$next ~`j ~`n@@@@2@@G@,+@@G@,,@@G@,)!@@G@,*@G@,(@@G@,'@G@,&  0 @+>4@5@ S@@@@ఐF)signature ~`o ~`x@@@DF@,<F@, @@0@@Ѡ3@@ @,8E@@ @,9@ @,7@@ @,6$@Ġ$None ~ ~@@@@@O@@I@,Ka@@I@,L@I@,J@@I@,I  0 @@@@@@@@ภ$None ~ ~@@@@F@,k@Ġ$Some  @ࠠ$itemˠ   @@@|@@ @,]g@ࠠ"sg̠
  @@@*@@ @,^u@@  @@
@I@,_{@@@'@@8@@I@,b?@@I@,c@I@,a@@I@,`@@@@ఐ*core_group3 4 @@@@
@@G@,u@G@,t@G@,s@G@,r@G@,q@G@,p  0 ?>>?????@IC@D@\ T>8@9@^ U@@@@ఐK!fS T @@@5F@,@4ఐ&beforeb c @@@
F@,$@=ఐr$itemr s @/@@@@H@, @,8@*pre_ghosts~  @ٰ@@?@Rภ  @z@@@YF@,L@@ఐ砐)rec_items  @@@@@@H@,ΠN@@H@,@@H@,@H@,g@@ఐ$item  @r@@3@@I@, @,{@%group  
@@@@@I@,I@,I@,@@  @@@ఐˠ"sg  @@@@@@@F@,m@@A ~`d@@@@AvA@F@,  0 @n@@@@AA@F@,  0 @@@@@AA@@@ @,  0 @@@@@ }68@֠ְ@@@@@ @,@ @,@ @,@ @,
@ @,@F@,  0 @@@@@!f͠ $ %@@@  0 

@@@@@Π ' -@@@DF@,  0 @@@6 V@@@@Ϡ* /+ 5@@@F@,  0 +**+++++@@@G W@@@@Р; 7< C@@@
F@/F@,  0 ?>>?????@!@@[ X@@@@@'currentѠP DQ K@@@F@-1F@,  0 TSSTTTTT@%@@p Y@@@@Ҡd Me O@@@F@,  0 eddeeeee@"@@ Z@@@@@ࠠ&commitӠv RZw R`@@@@ĠF@/F@-@@ @-'G@,@@ @-G@,@ @,G@,  0 @&2)@*@ [@@@@&ghostsՠ Ra Rg@@@!  0 @- RV R@@@@@డw!@ Rw Rx@@٠!a @@@ @@@@ @@@ @@ @@ @@7ww7ww<@@ @@@@@G@-@@@G@-@@G@-@G@-@G@-  0 @>Ja@A@ ]@@@@ఐ,before_group Rj Rv@@@F@/!F@-F@-F@,@@డ$List*rev_append Ry R@@!a @@@ @)@V@@ @(@@ @'@ @&@ @%@ i i@@N@@@@@H@-@@@H@-Ѡ@@H@-@H@-@H@-T@@ఐ&ghosts9 R: R@^@@G@-(G@,d@@ఐ4&beforeI R@@@4F@-&F@-)F@,u@@O@@y@@H@-H@-+H@-%~@@q@@@@AA@@@ @-.  0 ZYYZZZZZ@@@@@@ఐ'currentg h @@@F@,  0 hgghhhhh@@@ \@@@Ġsx y @i@@@@&  0 xwwxxxxx@@@@@'@@ఐ*next_group  @u@@@F@,@@@G@-?@G@->@G@-=@@ఐ!f  @|@@!@@ఐ2&commit  @=@@@.@@H@-Lؠ@@H@-K@H@-J:@@ఐ&ghosts  @}@@F@-SF@-TF@,L@@  @@O@@ఐs"sg  @G@@iF@,^@@U@@_@Ġ  @ࠠ!a֠  @@@P@ࠠ!qנ  @@@]@@ @-6@@@@@@@@@ఐ!f   	 @@@  0         @'q@"@ % ^@@ ' _@@@ఐ'!q    	@@@@ఐ (  ) @@@e @@ఐL!a 7  8 @+@@/@#src >  ? @$
@@6@@:@@7@Ġ$Some L ' M +@ࠠ$infoؠ X - Y 1@@@  0  X W W X X X X X@P@@@ঠ&ghosts e 4 f :A  , ,@@ @+@@  , @A@A@@A@ࠠ
٠
@@@@ @-q@*replace_by { < | FAࠠڠ@@ʠ@@ @-v@@ @-u.@@@  3  G@@1@@  ,  H@@Π@J@-w8@@@H@@9@@9@@@ࠠ%after۠  L\  La@@@ʠI@-@@ @-I@-  0         @X@S@  `?=@>@  a1/@0@  b@@@డ!@  L~  L@@@@@@I@-@	#@@I@-'@@I@-@I@-@I@-&@@డ$List*concat_map  Ld  Ls@@@!a @a-!b @_@@ @n@ @m@8@@ @l=@@ @k@ @j@ @i@ XX X@@Y%$@@@@pF@/ F@/F@-F@-J@-'F@.]F@-J@-@@J@-@J@-@(@@J@-'@@J@-@J@-@J@-{@@ఐh'flatten!- Lt!. L{@@@@d@@K@-a@@K@-@@K@-@K@-@@ఐQ!q!F L|!G L}@8@@ZJ@@K@-K@-K@-@@u@@@@J@-J@-J@-@@ఐ"sg!d L!e L@װ@@@@@@@@!i LX@@@ࠠ%afterܠ!t !u @@@h@@ @.JI@-  0 !z!y!y!z!z!z!z!z@@@! c@@@ఐ⠐1recursive_sigitem! ! @@@@@@J@-@@J@-Ƞ@@J@-@J@-@@J@-@J@-  0 !!!!!!!!@(@@@@ఐǠ!a! ! @@@@#src! ! @
@@*@@K@-K@-K@-@@5
@@@@ @-ՠ @@ @-@ @-@@ @--@ఐW*replace_by! ! @,@@%$@@ @-@@ @-?@@V
@@$@ @-D@Ġ$None! ! @@@@@@@M@-W@@M@-@M@-@@M@-@@" "
 @@VU@@M@-@@M@-@@	@@@M@-@@@@"! "" @@@D@@M@.
@@M@.@M@.	@@M@.@Ġ$Some"8 "9 @@"= "> @@@@M@.@@@@@@@M@.@@M@.@@*
@@+@M@.@@@@X@@pt@@L@.@@L@.@L@.@@L@.@@L@.@@L@.@L@.@@ఐҠ%after"p "q @@@@Ġ$Some" 
" @9@" " @@@@L@.8@ࠠ"rsݠ" " @@@@@ @.9@@" " @@
@L@.:@@@"@@@@L@.=@@L@.>@L@.<@@L@.;@Ġ$None" " @@@@@@@L@.D@@L@.C@@B
@@#@L@.E!@@!@@ఐ
Ϡ/update_rec_next" " .@@@@&@@J@.R@!F@@J@.Q@@J@.P@J@.O@J@.N  0 """"""""@dRL@M@" e@@@@ఐZ"rs" /" 1@@@G@@K@.^K@.`K@._@@ఐd%after# 2# 7@@@I@.\K@.bK@.a+@@=	@@,@@A#
 @@@@# 
@@@ࠠ&beforeޠ# GW# G]@@@FC@@ @.I@.  0 # ### # # # # @@@#< d@@@ఐ*replace_by#0 Gf#1 Gp@@@{z@@ @.@@ @.  0 #7#6#6#7#7#7#7#7@@@@Ġ$None#E v#F v@0@@@@@@L@.@@L@.,@@,@@ఐ⠐&commit#X v#Y v@@@@ޠ@@J@.@@J@.@J@.B@@ఐ&ghosts#o v#p v@ð@@@@K@.R@@@@WS@Ġ$Some# # @9ࠠ!xߠ# # @@@@@ @.U@@@@@ؠ@@L@.@@L@.]@@]@@ภ!# # @!ఐ!x# # @@@# g@@  0 ########@'@@@ఐ@&commit# # @K@@@<F@.@@J@.@@J@.@J@.@@ఐ\&ghosts# # @#@@	(@@K@.+@@ @@#aI@.@@J@.J@.J@.6@@<@@I@.9@@A# G`@@@@# GS@@@ࠠ"sg# # @@@ I@.@@ @.I@.  0 ########@@@$ f@@@డ"$List*rev_append$ $
 @
@@@@@I@.@!@@I@.%@@I@.@I@.@I@.#@@ఐ&before$) $* @-@@:@@J@.J@.J@.8@@ఐʠ%after$> $? 	@@@4O@@J@.J@.J@.M@@>@@TN@@$K 
@@ภ$Some$R 
$S 
@ఐ$info$_ 
$` 
"@@@  0 $_$^$^$_$_$_$_$_@gwq@r@${ h@@@ఐ}"sg$n 
$$o 
&@@@y@@$r 
'@@F@.@@$@@ @@H@.@0	@@@
@@Y@n@@ @@@@Ġ$None$ (2$ (6@ s@@@@@@@@@ࠠ,before_group$ :J$ :V@@@	@I@/@@ @/I@.D@డ#s$List*rev_append$ Yg$ Yv@@@@1@@I@/@@@I@/	` @@I@/@I@/@I@/ c@@ఐߠ!a$ Yw$ Yx@@@r@+post_ghosts$ Yy$ Y@"
@@Y>@@J@/J@/J@/@@ภ"$ Y$ Y@"ఐ!a$ Y$ Y@@@@#src$ Y$ Y@"ܰ
@@vJ@/@ఐˠ,before_group% Y% Y@@@@@% Y% Y@@q@@J@/J@/@@e@@v@@% :F
@@ఐ*core_group% % @@@@		I	z@	DA@H@/*@H@/)@H@/(@H@/'@H@/&@H@/%  0 %'%&%&%'%'%'%'%'@ @@%C i@@@@ఐ1!f%8 %9 @@@	@	ఐ0&before%E %F @@@@	ఐ+&ghosts%R %S @@@+@	&ఐʠ,before_group%_ %` @5@@	/F@/=:@@ఐy!q%n %o @`@@	4F@/>I@	0ఐ"sg%} %~ @@@	V@@f@@W@q@@'@@A% @@	  0 %%%%%%%%@y@@@@A% 	@@	@
@@	@@A% LA@F@,  0 %%%%%%%%@$@@@@A>A@F@,  0 %%%%%%%%@9@@@@A% 6A@F@,  0 %%%%%%%%@S@@@@A% .A@F@,  0 %%%%%%%%@l@@@@A% &A@F@,  0 %%%%%%%%@@@@@A#A@@
@ @/m  0 %%%%%%%%@	@@@@% (@@ఐ
*next_group% % @	@@@
%=#b@@E@/@@E@/
"^"]@@E@/@@E@/@$@@E@/!

@@E@/@E@/@@E@/AE@/AE@/AE@/@
@@E@/@%k%@@E@/"

0@@E@/@E@/}@@E@/|@E@/{@E@/z@E@/y@@ఐ
!f% % @
|@@
E@/E@+@@ภ"& &
 @"@@@
8
@@F@/F@/@@ఐ
"sg&  
@
 
@@
E@/E@+@@v
@@
@9
@@

(@@A

A@
  0 &$&#&#&$&$&$&$&$@
@@@@A

A@@
@ @/  0 &(&'&'&(&(&(&(&(@
@@@@
@

@
@$$A@$p#@##A@#"@""A@"nh@@@@3@O$@If@A@>8@9@&` L@@  0 &H&G&G&H&H&H&H&H@
B@@@)rec_group$listI(sig_item@@ @/@@ @/&ghosts%Types)signature@@ @/@
.signature_item@@ @/&optionJ!a @/Ҡ.in_place_patch@@ @/@ @/@@ @/@ @/@ @/@ @/@')signature@@ @/5)signature@@ @/@ @/@@ @/@ @/@ @/@:typing/signature_group.mli R
h
h U
'@@/Signature_groupR@@#acc @/@)rec_group@@ @/@ @/@ @/@@Y)signature@@ @/@ @/@ @/@ @/@# A

$ A
@@"N@@@@ @/$unitF@@ @/@ @/@u)signature@@ @/@@ @/@ @/@ @/@C @

D @

@@BM@)signature@@ @/&Stdlib#Seq!tI@@ @/@@ @/@ @/@`~
n
na~
n
@@_L@)signature@@ @/c@@ @/)signature@@ @/@ @/@@ @/@ @/@}
,
,}
,
m@@K#@.core_rec_group@@ @0ݠ@@ @0 @@ @/@ @/@p((p(V@@G$@@@ @0)signature@@ @0@ @0@hAAhAi@@C@	H************************************************************************'UA@@'VA@ L@	H                                                                        '[B M M'\B M @	H                                 OCaml                                  'aC  'bC  @	H                                                                        'gD  'hD 3@	H  Florian Angeletti, projet Cambium, Inria Paris                        'mE44'nE4@	H                                                                        'sF'tF@	H   Copyright 2021 Institut National de Recherche en Informatique et     'yG'zG@	H     en Automatique.                                                    'H'Hg@	H                                                                        'Ihh'Ih@	H   All rights reserved.  This file is distributed under the terms of    'J'J@	H   the GNU Lesser General Public License version 2.1, with the          'K'KN@	H   special exception on linking described in the file LICENSE.          'LOO'LO@	H                                                                        'M'M@	H************************************************************************'N'N5@	2* Fold on a signature by syntactic group of items '	f* Classes and class types generate ghosts signature items, we group them
    together before printing &*	(* ghost classes types are post-declared &>	* Private row types are manifested as a sequence of definitions
    preceding a recursive group, we collect them and separate them from the
    syntatic recursive group. $(	| a class declaration for [c] is followed by the ghost
               declarations of class type [c], and types [c] and [#c] 'p'q<@	p a class type declaration for [ct] is followed by the ghost
               declarations of types [ct] and [#ct] 'w'x	&	\@@   *./ocamlopt"-g)-nostdlib"-I&stdlib"-I1otherlibs/dynlink0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel2-function-sections"-c'"-I&typing'!. 0/$#"! @0Hh  0 ( ''( ( ( ( ( @'@@(Asttypes0CoࠌD(0$8
{?"8CamlinternalFormatBasics0ĵ'(jdǠ0CamlinternalLazy01H^(YPhOD5g%Ident0f4nAm\zb,Identifiable0h$T<^D~R4(Location0BJ/Dj̾&>Sޠ)Longident0+۴7$ȷG~T+Outcometree0V/Qcy,A)Parsetree0e3S#ʌo$Path0}%/Qߵ)Primitive0,͘(V0ǭqgoɑҒBi&Stdlib0-&fºnr39tߠ.Stdlib__Buffer0ok
Vj.Stdlib__Either0$_ʩ<.Stdlib__Format0~RsogJyc/Stdlib__Hashtbl0a
~Xӭ,Stdlib__Lazy09=C;!7.Stdlib__Lexing0XVC[E,Stdlib__List0U#r&L+Stdlib__Map0@mŘ`rnࠠ+Stdlib__Seq0Jd8_mJk+Stdlib__Set0b)uǑ
bQ8-Stdlib__Uchar0o9us:2[].Type_immediacy0y,G?'&0^ qARh(Warnings0^1]/3W@@A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      Caml1999I030  U    x  D/Signature_group(sig_item   8 @@#src @%Types.signature_item@@ @ İ:typing/signature_group.mliaosb@@A+post_ghosts @$listI.signature_item@@ @ @@ @ ðcd@@-B@@A@@@@@_[[e	@@@@1@A@'flatten @8@@ @ 1)signature@@ @ @ @ @/hAA0hAi@@FC@.core_rec_group   8 @@'Not_rec @@ @ @@BlCl@@YE)Rec_group C+@@ @ @@ @ @@TmUm@@kF@@A@@@@@Xk@@@@nDA@)rec_items @0@@ @ ]E@@ @ @@ @ @ @ @np((op(V@@G@)rec_group   8 @@*pre_ghosts @s.signature_item@@ @ @@ @ Ѱv		v		C@@I%group @-@@ @ ϰv		Dv		X@@J@@A@@@@@u		v		Z@@@@HA@$next @)signature@@ @ &optionJ?@@ @ Ԡ)signature@@ @ @ @ @@ @ @ @ @}
,
,}
,
m@@K@#seq @)signature@@ @ &Stdlib#Seq!t'@@ @ @@ @ @ @ @~
n
n~
n
@@L@$iter @@8@@ @ $unitF@@ @ @ @ @)signature@@ @ @@ @ @ @ @ @ @ @

 @

@@M@$fold @@#acc @ @`@@ @ 	@ @ @ @ @@)signature@@ @ @ @ @ @ @ @ @ A

 A
@@4N@.in_place_patch   8 @@&ghosts @3)signature@@ @ 1 Enp2 En@@HP*replace_by @E.signature_item@@ @ @@ @ D FE F@@[Q@@A@@@@@H DVVI H@@@@_OA@0replace_in_place @)rec_groupN6@@ @ @@ @ &ghostsk)signature@@ @ @s.signature_item@@ @ ʠ!a @ ]@@ @ @ @ @@ @ @ @ @ @ @ @ @)signature@@ @ )signature@@ @ @ @ @@ @ @ @ @ @ @ R
h
h U
'@@R@@  G       /Signature_group0ǭqgoɑҒBi(Warnings0^1]/3W%Types0^ qARh.Type_immediacy0y,G?'-Stdlib__Uchar0o9us:2[]+Stdlib__Set0b)uǑ
bQ8+Stdlib__Seq0Jd8_mJk+Stdlib__Map0@mŘ`rnࠠ.Stdlib__Lexing0XVC[E,Stdlib__Lazy09=C;!7/Stdlib__Hashtbl0a
~Xӭ.Stdlib__Format0~RsogJyc.Stdlib__Either0$_ʩ<.Stdlib__Buffer0ok
Vj&Stdlib0-&fºnr39tߠ)Primitive0,͘$Path0}%/Qߵ)Parsetree0e3S#ʌo+Outcometree0V/Qcy,A)Longident0+۴7$ȷG~T(Location0BJ/Dj̾&>Sޠ,Identifiable0h$T<^D~R4%Ident0f4nAm\zb0CamlinternalLazy01H^(YPhOD5g8CamlinternalFormatBasics0ĵ'(jdǠ(Asttypes0CoࠌD(@            @@Caml1999T030  8    "    4 /Signature_group*ocaml.text&_none_@@ A
   Iterate on signature by syntactic group of items

    Classes, class types and private row types adds ghost components to
    the signature where they are defined.

    When editing or printing a signature it is therefore important to
    identify those ghost components.

    This module provides type grouping together ghost components
    with the corresponding core item (or recursive group) and
    the corresponding iterators.
:typing/signature_group.mliP77[@@@@@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@3@@@5extension_constructorP  8 @@@A@@@@@7@@@#intA  8 @@@A@@@@@;@A@$charB  8 @@@A@@@@@?@A@&stringO  8 @@@A@@@@@C@@@%floatD  8 @@@A@@@@@G@@@$boolE  8 @@%false^@@Q@$true_@@W@@@A@@@@@X@A@$unitF  8 @@"()`@@b@@@A@@@@@c@A@
#exnG  8 @@AA@@@@@g@@@%arrayH  8 @ @O@A@A@ @@@@@p@@@$listI  8 