{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack:///./node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/react/index.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/utils.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@visx/group/esm/Group.js","webpack:///./node_modules/@financial-times/vvc/src/components/default-props/index.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/@financial-times/ft-date-format/index.js","webpack:///./node_modules/@financial-times/vvc/src/util/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/prop-types/index.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/settings.js","webpack:///./node_modules/@financial-times/g-components/src/grid/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/legend/label.js","webpack:///./node_modules/@visx/axis/esm/constants/orientation.js","webpack:///./node_modules/micromark/dist/character/markdown-line-ending.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./app/components/date-picker-input/helpers.js","webpack:///./node_modules/@financial-times/o-viewport/src/utils.js","webpack:///./node_modules/micromark/dist/tokenize/factory-space.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/number.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time-format/node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/plot-context.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/react-markdown/lib/react-markdown.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core.js","webpack:///./node_modules/@financial-times/o-viewport/main.js","webpack:///./node_modules/serialize-query-params/esm/serialize.js","webpack:///./node_modules/serialize-query-params/esm/params.js","webpack:///./node_modules/serialize-query-params/esm/updateLocation.js","webpack:///./node_modules/serialize-query-params/esm/encodeQueryParams.js","webpack:///./node_modules/use-query-params/esm/QueryParamProvider.js","webpack:///./node_modules/use-query-params/esm/updateUrlQuery.js","webpack:///./node_modules/use-query-params/esm/useQueryParams.js","webpack:///./node_modules/use-query-params/esm/useQueryParam.js","webpack:///./node_modules/@visx/shape/esm/shapes/Line.js","webpack:///./node_modules/@financial-times/g-components/src/button/index.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-color/src/math.js","webpack:///./node_modules/d3-color/src/lab.js","webpack:///./node_modules/d3-interpolate/src/hcl.js","webpack:///./node_modules/d3-interpolate/src/hsl.js","webpack:///./node_modules/d3-color/src/cubehelix.js","webpack:///./node_modules/d3-interpolate/src/cubehelix.js","webpack:///./node_modules/@visx/scale/esm/utils/createColorInterpolator.js","webpack:///./node_modules/d3-interpolate/src/lab.js","webpack:///./node_modules/@visx/scale/esm/operators/nice.js","webpack:///./node_modules/@visx/scale/esm/operators/scaleOperator.js","webpack:///./node_modules/@visx/scale/esm/operators/domain.js","webpack:///./node_modules/@visx/scale/esm/operators/zero.js","webpack:///./node_modules/@visx/scale/esm/operators/interpolate.js","webpack:///./node_modules/@visx/scale/esm/operators/round.js","webpack:///./node_modules/@visx/scale/esm/operators/align.js","webpack:///./node_modules/@visx/scale/esm/operators/base.js","webpack:///./node_modules/@visx/scale/esm/operators/clamp.js","webpack:///./node_modules/@visx/scale/esm/operators/constant.js","webpack:///./node_modules/@visx/scale/esm/operators/exponent.js","webpack:///./node_modules/@visx/scale/esm/operators/padding.js","webpack:///./node_modules/@visx/scale/esm/operators/range.js","webpack:///./node_modules/@visx/scale/esm/operators/reverse.js","webpack:///./node_modules/@visx/scale/esm/operators/unknown.js","webpack:///./node_modules/@financial-times/g-components/src/shared/proptypes.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-topper/styles.js","webpack:///./node_modules/@financial-times/g-components/src/article-layout/index.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/exponent.js","webpack:///./node_modules/micromark/dist/character/markdown-space.js","webpack:///./node_modules/@financial-times/g-components/src/loading/index.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/@visx/text/esm/util/getStringWidth.js","webpack:///./node_modules/@visx/text/esm/hooks/useText.js","webpack:///./node_modules/@visx/text/esm/Text.js","webpack:///./node_modules/@visx/axis/esm/axis/Ticks.js","webpack:///./node_modules/@visx/axis/esm/axis/AxisRenderer.js","webpack:///./node_modules/@visx/axis/esm/utils/getLabelTransform.js","webpack:///./node_modules/@visx/scale/esm/utils/toString.js","webpack:///./node_modules/@visx/axis/esm/utils/createPoint.js","webpack:///./node_modules/@visx/axis/esm/axis/Axis.js","webpack:///./node_modules/@visx/axis/esm/utils/getTickFormatter.js","webpack:///./node_modules/@visx/axis/esm/utils/getTickPosition.js","webpack:///./node_modules/@visx/scale/esm/utils/getTicks.js","webpack:///./node_modules/@visx/scale/esm/utils/coerceNumber.js","webpack:///./node_modules/@financial-times/g-components/src/icon/index.js","webpack:///./node_modules/@visx/scale/esm/utils/inferScaleType.js","webpack:///./node_modules/@visx/shape/esm/shapes/Circle.js","webpack:///./node_modules/micromark/dist/util/chunked-splice.js","webpack:///./node_modules/micromark/dist/character/markdown-line-ending-or-space.js","webpack:///./node_modules/micromark/dist/util/regex-check.js","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/base.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/styles.js","webpack:///./node_modules/@financial-times/g-components/src/shared/helpers.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/@financial-times/o-toggle/main.js","webpack:///./node_modules/@financial-times/o-utils/main.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@financial-times/o-overlay/src/js/utils.js","webpack:///./node_modules/@financial-times/vvc/src/components/axis/styles.js","webpack:///./node_modules/micromark/dist/util/shallow.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/store.js","webpack:///./node_modules/@financial-times/o-grid/main.js","webpack:///./app/util/prop-types.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/@financial-times/vvc/src/util/hooks.js","webpack:///./app/components/button-selection-group/index.js","webpack:///./app/components/area-lookup/helpers.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-footer/styles.js","webpack:///./node_modules/micromark/dist/constant/assign.js","webpack:///./node_modules/@financial-times/vvc/src/components/lines/index.js","webpack:///./app/components/line-chart-template/helpers.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/user.js","webpack:///./node_modules/@financial-times/vvc/src/util/victory-textsize.js","webpack:///./app/components/line-chart-template/props.js","webpack:///./node_modules/papaparse/papaparse.min.js","webpack:///./node_modules/@financial-times/g-components/src/shared/hooks.js","webpack:///./app/helpers/generateChartText.js","webpack:///./app/helpers/xTickValues.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./app/util/transformInputDataFeeds.js","webpack:///./node_modules/@visx/shape/esm/shapes/Bar.js","webpack:///./node_modules/micromark/dist/constant/from-char-code.js","webpack:///./node_modules/micromark/dist/tokenize/partial-blank-line.js","webpack:///./node_modules/micromark/dist/util/prefix-size.js","webpack:///./node_modules/micromark/dist/character/ascii-alphanumeric.js","webpack:///./node_modules/unist-util-visit/index.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/@visx/point/esm/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-topper/index.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/session.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/send.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/queue.js","webpack:///./node_modules/@financial-times/o-tracking/src/libs/get-trace.js","webpack:///./node_modules/@financial-times/o-overlay/main.js","webpack:///./node_modules/@financial-times/g-components/src/card/index.js","webpack:///./app/util/addDaysToDate.js","webpack:///./node_modules/@visx/point/esm/Point.js","webpack:///./node_modules/@visx/scale/esm/utils/isUtcScale.js","webpack:///./node_modules/@visx/event/lib/localPoint.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/nice.js","webpack:///./node_modules/@financial-times/o-tracking/main.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/index.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/display-name.js","webpack:///./node_modules/@financial-times/o-overlay/node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/@financial-times/vvc/src/util/parseData.js","webpack:///./node_modules/reduce-css-calc/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/legend/styles.js","webpack:///./node_modules/g-chartcolour/src/backgrounds.js","webpack:///./node_modules/g-chartcolour/src/line-print.js","webpack:///./node_modules/g-chartcolour/src/line-social.js","webpack:///./node_modules/g-chartcolour/src/line-web.js","webpack:///./node_modules/@visx/annotation/esm/deprecated/LinePathAnnotation.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/curve/radial.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/lineRadial.js","webpack:///./node_modules/d3-shape/src/offset/none.js","webpack:///./node_modules/d3-shape/src/order/none.js","webpack:///./node_modules/@visx/shape/esm/util/setNumberOrNumberAccessor.js","webpack:///./node_modules/d3-shape/src/order/ascending.js","webpack:///./node_modules/d3-shape/src/order/appearance.js","webpack:///./node_modules/d3-shape/src/order/insideOut.js","webpack:///./node_modules/@visx/shape/esm/util/stackOrder.js","webpack:///./node_modules/d3-shape/src/order/descending.js","webpack:///./node_modules/d3-shape/src/order/reverse.js","webpack:///./node_modules/d3-shape/src/offset/expand.js","webpack:///./node_modules/@visx/shape/esm/util/stackOffset.js","webpack:///./node_modules/d3-shape/src/offset/diverging.js","webpack:///./node_modules/d3-shape/src/offset/silhouette.js","webpack:///./node_modules/d3-shape/src/offset/wiggle.js","webpack:///./node_modules/@visx/shape/esm/shapes/LinePath.js","webpack:///./node_modules/@visx/shape/esm/util/D3ShapeFactories.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/@visx/scale/esm/scales/ordinal.js","webpack:///./node_modules/object-assign/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/micromark/dist/util/normalize-identifier.js","webpack:///./node_modules/micromark/dist/util/miniflat.js","webpack:///./node_modules/micromark/dist/util/chunked-push.js","webpack:///./node_modules/micromark/dist/util/resolve-all.js","webpack:///./node_modules/micromark/dist/character/ascii-alpha.js","webpack:///./node_modules/micromark/dist/tokenize/label-end.js","webpack:///./node_modules/react-autosuggest/dist/compareObjects.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/index.js","webpack:///./node_modules/@visx/event/lib/typeGuards.js","webpack:///./node_modules/@financial-times/g-components/src/grid/grid-child.js","webpack:///./node_modules/@financial-times/g-components/src/grid/grid-row.js","webpack:///./node_modules/@financial-times/g-components/src/grid/grid-container.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/xhr.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/send-beacon.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/image.js","webpack:///./app/app.js","webpack:///./node_modules/@financial-times/o-share/src/js/share.js","webpack:///./node_modules/@financial-times/o-header/src/js/header.js","webpack:///./node_modules/@financial-times/o-toggle/src/js/toggle.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/tracking.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/custom.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/page-view.js","webpack:///./node_modules/@financial-times/o-comments/src/js/comments.js","webpack:///./node_modules/@financial-times/o-overlay/src/js/overlay.js","webpack:///./node_modules/@financial-times/o-comments/src/js/count.js","webpack:///./node_modules/@financial-times/o-footer/src/js/footer.js","webpack:///./node_modules/@financial-times/g-components/src/bylines/index.js","webpack:///./node_modules/@financial-times/o-date/src/js/date.js","webpack:///./app/components/basic-card/index.js","webpack:///./app/components/sticky-header/hooks.js","webpack:///./app/hooks/useQueryParamsWithState.js","webpack:///./app/components/trajectory-line-chart/index.js","webpack:///./node_modules/@financial-times/g-components/src/overlay/useOverlay.js","webpack:///./app/components/date-picker-input/index.js","webpack:///./app/components/toggle/index.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/@financial-times/vvc/src/components/axis/arrows.js","webpack:///./node_modules/@financial-times/vvc/src/components/delaunay/delaunay.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/@financial-times/vvc/src/sample-data/legendCategorical.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/@visx/scale/esm/scales/linear.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@financial-times/o-tracking/src/libs/browser-cuid.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/unist-util-stringify-position/index.js","webpack:///./node_modules/micromark/dist/constant/has-own-property.js","webpack:///./node_modules/micromark/dist/util/size-chunks.js","webpack:///./node_modules/micromark/dist/util/subtokenize.js","webpack:///./node_modules/micromark/dist/initialize/text.js","webpack:///./node_modules/micromark/dist/character/ascii-control.js","webpack:///./node_modules/parse-entities/decode-entity.browser.js","webpack:///./node_modules/micromark/dist/character/ascii-digit.js","webpack:///./node_modules/micromark/dist/tokenize/factory-destination.js","webpack:///./node_modules/micromark/dist/tokenize/factory-label.js","webpack:///./node_modules/micromark/dist/tokenize/factory-whitespace.js","webpack:///./node_modules/micromark/dist/tokenize/factory-title.js","webpack:///./node_modules/micromark/dist/tokenize/thematic-break.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/@financial-times/vvc/src/components/axis/index.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/@financial-times/vvc/src/components/bars/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/delaunay/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/dots/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/legend/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/regression-line/index.js","webpack:///./node_modules/@financial-times/g-components/src/share/index.js","webpack:///./node_modules/@financial-times/o-share/main.js","webpack:///./node_modules/@financial-times/o-share/node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/@financial-times/g-components/src/header/index.js","webpack:///./node_modules/@financial-times/o-header/main.js","webpack:///./node_modules/@financial-times/o-header/src/js/search.js","webpack:///./node_modules/@financial-times/o-toggle/src/js/target.js","webpack:///./node_modules/@financial-times/o-header/src/js/mega.js","webpack:///./node_modules/@financial-times/o-header/src/js/drawer.js","webpack:///./node_modules/@financial-times/o-header/src/js/subnav.js","webpack:///./node_modules/@financial-times/o-header/src/js/sticky.js","webpack:///./node_modules/@financial-times/g-components/src/analytics/index.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/click.js","webpack:///./node_modules/ftdomdelegate/main.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/component-view.js","webpack:///./node_modules/remove-markdown/index.js","webpack:///./node_modules/@financial-times/g-components/src/ads/index.js","webpack:///./node_modules/@financial-times/g-components/src/onwardjourney/index.js","webpack:///./node_modules/@financial-times/g-components/src/comments/index.js","webpack:///./node_modules/@financial-times/o-comments/main.js","webpack:///./node_modules/@financial-times/o-comments/src/js/stream.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/events.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/auth.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/purge-jwt-cache.js","webpack:///./node_modules/@financial-times/g-components/src/footer/index.js","webpack:///./node_modules/@financial-times/o-footer/main.js","webpack:///./node_modules/@financial-times/o-footer/src/js/layout.js","webpack:///./node_modules/@financial-times/ads-legacy-o-ads/dist/index.js","webpack:///./node_modules/@financial-times/g-components/src/list-card/index.js","webpack:///./node_modules/@financial-times/g-components/src/epilogue/index.js","webpack:///./node_modules/@financial-times/g-components/src/button/icons.js","webpack:///./app/components/custom-article-head/index.js","webpack:///./node_modules/@financial-times/o-date/main.js","webpack:///./app/components/navigation-header/index.js","webpack:///./app/components/sticky-header/index.js","webpack:///./app/util/sendSpoorEvent.js","webpack:///./node_modules/moment-timezone/index.js","webpack:///./app/components/options-panel/index.js","webpack:///./app/components/options-overlay/index.js","webpack:///./node_modules/@financial-times/g-components/src/overlay/index.js","webpack:///./node_modules/@financial-times/g-components/src/overlay/overlayContents.js","webpack:///./app/components/date-picker/index.js","webpack:///./app/components/area-lookup/index.js","webpack:///./node_modules/@financial-times/g-components/src/autosuggest-search/index.js","webpack:///./node_modules/react-autosuggest/dist/index.js","webpack:///./app/helpers/additionalAxisStyles.js","webpack:///./app/helpers/generateYTickValues.js","webpack:///./app/helpers/formatDataForChart.js","webpack:///./app/helpers/formatValueForTooltip.js","webpack:///./app/helpers/getNumberOfDecimalPlaces.js","webpack:///./app/helpers/areaCodeToDisplay.js","webpack:///./app/util/getAlternativeCountryNames.js","webpack:///./app/images/masthead.svg","webpack:///./app/components/line-chart-template/index.js","webpack:///./node_modules/@financial-times/vvc/src/sample-data/categorical-us.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/watermarks.js","webpack:///./node_modules/@financial-times/vvc/src/components/axis/styles-arrows.js","webpack:///./node_modules/@financial-times/vvc/src/components/axis/banding.js","webpack:///./node_modules/lodash.assign/index.js","webpack:///./node_modules/lodash.defaults/index.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/@financial-times/vvc/src/components/tooltip/index.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-footer/index.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/print.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/social.js","webpack:///./node_modules/@financial-times/vvc/src/components/chart-frame/video.js","webpack:///./node_modules/@financial-times/vvc/src/components/legend/legendCategorical.js","webpack:///./node_modules/@financial-times/vvc/src/components/legend/legendThreshold.js","webpack:///./node_modules/@financial-times/vvc/src/components/legend/legendMagnitude.js","webpack:///./app/components/line-chart-template/dots/index.js","webpack:///./app/components/line-chart-template/labels/index.js","webpack:///./app/components/line-chart-template/axis-fade/index.js","webpack:///./app/components/line-chart-template/multiple-line-tick-label/index.js","webpack:///./app/util/getArrayDepth.js","webpack:///./app/copy/source_line_1.md","webpack:///./app/copy/source_line_2.md","webpack:///./app/copy/source_line_3.md","webpack:///./app/copy/copy_intro.md","webpack:///./app/copy/copy_regional.md","webpack:///./app/copy/copy_technical.md","webpack:///./app/copy/latest_changes.md","webpack:///./node_modules/react-hot-loader/root.js","webpack:///./node_modules/@financial-times/vvc/node_modules/d3-array/src/extent.js","webpack:///./node_modules/@visx/mock-data/esm/mocks/letterFrequency.js","webpack:///./node_modules/@visx/tooltip/esm/tooltips/Tooltip.js","webpack:///./node_modules/@visx/tooltip/esm/hooks/useTooltip.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/pow.js","webpack:///./node_modules/@visx/scale/esm/scales/squareRoot.js","webpack:///./node_modules/@visx/shape/esm/shapes/Polygon.js","webpack:///./node_modules/@visx/shape/esm/util/trigonometry.js","webpack:///./node_modules/react-hot-loader/patch.js","webpack:///./node_modules/react-hot-loader/dist/react-hot-loader.production.min.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./app/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./node_modules/unified/index.js","webpack:///./node_modules/bail/index.js","webpack:///./node_modules/extend/index.js","webpack:///./node_modules/unified/node_modules/is-plain-obj/index.js","webpack:///./node_modules/trough/index.js","webpack:///./node_modules/trough/wrap.js","webpack:///./node_modules/vfile/index.js","webpack:///./node_modules/vfile/lib/index.js","webpack:///./node_modules/vfile-message/index.js","webpack:///./node_modules/vfile/lib/core.js","webpack:///./node_modules/vfile/lib/minpath.browser.js","webpack:///./node_modules/vfile/lib/minproc.browser.js","webpack:///./node_modules/remark-parse/index.js","webpack:///./node_modules/mdast-util-from-markdown/index.js","webpack:///./node_modules/mdast-util-from-markdown/dist/index.js","webpack:///./node_modules/mdast-util-to-string/index.js","webpack:///./node_modules/micromark/dist/util/safe-from-int.js","webpack:///./node_modules/micromark/dist/parse.js","webpack:///./node_modules/micromark/dist/initialize/content.js","webpack:///./node_modules/micromark/dist/initialize/document.js","webpack:///./node_modules/micromark/dist/initialize/flow.js","webpack:///./node_modules/micromark/dist/tokenize/content.js","webpack:///./node_modules/micromark/dist/constant/splice.js","webpack:///./node_modules/micromark/dist/util/combine-extensions.js","webpack:///./node_modules/micromark/dist/util/create-tokenizer.js","webpack:///./node_modules/micromark/dist/util/serialize-chunks.js","webpack:///./node_modules/micromark/dist/util/slice-chunks.js","webpack:///./node_modules/micromark/dist/constructs.js","webpack:///./node_modules/micromark/dist/tokenize/attention.js","webpack:///./node_modules/micromark/dist/util/classify-character.js","webpack:///./node_modules/micromark/dist/character/unicode-punctuation.js","webpack:///./node_modules/micromark/dist/constant/unicode-punctuation-regex.js","webpack:///./node_modules/micromark/dist/character/unicode-whitespace.js","webpack:///./node_modules/micromark/dist/util/move-point.js","webpack:///./node_modules/micromark/dist/tokenize/autolink.js","webpack:///./node_modules/micromark/dist/character/ascii-atext.js","webpack:///./node_modules/micromark/dist/tokenize/block-quote.js","webpack:///./node_modules/micromark/dist/tokenize/character-escape.js","webpack:///./node_modules/micromark/dist/character/ascii-punctuation.js","webpack:///./node_modules/micromark/dist/tokenize/character-reference.js","webpack:///./node_modules/micromark/dist/character/ascii-hex-digit.js","webpack:///./node_modules/micromark/dist/tokenize/code-fenced.js","webpack:///./node_modules/micromark/dist/tokenize/code-indented.js","webpack:///./node_modules/micromark/dist/tokenize/code-text.js","webpack:///./node_modules/micromark/dist/tokenize/definition.js","webpack:///./node_modules/micromark/dist/tokenize/hard-break-escape.js","webpack:///./node_modules/micromark/dist/tokenize/heading-atx.js","webpack:///./node_modules/micromark/dist/tokenize/html-flow.js","webpack:///./node_modules/micromark/dist/constant/html-block-names.js","webpack:///./node_modules/micromark/dist/constant/html-raw-names.js","webpack:///./node_modules/micromark/dist/tokenize/html-text.js","webpack:///./node_modules/micromark/dist/tokenize/label-start-image.js","webpack:///./node_modules/micromark/dist/tokenize/label-start-link.js","webpack:///./node_modules/micromark/dist/tokenize/line-ending.js","webpack:///./node_modules/micromark/dist/tokenize/list.js","webpack:///./node_modules/micromark/dist/tokenize/setext-underline.js","webpack:///./node_modules/micromark/dist/preprocess.js","webpack:///./node_modules/micromark/dist/postprocess.js","webpack:///./node_modules/mdast-add-list-metadata/index.js","webpack:///./node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/react-markdown/lib/plugins/naive-html.js","webpack:///./node_modules/unist-util-visit/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/unist-util-is/convert.js","webpack:///./node_modules/unist-util-visit/node_modules/unist-util-visit-parents/color.browser.js","webpack:///./node_modules/react-markdown/lib/plugins/disallow-node.js","webpack:///./node_modules/react-markdown/lib/ast-to-react.js","webpack:///./node_modules/react-markdown/node_modules/react-is/index.js","webpack:///./node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/react-markdown/lib/wrap-table-rows.js","webpack:///./node_modules/react-markdown/lib/get-definitions.js","webpack:///./node_modules/react-markdown/lib/uri-transformer.js","webpack:///./node_modules/react-markdown/lib/renderers.js","webpack:///./node_modules/react-markdown/lib/symbols.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/moment-timezone/moment-timezone.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/react-autosuggest/dist/Autosuggest.js","webpack:///./node_modules/shallow-equal/arrays/index.js","webpack:///./node_modules/react-autosuggest/dist/Autowhatever.js","webpack:///./node_modules/section-iterator/dist/index.js","webpack:///./node_modules/react-themeable/dist/index.js","webpack:///./node_modules/react-themeable/node_modules/object-assign/index.js","webpack:///./node_modules/react-autosuggest/dist/SectionTitle.js","webpack:///./node_modules/react-autosuggest/dist/ItemList.js","webpack:///./node_modules/react-autosuggest/dist/Item.js","webpack:///./node_modules/react-autosuggest/dist/theme.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/reduce-css-calc/node_modules/balanced-match/index.js","webpack:///./node_modules/reduce-function-call/index.js","webpack:///./node_modules/balanced-match/index.js","webpack:///./node_modules/math-expression-evaluator/src/formula_evaluator.js","webpack:///./node_modules/math-expression-evaluator/src/postfix_evaluator.js","webpack:///./node_modules/math-expression-evaluator/src/postfix.js","webpack:///./node_modules/math-expression-evaluator/src/lexer.js","webpack:///./node_modules/math-expression-evaluator/src/math_function.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/@visx/event/lib/localPointGeneric.js","webpack:///./node_modules/@visx/event/lib/getXAndYFromEvent.js","webpack:///./node_modules/@visx/axis/esm/axis/AxisTop.js","webpack:///./node_modules/@visx/axis/esm/axis/AxisRight.js","webpack:///./node_modules/@visx/axis/esm/axis/AxisBottom.js","webpack:///./node_modules/@visx/axis/esm/axis/AxisLeft.js","webpack:///./node_modules/@visx/bounds/esm/enhancers/withBoundingRects.js","webpack:///./node_modules/@visx/responsive/esm/components/ParentSize.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-time/node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-time/node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-time/node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/ticks.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/time.js","webpack:///./node_modules/@visx/scale/esm/scales/time.js","webpack:///./node_modules/@visx/event/esm/getXAndYFromEvent.js","webpack:///./node_modules/@visx/event/esm/localPointGeneric.js","webpack:///./node_modules/@visx/event/esm/typeGuards.js","webpack:///./node_modules/@visx/event/esm/localPoint.js","webpack:///./node_modules/@visx/drag/esm/useDrag.js","webpack:///./node_modules/@visx/drag/esm/util/useStateWithCallback.js","webpack:///./node_modules/@visx/drag/esm/Drag.js","webpack:///./node_modules/delaunator/index.js","webpack:///./node_modules/d3-delaunay/src/path.js","webpack:///./node_modules/d3-delaunay/src/polygon.js","webpack:///./node_modules/d3-delaunay/src/voronoi.js","webpack:///./node_modules/d3-delaunay/src/delaunay.js","webpack:///./node_modules/d3-random/src/lcg.js","webpack:///./node_modules/@visx/mock-data/esm/generators/getSeededRandom.js","webpack:///./node_modules/@visx/mock-data/esm/generators/genDateValue.js","webpack:///./node_modules/@visx/scale/esm/scales/threshold.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/@visx/scale/node_modules/d3-scale/src/log.js","webpack:///./node_modules/@visx/scale/esm/scales/log.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/@visx/scale/node_modules/d3-array/src/ticks.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/identity.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/locale.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/@visx/scale/node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/@visx/scale/node_modules/d3-array/src/ascending.js","webpack:///./node_modules/@visx/scale/node_modules/d3-array/src/bisector.js","webpack:///./node_modules/@visx/scale/node_modules/d3-array/src/bisect.js","webpack:///./node_modules/@visx/scale/node_modules/d3-array/src/number.js"],"names":["parentHotUpdateCallback","window","chunkId","moreModules","hotAvailableFilesMap","hotRequestedFilesMap","moduleId","Object","prototype","hasOwnProperty","call","hotUpdate","hotWaitingFiles","hotChunksLoading","hotUpdateDownloaded","hotAddUpdateChunk","hotCurrentChildModule","hotApplyOnUpdate","hotCurrentHash","hotCurrentModuleData","hotCurrentParents","hotCurrentParentsTemp","hotCreateRequire","me","installedModules","__webpack_require__","fn","request","hot","active","parents","indexOf","push","children","console","warn","ObjectFactory","name","configurable","enumerable","get","set","value","defineProperty","e","hotStatus","hotSetStatus","then","finishChunkLoading","err","hotWaitingFilesMap","hotEnsureUpdateChunk","t","mode","hotCreateModule","_acceptedDependencies","_declinedDependencies","_selfAccepted","_selfDeclined","_selfInvalidated","_disposeHandlers","_main","accept","dep","callback","undefined","i","length","decline","dispose","addDisposeHandler","removeDisposeHandler","idx","splice","invalidate","this","modules","hotApplyInvalidatedModule","hotQueuedInvalidatedModules","check","hotCheck","apply","hotApply","status","l","hotStatusHandlers","addStatusHandler","removeStatusHandler","data","newStatus","hotDeferred","hotUpdateNewHash","toModuleId","id","Error","requestTimeout","Promise","resolve","reject","XMLHttpRequest","requestPath","p","open","timeout","send","onreadystatechange","readyState","update","JSON","parse","responseText","hotApplyInvalidatedModules","c","h","promise","script","document","createElement","charset","src","head","appendChild","hotDownloadUpdateChunk","deferred","result","outdatedModules","options","hotApplyInternal","cb","j","module","getAffectedStuff","updateModuleId","outdatedDependencies","queue","map","chain","queueItem","pop","type","parentId","parent","concat","addAllToSet","a","b","item","appliedUpdate","warnUnexpectedRequire","abortError","doApply","doDispose","chainInfo","join","onDeclined","ignoreDeclined","onUnaccepted","ignoreUnaccepted","onAccepted","onDisposed","outdatedSelfAcceptedModules","slice","errorHandler","keys","forEach","installedChunks","hotDisposeChunk","dependency","moduleOutdatedDependencies","disposeHandlers","child","error","callbacks","onErrored","dependencyId","ignoreErrored","err2","originalError","list","exports","m","d","getter","o","r","Symbol","toStringTag","__esModule","ns","create","key","bind","n","object","property","s","_setPrototypeOf","setPrototypeOf","__proto__","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","container","before","_proto","insert","rule","_tag","tag","setAttribute","createTextNode","createStyleElement","nextSibling","insertBefore","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","charCodeAt","insertRule","cssRules","flush","parentNode","removeChild","W","X","trim","split","ia","Z","v","replace","F","P","substring","w","L","ja","ka","test","aa","G","ba","la","ma","R","na","ea","oa","H","q","g","x","A","S","B","U","prefix","D","z","M","k","y","C","K","u","I","J","f","N","charAt","ca","O","da","fa","Y","E","ha","Q","use","T","toSheet","block","Sheet","current","ruleSheet","context","content","selectors","line","column","depth","at","delimiter","stylisOptions","stylis","inserted","_insert","nodes","querySelectorAll","Array","node","getAttribute","stylisPlugins","selector","serialized","shouldCache","styles","cache","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","insertStyles","isStringTag","next","str","len","toString","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","arg","styleName","toLowerCase","match","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","obj","string","isArray","_key","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","args","stringMode","strings","raw","lastIndex","identifierName","exec","EmotionCacheContext","HTMLElement","ThemeContext","Provider","func","render","props","ref","Consumer","typePropName","createEmotionProps","newProps","Noop","theme","cssProp","css","ele","possiblyStyleElement","Emotion","_len","arguments","argsLength","createElementArgArray","classnames","cls","toAdd","merge","cx","_len2","_key2","originalModule","webpackPolyfill","hookCallback","some","hooks","input","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","Date","arr","res","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","to","from","prop","val","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","stack","deprecations","deprecateSimple","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","array","mom","output","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","min","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","parseInt","getSetYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","day","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","hours","lowercase","minutes","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","values","getLocale","defineLocale","abbr","_config","parentLocale","names","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","now","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","temp","weekdayOverflow","curWeek","GG","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","hour","isPm","meridiemHour","meridiemFixWrap","erasConvertYear","prepareConfig","preparse","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","minute","second","millisecond","configFromObject","configFromInput","isUTC","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","base","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","suffix","zone","isLocal","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","WEEK","MONTH","factory","page_callbacks","log","is","variable","target","copy","encode","encodeURIComponent","escape","decode","decodeURIComponent","unescape","addEvent","element","event","listener","addEventListener","attachEvent","broadcast","namespace","eventType","detail","dispatchEvent","CustomEvent","bubbles","onPage","includes","triggerPage","getValueFromCookie","cookie","$1","filterProperties","objectToFilter","allowedPropertyNames","filteredObject","allowedName","sanitise","assignIfUndefined","subject","findCircularPathsIn","rootObject","traversedValues","WeakSet","circularPaths","_findCircularPathsIn","currentObject","path","has","entries","containsCircularPaths","Boolean","_containsCircularPaths","isDeepEqual","constructor","hasOwn","classes","argType","inner","default","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","writable","_extends","Group","_ref","_ref$top","top","_ref$left","left","transform","innerRef","restProps","excluded","sourceKeys","_objectWithoutPropertiesLoose","propTypes","oneOfType","genLines","num","fill","genDateValue","baseComponentDefaultProps","width","height","margin","padding","right","bottom","chartFrameDefaultProps","frameDefaultProps","background","description","hideTitleTooltip","watermark","hideTopper","hideFooter","watermarkOffset","tooltipComponent","identity","frameSocialDefaultProps","Light","stabRule","subtitleFontSize","subtitleLineHeight","subtitlePosition","titleFontSize","titleLineHeight","titlePosition","copyright","sourceFontSize","sourceLineHeight","sourcePosition","frameVideoDefaultProps","framePrintDefaultProps","chartTopperDefaultProps","subtitle","subtitleMarkupCustom","title","titleMarkupCustom","chartFooterDefaultProps","legendComponentDefaultProps","legendWidth","legendHeight","posX","posY","legendType","invert","geometry","draggable","orientation","median","label","axisArrowsComponentDefaultProps","axisArrows","axisArrowsScale","axisArrowsPadding","axisBandingComponentDefaultProps","axisBanding","bandingScale","axisComponentDefaultProps","scale","fullLengthTick","hideEndTicks","invertScale","automaticallyAddPaddingForTicks","automaticallySetRange","tickLengthOverride","tickPositionVariable","tickLabelVariable","additionalTickValues","labelOffset","barsComponentDefaultProps","letterFrequency","xScale","xVariable","yScale","yVariable","colorScale","colorVariable","barHeightVariable","fixedBarHeight","dotsComponentDefaultProps","sizeScale","hollowDots","labelColumn","labelProps","showTooltips","labelStrokeWidth","highlightDotsOnHover","offChartLabelPosition","customTooltipComponent","lineComponentDefaultProps","linesComponentDefaultProps","highlightedLineOutlineWidth","highlightedLineOutlineColor","hoveredLineStrokeWidth","hoveredLinesColorScale","marimekkoKeyDefaultProps","barHeightAnnotation","barHeightAnnotationLineHeight","barHeightAnnotationWidth","keyBarsWidth","keyData","bar","keyMarginBottom","keyHeight","keyTitle","keyTitleWidth","barChartDefaultProps","xAxisOrientation","yAxisOrientation","paddingInner","paddingOuter","roundScale","marimekkoChartDefaultProps","marimekkoKey","xHideAxisLine","xFullLengthTicks","xMin","xMax","xTicks","categoricalUsSampleData","yLabelVariable","yAutomaticallyAddPaddingForTicks","yTickLength","barPaddingInner","barPaddingOuter","connectedScatterChartDefaultProps","orderVariable","lineChartDefaultProps","yFullLengthTicks","showLegend","xScaleType","logScale","showLineEndDots","yTransformFunction","showTooltipLine","seriesName","yValue","seriesToHighlight","labelStrokeColor","ghostLineColor","ghostLineHoverColorScale","ghostLineHoverLabelColorScale","additionalYTickValues","smallBarChartDefaultProps","scatterChartDefaultProps","sizeVariable","xAxisLabel","yAxisLabel","logScaleX","logScaleY","maxCircleSize","web","print","social","video","scaleFactor","dotsStrokeWidth","lineOfRegression","xDomain","yDomain","sizeDomain","legendGeometry","legendOrientation","hideLegend","hideSizeLegend","sizeLegendX","sizeLegendY","tooltipPositionOverride","tooltipHoverRadius","hoveredDotsStrokeColor","hoveredDotsStrokeWidth","delaunayDefaultProps","debug","showLine","showCircle","lineConfig","circleConfig","hoverRadius","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","arrayWithHoles","iterableToArrayLimit","nonIterableRest","datetime","compiledTemplates","formatReplacementsMap","MMMM","MMM","yyyy","EEEE","EEE","do","HH","inSeconds","compile","funcString","replacer","ftDateFormat","asTodayOrYesterdayOrNothing","interval","getSecondsBetween","isToday","isYesterday","tpl","timeAgo","abbreviated","timeAgoNoSeconds","ftTime","dateObj","isNearFuture","isFarFuture","otherTime","within24Hours","sameDayOfWeek","within48Hours","consecutiveDaysOfTheWeek","convertMMtoPX","getResponsiveValues","topper","footer","tickLabelStyle","fontSize","tickLength","axisLabelStyle","isZeroOrDefined","stripHTMLTags","marginProp","PropTypes","shape","xyProp","frameTypes","oneOf","baseComponentPropTypes","bool","chartFramePropTypes","framePropTypes","arrayOf","tooltipStyle","frameSocialPropTypes","frameVideoPropTypes","framePrintPropTypes","chartTopperPropTypes","subtitleStylesCustom","objectOf","titleStylesCustom","chartFooterPropTypes","axisArrowsComponentPropTypes","startValue","axisComponentPropTypes","axisClassName","axisLineClassName","hideAxisLine","hideTicks","hideZero","labelClassName","numTicks","rangePadding","stroke","tickClassName","tickComponent","tickFormat","tickLabelProps","tickStroke","tickTransform","tickValues","additionalAxisStyles","legendComponentPropTypes","pinnedPosition","regressionLineComponentPropTypes","any","isRequired","barsComponentPropTypes","dotsComponentPropTypes","strokeColor","hoveredDotsColorScale","hoveredDotsLabelColorScale","labelColorScale","lineComponentPropTypes","defined","linesComponentPropTypes","seriesNames","highlightedLineOutlineWidthh","highlightLinesOnHover","marimekkoKeyPropTypes","keyX","keyY","barChartPropTypes","xTickLength","hideXAxisLine","hideYAxisLine","marimekkoChartPropTypes","connectedScatterChartPropTypes","lineChartPropTypes","yTickValues","yMin","yMax","yTickFormat","xTickFormat","xAxisLabelOffset","xAxisLabelProps","allLinesHoverable","lineColorPalette","labelColorPalette","smallBarChartPropTypes","scatterChartPropTypes","delaunayPropTypes","inRequired","t0","t1","newInterval","floori","offseti","count","d0","d1","step","range","start","stop","previous","end","every","linear","hue","gamma","nogamma","exponential","settings","stringify","setValue","getValue","destroy","GridRow","GridChild","GridContainer","Label","category","textAnchor","text-anchor","code","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","queryParamDateFormat","datePickerDateFormat","queryParamDateFormatter","d3","queryParamDateParser","datePickerDateFormatter","datePickerDateParser","getDateNDaysAgo","copiedDate","setDate","monthsList","getDaysInMonth","Number","getYearRange","minDate","maxDate","minYear","maxYear","_","getDayMonthYear","getReadableDateFormat","toLocaleDateString","body","getHeight","ignoreScrollbars","documentElement","clientHeight","innerHeight","getWidth","clientWidth","innerWidth","getSize","getScrollPosition","scrollHeight","scrollWidth","pageXOffset","scrollX","pageYOffset","scrollY","getOrientation","screen","matchMedia","getVisibility","hidden","debounce","Utils","throttle","markdownSpace","effects","ok","Infinity","size","enter","consume","exit","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","reA","reB","am","bm","bs","bi","one","zero","constant","color","rgb","numberArray","normalize","bimap","domain","interpolate","r0","r1","polymap","reverse","bisect","clamp","unknown","transformer","untransform","piecewise","rescale","rangeRound","continuous","utcWeekday","setUTCDate","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","setHours","sunday","monday","tuesday","wednesday","thursday","friday","saturday","utcYear","setUTCMonth","localDate","utcDate","newDate","timeParse","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","V","parseWeekNumberMonday","parseFullYear","parseYear","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","getHours","formatHour12","formatDayOfYear","formatMilliseconds","getMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","getMinutes","formatSeconds","getSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","getUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","utcFormats","parses","parseSpecifier","newFormat","specifier","newParse","utcFormat","utcParse","formatLocale","PlotContext","createContext","frameWidth","frameHeight","updatePadding","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","formatHex","color_formatRgb","formatRgb","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl","hsl2rgb","m1","m2","channels","displayable","formatHsl","xtend","unified","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","getDefinitions","uriTransformer","defaultRenderers","symbols","allTypes","ReactMarkdown","allowedTypes","disallowedTypes","renderers","processor","plugins","tree","runSync","renderProps","definitions","transforms","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","renderHtml","allowDangerousHtml","escapeHtml","skipHtml","hasHtmlParser","astPlugins","HtmlParser","determineAstToReactTransforms","defaultProps","transformLinkUri","sourcePos","rawSourcePos","linkTarget","transformImageUri","types","definition","rootID","setRootID","guid","getRootID","track","currentSession","session","root_id","user","ft_session","ft_session_s","device","spoor_session","spoor_session_is_new","isNew","spoor_id","userID","settingsConfig","addAndRun","utils","listeners","intervals","resize","visibility","scroll","setThrottleInterval","listenToResize","handler","ev","viewport","originalEvent","listenToOrientation","listenToVisibility","listenToScroll","scrollPos","scrollLeft","scrollTop","listenTo","stopListeningTo","removeEventListener","decodeArray","StringParam","ArrayParam","BooleanParam","boolStr","__assign","filterNully","query","reduce","queryAccumulator","queryParam","encodedValue","updateLocation","encodedQuery","location","encodedSearchString","search","updateInLocation","encodedQueryReplacements","currQuery","encodeQueryParams","paramConfigMap","paramNames_1","paramName","decodedValue","getContextValue","contextValue","history","replaceState","state","protocol","host","pathname","pushState","QueryParamContext","updateUrlQuery","queryReplacements","updateType","useQueryParams","locationIsObject","hasNewParamConfig","objA","objB","isShallowEqual","memoParamConfigMap","refHistory","refLocation","rawQuery","paramNames","paramValues","paramConfig","_b","locationIsObject_1","windowIsDefined_1","url","arraySafeEncodedValue","newValue","newEncodedValue","useQueryParam","decodedValues","changes","encodedChanges","Line","_ref$from","_ref$to","_ref$fill","isRectilinear","x1","y1","x2","y2","shapeRendering","Button","selected","buttonType","big","icon","disabled","inverse","aria-pressed","validIcons","ButtonGroup","ButtonPaginationGroup","initRange","deg2rad","PI","rad2deg","t2","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","sqrt","hcl","cos","sin","define","hclLong","hslLong","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelixGamma","cubehelix","cosh","sinh","interpolatorMap","localTimeIntervals","utcIntervals","utcHour","utcMinute","utcMonth","utcWeek","ALL_OPERATORS","operators","nice","timeScale","isUtcScale","parsedInterval","isDescending","domainWithZero","interpolator","createColorInterpolator","align","exponent","reversedRange","scaleOperator","ops","selection","Set","selectedOps","op","StringBoolPropType","flagsPropType","prod","errorReporting","analytics","googleAnalytics","ads","mainImage","summary","bylines","onwardjourney","shareButtons","header","comments","dark","mainImagePropType","uuid","trackingPropType","micrositeName","product","topicPropType","dataMetaPropType","sameAs","keywords","creator","contactPoint","contactType","telephone","email","includedInDataCatalog","distribution","encodingFormat","contentUrl","temporalCoverage","spatialCoverage","geo","box","bylinesPropType","stabRuleStyles","stabRuleStylesSocial","goalpostsStyles","titleStylesBase","titleStylesPrint","titleStylesSocial","titleStylesVideo","subtitleStylesBase","subtitleStylesPrint","subtitleStylesSocial","subtitleStylesVideo","Context","ArticleLayout","breakpoint","useLayoutChangeEvents","useAds","displayName","exact","gptSite","gptZone","targeting","Loading","formatDecimalParts","toExponential","coefficient","toLocaleString","style","textEl","getElementById","svg","createElementNS","position","textContent","getComputedTextLength","isXOrYInValid","xOrY","useText","_props$verticalAnchor","verticalAnchor","_props$scaleToFit","scaleToFit","angle","_props$lineHeight","_props$capHeight","capHeight","textProps","_textProps$x","_textProps$y","isXOrYNotValid","_useMemo","wordsWithWidth","word","wordWidth","spaceWidth","wordsByLines","currentLine","words","newLine","startDy","lineWidth","sx","sy","originX","originY","SVG_STYLE","Text","_props$dx","dx","_props$dy","dy","_props$textAnchor","innerTextRef","_useText","Ticks","horizontal","allTickLabelProps","_ref$tickStroke","ticks","tickLineProps","_ref2","_allTickLabelProps$in","formattedValue","tickLabelFontSize","tickYCoord","strokeLinecap","defaultTextProps","fontFamily","AxisRenderer","axisFromPoint","axisToPoint","_ref$label","_ref$labelOffset","_ref$labelProps","_ref$orientation","_ref$stroke","_ref$strokeWidth","_ref$tickLabelProps","_ref$tickLength","_ref$ticksComponent","ticksComponent","maxTickLabelFontSize","Fragment","yBottomOffset","getLabelTransform","createPoint","Point","Axis","_ref$children","_ref$hideAxisLine","_ref$hideTicks","_ref$hideZero","_ref$numTicks","_ref$rangePadding","getTickFormatter","isLeft","isTop","tickPosition","bandwidth","scaledValue","getTickPosition","tickSign","filteredTickValues","getTicks","coerceNumber","Icon","iconName","iconColor","colorHex","backgroundImage","inferScaleType","Circle","remove","items","parameters","chunkStart","unshift","fromCharCode","strictUriEncode","objectAssign","decodeComponent","opts","extract","queryStart","formatter","arrayFormat","accumulator","parserForArrayFormat","param","keysSorter","encoderForArrayFormat","val2","parseUrl","Frame","Watermark","sourcePlotYOffset","useTooltip","tooltipData","tooltipLeft","tooltipTop","tooltipOpen","tooltipFunctions","useReducer","currentPadding","newPadding","paddingState","updatePaddingState","parentWidth","responsiveHeight","responsiveMargin","responsiveSourceFontSize","responsiveSourceLineHeight","responsiveSubtitleFontSize","responsiveSubtitleLineHeight","responsiveSubtitlePosition","responsiveTitleFontSize","responsiveTitleLineHeight","responsiveTitlePosition","responsiveWidth","svgWidth","svgHeight","plotMargin","renderSourceFontSize","renderSourceLineHeight","renderSubtitleFontSize","renderSubtitleLineHeight","renderSubtitlePosition","renderTitleFontSize","renderTitleLineHeight","renderTitlePosition","plotPadding","hoveredSeries","hoveredData","mousePoint","aria-labelledby","frameStyles","role","viewBox","data-id","Children","isValidElement","cloneElement","React","random","offsetTop","offsetLeft","pointerEvents","offsetX","offsetY","dataYPosition","maxOffsetY","socialChartFrameStyles","videoChartFrameStyles","printChartFrameStyles","plain","stripListLeaders","removeMarkdown","gfm","encodedJSON","spoorTrackingPixel","jsonString","ieVersion","documentMode","img","data-o-component","imageUUID","getMainImage","makeCancelable","hasCanceled","isCanceled","cancel","registerLayoutChangeEvents","layouts","getGridBreakpoints","breakpoints","Map","decr1","setupQuery","handleMQChange","mql","addListener","unregisterLayoutChangeEvents","removeQuery","find","removeListener","isNode","Node","nodeType","nodeName","isElement","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","constructAll","Toggle","init","wait","later","clearTimeout","setTimeout","asyncGeneratorStep","gen","_next","_throw","info","done","self","unCapitalise","capitalise","copyContentFromElement","innerHTML","outerHTML","copyContentFromUrl","xhr","onload","onerror","optionsFromKey","dashIndex","subKey","getOffsetRect","eClientRect","getBoundingClientRect","docElem","clientTop","clientLeft","baseAxisStyles","webAxisStyles","socialAxisStyles","videoAxisStyles","printAxisStyles","combineStyles","initialStyles","additionalStyles","Store","keyPrefix","undefinedName","message","cookieLoad","cookies","cookieSave","expiry","expires","toUTCString","cookieRemove","storageKey","nameOverride","storage","_type","load","localStorage","getItem","save","setItem","removeItem","loadStore","oldCookieStoreData","read","write","errorMessage","missingDataMessage","getGridProperties","getGridFromDoc","gridProperties","getComputedStyle","getPropertyValue","getCurrentLayout","layout","getCurrentGutter","gutter","enableLayoutChangeEvents","gridLayouts","layoutName","layoutWidth","nextLayoutWidth","ContextPropType","publishedDate","headline","topic","relatedArticle","text","credit","twitterCard","dfpTargeting","tracking","relatedContent","rows","buildTime","ContextDefaultProps","useTooltipEvents","enabled","updateTooltip","useCallback","datum","overrides","handleMouseOver","coords","localPoint","currentTarget","ownerSVGElement","onMouseOver","onFocus","onMouseOut","onBlur","ButtonSelectionGroup","updateSelection","equalButtons","loadingTime","useState","loading","setLoading","useEffect","timer","buttonsClassName","display","onClick","generateWords","cleanSearchValue","searchValue","findMatch","searchList","alternatives","cleanedDisplay","cleanedAlternatives","cleanedSearchValue","getSuggestions","inputValue","inputLength","inputValueWords","alternativeWords","allScores","scores","acc","inputValueWord","matchLength","wordLength","pcMatch","totalMatchLength","totalLength","totalPercentageMatch","highestScore","highestPercentageScore","pcScore","formatAreaList","areaList","areasInData","selectedAreas","area","areaInData","areaSelected","alt","generateErrorTextFromOptions","selectedAreasNotInData","cumulative","per100K","daysSinceN","cumulativeText","valuesText","daysText","generateErrorMessage","selectedAreasNotInDataText","curr","errorMessageFromOptions","copyrightStylesBase","sourceStylesBase","sourceStylesPrint","sourceStylesSocial","sourceStylesVideo","LineWithContext","yAccessor","xAccessor","propWidth","propHeight","useContext","xPosition","yPosition","strokeLinejoin","Lines","MemoisedLines","memo","prevProps","nextProps","LinesWithContext","scaleProperties","yScaleType","yScaleDomain","yScaleRange","xScaleDomain","xScaleRange","repositionLabels","initialLabelPositions","positionVariable","spacing","alpha","copiedLabelPositions","automaticallyRepositionLabels","labelPositions","position1","order1","d2","position2","order2","deltaOrder","deltaPosition","adjust","getLineEndPositions","series","sortedData","endEntry","firstIntersectionEntry","yAxisIntersectionX","store","cookieDomain","defaultUserConfig","hostname","setUser","fontDictionary","Metric","Baskerville","Georgia","Palatino","Arial","Tahoma","Verdana","cursive","fantasy","monospace","serif","absoluteMeasurementUnitsToPixels","sm","pt","pc","in","px","relativeMeasurementUnitsCoef","em","ex","coefficients","averageFontConstant","widthOverlapCoef","heightOverlapCoef","lineCapitalCoef","lineSpaceHeightCoef","defaultStyle","letterSpacing","_degreeToRadian","_getFontCharacterConstant","firstFont","_splitToLines","_getSizeWithRotate","axisSize","dependentSize","angleInRadian","convertLengthToPixels","attribute","_prepareParams","inputStyle","lineStyle","characterConstant","_approximateTextWidthInternal","widths","_approximateTextHeightInternal","emptySpace","approximateTextSize","widthWithRotate","heightWithRotate","labelComponentDefaultProps","showArrow","arrowWidth","postMessage","dynamicTyping","dynamicTypingFunction","worker","WORKERS_SUPPORTED","SCRIPT_PATH","Worker","onmessage","userStep","userChunk","chunk","userComplete","complete","userError","workerId","NODE_STREAM_INPUT","download","readable","on","File","stream","unparse","BAD_DELIMITERS","quotes","skipEmptyLines","newline","quoteChar","fields","meta","RECORD_SEP","UNIT_SEP","BYTE_ORDER_MARK","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","each","attr","FileReader","files","file","inputElem","instanceConfig","action","reason","_handle","_finished","_completed","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","chunkSize","streamer","parseChunk","beforeFirstChunk","paused","aborted","preview","results","WORKER_ID","finished","_sendError","_readChunk","_chunkLoaded","withCredentials","_chunkError","downloadRequestHeaders","setRequestHeader","getResponseHeader","lastIndexOf","statusText","webkitSlice","mozSlice","FileReaderSync","readAsText","encoding","pause","resume","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","abort","trimHeaders","row","successful","bestDelimiter","getCharIndex","fastMode","escapeChar","linebreak","truncated","terminate","getElementsByTagName","usePortal","rootRef","useRef","rootEl","classList","parentEl","querySelector","parentElement","firstElementChild","childNodes","OAds","gpt","network","site","lazyLoad","initialised","slots","initSlot","global","STORYBOOK_ENV","setBreakpoint","listenersRef","useKeyboardShortcuts","shortcuts","handlers","keyCode","keyPress","generateHeaderText","areasToDisplay","areaText","areaTextWithPrefix","generateSubheadText","byDate","averageText","generateSourceText","timestamp","generateXAxisText","isSmall","generateXTickValues","increment","maxXTicks","skipEveryNthTick","tickSeries","maxXTickValue","getUniqueDateTicks","findIndex","generateXTickDateValues","minTicks","monthTicks","timeMonth","uniqueTicks","tickIncrement","fortnightTicks","timeWeek","weekTicks","threeDayTicks","timeDay","dayTicks","filterXTickDateValues","tickSpacingMin","maxNumTicks","hideEveryNTicks","totalNumberOfDaysInRange","daysBetweenFirstTwoTicks","spaceBetweenFirstTwoTicks","maxTicksBreached","ticksToHide","hideFirstTick","generateXTickFormatFunction","tickLabelsToHide","firstYear","timeYear","secondYear","firstTickInSecondYear","tick","tickFormatString","parseTime","transformInputDataFeeds","inputData","population","daily","timeSeries","Bar","markdownLineEnding","factorySpace","partialBlankLine","tokenize","nok","partial","sizeChunks","events","tail","sliceStream","asciiAlphanumeric","regexCheck","visit","visitParents","CONTINUE","SKIP","EXIT","visitor","nativeCreate","getNative","freeGlobal","freeSelf","root","eq","isKeyable","__data__","titleStylesMap","subtitleStylesMap","ChartTopper","dangerouslySetInnerHTML","__html","defaultSessionConfig","setSession","getSession","should_use_sendBeacon","navigator","sendBeacon","sendRequest","queueTime","offlineLag","transport","getTransport","user_callback","core_system","getSetting","system","is_live","stringifiedData","run","all_events","all","counts","URL","queue_length","nextRequest","Queue","first","last","doAdd","created_at","invalidArg","getSiblingsAndPosition","el","originalEl","siblings","elementPropertiesToCollect","getAllElementProperties","hasAttribute","getDomPathProps","attrs","getContextProps","isOriginalEl","customProps","getTrace","trace","customContext","attributes","domPathProps","contextProps","Overlay","Card","addDays","_defineProperty","_ref$x","_ref$y","TEST_TIME","nodeOrEvent","maybeEvent","_typeGuards","_localPointGeneric","isEvent","i0","i1","x0","initialise","mock","image","form","isUnique","fetch","method","response","json","available","findInvalidCharacters","matchingCharacters","uniqueMatchingCharacters","character","prompt","overlay","html","class","compact","heading","validation","invalidCharacters","catch","apiError","promptValidation","preventDefault","displayNameForm","srcElement","innerText","Delegate","listenerMap","handle","_removedListeners","matchesTag","tagName","matchesRoot","rootElement","matchesId","captureForType","useCapture","matcherParam","TypeError","Element","off","listenerList","singleEventType","correspondingUseElement","eventPhase","toFire","HTMLDocument","fire","_default","formatData","parseDate","point","getSeriesNames","excludeColumns","exclude","allSeriesNames","extentMulti","ext","rowExtent","extent","balanced","reduceFunctionCall","mexp","NESTED_CALC_RE","decimalPrecision","evaluateExpression","expression","functionIdentifier","uniqueUnits","uniqueLowerCaseUnits","unitRegEx","getUnitsInExpression","evaluatedPart","nonEvaluatedPart","balancedExpr","evaluated","pre","post","evaluateNestedExpression","percent","toEvaluate","eval","legendCategoricalStyles","legendThresholdStyles","legendMagnitudeStyles","LinePathAnnotation","_ref$points","points","_ref$labelAnchor","labelAnchor","_ref$labelDx","labelDx","_ref$labelDy","labelDy","labelFill","_ref$labelFontSize","labelFontSize","_ref$labelStroke","labelStroke","_ref$labelStrokeWidth","_ref$labelPaintOrder","labelPaintOrder","endPoint","paintOrder","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cw","rect","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","curve","buffer","defined0","curveRadial","Radial","_curve","radial","s0","s1","setNumberOrNumberAccessor","sums","peak","vi","vj","STACK_ORDERS","ascending","descending","insideout","peaks","appearance","tops","bottoms","none","STACK_OFFSETS","expand","diverging","yp","yn","silhouette","wiggle","s2","si","sij0","s3","sk","LinePath","_ref$data","_ref$defined","_temp3","_ref3","implicit","updateOrdinalScale","createOrdinalScale","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","chunkedSplice","constructs","called","resolveAll","asciiAlpha","markdownLineEndingOrSpace","chunkedPush","normalizeIdentifier","shallow","factoryDestination","factoryLabel","factoryTitle","factoryWhitespace","labelEnd","labelStart","_balanced","_inactive","parser","sliceSerialize","afterLabelEnd","attempt","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","resolveTo","group","close","media","insideSpan","null","_used","destinationAfter","between","afterLabel","_typeof","iterator","aKeys","bKeys","keysMap","aValue","bValue","aValueKeys","bValueKeys","aValueKey","ChartFrame","typeLower","elem","isSVGElement","SVGElement","isSVGSVGElement","isSVGGraphicsElement","isTouchEvent","isMouseEvent","Event","nativeEvent","colspan","data-o-grid-colspan","xl","XL","bleed","snappy","resolver","rejecter","Image","isPrerendering","userAgent","DEFAULT_COUNTRIES","DEFAULT_US_STATES","App","setPublishedDate","setData","mainRef","useQueryParamsWithState","areas","maxLength","areasRegional","startDate","scrollTo","hideFromQueryParams","setState","world","us","country","dataBranch","Papa","dataCountry","lastUpdated","last_updated","regional","dataState","dataWorld","dataUs","fullData","newDaysSinceN","updateState","keyValuePairs","keyValuePairsArray","getArrayDepth","stateToAdd","hasQuery","earliestDateAllowed","latestDateAllowed","parsedStartDate","scrollToId","scrollIntoView","containerRef","navigationConfig","currentPage","itemScope","itemType","itemProp","copy_intro","latestChanges","paragraph","worldOrRegion","copy_regional","copy_technical","source1","source2","source3","socialUrls","twitter","facebook","linkedin","pinterest","whatsapp","link","enterpriseSharing","descriptiveLinkText","Share","oShare","openWindows","dispatchCustomEvent","eventName","handleClick","actionEl","closest","contains","stopPropagation","href","shareLocation","dataset","oShareLocation","button","closed","focus","opener","share","shareSocial","generateSocialUrl","socialNetwork","templateUrl","titleExtra","relatedTwitterAccounts","hash","ulElement","links","liElement","spanElement","aElement","templateLinkText","rootDelegate","DomDelegate","rootDomDelegate","removeAttribute","Header","headerEl","mega","drawer","subnav","sticky","handleSpaceKeydown","toggle","toggleEl","_targets","targetEl","Target","addToggle","stateName","isOpen","removeToggle","toggles","initEvent","initPage","page","updateConfig","newConfig","user_id","destroySetting","hasDeclarativeConfig","getDeclarativeConfigElement","getDeclarativeConfig","initUser","initSession","initSend","declarativeConfigString","configEl","declarativeOptions","configError","click","view","core","defaultEventConfig","trackingEvent","origamiElement","getOrigamiEventTarget","component_name","component_id","getComponentId","_getElementPath","siblingIndex","srcParent","_generateHash","reduceRight","builder","setSetting","defaultPageConfig","referrer","pageViewEventHasAlreadyBeenSentBefore","previousPageConfigWithoutContextIDs","configWithoutContextIDs","Comments","getDataAttributes","isCount","articleId","articleUrl","Count","renderCount","Stream","fetchCount","shortKey","overlays","checkOptions","trigger","modal","layer","shaded","getOptionsFromTrigger","triggerClickHandler","visible","isVisible","offsetHeight","focusTrap","overlayFocusableElements","wrapper","elementVisible","elementLabelVisible","labels","elementIsUncheckedRadio","checked","lastElement","shiftKey","noOptError","parentnode","delegates","doc","wrap","fullscreen","originalOverflow","popstateHandler","show","loadContent","wrapperEl","zindex","headingId","preventclosing","nofocus","visuallyhidetitle","tooltip","shadow","closeHandler","nested","resizeListenerHandler","resizeListener","closeOnEscapePressHandler","closeOnEscapePress","closeOnNewLayerHandler","closeOnNewLayer","customclose","closeOnExternalClickHandler","closeOnExternalClick","outline","requestAnimationFrame","realign","instance","overlay_id","_trapFocus","back","respondToWindow","dimension","_align","edge","borderHeight","borderWidth","offsetWidth","triggers","overlaysArray","countEl","useStagingEnvironment","countLabel","getCountLabel","useStaging","commentCount","COLLAPSIBLE_BREAKPOINTS","Footer","footerEl","shouldCollapse","_toggles","setup","toggleEls","NamesElement","namesList","author","DateElement","forwardRef","Intl","DateTimeFormat","formatToParts","dateFormatted","suppressHydrationWarning","Bylines","dateFirst","dateElRef","oDateRef","ODate","updateEventName","ftDateFormatWarning","methodName","setInterval","printers","printer","_renderDateFor","formattedDate","firstChild","nodeValue","dateEls","BasicCard","isBrowser","useWindow","useScrollPosition","effect","deps","throttleTimeout","callBack","currPos","prevPos","useLayoutEffect","handleScroll","params","queryParams","allParams","excludeFromQueryParams","setQuery","useMemo","defaultValue","optionsArray","queryParamValue","validatedQueryParam","filteredQueryParam","filteredState","sendSpoorEvent","dayOffsets","TrajectoryLineChart","allData","datePickerError","setDatePickerError","hideUnselected","setHideUnselected","countryRegionList","getAlternativeCountryNames","formattedAreas","areaCodeToDisplay","formatDataForChart","dataForChart","minYValueAboveZero","maxYValue","maxXValue","minXValue","dayPassedNthValueForEachCountry","emptyAreasToDisplay","lastTick","xTickValues","xTickIncrement","yBase10Min","log10","integerTickCutoffPoint","decimalPlaces","getNumberOfDecimalPlacesForTicks","tooltipDecimalPlaces","firstNonZeroTickValue","generatedYTickValues","generateYTickValues","tickValue","toPrecision","generatedXTickDateValues","xTickLabelsToHide","headerText","subheadText","xAxisText","moment","tz","sourceText","queryParamAreaName","titleText","emptyInputErrorMessage","maxSelectedErrorMessage","LineChart","accentBar","xValue","formatTime","dayPassedNthValue","addDaysToDate","formatValueForTooltip","backgroundColor","borderRadius","boxShadow","showYAxisFade","newSelectedAreas","mainOptions","additionalOptions","closeOptionsOverlay","selectedStartDate","updateDateRange","inputDateFormat","storedDateFormat","isDateRange","labelText","setError","onApplyCallback","showAdditionalOptionsByDefault","logo","instanceOf","useOverlay","headingShaded","visuallyHideTitle","oLayerContext","oOverlayOptions","isShowing","setIsShowing","setOverlay","oOverlay","showOverlay","hideOverlay","oOverlayContentsSelector","DatePickerInput","selectedDate","fallbackDate","inputRef","setFallbackDate","supportsDateType","setSupportsDateType","inputName","inputDateFormatter","inputDateParser","onChange","DatePickerInputSelectFallback","DatePickerInputDaySelect","selectedDay","DatePickerInputMonthSelect","selectedMonth","DatePickerInputYearSelect","selectedYear","minDateDay","minDateMonth","minDateYear","maxDateDay","maxDateMonth","maxDateYear","yearRange","numberOfdaysInMonth","filteredListOfDaysInMonth","monthIndex","newMonthIndex","AxisArrows","paddingRight","paddingLeft","refX","refY","markerUnits","markerWidth","markerHeight","orient","markerEnd","useDelaunay","tooltipEvents","filteredData","delaunay","Delaunay","pathString","onMouseMove","tooltipDataObject","tooltipPosition","mx","my","pointIndex","pointData","pointDistance","hypot","isHighlighted","tooltipContent","labelData","dataY","dataX","re","formatSpecifier","FormatSpecifier","symbol","comma","precision","legendCategoricalData","precisionPrefix","precisionRound","precisionFixed","linearish","prestep","maxIter","basis","v0","v1","v2","v3","t3","rgbGamma","rgbSpline","spline","colors","updateLinearScale","createLinearScale","arrayLikeToArray","minLen","discreteValues","randomBlock","safeCounter","api","fingerprint","slug","counter","globalCount","mimeTypes","isBuffer","own","chunks","subcontent","eventIndex","entered","startPosition","startPositions","tokenizer","_tokenizer","contentType","childEvents","jumps","gaps","defineSkip","isInFirstContentOfListItem","_gfmTasklistFirstContentOfListItem","lineIndex","otherIndex","otherEvent","subevents","more","_container","_movePreviousLineEndings","initializeFactory","createResolver","notText","atBreak","resolveAllLineSuffixes","extraResolver","bufferIndex","tabs","_index","_bufferIndex","characters","char","entity","asciiDigit","asciiControl","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","markerType","labelEscape","seen","marker","atFirstTitleBreak","atTitleBreak","titleEscape","thematicBreak","sequence","paths","symbolMap","1","2","3","4","5","6","7","8","9","0","numberMap","pluralForm","plurals","pluralize","weekdaysParseExact","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","forms","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","minWeekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","translate","ll","lll","llll","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$2","40","isUpper","eifelerRegelAppliesToNumber","translateSingular","special","relativeTimeWithSingular","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","12","13","numbersNouns","numberNoun","hundred","ten","numberAsNoun","processHoursFunction","nominative","accusative","genitive","invertAxis","plotScale","newScale","newRange","defaultTickComponent","tickProps","fullLengthTicks","tickLabelPadding","allTickValues","tickLabels","tickPositions","tickValuesToUse","tickScale","scaleOrdinal","labelLines","numberOfLabelLines","responsiveTickLength","maxTickWidth","calculateTickLabelProps","initialProps","tickLabel","generatedTickLabelProps","heightOfTicksWithLabels","heightOfAxisLabel","totalAxisHeight","totalAxisWidth","initialCss","axisBandingElement","structure","baseIsNative","getRawTag","objectToString","symToStringTag","Bars","barHeight","barWidth","barFill","DelaunayListener","hoveredXPosition","hoveredYPosition","cy","LabelArrow","halfWidth","DotLabel","labelPoints","generatedLabelProps","Dot","topSpacing","hollow","labelColor","defaultLabelPoints","aboveTopOfChart","labelDotDiameter","Dots","labelVariable","marginTop","marginLeft","paddingTop","leftSpacing","DotsForSeries","dataForSeries","dotData","scaledYAxisIntersectionX","offChartLabelXPosition","MemoisedDots","DotsWithHighlights","Legend","renderedLegend","customScale","customSeriesNames","scaleSqrt","scaleThreshold","dragStart","dragEnd","dragMove","onMouseUp","onMouseDown","onTouchStart","onTouchMove","onTouchEnd","linearRegression","lr","sumX","sumY","sumXY","sumXX","sumYY","slope","intercept","r2","RegressionLine","xCoords","yCoords","trendline","lowestX","highestX","textTwitter","textFacebook","textLinkedIn","textWhatsApp","separated","OShare","services","rel","headerClasses","OHeader","data-o-header--no-js","controls","opening","togglePosition","expanded","addEvents","menu","hide","animate","menus","handleCloseEvents","scope","allFocusable","handleKeydown","handleMouseenter","handleMouseleave","handleFocus","relatedTarget","handleTab","firstEl","lastEl","removeEvents","addDrawerToggles","drawerEl","handleClose","openingControl","toggleCallback","toggleTabbing","firstFocusable","control","drawerToggle","tabIndex","addSubmenuToggles","submenus","submenu","isEnabled","buttons","wrapperWidth","oUtils","scrollable","onclick","currentSelection","currentSelectionEnd","checkCurrentPosition","remaining","distance","viewportOffset","lastScrollDepth","lastAnimationFrame","lastStickyState","debouncedScrollEnd","cancelAnimationFrame","scrollStart","handleFrame","scrollDepth","isActive","isScrollingDown","startLoop","Analytics","cutsTheMustard","pageData","asset_type","contentId","microsite_name","OTracking","server","apiKey","delegate","eventPropertiesToCollect","getEventProperties","eventProperties","handleClickEvent","eventData","clickEvent","clickElement","domPathTokens","source_id","elementsToTrack","sendAllEventsFromQueue","nextLink","phase","returned","TRACKING_ATTRIBUTES","decorateEventData","viewedEl","getContextData","contextData","IntersectionObserver","observer","observe","change","isIntersecting","intersectionRatio","unobserve","md","listUnicodeChar","useImgAltText","Ad","reserve","showAdsLabel","smallFormat","mediumFormat","largeFormat","extraFormat","data-o-ads-name","data-o-ads-targeting","data-o-ads-formats-default","data-o-ads-formats-small","data-o-ads-formats-medium","data-o-ads-formats-large","data-o-ads-formats-extra","aria-hidden","TopAd","MiddleAd","OnwardJourney","urlBase","sections","setSections","sectionP","section","data-g-component","linkPageUrl","OComments","streamEl","eventSeenTimes","renderAndAuthenticate","renderComments","authenticateUser","login","authenticationToken","embed","renderSignedInMessage","fetchOptions","auth","fetchJsonWebToken","userHasValidSession","rootUrl","scriptElement","Coral","createStreamEmbed","storyURL","storyID","rootURL","autoRender","onAny","publishEvent","stagingWarning","purgeCacheAfterCompletion","onOverlayReady","purgeJwtCache","onOverlayClosed","success","displayNamePrompt","mappedEvent","coralEventMap","oComments","oCommentsEventOptions","oCommentsEvent","oTracking","disableOTracking","oTrackingEventOptions","isWithheld","oTrackingEvent","editButtonId","signedInMessage","oldSignedInMessage","searchParams","append","credentials","OFooter","data-o-footer--no-js","aria-label","data-trackable","aria-controls","data-o-tracking-do-not-track","oViewport","lastBreakpoint","oGrid","perfMark","performance","LUX","msPerformance","webkitPerformance","mozPerformance","mark","clearMarks","buildPerfmarkSuffix","eventDetailsObj","creativeId","cancelable","once","getMarksForEvents","markNames","getEntriesByName","marks","mName","pMarks","markName","startTime","mNameNoSuffix","pMarks2","clearPerfMarks","metricsDefinitions","groupsToClear","getEntriesByType","relevantGroupsMarks","spoorAction","eventsToClear","getNavigationPerfMarks","desiredMarks","navMarksArray","navMarks","setupMetrics","disableSampling","eDef","inSample","sampleSize","sendMetricsOnEvent","eMarkMap","listenOnInitialised","sendMetrics","multiple","eventDetails","navigation","eventPayload","timings","advert","correlator","oAds","getCorrelator","creative","isEmpty","markPageChange","breakpoints$1","messenger","getNearestBreakpoint","winner","dims","breakpointDims","setCurrent","getCurrent","init$2","brps","argsIndex","isOn","groupCollapsed","groupEnd","table","attributeTable","hop","isStorage","isWindow","isPlainObject","isNonEmptyString","deep","pairing","pair","hashObj","attach","scriptUrl","async","errorcb","autoRemove","hasRun","processCallback","getReferrer","dehyphenise","hyphen","parseAttributeName","getLocation","getQueryString","getQueryParamByName","getTimestamp","iframeToSlotName","iframeWindow","slotName","iframes","contentWindow","buildObjectFromArray","targetObject","prev","getVersion","metricsSampleThreshold","responsive","PartnerContent","sizes","MediumRectangle","Rectangle","WideSkyscraper","Leaderboard","SuperLeaderboard","HalfPage","Billboard","Portrait","AdhesionBanner","MicroBar","Button2","Responsive","extra","large","medium","small","refresh","inview","displayLabelWithBorders","fetchDeclaritiveConfig","fetchCanonicalURL","canonical","canonicalTag","Config","access","clear","config$1","init$1","VALID_SIZE_STRINGS","VALID_COLLAPSE_MODES","attributeParsers","mapping","responsiveSizes","screenName","responsiveFormats","lazyLoadThreshold","collapseEmpty","convertLazyLoadBooleanToObject","onChangeBreakpoint","slot","screensize","hasValidSize","uncollapse","collapse","Slot","initLazyLoading","cfg","slotConfig","outer","addContainer","setName","defer","center","outOfPage","companion","outerEl","allowedLabels","adsLabelPos","modifier","parseAttributeConfig","lazyLoadObserver","initLazyLoad","centerContainer","labelContainer","initResponsive","getSlotSizes","getSlotTargeting","getSlotGPTSize","viewportMargin","getAttributes","maximise","setFormatLoaded","addClass","clearSlot","destroySlot","submitImpression","submitGptImpression","details","insertAdjacentHTML","lastChild","isSlot","debug$1","unitName","lineItemId","Slots","invokeMethodOnSlots","findFormatBySize","onBreakpointChange","isCurrentlyResponsive","stillWantsResponsive","initRefresh","refreshCount","clearInterval","initRendered","initPostMessage","slotClass","flushLazyLoading","lazyLoadingObservers","lazyLoadingConfig","lazyLoadingObserver","rootMargin","intersectionRect","Targeting","methods","socialReferrer","getSocialReferrer","socialFlow","OADS_VERSION","sf","socialflow","codedValue","lookup","google","socref","searchTerm","qs","queryText","searchField","kw","ts","SEARCH_PARAMS","filterNestedParams","nestedParams","keysToStrip","childParams","URLSearchParams","delete","stripUrlParams","filters","DEFAULT_LAZY_LOAD","fetchMarginPercent","renderMarginPercent","mobileScaling","gptConfig","loadGPT","onReady","slotMethods","onRender","onRefresh","onResize","googletag","cmd","nonPersonalized","pubads","onRenderEnded","enableCompanions","setRenderingMode","setPageTargeting","setPageCollapseEmpty","enableLazyLoad","enableServices","setTargeting","setRequestNonPersonalizedAds","lazyLoadConf","rendering","enableSyncRendering","enableSingleRequest","enableAsyncRendering","targetingData","clearPageTargetingForKey","clearTargeting","collapseEmptyDivs","companions","disableInitialLoad","companionAds","setRefreshUnfilledSlots","defineSlot","addServices","setCollapseEmpty","setURL","iframe","gptSlotId","getSlotId","domId","getDomId","iframeId","getId","slotTargeting","getTargetingMap","serviceName","iFrameEl","setUnitName","defineOutOfPageSlot","defineSizeMapping","gptSlot","pubadsReady","updatePageTargeting","sizeMapping","addSize","build","destroySlots","addService","setCollapseEmptyDiv","impressionURL","trackingUrlElement","oAdsImpressionUrl","updateCorrelator","clearPageTargeting","override","hasGPTLoaded","apiReady","conf","Ads","addDOMEventListener","configOptions","disableConsentCookie","consents","behavioral","getConsents","programmatic","initLibrary","updateTargeting","isInitialised","removeDOMEventListener","initAll","consentCookie","ListCard","Epilogue","icons","CustomArticleHead","oDate","NavigationHeaderMobileDropdownButton","buttonRef","currentText","NavigationHeaderMobileDropdown","openLinksInNewWindow","closeDropdown","dropdownRef","aria-current","NavigationHeader","setIsOpen","StickyHeader","isSticky","setSticky","stickyShadow","setStickyShadow","stickyTop","stickyHeight","containerBottom","breakpointHeight","wrapperClasses","minHeight","extraDetail","OptionsPanel","MainOptions","AdditionalOptions","showAdditionalOptions","setShowAdditionalOptions","breakpointInitialised","buttonIcon","optionsButtonText","OptionsOverlay","overlayState","OverlayContents","portalContainer","ReactDOM","createPortal","DatePicker","selectedEndDate","fallbackStartDate","setFallbackStartDate","fallbackEndDate","setFallbackEndDate","startDateRef","endDateRef","storedDateFormatter","minDateInputMaxDate","readableDateFormat","weekBeforeMaxDate","endDate","formattedStartDate","parsedEndDate","formattedEndDate","RenderSuggestion","AreaLookup","exclusionList","maxSelectedAreas","placeholder","selectionErrorMessage","selectedAreasValues","formattedAreaList","addAreaToSelection","newArea","removeAreaFromSelection","areaToRemove","isError","maxSelectedAreasReached","showClearButton","showSearchIcon","searchIconPosition","selectedValues","validateInput","renderSuggestion","onSelectCallback","onSubmitCallback","exclusionMatch","onSelectedValueRemove","onEmptyInputBackspace","onClickCallback","errorMessageOverride","blurInputOnSuggestionSubmit","usingSelectedValues","defaultGetSuggestions","defaultGetSuggestionValue","SelectedValue","AutosuggestSearch","customSelectedValueComponent","selectedValueComponent","getSuggestionValue","onClearFunction","activeSuggestion","setActiveSuggestion","setSearchValue","suggestions","setSuggestions","errorState","setErrorState","focusOnInput","onSelectedValueRemoveWrapper","isErrorState","errorMessageState","onSubmit","validateInputResult","callbackReturn","blur","onSuggestionsFetchRequested","onSuggestionsClearRequested","onSuggestionSelected","suggestionValue","suggestion","onSuggestionHighlighted","focusInputOnSuggestionClick","inputProps","onKeyDown","onClearCallback","getBaseLog","getLogMidpoint","sumOfLogValues","generateTickValueSeries","initialValues","nextValueFunction","defaultSeriesGeneratorFunction","filterTicksAbove","seriesGenerator","filteredTickSeries","previousTick","formatDate","dateDiff","getAverage","numbers","valueAccessor","rollingDate","numberOfDays","filteredByDate","generateRollingAverageTimeSeries","entry","offsets","getMaxYValueFromSelectedAreas","casesOrDeaths","filteredOffsets","pM","dataForEachCountry","filteredForValues","withPer100K","offsetEntry","dayPassedNthValueWithOffset","withDaysSincePassedNthValue","daysSincePassedNthValue","validValues","firstDateWithPositiveValue","filteredAfterFirstPositiveValue","countriesPassedNthValue","dataForEachCountryFiltered","dataFromSelection","dataForAxisRange","flatMap","rotatedData","multiplier","areaEntry","rawData","yMinOverride","yMaxOverride","xMinOverride","xMaxOverride","yValueExtent","transformedYMin","transformedYMax","scaleLog","scaleLinear","xValueExtent","scaleTime","colorScaleDomain","colorScaleDefaultRange","GChartcolour","lineColorScale","nonEmptyYVariable","seriesToShow","nonEmptySeriesToHighlight","lineEndPositions","seriesToShowFiltered","showAllSeriesAsGhostLines","voronoiData","MultipleLineTickLabel","orientations","offsetStartingPercentage","offsetType","mask","hoveredLabelsColorScale","additionalProps","ecvotes","axisArrowsStyles","AxisBanding","bands","scalePointOffset","minScale","maxScale","tickValuesForBanding","newValues","renderedBands","reIsUint","thisArg","objectProto","nativeKeys","nativeMax","nonEnumShadows","arrayLikeKeys","inherited","isObjectLike","isArrayLike","isArrayLikeObject","isArguments","iteratee","baseTimes","skipIndexes","isIndex","assignValue","objValue","isPrototype","Ctor","isLength","assigner","customizer","copyObject","baseKeys","otherArgs","baseRest","sources","guard","isIterateeCall","assignInDefaults","srcValue","baseKeysIn","nativeKeysIn","isProto","assignInWith","srcIndex","keysIn","setUTCSeconds","MapCache","memoize","memoized","Cache","TooltipWithBounds","initialLeft","initialTop","parentRect","getRects","heightOfRect","rectShapePropTypes","withBoundingRectsPropTypes","Tooltip","withBoundingRects","sourceStylesMap","ChartFooter","sourcePositionX","sourcePositionY","noOfSourceLines","sourceCopyrightPositionY","sourceTopPositionY","toNumber","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","MapShim","getIndex","class_1","__entries__","ctx","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","delay","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","disconnect","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","SVGGraphicsElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","_this","observation","WeakMap","ResizeObserver","FramePrint","mmWidth","mmHeight","pxWidth","pxHeight","FrameSocial","FrameVideo","legendCategorical","textHeight","diametre","radius","yOffset","xOffset","labelWidth","cummulative","newX","legendThreshold","valueExtent","yAxis","sides","rotate","legendMagnitude","circleScale","transformedYScale","lineStroke","lineStrokeWidth","Labels","flatData","rest","positionedLabels","labelX","labelY","MemoisedLabels","LabelsWithHighlights","AxisFade","fullWidth","fullHeight","offsetTypesForOrientations","stopColor","labelLine","valueof","frequency","defaultStyles","_ref$offsetLeft","_ref$offsetTop","_ref$style","_ref$unstyled","unstyled","_ref$applyPositionSty","applyPositionStyle","initialTooltipState","_useState","tooltipState","setTooltipState","showTooltip","showArgs","hideTooltip","transformPow","transformSqrt","transformSquare","powish","updateSqrtScale","createSqrtScale","DEFAULT_CENTER","_ref$sides","_ref$size","_ref$center","_ref$rotate","radians","degrees","degreesToRadians","side","Polygon","_ref3$sides","_ref3$size","_ref3$center","_ref3$rotate","pointsToRender","getPoints","_ref4","AppContainer","warnAboutHMRDisabled","only","shouldWrapWithAppContainer","areComponentsEqual","setConfig","cold","configureComponent","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Component","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createFactory","createRef","lazy","_ctor","_status","_result","compare","useDebugValue","useImperativeHandle","hasChildNodes","hydrate","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","onError","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","setAttributeNS","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","pb","qb","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","xb","_valueTracker","getOwnPropertyDescriptor","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","activeElement","Gb","Fb","Hb","defaultSelected","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","transition","Xb","Yb","Zb","$b","ac","bc","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","oc","qc","topLevelType","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","gridArea","lineClamp","kd","ld","setProperty","nd","menuitem","br","col","hr","keygen","wbr","od","pd","qd","rd","sd","td","ud","vd","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","cancelBubble","persist","isTrusted","ge","he","ie","je","ke","le","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","se","ve","which","te","ctrlKey","altKey","metaKey","ue","we","password","tel","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageX","pageY","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","kf","onSelect","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","charCode","pf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","qf","16","17","18","19","27","32","33","34","35","36","37","38","39","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","repeat","dataTransfer","tf","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","vg","wg","suspenseConfig","payload","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","contextType","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","getDerivedStateFromError","hi","pendingContext","ni","qi","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","renderingStartTime","tailExpiration","tailMode","mi","ri","wasMultiple","ti","ui","wi","xi","yi","zi","Ai","Bi","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","createRange","setStart","removeAllRanges","addRange","setEnd","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","jk","kk","unmount","Lj","lk","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","_s","_e","_arr","_n","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","checkPropTypes","subClass","superClass","singleMatcher","multiMatcher","decodeComponents","components","encodedURI","replaceMap","customDecodeURIComponent","bail","trough","vfile","frozen","attachers","transformers","freezeIndex","assertUnfrozen","freeze","addPlugin","addList","addPreset","plugin","assertParser","newable","Compiler","assertCompiler","assertNode","assertDone","process","processSync","destination","executor","pipeline","contents","asyncName","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","getProperty","copyIsArray","fns","middleware","invoked","VMessage","VFile","origin","fatal","messages","fail","VMessagePrototype","parseOrigin","ruleId","proc","cwd","assertPart","part","sep","assertNonEmpty","assertPath","dirname","basename","extname","stem","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","normalizeString","firstNonSlashEnd","seenNonSlash","extIndex","unmatchedSlash","startDot","startPart","preDotState","joined","fromMarkdown","extensions","mdastExtensions","extension","configure","canContainEols","autolink","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","blockQuote","characterEscape","characterReference","codeFenced","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","identifier","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","listItem","spread","_spread","listItemValue","getData","listOrdered","listUnordered","reference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitdata","characterEscapeValue","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","safeFromInt","codeFencedFence","onexithardbreak","referenceType","fragment","lineEnding","resource","setextHeadingLineSequence","setextHeadingText","listStart","tokenStack","listStack","prepareList","stringifyPosition","tailIndex","tailEvent","firstBlankLineIndex","atMarker","containerBalance","listSpread","and","ordered","compiler","postprocess","preprocessor","flow","combineExtensions","createTokenizer","miniflat","initializer","contentStart","contentInitial","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","containerState","continuation","inspectContinue","inspectLess","currentConstruct","concrete","flowContinue","inspectDone","interrupt","interruptible","containerConstruct","inspectFlowEnd","_closeFlow","lazyFlowConstruct","inspectLazy","flowEnd","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","continueFlow","documentAfterPeek","disable","initial","flowInitial","afterConstruct","prefixSize","subtokenize","contentEnd","continuationConstruct","contentContinue","prefixed","hook","existing","serializeChunks","sliceChunks","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","constructFactory","construct","addResult","onsuccessfulcheck","main","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","atTab","startIndex","startBufferIndex","endIndex","endBufferIndex","text$1","attention","headingAtx","labelStartImage","labelStartLink","setextUnderline","42","43","48","49","51","52","53","54","55","56","57","62","91","61","95","96","126","92","93","classifyCharacter","movePoint","after","_open","_close","openingSequence","closingSequence","nextEvents","unicodePunctuation","unicodeWhitespace","unicodePunctuationRegex","asciiAtext","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","asciiPunctuation","decodeEntity","asciiHexDigit","_interopDefaultLegacy","decodeEntity__default","numeric","closingFenceConstruct","sizeOpen","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","indentedContentConstruct","afterPrefix","gap","tailExitIndex","headEnterIndex","labelAfter","titleConstruct","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","kind","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","declaration","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","initialSize","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","atCarriageReturn","endPosition","visitWithParents","ast","listNode","selfClosingRe","simpleTagRe","currentParent","selfClosing","getSelfClosing","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","fromIndex","toIndex","indent","virtual","convert","subresult","grandparents","toResult","typeFactory","tests","checks","anyFactory","allFactory","allow","ReactIs","renderer","isValidElementType","nodeProps","getNodeProps","resolveChildren","childNode","isSimpleRenderer","includeNodeIndex","parentChildCount","assignDefined","nodeKey","level","loose","listItemLoose","listLoose","unwrapParagraphs","getListItemChildren","language","inline","columnAlignment","isHeader","isBlock","parsedChildren","mergeNodeChildren","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Lazy","Memo","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","protocols","uri","colon","supportsStringRender","SimpleRenderer","getCoreProps","break","blockquote","linkReference","imageReference","tableHead","tableBody","tableRow","tableCell","textAlign","coreProps","checkbox","readOnly","inlineCode","dangerous","virtualHtml","parsedHtml","cachedGuess","zones","countries","guesses","logError","momentVersion","major","minor","charCodeToInt","unpackBase60","whole","fractional","arrayToInt","mapIndices","indices","unpack","untils","intToUntil","abbrs","Zone","packedString","_set","Country","country_name","zone_names","OffsetAt","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","findChange","low","high","mid","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","guessesOffset","offsetsLength","filteredGuesses","rebuildGuess","intlName","resolvedOptions","timeZone","normalizeName","zoneScore","startYear","userOffsets","zoneScores","getZone","scoreOffsetAt","addZone","packed","normalized","caller","addLink","normal0","normal1","needsOffset","isUnixTimestamp","unpacked","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","offsetAt","dataVersion","_zones","_links","_names","_countries","country_zones","addCountries","zoneExists","didShowError","guess","ignoreCache","zonesForCountry","with_offset","old","abbrWrap","_z","resetZoneWrap","defaultZone","setDefault","webpackContext","req","webpackContextResolve","_react","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_propTypes","_interopRequireDefault","_arrays","_Autowhatever","_theme","ownKeys","enumerableOnly","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_isNativeReflectConstruct","Reflect","sham","Proxy","_getPrototypeOf","alwaysTrue","Autosuggest","_Component","_inherits","Derived","Constructor","protoProps","staticProps","_super","Super","NewTarget","_alwaysRenderSuggestions","alwaysRenderSuggestions","_classCallCheck","justClickedOnSuggestionsContainer","suggestionsContainer","autowhatever","sectionIndex","itemIndex","updateHighlightedSuggestion","pressedSuggestion","justSelectedSuggestion","justMouseEntered","multiSection","_this$props","keepSuggestionsOnSelect","shouldKeepSuggestionsOnSelect","resetHighlightedSuggestion","_this$props2","_this$getSuggestionIn","getSuggestionIndices","findSuggestionElement","suggestionIndex","clickedSuggestion","getSuggestion","clickedSuggestionValue","maybeCallOnChange","closeSuggestions","_this$props3","shouldRenderSuggestions","highlightedSuggestion","getHighlightedSuggestion","shouldRender","isFocused","highlightedSectionIndex","highlightedSuggestionIndex","valueBeforeUpDown","isCollapsed","blurEvent","onMouseEnter","onSuggestionMouseEnter","onMouseLeave","onSuggestionMouseLeave","onSuggestionMouseDown","onSuggestionTouchStart","onSuggestionTouchMove","onSuggestionClick","_ref5","containerProps","renderSuggestionsContainer","getQuery","justPressedUpDown","onDocumentMouseDown","onDocumentMouseUp","itemsContainer","shouldResetHighlighting","highlightFirstSuggestion","willRenderSuggestions","revealSuggestions","prevState","_this$props4","prevValue","_this2","shouldResetValueBeforeUpDown","_this$props5","getSectionSuggestions","_this$state","suggestionElement","startNode","_this$props$inputProp","_this3","_this$props6","renderInputComponent","renderSectionTitle","_this$state2","_onFocus","_onKeyDown","autowhateverInputProps","newHighlightedSectionIndex","newHighlightedItemIndex","getSuggestionValueByIndex","_newValue","willCloseSuggestions","renderSuggestionData","renderItemsContainer","renderItem","renderItemData","getSectionItems","highlightedItemIndex","itemProps","mapToAutowhateverTheme","storeAutowhateverRef","defaultTheme","arrA","arrB","_sectionIterator","_reactThemeable","_SectionTitle","_ItemList","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","emptyObject","Autowhatever","userRef","highlightedItem","isInputFocused","nextPrev","_this$sectionIterator2","sectionIterator","setSectionsItems","setSectionIterator","setTheme","ensureHighlightedItemIsVisible","sectionsItems","sectionsLengths","allSectionsAreEmpty","itemsCount","sectionKeyPrefix","isFirstSection","onHighlightedItemChange","getItemId","storeItemsListReference","itemOffsetRelativeToContainer","offsetParent","renderedItems","renderSections","renderItems","ariaActivedescendant","itemsContainerId","inputComponent","autoComplete","storeInputReference","storeItemsContainerReference","containerOpen","inputOpen","inputFocused","itemsContainerOpen","itemsList","itemFirst","itemHighlighted","sectionContainer","sectionContainerFirst","sectionTitle","sliceIterator","_position","nextNonEmptySectionIndex","_position2","prevNonEmptySectionIndex","isLast","_toConsumableArray","_objectAssign","_objectAssign2","truthy","classNameDecorator","ToObject","ownEnumerableKeys","_compareObjects","SectionTitle","_Item","ItemsList","sectionPrefix","isItemPropsFunction","isFirst","itemKey","itemPropsObj","allItemProps","storeHighlightedItemReference","_objectWithoutProperties","Item","storeItemReference","suggestionsContainerOpen","suggestionsList","suggestionFirst","suggestionHighlighted","maybeMatch","reg","begs","beg","functionRE","expressions","fnRE","searchMatch","SyntaxError","getFunctionCalls","evalFunctionCall","Mexp","formulaEval","pop1","pop2","pop3","disp","postfixEval","UserDefined","Exception","lex","toPostfix","popped","prep","flag","inc","eva","math","asin","atan","acosh","div","fact","tanh","atanh","mod","mul","asinh","sub","sigma","preced","11","14","type0","type1","type1Asterick","type3Asterick","type6","newAr","str1","str2","addToken","changeSignObj","changeSign","closingParObj","openingParObj","ptc","inpStr","allowed","bracToClose","asterick","prevKey","precedence","cToken","cType","cEv","cPre","cShow","hasDec","parsed","isDegree","pro","choice","toRadian","pow10x","sum","sinha","cosha","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Hash","ListCache","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","toSource","reIsHostCtor","funcProto","funcToString","reIsNative","baseGetTag","nativeObjectToString","isOwn","unmasked","uid","coreJsData","maskSrcKey","IE_PROTO","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","assocIndexOf","getMapData","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","trimmedEndIndex","reTrimStart","reWhitespace","_getXAndYFromEvent","screenCTM","getScreenCTM","createSVGPoint","matrixTransform","DEFAULT_POINT","boundingClientRect","topTickLabelProps","AxisTop","rightTickLabelProps","AxisRight","bottomTickLabelProps","AxisBottom","leftTickLabelProps","AxisLeft","BaseComponent","_class","_temp","_React$PureComponent","WrappedComponent","ParentSize","_ref$debounceTime","debounceTime","_ref$ignoreDimensions","ignoreDimensions","_ref$parentSizeStyles","parentSizeStyles","_ref$enableDebounceLe","enableDebounceLeadingCall","animationFrameID","incoming","_entry$contentRect","delta","lo","ascendingComparator","e10","e5","e2","tickStep","step0","step1","LN10","ticker","tickIntervals","tickInterval","bisector","utcTicks","utcTickInterval","timeTicks","timeTickInterval","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","updateTimeScale","createTimeScale","getXAndYFromEvent","useDrag","initialState","callbackRef","setStateCallback","_ref$resetOnStart","resetOnStart","onDragEnd","onDragMove","onDragStart","isDragging","positionPropsRef","_useStateWithCallback","nextState","dragState","setDragStateWithCallback","currState","handleDragStart","handleDragMove","handleDragEnd","Drag","_ref$captureDragArea","captureDragArea","drag","onPointerDown","onPointerMove","onPointerUp","EPSILON","EDGE_STACK","Uint32Array","Delaunator","getX","defaultGetX","getY","defaultGetY","Float64Array","maxTriangles","_triangles","_halfedges","Int32Array","_hashSize","_hullPrev","_hullNext","_hullTri","_hullHash","_ids","_dists","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","i2","minDist","dist","i0x","i0y","i1x","i1y","minRadius","circumradius","i2x","i2y","quicksort","hull","subarray","triangles","halfedges","ax","ay","bx","by","ey","cl","circumcenter","_cx","_cy","_hullStart","hullSize","_hashKey","trianglesLen","_addTriangle","xp","_legalize","pseudoAngle","ar","b0","al","p0","pr","pl","inCircle","hbl","_link","orientIfSure","py","rx","ry","qx","qy","fx","fy","bp","cp","ids","dists","tempDist","swap","xmin","ymin","xmax","ymax","_circumcenters","vectors","_init","circumcenters","x3","y3","inedges","_renderSegment","h0","h1","_project","_clip","cell","cellPolygon","polygon","renderCell","c0","_regioncode","c1","_clipSegment","_step","neighbors","loop","e0","_cell","_clipInfinite","_clipFinite","e1","sx0","sy0","sx1","sy1","_edgecode","_edge","vx0","vy0","vxn","vyn","vx","vy","pointX","pointY","jitter","flatArray","flatIterable","_delaunator","_hullIndex","collinear","bounds","hullIndex","dt","renderHull","trianglePolygon","renderTriangle","eps","getSeededRandom","seed","startTimeMs","startDateMs","updateThresholdScale","createThresholdScale","invertExtent","transformLog","transformExp","exp","transformLogn","transformExpn","pow10","reflect","loggish","logs","pows","log2","logp","powp","updateLogScale","createLogScale","power","prefixExponent","formatDecimal","formatRounded","prefixes","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","minus","nan","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","formatPrefix","ascendingBisect","bisectRight"],"mappings":"aAGE,IAAIA,EAA0BC,OAAyB,iBACvDA,OAAyB,iBACzB,SAAkCC,EAASC,IAuS3C,SAA2BD,EAASC,GACnC,IAAKC,EAAqBF,KAAaG,EAAqBH,GAC3D,OAED,IAAK,IAAII,KADTD,EAAqBH,IAAW,EACXC,EAChBI,OAAOC,UAAUC,eAAeC,KAAKP,EAAaG,KACrDK,EAAUL,GAAYH,EAAYG,IAGV,KAApBM,GAA8C,IAArBC,GAC9BC,IAhTDC,CAAkBb,EAASC,GACvBH,GAAyBA,EAAwBE,EAASC,IAuD/D,IAKIa,EALAC,GAAmB,EAEnBC,EAAiB,uBAEjBC,EAAuB,GAGvBC,EAAoB,GAEpBC,EAAwB,GAG5B,SAASC,EAAiBhB,GACzB,IAAIiB,EAAKC,EAAiBlB,GAC1B,IAAKiB,EAAI,OAAOE,EAChB,IAAIC,EAAK,SAASC,GAsBjB,OArBIJ,EAAGK,IAAIC,QACNL,EAAiBG,IACyC,IAAzDH,EAAiBG,GAASG,QAAQC,QAAQzB,IAC7CkB,EAAiBG,GAASG,QAAQE,KAAK1B,IAGxCc,EAAoB,CAACd,GACrBU,EAAwBW,IAEa,IAAlCJ,EAAGU,SAASF,QAAQJ,IACvBJ,EAAGU,SAASD,KAAKL,KAGlBO,QAAQC,KACP,4BACCR,EACA,0BACArB,GAEFc,EAAoB,IAEdK,EAAoBE,IAExBS,EAAgB,SAAuBC,GAC1C,MAAO,CACNC,cAAc,EACdC,YAAY,EACZC,IAAK,WACJ,OAAOf,EAAoBY,IAE5BI,IAAK,SAASC,GACbjB,EAAoBY,GAAQK,KAI/B,IAAK,IAAIL,KAAQZ,EAEflB,OAAOC,UAAUC,eAAeC,KAAKe,EAAqBY,IACjD,MAATA,GACS,MAATA,GAEA9B,OAAOoC,eAAejB,EAAIW,EAAMD,EAAcC,IA2BhD,OAxBAX,EAAGkB,EAAI,SAAS1C,GAGf,MAFkB,UAAd2C,GAAuBC,EAAa,WACxCjC,IACOY,EAAoBmB,EAAE1C,GAAS6C,KAAKC,GAAoB,SAASC,GAEvE,MADAD,IACMC,KAGP,SAASD,IACRnC,IACkB,YAAdgC,IACEK,EAAmBhD,IACvBiD,EAAqBjD,GAEG,IAArBW,GAA8C,IAApBD,GAC7BE,OAKJY,EAAG0B,EAAI,SAASV,EAAOW,GAEtB,OADW,EAAPA,IAAUX,EAAQhB,EAAGgB,IAClBjB,EAAoB2B,EAAEV,GAAc,EAAPW,IAE9B3B,EAIR,SAAS4B,EAAgBhD,GACxB,IAAIsB,EAAM,CAET2B,sBAAuB,GACvBC,sBAAuB,GACvBC,eAAe,EACfC,eAAe,EACfC,kBAAkB,EAClBC,iBAAkB,GAClBC,MAAO7C,IAA0BV,EAGjCuB,QAAQ,EACRiC,OAAQ,SAASC,EAAKC,GACrB,QAAYC,IAARF,EAAmBnC,EAAI6B,eAAgB,OACtC,GAAmB,mBAARM,EAAoBnC,EAAI6B,cAAgBM,OACnD,GAAmB,iBAARA,EACf,IAAK,IAAIG,EAAI,EAAGA,EAAIH,EAAII,OAAQD,IAC/BtC,EAAI2B,sBAAsBQ,EAAIG,IAAMF,GAAY,kBAC7CpC,EAAI2B,sBAAsBQ,GAAOC,GAAY,cAEnDI,QAAS,SAASL,GACjB,QAAYE,IAARF,EAAmBnC,EAAI8B,eAAgB,OACtC,GAAmB,iBAARK,EACf,IAAK,IAAIG,EAAI,EAAGA,EAAIH,EAAII,OAAQD,IAC/BtC,EAAI4B,sBAAsBO,EAAIG,KAAM,OACjCtC,EAAI4B,sBAAsBO,IAAO,GAEvCM,QAAS,SAASL,GACjBpC,EAAIgC,iBAAiB5B,KAAKgC,IAE3BM,kBAAmB,SAASN,GAC3BpC,EAAIgC,iBAAiB5B,KAAKgC,IAE3BO,qBAAsB,SAASP,GAC9B,IAAIQ,EAAM5C,EAAIgC,iBAAiB7B,QAAQiC,GACnCQ,GAAO,GAAG5C,EAAIgC,iBAAiBa,OAAOD,EAAK,IAEhDE,WAAY,WAEX,OADAC,KAAKhB,kBAAmB,EAChBd,GACP,IAAK,QACJlC,EAAY,IACFL,GAAYsE,EAAQtE,GAC9BwC,EAAa,SACb,MACD,IAAK,QACJ+B,EAA0BvE,GAC1B,MACD,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,SACHwE,EACAA,GAA+B,IAAI9C,KAAK1B,KAS5CyE,MAAOC,EACPC,MAAOC,EACPC,OAAQ,SAASC,GAChB,IAAKA,EAAG,OAAOvC,EACfwC,EAAkBrD,KAAKoD,IAExBE,iBAAkB,SAASF,GAC1BC,EAAkBrD,KAAKoD,IAExBG,oBAAqB,SAASH,GAC7B,IAAIZ,EAAMa,EAAkBtD,QAAQqD,GAChCZ,GAAO,GAAGa,EAAkBZ,OAAOD,EAAK,IAI7CgB,KAAMrE,EAAqBb,IAG5B,OADAU,OAAwBiD,EACjBrC,EAGR,IAAIyD,EAAoB,GACpBxC,EAAY,OAEhB,SAASC,EAAa2C,GACrB5C,EAAY4C,EACZ,IAAK,IAAIvB,EAAI,EAAGA,EAAImB,EAAkBlB,OAAQD,IAC7CmB,EAAkBnB,GAAGxD,KAAK,KAAM+E,GAIlC,IAKIC,EAGA/E,EAAWgF,EAAkBb,EAR7BlE,EAAkB,EAClBC,EAAmB,EACnBqC,EAAqB,GACrB7C,EAAuB,GACvBD,EAAuB,GAM3B,SAASwF,EAAWC,GAEnB,OADgBA,EAAK,KAAOA,GACTA,EAAKA,EAGzB,SAASb,EAASC,GACjB,GAAkB,SAAdpC,EACH,MAAM,IAAIiD,MAAM,0CAIjB,OAFA7E,EAAmBgE,EACnBnC,EAAa,UApPeiD,EA6CL,IA5CvBA,EAAiBA,GAAkB,IAC5B,IAAIC,SAAQ,SAASC,EAASC,GACpC,GAA8B,oBAAnBC,eACV,OAAOD,EAAO,IAAIJ,MAAM,uBAEzB,IACC,IAAInE,EAAU,IAAIwE,eACdC,EAAc3E,EAAoB4E,EAAI,GAAKnF,EAAiB,mBAChES,EAAQ2E,KAAK,MAAOF,GAAa,GACjCzE,EAAQ4E,QAAUR,EAClBpE,EAAQ6E,KAAK,MACZ,MAAOvD,GACR,OAAOiD,EAAOjD,GAEftB,EAAQ8E,mBAAqB,WAC5B,GAA2B,IAAvB9E,EAAQ+E,WACZ,GAAuB,IAAnB/E,EAAQwD,OAEXe,EACC,IAAIJ,MAAM,uBAAyBM,EAAc,qBAE5C,GAAuB,MAAnBzE,EAAQwD,OAElBc,SACM,GAAuB,MAAnBtE,EAAQwD,QAAqC,MAAnBxD,EAAQwD,OAE5Ce,EAAO,IAAIJ,MAAM,uBAAyBM,EAAc,iBAClD,CAEN,IACC,IAAIO,EAASC,KAAKC,MAAMlF,EAAQmF,cAC/B,MAAOlE,GAER,YADAsD,EAAOtD,GAGRqD,EAAQU,SAiNmC5D,MAAK,SAAS4D,GAC3D,IAAKA,EAEJ,OADA7D,EAAaiE,IAA+B,QAAU,QAC/C,KAER1G,EAAuB,GACvB6C,EAAqB,GACrB9C,EAAuBuG,EAAOK,EAC9BrB,EAAmBgB,EAAOM,EAE1BnE,EAAa,WACb,IAAIoE,EAAU,IAAIlB,SAAQ,SAASC,EAASC,GAC3CR,EAAc,CACbO,QAASA,EACTC,OAAQA,MAGVvF,EAAY,GAaZ,OATCwC,EAHa,GAMC,YAAdN,GACqB,IAArBhC,GACoB,IAApBD,GAEAE,IAEMoG,KAnRT,IAA6BnB,EAsS7B,SAAS5C,EAAqBjD,GACxBE,EAAqBF,IAGzBG,EAAqBH,IAAW,EAChCU,IApTF,SAAgCV,GAC/B,IAAIiH,EAASC,SAASC,cAAc,UACpCF,EAAOG,QAAU,QACjBH,EAAOI,IAAM9F,EAAoB4E,EAAI,GAAKnG,EAAU,IAAMgB,EAAiB,iBAE3EkG,SAASI,KAAKC,YAAYN,GAgTzBO,CAAuBxH,IAJvBgD,EAAmBhD,IAAW,EAQhC,SAASY,IACRgC,EAAa,SACb,IAAI6E,EAAWjC,EAEf,GADAA,EAAc,KACTiC,EACL,GAAI1G,EAIH+E,QAAQC,UACNlD,MAAK,WACL,OAAOmC,EAASjE,MAEhB8B,MACA,SAAS6E,GACRD,EAAS1B,QAAQ2B,MAElB,SAAS3E,GACR0E,EAASzB,OAAOjD,UAGb,CACN,IAAI4E,EAAkB,GACtB,IAAK,IAAIhC,KAAMlF,EACVJ,OAAOC,UAAUC,eAAeC,KAAKC,EAAWkF,IACnDgC,EAAgB7F,KAAK4D,EAAWC,IAGlC8B,EAAS1B,QAAQ4B,IAInB,SAAS3C,EAAS4C,GACjB,GAAkB,UAAdjF,EACH,MAAM,IAAIiD,MAAM,2CAEjB,OAGD,SAASiC,EAAiBD,GAGzB,IAAIE,EACA9D,EACA+D,EACAC,EACA5H,EAEJ,SAAS6H,EAAiBC,GAUzB,IATA,IAAIP,EAAkB,CAACO,GACnBC,EAAuB,GAEvBC,EAAQT,EAAgBU,KAAI,SAAS1C,GACxC,MAAO,CACN2C,MAAO,CAAC3C,GACRA,GAAIA,MAGCyC,EAAMnE,OAAS,GAAG,CACxB,IAAIsE,EAAYH,EAAMI,MAClBpI,EAAWmI,EAAU5C,GACrB2C,EAAQC,EAAUD,MAEtB,IADAN,EAAS1G,EAAiBlB,OAGxB4H,EAAOtG,IAAI6B,eAAkByE,EAAOtG,IAAI+B,kBAF1C,CAKA,GAAIuE,EAAOtG,IAAI8B,cACd,MAAO,CACNiF,KAAM,gBACNH,MAAOA,EACPlI,SAAUA,GAGZ,GAAI4H,EAAOtG,IAAIiC,MACd,MAAO,CACN8E,KAAM,aACNH,MAAOA,EACPlI,SAAUA,GAGZ,IAAK,IAAI4D,EAAI,EAAGA,EAAIgE,EAAOpG,QAAQqC,OAAQD,IAAK,CAC/C,IAAI0E,EAAWV,EAAOpG,QAAQoC,GAC1B2E,EAASrH,EAAiBoH,GAC9B,GAAKC,EAAL,CACA,GAAIA,EAAOjH,IAAI4B,sBAAsBlD,GACpC,MAAO,CACNqI,KAAM,WACNH,MAAOA,EAAMM,OAAO,CAACF,IACrBtI,SAAUA,EACVsI,SAAUA,IAG+B,IAAvCf,EAAgB9F,QAAQ6G,KACxBC,EAAOjH,IAAI2B,sBAAsBjD,IAC/B+H,EAAqBO,KACzBP,EAAqBO,GAAY,IAClCG,EAAYV,EAAqBO,GAAW,CAACtI,aAGvC+H,EAAqBO,GAC5Bf,EAAgB7F,KAAK4G,GACrBN,EAAMtG,KAAK,CACVwG,MAAOA,EAAMM,OAAO,CAACF,IACrB/C,GAAI+C,SAKP,MAAO,CACND,KAAM,WACNrI,SAAU8H,EACVP,gBAAiBA,EACjBQ,qBAAsBA,GAIxB,SAASU,EAAYC,EAAGC,GACvB,IAAK,IAAI/E,EAAI,EAAGA,EAAI+E,EAAE9E,OAAQD,IAAK,CAClC,IAAIgF,EAAOD,EAAE/E,IACY,IAArB8E,EAAEjH,QAAQmH,IAAcF,EAAEhH,KAAKkH,IAjFrCnC,IAuFA,IAAIsB,EAAuB,GACvBR,EAAkB,GAClBsB,EAAgB,GAEhBC,EAAwB,WAC3BlH,QAAQC,KACP,4BAA8ByF,EAAOtH,SAAW,yBAIlD,IAAK,IAAIuF,KAAMlF,EACd,GAAIJ,OAAOC,UAAUC,eAAeC,KAAKC,EAAWkF,GAAK,CAGxD,IAAI+B,EAFJtH,EAAWsF,EAAWC,GAIrB+B,EADGjH,EAAUkF,GACJsC,EAAiB7H,GAEjB,CACRqI,KAAM,WACNrI,SAAUuF,GAIZ,IAAIwD,GAAa,EACbC,GAAU,EACVC,GAAY,EACZC,EAAY,GAIhB,OAHI5B,EAAOY,QACVgB,EAAY,yBAA2B5B,EAAOY,MAAMiB,KAAK,SAElD7B,EAAOe,MACd,IAAK,gBACAb,EAAQ4B,YAAY5B,EAAQ4B,WAAW9B,GACtCE,EAAQ6B,iBACZN,EAAa,IAAIvD,MAChB,oCACC8B,EAAOtH,SACPkJ,IAEH,MACD,IAAK,WACA1B,EAAQ4B,YAAY5B,EAAQ4B,WAAW9B,GACtCE,EAAQ6B,iBACZN,EAAa,IAAIvD,MAChB,2CACC8B,EAAOtH,SACP,OACAsH,EAAOgB,SACPY,IAEH,MACD,IAAK,aACA1B,EAAQ8B,cAAc9B,EAAQ8B,aAAahC,GAC1CE,EAAQ+B,mBACZR,EAAa,IAAIvD,MAChB,mBAAqBxF,EAAW,mBAAqBkJ,IAEvD,MACD,IAAK,WACA1B,EAAQgC,YAAYhC,EAAQgC,WAAWlC,GAC3C0B,GAAU,EACV,MACD,IAAK,WACAxB,EAAQiC,YAAYjC,EAAQiC,WAAWnC,GAC3C2B,GAAY,EACZ,MACD,QACC,MAAM,IAAIzD,MAAM,oBAAsB8B,EAAOe,MAE/C,GAAIU,EAEH,OADAvG,EAAa,SACNkD,QAAQE,OAAOmD,GAEvB,GAAIC,EAGH,IAAKhJ,KAFL6I,EAAc7I,GAAYK,EAAUL,GACpCyI,EAAYlB,EAAiBD,EAAOC,iBACnBD,EAAOS,qBAEtB9H,OAAOC,UAAUC,eAAeC,KAC/BkH,EAAOS,qBACP/H,KAGI+H,EAAqB/H,KACzB+H,EAAqB/H,GAAY,IAClCyI,EACCV,EAAqB/H,GACrBsH,EAAOS,qBAAqB/H,KAK5BiJ,IACHR,EAAYlB,EAAiB,CAACD,EAAOtH,WACrC6I,EAAc7I,GAAY8I,GAM7B,IA2BI5E,EA3BAwF,EAA8B,GAClC,IAAK9F,EAAI,EAAGA,EAAI2D,EAAgB1D,OAAQD,IACvC5D,EAAWuH,EAAgB3D,GAE1B1C,EAAiBlB,IACjBkB,EAAiBlB,GAAUsB,IAAI6B,eAE/B0F,EAAc7I,KAAc8I,IAE3B5H,EAAiBlB,GAAUsB,IAAI+B,kBAEhCqG,EAA4BhI,KAAK,CAChCkG,OAAQ5H,EACRwB,QAASN,EAAiBlB,GAAUwB,QAAQmI,QAC5CC,aAAc1I,EAAiBlB,GAAUsB,IAAI6B,gBAMhDX,EAAa,WACbvC,OAAO4J,KAAK/J,GAAsBgK,SAAQ,SAASlK,IACZ,IAAlCE,EAAqBF,IA9jB3B,SAAyBA,UACjBmK,gBAAgBnK,GA8jBrBoK,CAAgBpK,MAKlB,IAqCIqK,EACAC,EAtCAlC,EAAQT,EAAgBoC,QAC5B,KAAO3B,EAAMnE,OAAS,GAGrB,GAFA7D,EAAWgI,EAAMI,MACjBR,EAAS1G,EAAiBlB,GAC1B,CAEA,IAAIkF,EAAO,GAGPiF,EAAkBvC,EAAOtG,IAAIgC,iBACjC,IAAKqE,EAAI,EAAGA,EAAIwC,EAAgBtG,OAAQ8D,KACvCD,EAAKyC,EAAgBxC,IAClBzC,GAcJ,IAZArE,EAAqBb,GAAYkF,EAGjC0C,EAAOtG,IAAIC,QAAS,SAGbL,EAAiBlB,UAGjB+H,EAAqB/H,GAGvB2H,EAAI,EAAGA,EAAIC,EAAOjG,SAASkC,OAAQ8D,IAAK,CAC5C,IAAIyC,EAAQlJ,EAAiB0G,EAAOjG,SAASgG,IACxCyC,KACLlG,EAAMkG,EAAM5I,QAAQC,QAAQzB,KACjB,GACVoK,EAAM5I,QAAQ2C,OAAOD,EAAK,KAQ7B,IAAKlE,KAAY+H,EAChB,GACC9H,OAAOC,UAAUC,eAAeC,KAAK2H,EAAsB/H,KAE3D4H,EAAS1G,EAAiBlB,IAGzB,IADAkK,EAA6BnC,EAAqB/H,GAC7C2H,EAAI,EAAGA,EAAIuC,EAA2BrG,OAAQ8D,IAClDsC,EAAaC,EAA2BvC,IACxCzD,EAAM0D,EAAOjG,SAASF,QAAQwI,KACnB,GAAGrC,EAAOjG,SAASwC,OAAOD,EAAK,GAO9C1B,EAAa,cAEYmB,IAArB0B,IACHzE,EAAiByE,EACjBA,OAAmB1B,GAKpB,IAAK3D,KAHLK,OAAYsD,EAGKkF,EACZ5I,OAAOC,UAAUC,eAAeC,KAAKyI,EAAe7I,KACvDsE,EAAQtE,GAAY6I,EAAc7I,IAKpC,IAAIqK,EAAQ,KACZ,IAAKrK,KAAY+H,EAChB,GACC9H,OAAOC,UAAUC,eAAeC,KAAK2H,EAAsB/H,KAE3D4H,EAAS1G,EAAiBlB,IACd,CACXkK,EAA6BnC,EAAqB/H,GAClD,IAAIsK,EAAY,GAChB,IAAK1G,EAAI,EAAGA,EAAIsG,EAA2BrG,OAAQD,IAGlD,GAFAqG,EAAaC,EAA2BtG,GACxC8D,EAAKE,EAAOtG,IAAI2B,sBAAsBgH,GAC9B,CACP,IAA+B,IAA3BK,EAAU7I,QAAQiG,GAAY,SAClC4C,EAAU5I,KAAKgG,GAGjB,IAAK9D,EAAI,EAAGA,EAAI0G,EAAUzG,OAAQD,IAAK,CACtC8D,EAAK4C,EAAU1G,GACf,IACC8D,EAAGwC,GACF,MAAOvH,GACJ6E,EAAQ+C,WACX/C,EAAQ+C,UAAU,CACjBlC,KAAM,iBACNrI,SAAUA,EACVwK,aAAcN,EAA2BtG,GACzCyG,MAAO1H,IAGJ6E,EAAQiD,eACPJ,IAAOA,EAAQ1H,KAS1B,IAAKiB,EAAI,EAAGA,EAAI8F,EAA4B7F,OAAQD,IAAK,CACxD,IAAIgF,EAAOc,EAA4B9F,GACvC5D,EAAW4I,EAAKhB,OAChB9G,EAAoB8H,EAAKpH,QACzBd,EAAwBV,EACxB,IACCmB,EAAoBnB,GACnB,MAAO2C,GACR,GAAiC,mBAAtBiG,EAAKgB,aACf,IACChB,EAAKgB,aAAajH,GACjB,MAAO+H,GACJlD,EAAQ+C,WACX/C,EAAQ+C,UAAU,CACjBlC,KAAM,oCACNrI,SAAUA,EACVqK,MAAOK,EACPC,cAAehI,IAGZ6E,EAAQiD,eACPJ,IAAOA,EAAQK,GAEhBL,IAAOA,EAAQ1H,QAGjB6E,EAAQ+C,WACX/C,EAAQ+C,UAAU,CACjBlC,KAAM,sBACNrI,SAAUA,EACVqK,MAAO1H,IAGJ6E,EAAQiD,eACPJ,IAAOA,EAAQ1H,IAOxB,GAAI0H,EAEH,OADA7H,EAAa,QACNkD,QAAQE,OAAOyE,GAGvB,GAAI7F,EACH,OAAOiD,EAAiBD,GAAS/E,MAAK,SAASmI,GAI9C,OAHArD,EAAgBuC,SAAQ,SAAS9J,GAC5B4K,EAAKnJ,QAAQzB,GAAY,GAAG4K,EAAKlJ,KAAK1B,MAEpC4K,KAKT,OADApI,EAAa,QACN,IAAIkD,SAAQ,SAASC,GAC3BA,EAAQ4B,MArYFE,CADPD,EAAUA,GAAW,IA0YtB,SAASf,IACR,GAAIjC,EAIH,OAHKnE,IAAWA,EAAY,IAC5BmE,EAA4BsF,QAAQvF,GACpCC,OAA8Bb,GACvB,EAIT,SAASY,EAA0BvE,GAC7BC,OAAOC,UAAUC,eAAeC,KAAKC,EAAWL,KACpDK,EAAUL,GAAYsE,EAAQtE,IAIhC,IAAIkB,EAAmB,GAGvB,SAASC,EAAoBnB,GAG5B,GAAGkB,EAAiBlB,GACnB,OAAOkB,EAAiBlB,GAAU6K,QAGnC,IAAIjD,EAAS1G,EAAiBlB,GAAY,CACzC4D,EAAG5D,EACH8E,GAAG,EACH+F,QAAS,GACTvJ,IAAK0B,EAAgBhD,GACrBwB,SAAUT,EAAwBD,EAAmBA,EAAoB,GAAIC,GAC7EY,SAAU,IAUX,OANA2C,EAAQtE,GAAUI,KAAKwH,EAAOiD,QAASjD,EAAQA,EAAOiD,QAAS7J,EAAiBhB,IAGhF4H,EAAO9C,GAAI,EAGJ8C,EAAOiD,QAKf1J,EAAoB2J,EAAIxG,EAGxBnD,EAAoBuF,EAAIxF,EAGxBC,EAAoB4J,EAAI,SAASF,EAAS9I,EAAMiJ,GAC3C7J,EAAoB8J,EAAEJ,EAAS9I,IAClC9B,OAAOoC,eAAewI,EAAS9I,EAAM,CAAEE,YAAY,EAAMC,IAAK8I,KAKhE7J,EAAoB+J,EAAI,SAASL,GACX,oBAAXM,QAA0BA,OAAOC,aAC1CnL,OAAOoC,eAAewI,EAASM,OAAOC,YAAa,CAAEhJ,MAAO,WAE7DnC,OAAOoC,eAAewI,EAAS,aAAc,CAAEzI,OAAO,KAQvDjB,EAAoB2B,EAAI,SAASV,EAAOW,GAEvC,GADU,EAAPA,IAAUX,EAAQjB,EAAoBiB,IAC/B,EAAPW,EAAU,OAAOX,EACpB,GAAW,EAAPW,GAA8B,iBAAVX,GAAsBA,GAASA,EAAMiJ,WAAY,OAAOjJ,EAChF,IAAIkJ,EAAKrL,OAAOsL,OAAO,MAGvB,GAFApK,EAAoB+J,EAAEI,GACtBrL,OAAOoC,eAAeiJ,EAAI,UAAW,CAAErJ,YAAY,EAAMG,MAAOA,IACtD,EAAPW,GAA4B,iBAATX,EAAmB,IAAI,IAAIoJ,KAAOpJ,EAAOjB,EAAoB4J,EAAEO,EAAIE,EAAK,SAASA,GAAO,OAAOpJ,EAAMoJ,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRnK,EAAoBuK,EAAI,SAAS9D,GAChC,IAAIoD,EAASpD,GAAUA,EAAOyD,WAC7B,WAAwB,OAAOzD,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAzG,EAAoB4J,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR7J,EAAoB8J,EAAI,SAASU,EAAQC,GAAY,OAAO3L,OAAOC,UAAUC,eAAeC,KAAKuL,EAAQC,IAGzGzK,EAAoB4E,EAAI,GAGxB5E,EAAoBwF,EAAI,WAAa,OAAO/F,GAIrCI,EAAiB,IAAjBA,CAAsBG,EAAoB0K,EAAI,K,kBCt0BrDjE,EAAOiD,QAAU,EAAQ,IAAR,I,6BCjBJ,SAASiB,EAAgBb,EAAGlF,GAMzC,OALA+F,EAAkB7L,OAAO8L,gBAAkB,SAAyBd,EAAGlF,GAErE,OADAkF,EAAEe,UAAYjG,EACPkF,IAGcA,EAAGlF,G,+EC8C5B,IAAIkG,EAEJ,WACE,SAASA,EAAWzE,GAClBnD,KAAK6H,cAA8BvI,IAAnB6D,EAAQ2E,QAA+D3E,EAAQ2E,OAC/F9H,KAAK+H,KAAO,GACZ/H,KAAKgI,IAAM,EACXhI,KAAKiI,MAAQ9E,EAAQ8E,MAErBjI,KAAKmH,IAAMhE,EAAQgE,IACnBnH,KAAKkI,UAAY/E,EAAQ+E,UACzBlI,KAAKmI,OAAS,KAGhB,IAAIC,EAASR,EAAW/L,UAiExB,OA/DAuM,EAAOC,OAAS,SAAgBC,GAI9B,GAAItI,KAAKgI,KAAOhI,KAAK6H,SAAW,KAAQ,IAAO,EAAG,CAChD,IAEIM,EAFAI,EAjCV,SAA4BpF,GAC1B,IAAIqF,EAAM/F,SAASC,cAAc,SAQjC,OAPA8F,EAAIC,aAAa,eAAgBtF,EAAQgE,UAEnB7H,IAAlB6D,EAAQ8E,OACVO,EAAIC,aAAa,QAAStF,EAAQ8E,OAGpCO,EAAI1F,YAAYL,SAASiG,eAAe,KACjCF,EAwBQG,CAAmB3I,MAK5BmI,EADuB,IAArBnI,KAAK+H,KAAKvI,OACHQ,KAAKmI,OAELnI,KAAK+H,KAAK/H,KAAK+H,KAAKvI,OAAS,GAAGoJ,YAG3C5I,KAAKkI,UAAUW,aAAaN,EAAMJ,GAClCnI,KAAK+H,KAAK1K,KAAKkL,GAGjB,IAAIC,EAAMxI,KAAK+H,KAAK/H,KAAK+H,KAAKvI,OAAS,GAEvC,GAAIQ,KAAK6H,SAAU,CACjB,IAAIiB,EAnEV,SAAqBN,GACnB,GAAIA,EAAIM,MAEN,OAAON,EAAIM,MAMb,IAAK,IAAIvJ,EAAI,EAAGA,EAAIkD,SAASsG,YAAYvJ,OAAQD,IAC/C,GAAIkD,SAASsG,YAAYxJ,GAAGyJ,YAAcR,EAExC,OAAO/F,SAASsG,YAAYxJ,GAuDhB0J,CAAYT,GAExB,IAKE,IAAIU,EAAsC,MAAvBZ,EAAKa,WAAW,IAAqC,KAAvBb,EAAKa,WAAW,GAGjEL,EAAMM,WAAWd,EASjBY,EAAe,EAAIJ,EAAMO,SAAS7J,QAClC,MAAOvB,GACH,QAKNuK,EAAI1F,YAAYL,SAASiG,eAAeJ,IAG1CtI,KAAKgI,OAGPI,EAAOkB,MAAQ,WAEbtJ,KAAK+H,KAAKtC,SAAQ,SAAU+C,GAC1B,OAAOA,EAAIe,WAAWC,YAAYhB,MAEpCxI,KAAK+H,KAAO,GACZ/H,KAAKgI,IAAM,GAGNJ,EA7ET,GCgjBe,MAtmBf,SAAqB6B,GAkUnB,SAASC,EAAEhD,EAAGrE,EAAGpE,GACf,IAAIqE,EAAID,EAAEsH,OAAOC,MAAMC,GACvBxH,EAAIC,EACJ,IAAI+B,EAAI/B,EAAE9C,OACNiH,EAAIC,EAAElH,OAEV,OAAQiH,GACN,KAAK,EACL,KAAK,EACH,IAAInC,EAAI,EAER,IAAKoC,EAAI,IAAMD,EAAI,GAAKC,EAAE,GAAK,IAAKpC,EAAID,IAAKC,EAC3CjC,EAAEiC,GAAKwF,EAAEpD,EAAGrE,EAAEiC,GAAIrG,GAAG0L,OAGvB,MAEF,QACE,IAAII,EAAIzF,EAAI,EAEZ,IAAKjC,EAAI,GAAIiC,EAAID,IAAKC,EACpB,IAAK,IAAI+C,EAAI,EAAGA,EAAIZ,IAAKY,EACvBhF,EAAE0H,KAAOD,EAAEpD,EAAEW,GAAK,IAAK/E,EAAEgC,GAAIrG,GAAG0L,OAMxC,OAAOtH,EAGT,SAASyH,EAAEpD,EAAGrE,EAAGpE,GACf,IAAIqE,EAAID,EAAE8G,WAAW,GAGrB,OAFA,GAAK7G,IAAMA,GAAKD,EAAIA,EAAEsH,QAAQR,WAAW,IAEjC7G,GACN,KAAK,GACH,OAAOD,EAAE2H,QAAQC,EAAG,KAAOvD,EAAEiD,QAE/B,KAAK,GACH,OAAOjD,EAAEiD,OAAStH,EAAE2H,QAAQC,EAAG,KAAOvD,EAAEiD,QAE1C,QACE,GAAI,EAAI,EAAI1L,GAAK,EAAIoE,EAAEjF,QAAQ,MAAO,OAAOiF,EAAE2H,QAAQC,GAAI,KAAOvD,EAAEyC,WAAW,GAAK,GAAK,MAAQzC,EAAEiD,QAGvG,OAAOjD,EAAIrE,EAGb,SAAS6H,EAAExD,EAAGrE,EAAGpE,EAAGqE,GAClB,IAAI+B,EAAIqC,EAAI,IACRD,EAAI,EAAIpE,EAAI,EAAIpE,EAAI,EAAIqE,EAE5B,GAAI,MAAQmE,EAAG,CACbC,EAAIrC,EAAEjH,QAAQ,IAAK,GAAK,EACxB,IAAIkH,EAAID,EAAE8F,UAAUzD,EAAGrC,EAAE7E,OAAS,GAAGmK,OAErC,OADArF,EAAID,EAAE8F,UAAU,EAAGzD,GAAGiD,OAASrF,EAAI,IAC5B,IAAM8F,GAAK,IAAMA,GAAKC,EAAE/F,EAAG,GAAK,WAAaA,EAAIA,EAAIA,EAG9D,GAAI,IAAM8F,GAAK,IAAMA,IAAMC,EAAEhG,EAAG,GAAI,OAAOA,EAE3C,OAAQoC,GACN,KAAK,KACH,OAAO,KAAOpC,EAAE8E,WAAW,IAAM,WAAa9E,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAE8E,WAAW,GAAK,WAAa9E,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAE8E,WAAW,GAAK,WAAa9E,EAAIA,EAAIA,EAExD,KAAK,KACH,GAAI,MAAQA,EAAE8E,WAAW,GAAI,MAE/B,KAAK,IACL,KAAK,IACH,MAAO,WAAa9E,EAAIA,EAE1B,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAIA,EAExC,KAAK,KACL,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAI,OAASA,EAAIA,EAErD,KAAK,IACH,GAAI,KAAOA,EAAE8E,WAAW,GAAI,MAAO,WAAa9E,EAAIA,EACpD,GAAI,EAAIA,EAAEjH,QAAQ,aAAc,IAAK,OAAOiH,EAAE2F,QAAQM,EAAI,gBAAkBjG,EAC5E,MAEF,KAAK,IACH,GAAI,KAAOA,EAAE8E,WAAW,GAAI,OAAQ9E,EAAE8E,WAAW,IAC/C,KAAK,IACH,MAAO,eAAiB9E,EAAE2F,QAAQ,QAAS,IAAM,WAAa3F,EAAI,OAASA,EAAE2F,QAAQ,OAAQ,YAAc3F,EAE7G,KAAK,IACH,MAAO,WAAaA,EAAI,OAASA,EAAE2F,QAAQ,SAAU,YAAc3F,EAErE,KAAK,GACH,MAAO,WAAaA,EAAI,OAASA,EAAE2F,QAAQ,QAAS,kBAAoB3F,EAE5E,MAAO,WAAaA,EAAI,OAASA,EAAIA,EAEvC,KAAK,IACH,MAAO,WAAaA,EAAI,YAAcA,EAAIA,EAE5C,KAAK,KACH,GAAI,KAAOA,EAAE8E,WAAW,GAAI,MAE5B,MAAO,oBADP7E,EAAID,EAAE8F,UAAU9F,EAAEjH,QAAQ,IAAK,KAAK4M,QAAQ,QAAS,IAAIA,QAAQ,gBAAiB,YAClD,WAAa3F,EAAI,gBAAkBC,EAAID,EAEzE,KAAK,KACH,OAAOkG,EAAGC,KAAKnG,GAAKA,EAAE2F,QAAQS,EAAI,aAAepG,EAAE2F,QAAQS,EAAI,UAAYpG,EAAIA,EAEjF,KAAK,IAIH,OAFAhC,GADAiC,EAAID,EAAE8F,UAAU,IAAIR,QACdvM,QAAQ,KAAO,EAEbkH,EAAE6E,WAAW,GAAK7E,EAAE6E,WAAW9G,IACrC,KAAK,IACHiC,EAAID,EAAE2F,QAAQU,EAAG,MACjB,MAEF,KAAK,IACHpG,EAAID,EAAE2F,QAAQU,EAAG,SACjB,MAEF,KAAK,IACHpG,EAAID,EAAE2F,QAAQU,EAAG,MACjB,MAEF,QACE,OAAOrG,EAGX,MAAO,WAAaA,EAAI,OAASC,EAAID,EAEvC,KAAK,KACH,IAAK,IAAMA,EAAEjH,QAAQ,SAAU,GAAI,MAErC,KAAK,IAIH,OAHAiF,GAAKgC,EAAIqC,GAAGlH,OAAS,GAGbiH,GAFRnC,GAAK,KAAOD,EAAE8E,WAAW9G,GAAKgC,EAAE8F,UAAU,EAAG9H,GAAKgC,GAAG8F,UAAUzD,EAAEtJ,QAAQ,IAAK,GAAK,GAAGuM,QAExER,WAAW,IAAwB,EAAlB7E,EAAE6E,WAAW,KAC1C,KAAK,IACH,GAAI,IAAM7E,EAAE6E,WAAW,GAAI,MAE7B,KAAK,IACH9E,EAAIA,EAAE2F,QAAQ1F,EAAG,WAAaA,GAAK,IAAMD,EACzC,MAEF,KAAK,IACL,KAAK,IACHA,EAAIA,EAAE2F,QAAQ1F,EAAG,YAAc,IAAMmC,EAAI,UAAY,IAAM,OAAS,IAAMpC,EAAE2F,QAAQ1F,EAAG,WAAaA,GAAK,IAAMD,EAAE2F,QAAQ1F,EAAG,OAASA,EAAI,OAAS,IAAMD,EAG5J,OAAOA,EAAI,IAEb,KAAK,IACH,GAAI,KAAOA,EAAE8E,WAAW,GAAI,OAAQ9E,EAAE8E,WAAW,IAC/C,KAAK,IACH,OAAO7E,EAAID,EAAE2F,QAAQ,SAAU,IAAK,WAAa3F,EAAI,eAAiBC,EAAI,YAAcA,EAAID,EAE9F,KAAK,IACH,MAAO,WAAaA,EAAI,iBAAmBA,EAAE2F,QAAQW,EAAI,IAAMtG,EAEjE,QACE,MAAO,WAAaA,EAAI,qBAAuBA,EAAE2F,QAAQ,gBAAiB,IAAIA,QAAQW,EAAI,IAAMtG,EAEpG,MAEF,KAAK,IACL,KAAK,IACH,GAAI,KAAOA,EAAE8E,WAAW,IAAM,MAAQ9E,EAAE8E,WAAW,GAAI,MAEzD,KAAK,IACL,KAAK,IACH,IAAI,IAAOyB,EAAGJ,KAAK9D,GAAI,OAAO,OAASpC,EAAIoC,EAAEyD,UAAUzD,EAAEtJ,QAAQ,KAAO,IAAI+L,WAAW,GAAKe,EAAExD,EAAEsD,QAAQ,UAAW,kBAAmB3H,EAAGpE,EAAGqE,GAAG0H,QAAQ,kBAAmB,YAAc3F,EAAE2F,QAAQ1F,EAAG,WAAaA,GAAKD,EAAE2F,QAAQ1F,EAAG,QAAUA,EAAE0F,QAAQ,QAAS,KAAO3F,EACxQ,MAEF,KAAK,IACH,GAAIA,EAAI,WAAaA,GAAK,MAAQA,EAAE8E,WAAW,GAAK,OAAS9E,EAAI,IAAMA,EAAG,MAAQpG,EAAIqE,GAAK,MAAQ+B,EAAE8E,WAAW,KAAO,EAAI9E,EAAEjH,QAAQ,YAAa,IAAK,OAAOiH,EAAE8F,UAAU,EAAG9F,EAAEjH,QAAQ,IAAK,IAAM,GAAG4M,QAAQa,EAAI,gBAAkBxG,EAGvO,OAAOA,EAGT,SAASgG,EAAE3D,EAAGrE,GACZ,IAAIpE,EAAIyI,EAAEtJ,QAAQ,IAAMiF,EAAI,IAAM,KAC9BC,EAAIoE,EAAEyD,UAAU,EAAG,IAAM9H,EAAIpE,EAAI,IAErC,OADAA,EAAIyI,EAAEyD,UAAUlM,EAAI,EAAGyI,EAAElH,OAAS,GAC3BsL,EAAE,IAAMzI,EAAIC,EAAIA,EAAE0H,QAAQe,EAAI,MAAO9M,EAAGoE,GAGjD,SAAS2I,EAAGtE,EAAGrE,GACb,IAAIpE,EAAIiM,EAAE7H,EAAGA,EAAE8G,WAAW,GAAI9G,EAAE8G,WAAW,GAAI9G,EAAE8G,WAAW,IAC5D,OAAOlL,IAAMoE,EAAI,IAAMpE,EAAE+L,QAAQiB,EAAI,YAAYd,UAAU,GAAK,IAAM9H,EAAI,IAG5E,SAAS6I,EAAExE,EAAGrE,EAAGpE,EAAGqE,EAAG+B,EAAGoC,EAAGnC,EAAGyF,EAAG1C,EAAG8D,GACpC,IAAK,IAAkBf,EAAdgB,EAAI,EAAGC,EAAIhJ,EAAM+I,EAAIE,IAAKF,EACjC,OAAQhB,EAAImB,EAAEH,GAAGrP,KAAKyP,EAAG9E,EAAG2E,EAAGpN,EAAGqE,EAAG+B,EAAGoC,EAAGnC,EAAGyF,EAAG1C,EAAG8D,IAClD,UAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,KACH,MAEF,QACEE,EAAIjB,EAIV,GAAIiB,IAAMhJ,EAAG,OAAOgJ,EAmBtB,SAASI,EAAE/E,GAGT,YADA,KADAA,EAAIA,EAAEgF,UACWZ,EAAI,KAAMpE,EAAI,mBAAsBA,EAAI0D,EAAI,GAAKA,EAAI,EAAGU,EAAIpE,GAAK0D,EAAI,GAC/EqB,EAGT,SAASD,EAAE9E,EAAGrE,GACZ,IAAIpE,EAAIyI,EAKR,GAJA,GAAKzI,EAAEkL,WAAW,KAAOlL,EAAIA,EAAE0L,QAE/B1L,EAAI,CADAA,GAGA,EAAIqN,EAAG,CACT,IAAIhJ,EAAI4I,GAAG,EAAG7I,EAAGpE,EAAGA,EAAG0N,EAAGC,EAAG,EAAG,EAAG,EAAG,QACtC,IAAWtJ,GAAK,iBAAoBA,IAAMD,EAAIC,GAGhD,IAAI+B,EA5jBN,SAASwH,EAAEnF,EAAGrE,EAAGpE,EAAGqE,EAAG+B,GACrB,IAAK,IAAgC8G,EAAGC,EAAiBU,EAAuEC,EAAmCC,EAA1JvF,EAAI,EAAGnC,EAAI,EAAGyF,EAAI,EAAG1C,EAAI,EAASgE,EAAI,EAAGY,EAAI,EAAMC,EAAIJ,EAAIX,EAAI,EAAG1K,EAAI,EAAGoG,EAAI,EAAGsF,EAAI,EAAG1N,EAAI,EAAG+M,EAAIvN,EAAEuB,OAAQ4M,EAAIZ,EAAI,EAAMa,EAAI,GAAI3K,EAAI,GAAIuI,EAAI,GAAIS,EAAI,GAAOjK,EAAI+K,GAAI,CAI5K,GAHAJ,EAAInN,EAAEkL,WAAW1I,GACjBA,IAAM2L,GAAK,IAAM9H,EAAI+C,EAAI0C,EAAItD,IAAM,IAAMnC,IAAM8G,EAAI,KAAO9G,EAAI,GAAK,IAAK+C,EAAI0C,EAAItD,EAAI,EAAG+E,IAAKY,KAExF,IAAM9H,EAAI+C,EAAI0C,EAAItD,EAAG,CACvB,GAAIhG,IAAM2L,IAAM,EAAIvF,IAAMwF,EAAIA,EAAErC,QAAQsC,EAAG,KAAM,EAAID,EAAE1C,OAAOnK,QAAS,CACrE,OAAQ4L,GACN,KAAK,GACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,MAEF,QACEiB,GAAKpO,EAAEsO,OAAO9L,GAGlB2K,EAAI,GAGN,OAAQA,GACN,KAAK,IAKH,IAHAD,GADAkB,EAAIA,EAAE1C,QACAR,WAAW,GACjB2C,EAAI,EAECrN,IAAMgC,EAAGA,EAAI+K,GAAI,CACpB,OAAQJ,EAAInN,EAAEkL,WAAW1I,IACvB,KAAK,IACHqL,IACA,MAEF,KAAK,IACHA,IACA,MAEF,KAAK,GACH,OAAQV,EAAInN,EAAEkL,WAAW1I,EAAI,IAC3B,KAAK,GACL,KAAK,GACH4D,EAAG,CACD,IAAK6H,EAAIzL,EAAI,EAAGyL,EAAIE,IAAKF,EACvB,OAAQjO,EAAEkL,WAAW+C,IACnB,KAAK,GACH,GAAI,KAAOd,GAAK,KAAOnN,EAAEkL,WAAW+C,EAAI,IAAMzL,EAAI,IAAMyL,EAAG,CACzDzL,EAAIyL,EAAI,EACR,MAAM7H,EAGR,MAEF,KAAK,GACH,GAAI,KAAO+G,EAAG,CACZ3K,EAAIyL,EAAI,EACR,MAAM7H,GAMd5D,EAAIyL,GAKV,MAEF,KAAK,GACHd,IAEF,KAAK,GACHA,IAEF,KAAK,GACL,KAAK,GACH,KAAO3K,IAAM2L,GAAKnO,EAAEkL,WAAW1I,KAAO2K,KAK1C,GAAI,IAAMU,EAAG,MACbrL,IAMF,OAHAqL,EAAI7N,EAAEkM,UAAU1L,EAAGgC,GACnB,IAAM0K,IAAMA,GAAKkB,EAAIA,EAAErC,QAAQwC,EAAI,IAAI7C,QAAQR,WAAW,IAElDgC,GACN,KAAK,GAIH,OAHA,EAAItE,IAAMwF,EAAIA,EAAErC,QAAQsC,EAAG,KAC3BlB,EAAIiB,EAAElD,WAAW,IAGf,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACHtC,EAAIxE,EACJ,MAEF,QACEwE,EAAI4F,EAMR,GAFAhO,GADAqN,EAAID,EAAExJ,EAAGwE,EAAGiF,EAAGV,EAAG/G,EAAI,IAChB7E,OACN,EAAI8L,IAAsBU,EAAId,EAAE,EAAGY,EAAzBjF,EAAI6C,EAAE+C,EAAGJ,EAAGF,GAAmB9J,EAAGsJ,EAAGC,EAAGnN,EAAG2M,EAAG/G,EAAG/B,GAAI+J,EAAIxF,EAAE/B,KAAK,SAAK,IAAWkH,GAAK,KAAOvN,GAAKqN,EAAIE,EAAErC,QAAQnK,UAAY4L,EAAI,EAAGU,EAAI,KAC5I,EAAIrN,EAAG,OAAQ2M,GACjB,KAAK,IACHiB,EAAIA,EAAErC,QAAQ0C,EAAI1B,GAEpB,KAAK,IACL,KAAK,IACL,KAAK,GACHc,EAAIO,EAAI,IAAMP,EAAI,IAClB,MAEF,KAAK,IAEHA,GADAO,EAAIA,EAAErC,QAAQ2C,EAAI,UACV,IAAMb,EAAI,IAClBA,EAAI,IAAM1B,GAAK,IAAMA,GAAKC,EAAE,IAAMyB,EAAG,GAAK,YAAcA,EAAI,IAAMA,EAAI,IAAMA,EAC5E,MAEF,QACEA,EAAIO,EAAIP,EAAG,MAAQxJ,IAAWZ,GAAKoK,EAAVA,EAAa,SACnCA,EAAI,GACX,MAEF,QACEA,EAAID,EAAExJ,EAAGqH,EAAErH,EAAGgK,EAAGF,GAAIL,EAAGxJ,EAAG+B,EAAI,GAGnC4F,GAAK6B,EACLA,EAAIK,EAAItF,EAAIqF,EAAIf,EAAI,EACpBkB,EAAI,GACJjB,EAAInN,EAAEkL,aAAa1I,GACnB,MAEF,KAAK,IACL,KAAK,GAEH,GAAI,GAAKhC,GADT4N,GAAK,EAAIxF,EAAIwF,EAAErC,QAAQsC,EAAG,IAAMD,GAAG1C,QACpBnK,QAAS,OAAQ,IAAM0M,IAAMf,EAAIkB,EAAElD,WAAW,GAAI,KAAOgC,GAAK,GAAKA,GAAK,IAAMA,KAAO1M,GAAK4N,EAAIA,EAAErC,QAAQ,IAAK,MAAMxK,QAAS,EAAI8L,QAAK,KAAYU,EAAId,EAAE,EAAGmB,EAAGhK,EAAGqE,EAAGiF,EAAGC,EAAGlK,EAAElC,OAAQ8C,EAAG+B,EAAG/B,KAAO,KAAO7D,GAAK4N,EAAIL,EAAErC,QAAQnK,UAAY6M,EAAI,QAAalB,EAAIkB,EAAElD,WAAW,GAAIiC,EAAIiB,EAAElD,WAAW,GAAIgC,GAC9S,KAAK,EACH,MAEF,KAAK,GACH,GAAI,MAAQC,GAAK,KAAOA,EAAG,CACzBV,GAAK2B,EAAIpO,EAAEsO,OAAO9L,GAClB,MAGJ,QACE,KAAO4L,EAAElD,WAAW1K,EAAI,KAAOiD,GAAKwI,EAAEmC,EAAGlB,EAAGC,EAAGiB,EAAElD,WAAW,KAEhEgD,EAAItF,EAAIqF,EAAIf,EAAI,EAChBkB,EAAI,GACJjB,EAAInN,EAAEkL,aAAa1I,IAIzB,OAAQ2K,GACN,KAAK,GACL,KAAK,GACH,KAAO9G,EAAIA,EAAI,EAAI,IAAM,EAAI6G,GAAK,MAAQ7I,GAAK,EAAI+J,EAAE7M,SAAWqH,EAAI,EAAGwF,GAAK,MAC5E,EAAIf,EAAIsB,GAAK1B,EAAE,EAAGmB,EAAGhK,EAAGqE,EAAGiF,EAAGC,EAAGlK,EAAElC,OAAQ8C,EAAG+B,EAAG/B,GACjDsJ,EAAI,EACJD,IACA,MAEF,KAAK,GACL,KAAK,IACH,GAAI,IAAMrH,EAAI+C,EAAI0C,EAAItD,EAAG,CACvBmF,IACA,MAGJ,QAIE,OAHAA,IACAG,EAAI9N,EAAEsO,OAAO9L,GAEL2K,GACN,KAAK,EACL,KAAK,GACH,GAAI,IAAM/D,EAAIZ,EAAInC,EAAG,OAAQ+G,GAC3B,KAAK,GACL,KAAK,GACL,KAAK,EACL,KAAK,GACHU,EAAI,GACJ,MAEF,QACE,KAAOX,IAAMW,EAAI,KAErB,MAEF,KAAK,EACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACH,IAAM1E,EAAI/C,EAAImC,IAAMI,EAAIsF,EAAI,EAAGJ,EAAI,KAAOA,GAC1C,MAEF,KAAK,IACH,GAAI,IAAM1E,EAAI/C,EAAImC,EAAIoG,GAAK,EAAIX,EAAG,OAAQzL,EAAIyL,GAC5C,KAAK,EACH,MAAQb,GAAK,KAAOpN,EAAEkL,WAAW1I,EAAI,KAAOoM,EAAIxB,GAElD,KAAK,EACH,MAAQY,IAAMY,EAAIZ,GAEtB,MAEF,KAAK,GACH,IAAM5E,EAAI/C,EAAImC,IAAMyF,EAAIzL,GACxB,MAEF,KAAK,GACH,IAAM6D,EAAIyF,EAAI1C,EAAIZ,IAAMI,EAAI,EAAGkF,GAAK,MACpC,MAEF,KAAK,GACL,KAAK,GACH,IAAMzH,IAAM+C,EAAIA,IAAM+D,EAAI,EAAI,IAAM/D,EAAI+D,EAAI/D,GAC5C,MAEF,KAAK,GACH,IAAMA,EAAI/C,EAAIyF,GAAKtD,IACnB,MAEF,KAAK,GACH,IAAMY,EAAI/C,EAAIyF,GAAKtD,IACnB,MAEF,KAAK,GACH,IAAMY,EAAI/C,EAAImC,GAAKsD,IACnB,MAEF,KAAK,GACH,GAAI,IAAM1C,EAAI/C,EAAImC,EAAG,CACnB,GAAI,IAAM0E,EAAG,OAAQ,EAAIE,EAAI,EAAIY,GAC/B,KAAK,IACH,MAEF,QACEd,EAAI,EAERpB,IAGF,MAEF,KAAK,GACH,IAAMzF,EAAIyF,EAAI1C,EAAIZ,EAAIyF,EAAIJ,IAAMA,EAAI,GACpC,MAEF,KAAK,GACL,KAAK,GACH,KAAM,EAAIzE,EAAIZ,EAAIsD,GAAI,OAAQzF,GAC5B,KAAK,EACH,OAAQ,EAAI8G,EAAI,EAAInN,EAAEkL,WAAW1I,EAAI,IACnC,KAAK,IACH6D,EAAI,GACJ,MAEF,KAAK,IACH7F,EAAIgC,EAAG6D,EAAI,GAGf,MAEF,KAAK,GACH,KAAO8G,GAAK,KAAOC,GAAK5M,EAAI,IAAMgC,IAAM,KAAOxC,EAAEkL,WAAW1K,EAAI,KAAOiD,GAAKzD,EAAEkM,UAAU1L,EAAGgC,EAAI,IAAKsL,EAAI,GAAIzH,EAAI,IAIxH,IAAMA,IAAM+H,GAAKN,GAGrBE,EAAIZ,EACJA,EAAID,EACJ3K,IAKF,GAAI,GAFJhC,EAAIiD,EAAElC,QAEK,CAET,GADAqH,EAAIxE,EACA,EAAIiJ,SAA2C,KAArCU,EAAId,EAAE,EAAGxJ,EAAGmF,EAAGH,EAAGiF,EAAGC,EAAGnN,EAAG6D,EAAG+B,EAAG/B,KAAoB,KAAOZ,EAAIsK,GAAGxM,QAAS,OAAOkL,EAAIhJ,EAAIuI,EAGzG,GAFAvI,EAAImF,EAAE/B,KAAK,KAAO,IAAMpD,EAAI,IAExB,GAAM0I,EAAIyC,EAAG,CAGf,OAFA,IAAMzC,GAAKC,EAAE3I,EAAG,KAAOmL,EAAI,GAEnBA,GACN,KAAK,IACHnL,EAAIA,EAAEsI,QAAQ8C,EAAI,YAAcpL,EAChC,MAEF,KAAK,IACHA,EAAIA,EAAEsI,QAAQ+C,EAAG,sBAAwBrL,EAAEsI,QAAQ+C,EAAG,aAAerL,EAAEsI,QAAQ+C,EAAG,iBAAmBrL,EAGzGmL,EAAI,GAIR,OAAOnC,EAAIhJ,EAAIuI,EA8PP4B,CAAEY,EAAGxO,EAAGoE,EAAG,EAAG,GAKtB,OAJA,EAAIiJ,SAAmD,KAA7ChJ,EAAI4I,GAAG,EAAG7G,EAAGpG,EAAGA,EAAG0N,EAAGC,EAAGvH,EAAE7E,OAAQ,EAAG,EAAG,MAAqB6E,EAAI/B,IACxE,GACJuK,EAAI,EACJjB,EAAID,EAAI,EACDtH,EAGT,IAAImI,EAAK,QACLF,EAAI,YACJ7B,EAAK,OACLF,EAAK,UACLM,EAAK,sBACLhB,EAAK,SACLI,EAAI,oBACJ0C,EAAK,qBACLI,EAAI,aACJD,EAAK,gBACLpC,EAAI,qBACJgC,EAAK,kBACLzB,EAAK,eACLN,EAAK,eACLI,EAAK,8BACLH,EAAK,mCACLN,EAAK,sBACLsB,EAAI,EACJD,EAAI,EACJkB,EAAI,EACJzC,EAAI,EACJqC,EAAI,GACJlB,EAAI,GACJD,EAAI,EACJR,EAAI,KACJ8B,EAAI,EAKR,OAHApB,EAAEwB,IApEF,SAASC,EAAEvG,GACT,OAAQA,GACN,UAAK,EACL,KAAK,KACH4E,EAAIC,EAAE/L,OAAS,EACf,MAEF,QACE,GAAI,mBAAsBkH,EAAG6E,EAAED,KAAO5E,OAAO,GAAI,iBAAoBA,EAAG,IAAK,IAAIrE,EAAI,EAAGpE,EAAIyI,EAAElH,OAAQ6C,EAAIpE,IAAKoE,EAC7G4K,EAAEvG,EAAErE,SACCuK,EAAU,IAAJlG,EAGjB,OAAOuG,GAwDTzB,EAAE1N,IAAM2N,OACR,IAAWhC,GAAKgC,EAAEhC,GACX+B,GCzlBT,SAAS0B,EAAQC,GACXA,GACFC,EAAMC,QAAQhF,OAAO8E,EAAQ,KAIjC,IAAIC,EAAQ,CACVC,QAAS,MAEPC,EAAY,SAAmBC,EAASC,EAASC,EAAWtQ,EAASuQ,EAAMC,EAAQnO,EAAQyH,EAAI2G,EAAOC,GACxG,OAAQN,GAEN,KAAK,EAED,OAAQC,EAAQrE,WAAW,IACzB,KAAK,GAID,OADAiE,EAAMC,QAAQhF,OAAOmF,EAAU,KACxB,GAIX,KAAK,IAID,GAA8B,KAA1BA,EAAQrE,WAAW,GACrB,MAAO,GAKf,MAIJ,KAAK,EAED,GAAW,IAAPlC,EAAU,OAAOuG,EA1Cb,QA2CR,MAIJ,KAAK,EAED,OAAQvG,GAEN,KAAK,IACL,KAAK,IAGD,OADAmG,EAAMC,QAAQhF,OAAOoF,EAAU,GAAKD,GAC7B,GAGX,QAEI,OAAOA,GAAkB,IAAPK,EA5DhB,QA4DuC,IAKnD,KAAM,EAEFL,EAAQ5D,MAlEHkE,UAkEiBrI,QAAQyH,KAuIvB,EAlIG,SAAqB/J,QACrB7D,IAAZ6D,IAAuBA,EAAU,IACrC,IACI4K,EADA5G,EAAMhE,EAAQgE,KAAO,WAGF7H,IAAnB6D,EAAQuI,SACVqC,EAAgB,CACdrC,OAAQvI,EAAQuI,SAIpB,IAAIsC,EAAS,IAAI,EAAOD,GASxB,IAEI7F,EAFA+F,EAAW,GAKb/F,EAAY/E,EAAQ+E,WAAazF,SAASI,KAC1C,IAcEqL,EAdEC,EAAQ1L,SAAS2L,iBAAiB,sBAAwBjH,EAAM,KACpEkH,MAAMxS,UAAU4J,QAAQ1J,KAAKoS,GAAO,SAAUG,GAC/BA,EAAKC,aAAa,gBAAkBpH,GAE1CyC,MAAM,KAAKnE,SAAQ,SAAUvE,GAClC+M,EAAS/M,IAAM,KAGboN,EAAK/E,aAAerB,GACtBA,EAAUpF,YAAYwL,MAQ1BN,EAAOhB,IAAI7J,EAAQqL,cAAnBR,CAAkCV,GAElCY,EAAU,SAAgBO,EAAUC,EAAY5F,EAAO6F,GACrD,IAAIjR,EAAOgR,EAAWhR,KACtB0P,EAAMC,QAAUvE,EAWhBkF,EAAOS,EAAUC,EAAWE,QAExBD,IACFE,EAAMZ,SAASvQ,IAAQ,IAqD7B,IAAImR,EAAQ,CACV1H,IAAKA,EACL2B,MAAO,IAAIlB,EAAW,CACpBT,IAAKA,EACLe,UAAWA,EACXD,MAAO9E,EAAQ8E,MACfH,OAAQ3E,EAAQ2E,SAElBG,MAAO9E,EAAQ8E,MACfgG,SAAUA,EACVa,WAAY,GACZzG,OAAQ6F,GAEV,OAAOW,G,OC7MT,SAASE,EAAoBD,EAAYE,EAAkBC,GACzD,IAAIC,EAAe,GAQnB,OAPAD,EAAWrF,MAAM,KAAKnE,SAAQ,SAAU0J,QACR7P,IAA1BwP,EAAWK,GACbH,EAAiB3R,KAAKyR,EAAWK,IAEjCD,GAAgBC,EAAY,OAGzBD,EAET,IAAIE,EAAe,SAAsBP,EAAOH,EAAYW,GAC1D,IAAIF,EAAYN,EAAM1H,IAAM,IAAMuH,EAAWhR,KAe7C,IARiB,IAAhB2R,QAIqF/P,IAAhCuP,EAAMC,WAAWK,KACrEN,EAAMC,WAAWK,GAAaT,EAAWE,aAGHtP,IAApCuP,EAAMZ,SAASS,EAAWhR,MAAqB,CACjD,IAAI2P,EAAUqB,EAEd,EAAG,CACiBG,EAAMxG,OAAO,IAAM8G,EAAW9B,EAASwB,EAAM/F,OAAO,GAEtEuE,EAAUA,EAAQiC,gBACChQ,IAAZ+N,KCmBE,MAnDf,SAAiBkC,GAYf,IANA,IAEIzD,EAFAxJ,EAAI,EAGJ/C,EAAI,EACJiQ,EAAMD,EAAI/P,OAEPgQ,GAAO,IAAKjQ,EAAGiQ,GAAO,EAE3B1D,EAEe,YAAV,OAHLA,EAAwB,IAApByD,EAAIpG,WAAW5J,IAAmC,IAAtBgQ,EAAIpG,aAAa5J,KAAc,GAA2B,IAAtBgQ,EAAIpG,aAAa5J,KAAc,IAA4B,IAAtBgQ,EAAIpG,aAAa5J,KAAc,MAG9F,OAAZuM,IAAM,KAAgB,IAIpDxJ,EAEe,YAAV,OALLwJ,GAEAA,IAAM,MAGoC,OAAZA,IAAM,KAAgB,IAErC,YAAV,MAAJxJ,IAAyC,OAAZA,IAAM,KAAgB,IAItD,OAAQkN,GACN,KAAK,EACHlN,IAA8B,IAAxBiN,EAAIpG,WAAW5J,EAAI,KAAc,GAEzC,KAAK,EACH+C,IAA8B,IAAxBiN,EAAIpG,WAAW5J,EAAI,KAAc,EAEzC,KAAK,EAEH+C,EAEe,YAAV,OAHLA,GAAyB,IAApBiN,EAAIpG,WAAW5J,MAGsB,OAAZ+C,IAAM,KAAgB,IASxD,SAHAA,EAEe,YAAV,OAHLA,GAAKA,IAAM,MAG+B,OAAZA,IAAM,KAAgB,KACvCA,IAAM,MAAQ,GAAGmN,SAAS,KCF1B,EAjDI,CACjBC,wBAAyB,EACzBC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBC,YAAa,EACbC,QAAS,EACTC,KAAM,EACNC,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,WAAY,EACZC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,EACZC,QAAS,EACTC,MAAO,EACPC,QAAS,EACTC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNC,gBAAiB,EAEjBC,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACfC,YAAa,GCtCA,ICFXC,EAAiB,aACjBC,EAAiB,8BAEjBC,EAAmB,SAA0BlL,GAC/C,OAAkC,KAA3BA,EAAS4B,WAAW,IAGzBuJ,EAAqB,SAA4B3U,GACnD,OAAgB,MAATA,GAAkC,kBAAVA,GAG7B4U,EDjBJ,SAAiB5V,GACf,IAAI8R,EAAQ,GACZ,OAAO,SAAU+D,GAEf,YADmBtT,IAAfuP,EAAM+D,KAAoB/D,EAAM+D,GAAO7V,EAAG6V,IACvC/D,EAAM+D,ICaM,EAAQ,SAAUC,GACvC,OAAOJ,EAAiBI,GAAaA,EAAYA,EAAU7I,QAAQuI,EAAgB,OAAOO,iBAGxF,EAAoB,SAA2B3L,EAAKpJ,GACtD,OAAQoJ,GACN,IAAK,YACL,IAAK,gBAED,GAAqB,iBAAVpJ,EACT,OAAOA,EAAMiM,QAAQwI,GAAgB,SAAUO,EAAOC,EAAIC,GAMxD,OALAC,EAAS,CACPxV,KAAMsV,EACNpE,OAAQqE,EACR3D,KAAM4D,GAEDF,KAMjB,OAAsB,IAAlB,EAAS7L,IAAesL,EAAiBtL,IAAyB,iBAAVpJ,GAAgC,IAAVA,EAI3EA,EAHEA,EAAQ,MAoCnB,SAASoV,EAAoBC,EAAatE,EAAYuE,EAAeC,GACnE,GAAqB,MAAjBD,EACF,MAAO,GAGT,QAAuC/T,IAAnC+T,EAAcE,iBAKhB,OAAOF,EAGT,cAAeA,GACb,IAAK,UAED,MAAO,GAGX,IAAK,SAED,GAA2B,IAAvBA,EAAcG,KAMhB,OALAN,EAAS,CACPxV,KAAM2V,EAAc3V,KACpBkR,OAAQyE,EAAczE,OACtBU,KAAM4D,GAEDG,EAAc3V,KAGvB,QAA6B4B,IAAzB+T,EAAczE,OAAsB,CACtC,IAAIU,EAAO+D,EAAc/D,KAEzB,QAAahQ,IAATgQ,EAGF,UAAgBhQ,IAATgQ,GACL4D,EAAS,CACPxV,KAAM4R,EAAK5R,KACXkR,OAAQU,EAAKV,OACbU,KAAM4D,GAER5D,EAAOA,EAAKA,KAUhB,OANa+D,EAAczE,OAAS,IAStC,OAiDR,SAAgCwE,EAAatE,EAAY2E,GACvD,IAAIC,EAAS,GAEb,GAAIrF,MAAMsF,QAAQF,GAChB,IAAK,IAAIlU,EAAI,EAAGA,EAAIkU,EAAIjU,OAAQD,IAC9BmU,GAAUP,EAAoBC,EAAatE,EAAY2E,EAAIlU,IAAI,QAGjE,IAAK,IAAIqU,KAAQH,EAAK,CACpB,IAAI1V,EAAQ0V,EAAIG,GAEhB,GAAqB,iBAAV7V,EACS,MAAd+Q,QAA4CxP,IAAtBwP,EAAW/Q,GACnC2V,GAAUE,EAAO,IAAM9E,EAAW/Q,GAAS,IAClC2U,EAAmB3U,KAC5B2V,GAAUf,EAAiBiB,GAAQ,IAAM,EAAkBA,EAAM7V,GAAS,UAO5E,IAAIsQ,MAAMsF,QAAQ5V,IAA8B,iBAAbA,EAAM,IAAkC,MAAd+Q,QAA+CxP,IAAzBwP,EAAW/Q,EAAM,IAM7F,CACL,IAAI8V,EAAeV,EAAoBC,EAAatE,EAAY/Q,GAAO,GAEvE,OAAQ6V,GACN,IAAK,YACL,IAAK,gBAEDF,GAAUf,EAAiBiB,GAAQ,IAAMC,EAAe,IACxD,MAGJ,QAMIH,GAAUE,EAAO,IAAMC,EAAe,UAtB5C,IAAK,IAAIC,EAAK,EAAGA,EAAK/V,EAAMyB,OAAQsU,IAC9BpB,EAAmB3U,EAAM+V,MAC3BJ,GAAUf,EAAiBiB,GAAQ,IAAM,EAAkBA,EAAM7V,EAAM+V,IAAO,KA4B1F,OAAOJ,EAtGMK,CAAuBX,EAAatE,EAAYuE,GAG3D,IAAK,WAED,QAAoB/T,IAAhB8T,EAA2B,CAC7B,IAAIY,EAAiBd,EACjBjQ,EAASoQ,EAAcD,GAE3B,OADAF,EAASc,EACFb,EAAoBC,EAAatE,EAAY7L,EAAQqQ,GAK9D,MAGJ,IAAK,UAkBP,GAAkB,MAAdxE,EACF,OAAOuE,EAGT,IAAIY,EAASnF,EAAWuE,GAOxB,YAAkB/T,IAAX2U,GAAyBX,EAAwCD,EAATY,EA2DjE,IASIf,EATAgB,EAAe,6BAUnB,IAAI,EAAkB,SAAyBC,EAAMrF,EAAYsE,GAC/D,GAAoB,IAAhBe,EAAK3U,QAAmC,iBAAZ2U,EAAK,IAA+B,OAAZA,EAAK,SAAkC7U,IAAnB6U,EAAK,GAAGvF,OAClF,OAAOuF,EAAK,GAGd,IAAIC,GAAa,EACbxF,EAAS,GACbsE,OAAS5T,EACT,IAAI+U,EAAUF,EAAK,GAEJ,MAAXE,QAAmC/U,IAAhB+U,EAAQC,KAC7BF,GAAa,EACbxF,GAAUuE,EAAoBC,EAAatE,EAAYuF,GAAS,IAMhEzF,GAAUyF,EAAQ,GAIpB,IAAK,IAAI9U,EAAI,EAAGA,EAAI4U,EAAK3U,OAAQD,IAC/BqP,GAAUuE,EAAoBC,EAAatE,EAAYqF,EAAK5U,GAA6C,KAAzCqP,EAAOzF,WAAWyF,EAAOpP,OAAS,IAE9F4U,IAKFxF,GAAUyF,EAAQ9U,IActB2U,EAAaK,UAAY,EAIzB,IAHA,IACIxB,EADAyB,EAAiB,GAG0B,QAAvCzB,EAAQmB,EAAaO,KAAK7F,KAChC4F,GAAkB,IAClBzB,EAAM,GAkBR,MAAO,CACLrV,KAhBS,EAAWkR,GAAU4F,EAiB9B5F,OAAQA,EACRU,KAAM4D,ICvTN,EAAiBtX,OAAOC,UAAUC,eAElC4Y,EAAmC,wBAMhB,oBAAhBC,YAA8B,IAAgB,MACjDC,EAA4B,wBAAc,IAG1C,GAFgBF,EAAoBG,SAEjB,SAA0BC,GAC/C,IAAIC,EAAS,SAAgBC,EAAOC,GAClC,OAAoB,wBAAcP,EAAoBQ,SAAU,MAAM,SAAUrG,GAC9E,OAAOiG,EAAKE,EAAOnG,EAAOoG,OAK9B,OAAoB,qBAAWF,KAS7BI,EAAe,qCAEfC,EAAqB,SAA4BpR,EAAMgR,GAMzD,IAAIK,EAAW,GAEf,IAAK,IAAIlO,KAAO6N,EACV,EAAejZ,KAAKiZ,EAAO7N,KAC7BkO,EAASlO,GAAO6N,EAAM7N,IAwB1B,OApBAkO,EAASF,GAAgBnR,EAoBlBqR,GAGLC,EAAO,WACT,OAAO,MAGL,EAAS,SAAgBzG,EAAOmG,EAAOO,EAAON,GAChD,IAAIO,EAAoB,OAAVD,EAAiBP,EAAMS,IAAMT,EAAMS,IAAIF,GAI9B,iBAAZC,QAAsDlW,IAA9BuP,EAAMC,WAAW0G,KAClDA,EAAU3G,EAAMC,WAAW0G,IAG7B,IAAIxR,EAAOgR,EAAMG,GACbnG,EAAmB,CAACwG,GACpBrG,EAAY,GAEe,iBAApB6F,EAAM7F,UACfA,EAAYJ,EAAoBF,EAAMC,WAAYE,EAAkBgG,EAAM7F,WAC9C,MAAnB6F,EAAM7F,YACfA,EAAY6F,EAAM7F,UAAY,KAGhC,IAAIT,EAAa,EAAgBM,GAUrBI,EAAaP,EAAOH,EAA4B,iBAAT1K,GACnDmL,GAAaN,EAAM1H,IAAM,IAAMuH,EAAWhR,KAC1C,IAAI2X,EAAW,GAEf,IAAK,IAAIlO,KAAO6N,EACV,EAAejZ,KAAKiZ,EAAO7N,IAAgB,QAARA,GAAiBA,IAAQgO,IAC9DE,EAASlO,GAAO6N,EAAM7N,IAI1BkO,EAASJ,IAAMA,EACfI,EAASlG,UAAYA,EACrB,IAAIuG,EAAmB,wBAAc1R,EAAMqR,GACvCM,EAAoC,wBAAcL,EAAM,MAG5D,OAAoB,wBAAc,WAAU,KAAMK,EAAsBD,IAItEE,EAAyB,GAAiB,SAAUZ,EAAOnG,EAAOoG,GACpE,MAAyB,mBAAdD,EAAMS,IACK,wBAAcb,EAAaM,SAAU,MAAM,SAAUK,GACvE,OAAO,EAAO1G,EAAOmG,EAAOO,EAAON,MAIhC,EAAOpG,EAAOmG,EAAO,KAAMC,MC5HrB,MARf,WACE,IAAK,IAAIY,EAAOC,UAAUtW,OAAQ2U,EAAO,IAAI9F,MAAMwH,GAAOjC,EAAO,EAAGA,EAAOiC,EAAMjC,IAC/EO,EAAKP,GAAQkC,UAAUlC,GAGzB,OAAO,EAAgBO,ICIrB,EAAM,SAAanQ,EAAMgR,GAC3B,IAAIb,EAAO2B,UAEX,GAAa,MAATd,IAAkB,EAAejZ,KAAKiZ,EAAO,OAE/C,OAAO,gBAAc1U,WAAMhB,EAAW6U,GAGxC,IAAI4B,EAAa5B,EAAK3U,OAClBwW,EAAwB,IAAI3H,MAAM0H,GACtCC,EAAsB,GAAKJ,EAC3BI,EAAsB,GAAKZ,EAAmBpR,EAAMgR,GAEpD,IAAK,IAAIzV,EAAI,EAAGA,EAAIwW,EAAYxW,IAC9ByW,EAAsBzW,GAAK4U,EAAK5U,GAIlC,OAAO,gBAAce,MAAM,KAAM0V,IAiH/BC,GAhBF,YAgBe,SAASA,EAAW9B,GAKnC,IAJA,IAAI3E,EAAM2E,EAAK3U,OACXD,EAAI,EACJ2W,EAAM,GAEH3W,EAAIiQ,EAAKjQ,IAAK,CACnB,IAAIqT,EAAMuB,EAAK5U,GACf,GAAW,MAAPqT,EAAJ,CACA,IAAIuD,OAAQ,EAEZ,cAAevD,GACb,IAAK,UACH,MAEF,IAAK,SAED,GAAIvE,MAAMsF,QAAQf,GAChBuD,EAAQF,EAAWrD,QAInB,IAAK,IAAI9G,KAFTqK,EAAQ,GAEMvD,EACRA,EAAI9G,IAAMA,IACZqK,IAAUA,GAAS,KACnBA,GAASrK,GAKf,MAGJ,QAEIqK,EAAQvD,EAIVuD,IACFD,IAAQA,GAAO,KACfA,GAAOC,IAIX,OAAOD,IAGT,SAASE,EAAMtH,EAAY2G,EAAKtG,GAC9B,IAAIH,EAAmB,GACnBE,EAAeH,EAAoBD,EAAYE,EAAkBG,GAErE,OAAIH,EAAiBxP,OAAS,EACrB2P,EAGFD,EAAeuG,EAAIzG,GAG5B,IAAI,EAAO,WACT,OAAO,MAGQ,GAAiB,SAAUgG,EAAOzH,GACjD,OAAoB,wBAAcqH,EAAaM,SAAU,MAAM,SAAUK,GACvE,IAEIE,EAAM,WAKR,IAAK,IAAII,EAAOC,UAAUtW,OAAQ2U,EAAO,IAAI9F,MAAMwH,GAAOjC,EAAO,EAAGA,EAAOiC,EAAMjC,IAC/EO,EAAKP,GAAQkC,UAAUlC,GAGzB,IAAIlF,EAAa,EAAgByF,EAAM5G,EAAQuB,YAM/C,OAHEM,EAAa7B,EAASmB,GAAY,GAG7BnB,EAAQpG,IAAM,IAAMuH,EAAWhR,MAepC8P,EAAU,CACZiI,IAAKA,EACLY,GAdO,WAKP,IAAK,IAAIC,EAAQR,UAAUtW,OAAQ2U,EAAO,IAAI9F,MAAMiI,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFpC,EAAKoC,GAAST,UAAUS,GAG1B,OAAOH,EAAM7I,EAAQuB,WAAY2G,EAAKQ,EAAW9B,KAMjDoB,MAAOA,GAELG,EAAMV,EAAM1X,SAASkQ,GAEzB,IAAImI,EAAoC,wBAAc,EAAM,MAG5D,OAAoB,wBAAc,WAAU,KAAMA,EAAsBD,U,6BCrP1EnS,EAAOiD,QAAU,EAAQ,M,cCH3BjD,EAAOiD,QAAU,SAASgQ,GACzB,IAAKA,EAAeC,gBAAiB,CACpC,IAAIlT,EAAS3H,OAAOsL,OAAOsP,GAEtBjT,EAAOjG,WAAUiG,EAAOjG,SAAW,IACxC1B,OAAOoC,eAAeuF,EAAQ,SAAU,CACvC3F,YAAY,EACZC,IAAK,WACJ,OAAO0F,EAAO9C,KAGhB7E,OAAOoC,eAAeuF,EAAQ,KAAM,CACnC3F,YAAY,EACZC,IAAK,WACJ,OAAO0F,EAAOhE,KAGhB3D,OAAOoC,eAAeuF,EAAQ,UAAW,CACxC3F,YAAY,IAEb2F,EAAOkT,gBAAkB,EAE1B,OAAOlT,I,iBCtBR,YAOmEA,EAAOiD,QAGlE,WAAe,aAEnB,IAAIkQ,EA4HAC,EA1HJ,SAASC,IACL,OAAOF,EAAapW,MAAM,KAAMwV,WASpC,SAASnC,EAAQkD,GACb,OACIA,aAAiBxI,OACyB,mBAA1CzS,OAAOC,UAAU4T,SAAS1T,KAAK8a,GAIvC,SAASC,EAASD,GAGd,OACa,MAATA,GAC0C,oBAA1Cjb,OAAOC,UAAU4T,SAAS1T,KAAK8a,GAIvC,SAASE,EAAW1S,EAAGC,GACnB,OAAO1I,OAAOC,UAAUC,eAAeC,KAAKsI,EAAGC,GAGnD,SAAS0S,EAAcvD,GACnB,GAAI7X,OAAOqb,oBACP,OAAkD,IAA3Crb,OAAOqb,oBAAoBxD,GAAKjU,OAEvC,IAAIsM,EACJ,IAAKA,KAAK2H,EACN,GAAIsD,EAAWtD,EAAK3H,GAChB,OAAO,EAGf,OAAO,EAIf,SAASoL,EAAYL,GACjB,YAAiB,IAAVA,EAGX,SAASM,EAASN,GACd,MACqB,iBAAVA,GACmC,oBAA1Cjb,OAAOC,UAAU4T,SAAS1T,KAAK8a,GAIvC,SAASO,EAAOP,GACZ,OACIA,aAAiBQ,MACyB,kBAA1Czb,OAAOC,UAAU4T,SAAS1T,KAAK8a,GAIvC,SAASjT,EAAI0T,EAAKva,GACd,IACIwC,EADAgY,EAAM,GAEV,IAAKhY,EAAI,EAAGA,EAAI+X,EAAI9X,SAAUD,EAC1BgY,EAAIla,KAAKN,EAAGua,EAAI/X,GAAIA,IAExB,OAAOgY,EAGX,SAASC,EAAOnT,EAAGC,GACf,IAAK,IAAI/E,KAAK+E,EACNyS,EAAWzS,EAAG/E,KACd8E,EAAE9E,GAAK+E,EAAE/E,IAYjB,OARIwX,EAAWzS,EAAG,cACdD,EAAEoL,SAAWnL,EAAEmL,UAGfsH,EAAWzS,EAAG,aACdD,EAAEoT,QAAUnT,EAAEmT,SAGXpT,EAGX,SAASqT,EAAUb,EAAOc,EAAQC,EAAQC,GACtC,OAAOC,GAAiBjB,EAAOc,EAAQC,EAAQC,GAAQ,GAAME,MAyBjE,SAASC,EAAgBvR,GAIrB,OAHa,MAATA,EAAEwR,MACFxR,EAAEwR,IAtBC,CACHC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbC,UAAW,EACXC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,IAQdxS,EAAEwR,IAsBb,SAASiB,EAAQzS,GACb,GAAkB,MAAdA,EAAE0S,SAAkB,CACpB,IAAIC,EAAQpB,EAAgBvR,GACxB4S,EAAc1C,EAAK5a,KAAKqd,EAAMP,iBAAiB,SAAUtZ,GACrD,OAAY,MAALA,KAEX+Z,GACKC,MAAM9S,EAAE+S,GAAGC,YACZL,EAAMf,SAAW,IAChBe,EAAMlB,QACNkB,EAAMZ,aACNY,EAAMX,eACNW,EAAMM,iBACNN,EAAMH,kBACNG,EAAMb,YACNa,EAAMV,gBACNU,EAAMT,mBACLS,EAAML,UAAaK,EAAML,UAAYM,GAU/C,GARI5S,EAAEkT,UACFL,EACIA,GACwB,IAAxBF,EAAMd,eACwB,IAA9Bc,EAAMjB,aAAa3Y,aACDF,IAAlB8Z,EAAMQ,SAGS,MAAnBhe,OAAOie,UAAqBje,OAAOie,SAASpT,GAG5C,OAAO6S,EAFP7S,EAAE0S,SAAWG,EAKrB,OAAO7S,EAAE0S,SAGb,SAASW,EAAcV,GACnB,IAAI3S,EAAIiR,EAAUqC,KAOlB,OANa,MAATX,EACA5B,EAAOQ,EAAgBvR,GAAI2S,GAE3BpB,EAAgBvR,GAAGkS,iBAAkB,EAGlClS,EA7DPkQ,EADAtI,MAAMxS,UAAU8a,KACTtI,MAAMxS,UAAU8a,KAEhB,SAAUqD,GACb,IAEIza,EAFAd,EAAI7C,OAAOoE,MACXwP,EAAM/Q,EAAEe,SAAW,EAGvB,IAAKD,EAAI,EAAGA,EAAIiQ,EAAKjQ,IACjB,GAAIA,KAAKd,GAAKub,EAAIje,KAAKiE,KAAMvB,EAAEc,GAAIA,EAAGd,GAClC,OAAO,EAIf,OAAO,GAqDf,IAAIwb,EAAoBrD,EAAMqD,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAWC,EAAIC,GACpB,IAAI9a,EAAG+a,EAAMC,EAiCb,GA/BKrD,EAAYmD,EAAKG,oBAClBJ,EAAGI,iBAAmBH,EAAKG,kBAE1BtD,EAAYmD,EAAKvG,MAClBsG,EAAGtG,GAAKuG,EAAKvG,IAEZoD,EAAYmD,EAAKI,MAClBL,EAAGK,GAAKJ,EAAKI,IAEZvD,EAAYmD,EAAKK,MAClBN,EAAGM,GAAKL,EAAKK,IAEZxD,EAAYmD,EAAKV,WAClBS,EAAGT,QAAUU,EAAKV,SAEjBzC,EAAYmD,EAAKM,QAClBP,EAAGO,KAAON,EAAKM,MAEdzD,EAAYmD,EAAKO,UAClBR,EAAGQ,OAASP,EAAKO,QAEhB1D,EAAYmD,EAAKQ,WAClBT,EAAGS,QAAUR,EAAKQ,SAEjB3D,EAAYmD,EAAKpC,OAClBmC,EAAGnC,IAAMD,EAAgBqC,IAExBnD,EAAYmD,EAAKS,WAClBV,EAAGU,QAAUT,EAAKS,SAGlBb,EAAiBza,OAAS,EAC1B,IAAKD,EAAI,EAAGA,EAAI0a,EAAiBza,OAAQD,IAGhC2X,EADLqD,EAAMF,EADNC,EAAOL,EAAiB1a,OAGpB6a,EAAGE,GAAQC,GAKvB,OAAOH,EAIX,SAASW,EAAOC,GACZb,EAAWna,KAAMgb,GACjBhb,KAAKwZ,GAAK,IAAInC,KAAkB,MAAb2D,EAAOxB,GAAawB,EAAOxB,GAAGC,UAAYM,KACxD/Z,KAAKkZ,YACNlZ,KAAKwZ,GAAK,IAAInC,KAAK0C,OAIE,IAArBG,IACAA,GAAmB,EACnBtD,EAAMqE,aAAajb,MACnBka,GAAmB,GAI3B,SAASgB,EAASzH,GACd,OACIA,aAAesH,GAAkB,MAAPtH,GAAuC,MAAxBA,EAAI+G,iBAIrD,SAAShd,EAAK2d,IAEgC,IAAtCvE,EAAMwE,6BACa,oBAAZ7d,SACPA,QAAQC,MAERD,QAAQC,KAAK,wBAA0B2d,GAI/C,SAASE,EAAUF,EAAKpe,GACpB,IAAIue,GAAY,EAEhB,OAAO9D,GAAO,WAIV,GAHgC,MAA5BZ,EAAM2E,oBACN3E,EAAM2E,mBAAmB,KAAMJ,GAE/BG,EAAW,CACX,IACI1I,EACArT,EACA4H,EAHAgN,EAAO,GAIX,IAAK5U,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAEnC,GADAqT,EAAM,GACsB,iBAAjBkD,UAAUvW,GAAiB,CAElC,IAAK4H,KADLyL,GAAO,MAAQrT,EAAI,KACPuW,UAAU,GACdiB,EAAWjB,UAAU,GAAI3O,KACzByL,GAAOzL,EAAM,KAAO2O,UAAU,GAAG3O,GAAO,MAGhDyL,EAAMA,EAAItN,MAAM,GAAI,QAEpBsN,EAAMkD,UAAUvW,GAEpB4U,EAAK9W,KAAKuV,GAEdpV,EACI2d,EACI,gBACA9M,MAAMxS,UAAUyJ,MAAMvJ,KAAKoY,GAAMrP,KAAK,IACtC,MACA,IAAI3D,OAAQqa,OAEpBF,GAAY,EAEhB,OAAOve,EAAGuD,MAAMN,KAAM8V,aACvB/Y,GAGP,IAgFIyI,EAhFAiW,EAAe,GAEnB,SAASC,EAAgBhe,EAAMyd,GACK,MAA5BvE,EAAM2E,oBACN3E,EAAM2E,mBAAmB7d,EAAMyd,GAE9BM,EAAa/d,KACdF,EAAK2d,GACLM,EAAa/d,IAAQ,GAO7B,SAASie,EAAW9E,GAChB,MACyB,oBAAb+E,UAA4B/E,aAAiB+E,UACX,sBAA1ChgB,OAAOC,UAAU4T,SAAS1T,KAAK8a,GA2BvC,SAASgF,EAAaC,EAAcC,GAChC,IACIzB,EADA/C,EAAMC,EAAO,GAAIsE,GAErB,IAAKxB,KAAQyB,EACLhF,EAAWgF,EAAazB,KACpBxD,EAASgF,EAAaxB,KAAUxD,EAASiF,EAAYzB,KACrD/C,EAAI+C,GAAQ,GACZ9C,EAAOD,EAAI+C,GAAOwB,EAAaxB,IAC/B9C,EAAOD,EAAI+C,GAAOyB,EAAYzB,KACF,MAArByB,EAAYzB,GACnB/C,EAAI+C,GAAQyB,EAAYzB,UAEjB/C,EAAI+C,IAIvB,IAAKA,KAAQwB,EAEL/E,EAAW+E,EAAcxB,KACxBvD,EAAWgF,EAAazB,IACzBxD,EAASgF,EAAaxB,MAGtB/C,EAAI+C,GAAQ9C,EAAO,GAAID,EAAI+C,KAGnC,OAAO/C,EAGX,SAASyE,EAAOhB,GACE,MAAVA,GACAhb,KAAKlC,IAAIkd,GAmCjB,SAASiB,EAASC,EAAQC,EAAcC,GACpC,IAAIC,EAAY,GAAKC,KAAKC,IAAIL,GAC1BM,EAAcL,EAAeE,EAAU7c,OAE3C,OADW0c,GAAU,EAERE,EAAY,IAAM,GAAM,KACjCE,KAAKG,IAAI,GAAIH,KAAKI,IAAI,EAAGF,IAAc/M,WAAWkN,OAAO,GACzDN,EA1GRzF,EAAMwE,6BAA8B,EACpCxE,EAAM2E,mBAAqB,KAsEvB/V,EADA5J,OAAO4J,KACA5J,OAAO4J,KAEP,SAAUiO,GACb,IAAIlU,EACAgY,EAAM,GACV,IAAKhY,KAAKkU,EACFsD,EAAWtD,EAAKlU,IAChBgY,EAAIla,KAAKkC,GAGjB,OAAOgY,GA6Bf,IAAIqF,EAAmB,yMACnBC,EAAwB,6CACxBC,EAAkB,GAClBC,EAAuB,GAM3B,SAASC,EAAeC,EAAOC,EAAQC,EAAS9d,GAC5C,IAAIyV,EAAOzV,EACa,iBAAbA,IACPyV,EAAO,WACH,OAAO9U,KAAKX,OAGhB4d,IACAF,EAAqBE,GAASnI,GAE9BoI,IACAH,EAAqBG,EAAO,IAAM,WAC9B,OAAOjB,EAASnH,EAAKxU,MAAMN,KAAM8V,WAAYoH,EAAO,GAAIA,EAAO,MAGnEC,IACAJ,EAAqBI,GAAW,WAC5B,OAAOnd,KAAKod,aAAaD,QACrBrI,EAAKxU,MAAMN,KAAM8V,WACjBmH,KAuChB,SAASI,EAAa5W,EAAGkR,GACrB,OAAKlR,EAAEyS,WAIPvB,EAAS2F,EAAa3F,EAAQlR,EAAE2W,cAChCN,EAAgBnF,GACZmF,EAAgBnF,IAjCxB,SAA4BA,GACxB,IACIpY,EACAC,EAVwBqX,EAQxB0G,EAAQ5F,EAAO5E,MAAM6J,GAIzB,IAAKrd,EAAI,EAAGC,EAAS+d,EAAM/d,OAAQD,EAAIC,EAAQD,IACvCwd,EAAqBQ,EAAMhe,IAC3Bge,EAAMhe,GAAKwd,EAAqBQ,EAAMhe,IAEtCge,EAAMhe,IAhBcsX,EAgBc0G,EAAMhe,IAftCwT,MAAM,YACL8D,EAAM7M,QAAQ,WAAY,IAE9B6M,EAAM7M,QAAQ,MAAO,IAgB5B,OAAO,SAAUwT,GACb,IACIje,EADAke,EAAS,GAEb,IAAKle,EAAI,EAAGA,EAAIC,EAAQD,IACpBke,GAAU9B,EAAW4B,EAAMhe,IACrBge,EAAMhe,GAAGxD,KAAKyhB,EAAK7F,GACnB4F,EAAMhe,GAEhB,OAAOke,GAYoBC,CAAmB/F,GAE3CmF,EAAgBnF,GAAQlR,IAPpBA,EAAE2W,aAAaO,cAU9B,SAASL,EAAa3F,EAAQC,GAC1B,IAAIrY,EAAI,EAER,SAASqe,EAA4B/G,GACjC,OAAOe,EAAOiG,eAAehH,IAAUA,EAI3C,IADAgG,EAAsBtI,UAAY,EAC3BhV,GAAK,GAAKsd,EAAsBrS,KAAKmN,IACxCA,EAASA,EAAO3N,QACZ6S,EACAe,GAEJf,EAAsBtI,UAAY,EAClChV,GAAK,EAGT,OAAOoY,EAkFX,IAAImG,EAAU,GAEd,SAASC,EAAaC,EAAMC,GACxB,IAAIC,EAAYF,EAAKlL,cACrBgL,EAAQI,GAAaJ,EAAQI,EAAY,KAAOJ,EAAQG,GAAaD,EAGzE,SAASG,EAAeC,GACpB,MAAwB,iBAAVA,EACRN,EAAQM,IAAUN,EAAQM,EAAMtL,oBAChCxT,EAGV,SAAS+e,EAAqBC,GAC1B,IACIC,EACAjE,EAFAkE,EAAkB,GAItB,IAAKlE,KAAQgE,EACLvH,EAAWuH,EAAahE,KACxBiE,EAAiBJ,EAAe7D,MAE5BkE,EAAgBD,GAAkBD,EAAYhE,IAK1D,OAAOkE,EAGX,IAAIC,EAAa,GAEjB,SAASC,EAAgBV,EAAMW,GAC3BF,EAAWT,GAAQW,EAiBvB,SAASC,EAAWC,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,EAGlE,SAASC,EAAS5C,GACd,OAAIA,EAAS,EAEFI,KAAKyC,KAAK7C,IAAW,EAErBI,KAAK0C,MAAM9C,GAI1B,SAAS+C,EAAMC,GACX,IAAIC,GAAiBD,EACjBnhB,EAAQ,EAMZ,OAJsB,IAAlBohB,GAAuBC,SAASD,KAChCphB,EAAQ+gB,EAASK,IAGdphB,EAGX,SAASshB,EAAWrB,EAAMsB,GACtB,OAAO,SAAUvhB,GACb,OAAa,MAATA,GACAwhB,EAAMvf,KAAMge,EAAMjgB,GAClB6Y,EAAMqE,aAAajb,KAAMsf,GAClBtf,MAEAnC,EAAImC,KAAMge,IAK7B,SAASngB,EAAI2f,EAAKQ,GACd,OAAOR,EAAItE,UACLsE,EAAIhE,GAAG,OAASgE,EAAI5C,OAAS,MAAQ,IAAMoD,KAC3CjE,IAGV,SAASwF,EAAM/B,EAAKQ,EAAMjgB,GAClByf,EAAItE,YAAcK,MAAMxb,KAEX,aAATigB,GACAY,EAAWpB,EAAIqB,SACC,IAAhBrB,EAAIgC,SACW,KAAfhC,EAAIiC,QAEJ1hB,EAAQkhB,EAAMlhB,GACdyf,EAAIhE,GAAG,OAASgE,EAAI5C,OAAS,MAAQ,IAAMoD,GACvCjgB,EACAyf,EAAIgC,QACJE,GAAY3hB,EAAOyf,EAAIgC,WAG3BhC,EAAIhE,GAAG,OAASgE,EAAI5C,OAAS,MAAQ,IAAMoD,GAAMjgB,IAgC7D,IAmBI4hB,EAnBAC,EAAS,KACTC,EAAS,OACTC,GAAS,QACTC,GAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BAInBC,GAAY,wJAKhB,SAASC,GAAc3D,EAAO4D,EAAOC,GACjCnB,EAAQ1C,GAAStB,EAAWkF,GACtBA,EACA,SAAUE,EAAU3D,GAChB,OAAO2D,GAAYD,EAAcA,EAAcD,GAI7D,SAASG,GAAsB/D,EAAOjC,GAClC,OAAKjE,EAAW4I,EAAS1C,GAIlB0C,EAAQ1C,GAAOjC,EAAOrB,QAASqB,EAAOF,SAHlC,IAAImG,OAQRC,GAR8BjE,EAU5BjT,QAAQ,KAAM,IACdA,QAAQ,uCAAuC,SAC5CmX,EACAnO,EACAC,EACAmO,EACAC,GAEA,OAAOrO,GAAMC,GAAMmO,GAAMC,OAKzC,SAASH,GAAY1Z,GACjB,OAAOA,EAAEwC,QAAQ,yBAA0B,QApC/C2V,EAAU,GAuCV,IA6CIviB,GA7CAkkB,GAAS,GAEb,SAASC,GAActE,EAAO5d,GAC1B,IAAIE,EACAuV,EAAOzV,EASX,IARqB,iBAAV4d,IACPA,EAAQ,CAACA,IAET9F,EAAS9X,KACTyV,EAAO,SAAU+B,EAAO0G,GACpBA,EAAMle,GAAY4f,EAAMpI,KAG3BtX,EAAI,EAAGA,EAAI0d,EAAMzd,OAAQD,IAC1B+hB,GAAOrE,EAAM1d,IAAMuV,EAI3B,SAAS0M,GAAkBvE,EAAO5d,GAC9BkiB,GAActE,GAAO,SAAUpG,EAAO0G,EAAOvC,EAAQiC,GACjDjC,EAAOyG,GAAKzG,EAAOyG,IAAM,GACzBpiB,EAASwX,EAAOmE,EAAOyG,GAAIzG,EAAQiC,MAI3C,SAASyE,GAAwBzE,EAAOpG,EAAOmE,GAC9B,MAATnE,GAAiBE,EAAWuK,GAAQrE,IACpCqE,GAAOrE,GAAOpG,EAAOmE,EAAO2G,GAAI3G,EAAQiC,GAmChD,SAASyC,GAAYb,EAAMW,GACvB,GAAIjG,MAAMsF,IAAStF,MAAMiG,GACrB,OAAOzF,IAEX,IAzBY1O,EAyBRuW,GAAepC,GAzBPnU,EAyBc,IAxBRA,GAAKA,EA0BvB,OADAwT,IAASW,EAAQoC,GAAY,GACT,IAAbA,EACDhD,EAAWC,GACP,GACA,GACJ,GAAO+C,EAAW,EAAK,EAxB7BxkB,GADAiR,MAAMxS,UAAUuB,QACNiR,MAAMxS,UAAUuB,QAEhB,SAAUwJ,GAEhB,IAAIrH,EACJ,IAAKA,EAAI,EAAGA,EAAIS,KAAKR,SAAUD,EAC3B,GAAIS,KAAKT,KAAOqH,EACZ,OAAOrH,EAGf,OAAQ,GAmBhByd,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACjC,OAAOhd,KAAKwf,QAAU,KAG1BxC,EAAe,MAAO,EAAG,GAAG,SAAUrF,GAClC,OAAO3X,KAAKod,aAAayE,YAAY7hB,KAAM2X,MAG/CqF,EAAe,OAAQ,EAAG,GAAG,SAAUrF,GACnC,OAAO3X,KAAKod,aAAa0E,OAAO9hB,KAAM2X,MAK1CoG,EAAa,QAAS,KAItBW,EAAgB,QAAS,GAIzBkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAO,SAAUG,EAAUnJ,GACrC,OAAOA,EAAOmK,iBAAiBhB,MAEnCH,GAAc,QAAQ,SAAUG,EAAUnJ,GACtC,OAAOA,EAAOoK,YAAYjB,MAG9BQ,GAAc,CAAC,IAAK,OAAO,SAAU1K,EAAO0G,GACxCA,EA7EQ,GA6EO0B,EAAMpI,GAAS,KAGlC0K,GAAc,CAAC,MAAO,SAAS,SAAU1K,EAAO0G,EAAOvC,EAAQiC,GAC3D,IAAIuC,EAAQxE,EAAOF,QAAQmH,YAAYpL,EAAOoG,EAAOjC,EAAOrB,SAE/C,MAAT6F,EACAjC,EApFI,GAoFWiC,EAEfxH,EAAgBgD,GAAQvC,aAAe5B,KAM/C,IAAIqL,GAAsB,wFAAwFtY,MAC1G,KAEJuY,GAA2B,kDAAkDvY,MACzE,KAEJwY,GAAmB,gCACnBC,GAA0B1B,GAC1B2B,GAAqB3B,GA8BzB,SAAS4B,GAAkBC,EAAW7K,EAAQE,GAC1C,IAAItY,EACAkjB,EACAjF,EACAkF,EAAMF,EAAUG,oBACpB,IAAK3iB,KAAK4iB,aAKN,IAHA5iB,KAAK4iB,aAAe,GACpB5iB,KAAK6iB,iBAAmB,GACxB7iB,KAAK8iB,kBAAoB,GACpBvjB,EAAI,EAAGA,EAAI,KAAMA,EAClBie,EAAM9F,EAAU,CAAC,IAAMnY,IACvBS,KAAK8iB,kBAAkBvjB,GAAKS,KAAK6hB,YAC7BrE,EACA,IACFmF,oBACF3iB,KAAK6iB,iBAAiBtjB,GAAKS,KAAK8hB,OAAOtE,EAAK,IAAImF,oBAIxD,OAAI9K,EACe,QAAXF,GAEe,KADf8K,EAAKrlB,GAAQrB,KAAKiE,KAAK8iB,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAKrlB,GAAQrB,KAAKiE,KAAK6iB,iBAAkBH,IACtBD,EAAK,KAGb,QAAX9K,GAEY,KADZ8K,EAAKrlB,GAAQrB,KAAKiE,KAAK8iB,kBAAmBJ,MAK3B,KADfD,EAAKrlB,GAAQrB,KAAKiE,KAAK6iB,iBAAkBH,IAF9BD,EAGa,MAGZ,KADZA,EAAKrlB,GAAQrB,KAAKiE,KAAK6iB,iBAAkBH,MAK1B,KADfD,EAAKrlB,GAAQrB,KAAKiE,KAAK8iB,kBAAmBJ,IAF/BD,EAGa,KA4DpC,SAASM,GAASvF,EAAKzf,GACnB,IAAIilB,EAEJ,IAAKxF,EAAItE,UAEL,OAAOsE,EAGX,GAAqB,iBAAVzf,EACP,GAAI,QAAQyM,KAAKzM,GACbA,EAAQkhB,EAAMlhB,QAId,IAAKoZ,EAFLpZ,EAAQyf,EAAIJ,aAAa6E,YAAYlkB,IAGjC,OAAOyf,EAOnB,OAFAwF,EAAa1G,KAAK2G,IAAIzF,EAAIiC,OAAQC,GAAYlC,EAAIqB,OAAQ9gB,IAC1Dyf,EAAIhE,GAAG,OAASgE,EAAI5C,OAAS,MAAQ,IAAM,SAAS7c,EAAOilB,GACpDxF,EAGX,SAAS0F,GAAYnlB,GACjB,OAAa,MAATA,GACAglB,GAAS/iB,KAAMjC,GACf6Y,EAAMqE,aAAajb,MAAM,GAClBA,MAEAnC,EAAImC,KAAM,SAgDzB,SAASmjB,KACL,SAASC,EAAU/e,EAAGC,GAClB,OAAOA,EAAE9E,OAAS6E,EAAE7E,OAGxB,IAGID,EACAie,EAJA6F,EAAc,GACdC,EAAa,GACbC,EAAc,GAGlB,IAAKhkB,EAAI,EAAGA,EAAI,GAAIA,IAEhBie,EAAM9F,EAAU,CAAC,IAAMnY,IACvB8jB,EAAYhmB,KAAK2C,KAAK6hB,YAAYrE,EAAK,KACvC8F,EAAWjmB,KAAK2C,KAAK8hB,OAAOtE,EAAK,KACjC+F,EAAYlmB,KAAK2C,KAAK8hB,OAAOtE,EAAK,KAClC+F,EAAYlmB,KAAK2C,KAAK6hB,YAAYrE,EAAK,KAO3C,IAHA6F,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GACZ7jB,EAAI,EAAGA,EAAI,GAAIA,IAChB8jB,EAAY9jB,GAAK2hB,GAAYmC,EAAY9jB,IACzC+jB,EAAW/jB,GAAK2hB,GAAYoC,EAAW/jB,IAE3C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChBgkB,EAAYhkB,GAAK2hB,GAAYqC,EAAYhkB,IAG7CS,KAAKyjB,aAAe,IAAIxC,OAAO,KAAOsC,EAAYze,KAAK,KAAO,IAAK,KACnE9E,KAAK0jB,kBAAoB1jB,KAAKyjB,aAC9BzjB,KAAK2jB,mBAAqB,IAAI1C,OAC1B,KAAOqC,EAAWxe,KAAK,KAAO,IAC9B,KAEJ9E,KAAK4jB,wBAA0B,IAAI3C,OAC/B,KAAOoC,EAAYve,KAAK,KAAO,IAC/B,KAiDR,SAAS+e,GAAWhF,GAChB,OAAOD,EAAWC,GAAQ,IAAM,IA5CpC7B,EAAe,IAAK,EAAG,GAAG,WACtB,IAAIjR,EAAI/L,KAAK6e,OACb,OAAO9S,GAAK,KAAOkQ,EAASlQ,EAAG,GAAK,IAAMA,KAG9CiR,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOhd,KAAK6e,OAAS,OAGzB7B,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1Ce,EAAa,OAAQ,KAIrBW,EAAgB,OAAQ,GAIxBkC,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,IACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,SAAUN,GAAWN,IAEnCuB,GAAc,CAAC,QAAS,UAlYb,GAmYXA,GAAc,QAAQ,SAAU1K,EAAO0G,GACnCA,EApYO,GAqYc,IAAjB1G,EAAMrX,OAAeoX,EAAMkN,kBAAkBjN,GAASoI,EAAMpI,MAEpE0K,GAAc,MAAM,SAAU1K,EAAO0G,GACjCA,EAxYO,GAwYO3G,EAAMkN,kBAAkBjN,MAE1C0K,GAAc,KAAK,SAAU1K,EAAO0G,GAChCA,EA3YO,GA2YOwG,SAASlN,EAAO,OAWlCD,EAAMkN,kBAAoB,SAAUjN,GAChC,OAAOoI,EAAMpI,IAAUoI,EAAMpI,GAAS,GAAK,KAAO,MAKtD,IAAImN,GAAa3E,EAAW,YAAY,GAMxC,SAAS4E,GAAWlY,EAAGtF,EAAGC,EAAGpE,EAAGuJ,EAAGrE,EAAG0c,GAGlC,IAAIzE,EAYJ,OAVI1T,EAAI,KAAOA,GAAK,GAEhB0T,EAAO,IAAIpI,KAAKtL,EAAI,IAAKtF,EAAGC,EAAGpE,EAAGuJ,EAAGrE,EAAG0c,GACpC9E,SAASK,EAAK0E,gBACd1E,EAAK2E,YAAYrY,IAGrB0T,EAAO,IAAIpI,KAAKtL,EAAGtF,EAAGC,EAAGpE,EAAGuJ,EAAGrE,EAAG0c,GAG/BzE,EAGX,SAAS4E,GAActY,GACnB,IAAI0T,EAAMtL,EAcV,OAZIpI,EAAI,KAAOA,GAAK,IAChBoI,EAAO9F,MAAMxS,UAAUyJ,MAAMvJ,KAAK+Z,YAE7B,GAAK/J,EAAI,IACd0T,EAAO,IAAIpI,KAAKA,KAAKiN,IAAIhkB,MAAM,KAAM6T,IACjCiL,SAASK,EAAK8E,mBACd9E,EAAK+E,eAAezY,IAGxB0T,EAAO,IAAIpI,KAAKA,KAAKiN,IAAIhkB,MAAM,KAAMwV,YAGlC2J,EAIX,SAASgF,GAAgB5F,EAAM6F,EAAKC,GAChC,IACIC,EAAM,EAAIF,EAAMC,EAIpB,QAFa,EAAIN,GAAcxF,EAAM,EAAG+F,GAAKC,YAAcH,GAAO,EAElDE,EAAM,EAI1B,SAASE,GAAmBjG,EAAMkG,EAAMC,EAASN,EAAKC,GAClD,IAGIM,EACAC,EAFAC,EAAY,EAAI,GAAKJ,EAAO,IAFZ,EAAIC,EAAUN,GAAO,EACxBD,GAAgB5F,EAAM6F,EAAKC,GAgB5C,OAXIQ,GAAa,EAEbD,EAAerB,GADfoB,EAAUpG,EAAO,GACoBsG,EAC9BA,EAAYtB,GAAWhF,IAC9BoG,EAAUpG,EAAO,EACjBqG,EAAeC,EAAYtB,GAAWhF,KAEtCoG,EAAUpG,EACVqG,EAAeC,GAGZ,CACHtG,KAAMoG,EACNE,UAAWD,GAInB,SAASE,GAAW5H,EAAKkH,EAAKC,GAC1B,IAEIU,EACAJ,EAHAK,EAAab,GAAgBjH,EAAIqB,OAAQ6F,EAAKC,GAC9CI,EAAOzI,KAAK0C,OAAOxB,EAAI2H,YAAcG,EAAa,GAAK,GAAK,EAehE,OAXIP,EAAO,EAEPM,EAAUN,EAAOQ,GADjBN,EAAUzH,EAAIqB,OAAS,EACe6F,EAAKC,GACpCI,EAAOQ,GAAY/H,EAAIqB,OAAQ6F,EAAKC,IAC3CU,EAAUN,EAAOQ,GAAY/H,EAAIqB,OAAQ6F,EAAKC,GAC9CM,EAAUzH,EAAIqB,OAAS,IAEvBoG,EAAUzH,EAAIqB,OACdwG,EAAUN,GAGP,CACHA,KAAMM,EACNxG,KAAMoG,GAId,SAASM,GAAY1G,EAAM6F,EAAKC,GAC5B,IAAIW,EAAab,GAAgB5F,EAAM6F,EAAKC,GACxCa,EAAiBf,GAAgB5F,EAAO,EAAG6F,EAAKC,GACpD,OAAQd,GAAWhF,GAAQyG,EAAaE,GAAkB,EAyJ9D,SAASC,GAAcC,EAAIre,GACvB,OAAOqe,EAAGpgB,MAAM+B,EAAG,GAAGlD,OAAOuhB,EAAGpgB,MAAM,EAAG+B,IArJ7C2V,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCe,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBW,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAI3BkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAE/B2B,GAAkB,CAAC,IAAK,KAAM,IAAK,OAAO,SACtC3K,EACAkO,EACA/J,EACAiC,GAEA8H,EAAK9H,EAAMN,OAAO,EAAG,IAAMsC,EAAMpI,MAsCrCmG,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,GAAG,SAAUrF,GACjC,OAAO3X,KAAKod,aAAauI,YAAY3lB,KAAM2X,MAG/CqF,EAAe,MAAO,EAAG,GAAG,SAAUrF,GAClC,OAAO3X,KAAKod,aAAawI,cAAc5lB,KAAM2X,MAGjDqF,EAAe,OAAQ,EAAG,GAAG,SAAUrF,GACnC,OAAO3X,KAAKod,aAAayI,SAAS7lB,KAAM2X,MAG5CqF,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1Be,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAG3BW,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAI9BkC,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,MAAM,SAAUG,EAAUnJ,GACpC,OAAOA,EAAOkO,iBAAiB/E,MAEnCH,GAAc,OAAO,SAAUG,EAAUnJ,GACrC,OAAOA,EAAOmO,mBAAmBhF,MAErCH,GAAc,QAAQ,SAAUG,EAAUnJ,GACtC,OAAOA,EAAOoO,cAAcjF,MAGhCS,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAU3K,EAAOkO,EAAM/J,EAAQiC,GACpE,IAAI+H,EAAUhK,EAAOF,QAAQmL,cAAcpP,EAAOoG,EAAOjC,EAAOrB,SAEjD,MAAXqL,EACAD,EAAKre,EAAIse,EAEThN,EAAgBgD,GAAQtB,eAAiB7C,KAIjD2K,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAU3K,EAAOkO,EAAM/J,EAAQiC,GAC9D8H,EAAK9H,GAASgC,EAAMpI,MAkCxB,IAAIqP,GAAwB,2DAA2Dtc,MAC/E,KAEJuc,GAA6B,8BAA8Bvc,MAAM,KACjEwc,GAA2B,uBAAuBxc,MAAM,KACxDyc,GAAuB1F,GACvB2F,GAA4B3F,GAC5B4F,GAA0B5F,GAiC9B,SAAS6F,GAAoBC,EAAa9O,EAAQE,GAC9C,IAAItY,EACAkjB,EACAjF,EACAkF,EAAM+D,EAAY9D,oBACtB,IAAK3iB,KAAK0mB,eAKN,IAJA1mB,KAAK0mB,eAAiB,GACtB1mB,KAAK2mB,oBAAsB,GAC3B3mB,KAAK4mB,kBAAoB,GAEpBrnB,EAAI,EAAGA,EAAI,IAAKA,EACjBie,EAAM9F,EAAU,CAAC,IAAM,IAAImP,IAAItnB,GAC/BS,KAAK4mB,kBAAkBrnB,GAAKS,KAAK2lB,YAC7BnI,EACA,IACFmF,oBACF3iB,KAAK2mB,oBAAoBpnB,GAAKS,KAAK4lB,cAC/BpI,EACA,IACFmF,oBACF3iB,KAAK0mB,eAAennB,GAAKS,KAAK6lB,SAASrI,EAAK,IAAImF,oBAIxD,OAAI9K,EACe,SAAXF,GAEe,KADf8K,EAAKrlB,GAAQrB,KAAKiE,KAAK0mB,eAAgBhE,IACpBD,EAAK,KACN,QAAX9K,GAEQ,KADf8K,EAAKrlB,GAAQrB,KAAKiE,KAAK2mB,oBAAqBjE,IACzBD,EAAK,MAGT,KADfA,EAAKrlB,GAAQrB,KAAKiE,KAAK4mB,kBAAmBlE,IACvBD,EAAK,KAGb,SAAX9K,GAEY,KADZ8K,EAAKrlB,GAAQrB,KAAKiE,KAAK0mB,eAAgBhE,MAK3B,KADZD,EAAKrlB,GAAQrB,KAAKiE,KAAK2mB,oBAAqBjE,MAK7B,KADfD,EAAKrlB,GAAQrB,KAAKiE,KAAK4mB,kBAAmBlE,IAN/BD,EAOa,KACN,QAAX9K,GAEK,KADZ8K,EAAKrlB,GAAQrB,KAAKiE,KAAK2mB,oBAAqBjE,MAKhC,KADZD,EAAKrlB,GAAQrB,KAAKiE,KAAK0mB,eAAgBhE,MAKxB,KADfD,EAAKrlB,GAAQrB,KAAKiE,KAAK4mB,kBAAmBlE,IAN/BD,EAOa,MAGZ,KADZA,EAAKrlB,GAAQrB,KAAKiE,KAAK4mB,kBAAmBlE,MAK9B,KADZD,EAAKrlB,GAAQrB,KAAKiE,KAAK0mB,eAAgBhE,MAKxB,KADfD,EAAKrlB,GAAQrB,KAAKiE,KAAK2mB,oBAAqBjE,IANjCD,EAOa,KA4KpC,SAASqE,KACL,SAAS1D,EAAU/e,EAAGC,GAClB,OAAOA,EAAE9E,OAAS6E,EAAE7E,OAGxB,IAIID,EACAie,EACAuJ,EACAC,EACAC,EARAC,EAAY,GACZ7D,EAAc,GACdC,EAAa,GACbC,EAAc,GAMlB,IAAKhkB,EAAI,EAAGA,EAAI,EAAGA,IAEfie,EAAM9F,EAAU,CAAC,IAAM,IAAImP,IAAItnB,GAC/BwnB,EAAO7F,GAAYlhB,KAAK2lB,YAAYnI,EAAK,KACzCwJ,EAAS9F,GAAYlhB,KAAK4lB,cAAcpI,EAAK,KAC7CyJ,EAAQ/F,GAAYlhB,KAAK6lB,SAASrI,EAAK,KACvC0J,EAAU7pB,KAAK0pB,GACf1D,EAAYhmB,KAAK2pB,GACjB1D,EAAWjmB,KAAK4pB,GAChB1D,EAAYlmB,KAAK0pB,GACjBxD,EAAYlmB,KAAK2pB,GACjBzD,EAAYlmB,KAAK4pB,GAIrBC,EAAU1D,KAAKJ,GACfC,EAAYG,KAAKJ,GACjBE,EAAWE,KAAKJ,GAChBG,EAAYC,KAAKJ,GAEjBpjB,KAAKmnB,eAAiB,IAAIlG,OAAO,KAAOsC,EAAYze,KAAK,KAAO,IAAK,KACrE9E,KAAKonB,oBAAsBpnB,KAAKmnB,eAChCnnB,KAAKqnB,kBAAoBrnB,KAAKmnB,eAE9BnnB,KAAKsnB,qBAAuB,IAAIrG,OAC5B,KAAOqC,EAAWxe,KAAK,KAAO,IAC9B,KAEJ9E,KAAKunB,0BAA4B,IAAItG,OACjC,KAAOoC,EAAYve,KAAK,KAAO,IAC/B,KAEJ9E,KAAKwnB,wBAA0B,IAAIvG,OAC/B,KAAOiG,EAAUpiB,KAAK,KAAO,IAC7B,KAMR,SAAS2iB,KACL,OAAOznB,KAAK0nB,QAAU,IAAM,GAqChC,SAAS3O,GAASkE,EAAO0K,GACrB3K,EAAeC,EAAO,EAAG,GAAG,WACxB,OAAOjd,KAAKod,aAAarE,SACrB/Y,KAAK0nB,QACL1nB,KAAK4nB,UACLD,MAiBZ,SAASE,GAAc9G,EAAUnJ,GAC7B,OAAOA,EAAOkQ,eArDlB9K,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAGyK,IAClCzK,EAAe,IAAK,CAAC,KAAM,GAAI,GAN/B,WACI,OAAOhd,KAAK0nB,SAAW,MAO3B1K,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKyK,GAAQnnB,MAAMN,MAAQic,EAASjc,KAAK4nB,UAAW,MAG/D5K,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACAyK,GAAQnnB,MAAMN,MACdic,EAASjc,KAAK4nB,UAAW,GACzB3L,EAASjc,KAAK+nB,UAAW,MAIjC/K,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKhd,KAAK0nB,QAAUzL,EAASjc,KAAK4nB,UAAW,MAGxD5K,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACAhd,KAAK0nB,QACLzL,EAASjc,KAAK4nB,UAAW,GACzB3L,EAASjc,KAAK+nB,UAAW,MAcjChP,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdgF,EAAa,OAAQ,KAGrBW,EAAgB,OAAQ,IAQxBkC,GAAc,IAAKiH,IACnBjH,GAAc,IAAKiH,IACnBjH,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAE/Be,GAAc,MAAOV,IACrBU,GAAc,QAAST,IACvBS,GAAc,MAAOV,IACrBU,GAAc,QAAST,IAEvBoB,GAAc,CAAC,IAAK,MAzjCT,GA0jCXA,GAAc,CAAC,IAAK,OAAO,SAAU1K,EAAO0G,EAAOvC,GAC/C,IAAIgN,EAAS/I,EAAMpI,GACnB0G,EA5jCO,GA4jCkB,KAAXyK,EAAgB,EAAIA,KAEtCzG,GAAc,CAAC,IAAK,MAAM,SAAU1K,EAAO0G,EAAOvC,GAC9CA,EAAOiN,MAAQjN,EAAOF,QAAQoN,KAAKrR,GACnCmE,EAAOmN,UAAYtR,KAEvB0K,GAAc,CAAC,IAAK,OAAO,SAAU1K,EAAO0G,EAAOvC,GAC/CuC,EAnkCO,GAmkCO0B,EAAMpI,GACpBmB,EAAgBgD,GAAQpB,SAAU,KAEtC2H,GAAc,OAAO,SAAU1K,EAAO0G,EAAOvC,GACzC,IAAIoN,EAAMvR,EAAMrX,OAAS,EACzB+d,EAxkCO,GAwkCO0B,EAAMpI,EAAM8F,OAAO,EAAGyL,IACpC7K,EAxkCS,GAwkCO0B,EAAMpI,EAAM8F,OAAOyL,IACnCpQ,EAAgBgD,GAAQpB,SAAU,KAEtC2H,GAAc,SAAS,SAAU1K,EAAO0G,EAAOvC,GAC3C,IAAIqN,EAAOxR,EAAMrX,OAAS,EACtB8oB,EAAOzR,EAAMrX,OAAS,EAC1B+d,EA/kCO,GA+kCO0B,EAAMpI,EAAM8F,OAAO,EAAG0L,IACpC9K,EA/kCS,GA+kCO0B,EAAMpI,EAAM8F,OAAO0L,EAAM,IACzC9K,EA/kCS,GA+kCO0B,EAAMpI,EAAM8F,OAAO2L,IACnCtQ,EAAgBgD,GAAQpB,SAAU,KAEtC2H,GAAc,OAAO,SAAU1K,EAAO0G,EAAOvC,GACzC,IAAIoN,EAAMvR,EAAMrX,OAAS,EACzB+d,EAtlCO,GAslCO0B,EAAMpI,EAAM8F,OAAO,EAAGyL,IACpC7K,EAtlCS,GAslCO0B,EAAMpI,EAAM8F,OAAOyL,OAEvC7G,GAAc,SAAS,SAAU1K,EAAO0G,EAAOvC,GAC3C,IAAIqN,EAAOxR,EAAMrX,OAAS,EACtB8oB,EAAOzR,EAAMrX,OAAS,EAC1B+d,EA5lCO,GA4lCO0B,EAAMpI,EAAM8F,OAAO,EAAG0L,IACpC9K,EA5lCS,GA4lCO0B,EAAMpI,EAAM8F,OAAO0L,EAAM,IACzC9K,EA5lCS,GA4lCO0B,EAAMpI,EAAM8F,OAAO2L,OAWvC,IAsCIC,GAjCAC,GAAanJ,EAAW,SAAS,GAUjCoJ,GAAa,CACbC,SA7iDkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAwiDVnL,eAl7CwB,CACxBoL,IAAK,YACLC,GAAI,SACJ7e,EAAG,aACH8e,GAAI,eACJC,IAAK,sBACLC,KAAM,6BA66CN1L,YAh5CqB,eAi5CrBR,QA34CiB,KA44CjBmM,uBA34CgC,UA44ChCC,aAt4CsB,CACtBC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJzf,EAAG,SACH0f,GAAI,WACJje,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAw3CJlI,OAAQI,GACRL,YAAaM,GAEb4C,KAzlBoB,CACpBL,IAAK,EACLC,IAAK,GAylBLkB,SAAUK,GACVP,YAAaS,GACbR,cAAeO,GAEf8D,cAhC6B,iBAoC7BC,GAAU,GACVC,GAAiB,GAGrB,SAASC,GAAaC,EAAMC,GACxB,IAAI/qB,EACAgrB,EAAOjO,KAAK2G,IAAIoH,EAAK7qB,OAAQ8qB,EAAK9qB,QACtC,IAAKD,EAAI,EAAGA,EAAIgrB,EAAMhrB,GAAK,EACvB,GAAI8qB,EAAK9qB,KAAO+qB,EAAK/qB,GACjB,OAAOA,EAGf,OAAOgrB,EAGX,SAASC,GAAgBrjB,GACrB,OAAOA,EAAMA,EAAI2L,cAAc9I,QAAQ,IAAK,KAAO7C,EAsCvD,SAASsjB,GAAW/sB,GAChB,IAAIgtB,EAAY,KAGhB,QACsBprB,IAAlB4qB,GAAQxsB,SACU,IAAX6F,GACPA,GACAA,EAAOiD,QAEP,IACIkkB,EAAYnC,GAAaoC,MAEzB,OAAe,KAAcjtB,GAC7BktB,GAAmBF,GACrB,MAAOzsB,GAGLisB,GAAQxsB,GAAQ,KAGxB,OAAOwsB,GAAQxsB,GAMnB,SAASktB,GAAmBzjB,EAAK0jB,GAC7B,IAAIhqB,EAqBJ,OApBIsG,KAEItG,EADAqW,EAAY2T,GACLC,GAAU3jB,GAEV4jB,GAAa5jB,EAAK0jB,IAKzBtC,GAAe1nB,EAEQ,oBAAZtD,SAA2BA,QAAQC,MAE1CD,QAAQC,KACJ,UAAY2J,EAAM,2CAM3BohB,GAAaoC,MAGxB,SAASI,GAAartB,EAAMsd,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAIpD,EACAkE,EAAe2M,GAEnB,GADAzN,EAAOgQ,KAAOttB,EACO,MAAjBwsB,GAAQxsB,GACRge,EACI,uBACA,2OAKJI,EAAeoO,GAAQxsB,GAAMutB,aAC1B,GAA2B,MAAvBjQ,EAAOkQ,aACd,GAAoC,MAAhChB,GAAQlP,EAAOkQ,cACfpP,EAAeoO,GAAQlP,EAAOkQ,cAAcD,YACzC,CAEH,GAAc,OADdrT,EAAS6S,GAAWzP,EAAOkQ,eAWvB,OAPKf,GAAenP,EAAOkQ,gBACvBf,GAAenP,EAAOkQ,cAAgB,IAE1Cf,GAAenP,EAAOkQ,cAAc7tB,KAAK,CACrCK,KAAMA,EACNsd,OAAQA,IAEL,KATPc,EAAelE,EAAOqT,QA0BlC,OAbAf,GAAQxsB,GAAQ,IAAIse,EAAOH,EAAaC,EAAcd,IAElDmP,GAAezsB,IACfysB,GAAezsB,GAAM+H,SAAQ,SAAU4F,GACnC0f,GAAa1f,EAAE3N,KAAM2N,EAAE2P,WAO/B4P,GAAmBltB,GAEZwsB,GAAQxsB,GAIf,cADOwsB,GAAQxsB,GACR,KAkDf,SAASotB,GAAU3jB,GACf,IAAIyQ,EAMJ,GAJIzQ,GAAOA,EAAI2T,SAAW3T,EAAI2T,QAAQ6P,QAClCxjB,EAAMA,EAAI2T,QAAQ6P,QAGjBxjB,EACD,OAAOohB,GAGX,IAAK5U,EAAQxM,GAAM,CAGf,GADAyQ,EAAS6S,GAAWtjB,GAEhB,OAAOyQ,EAEXzQ,EAAM,CAACA,GAGX,OA5MJ,SAAsBgkB,GAOlB,IANA,IACI7nB,EACAgM,EACAsI,EACAhO,EAJArK,EAAI,EAMDA,EAAI4rB,EAAM3rB,QAAQ,CAKrB,IAHA8D,GADAsG,EAAQ4gB,GAAgBW,EAAM5rB,IAAIqK,MAAM,MAC9BpK,OAEV8P,GADAA,EAAOkb,GAAgBW,EAAM5rB,EAAI,KACnB+P,EAAK1F,MAAM,KAAO,KACzBtG,EAAI,GAAG,CAEV,GADAsU,EAAS6S,GAAW7gB,EAAMtE,MAAM,EAAGhC,GAAGwB,KAAK,MAEvC,OAAO8S,EAEX,GACItI,GACAA,EAAK9P,QAAU8D,GACf8mB,GAAaxgB,EAAO0F,IAAShM,EAAI,EAGjC,MAEJA,IAEJ/D,IAEJ,OAAOgpB,GA+KA6C,CAAajkB,GAOxB,SAASkkB,GAAc5kB,GACnB,IAAI4R,EACAhU,EAAIoC,EAAEkb,GAuCV,OArCItd,IAAsC,IAAjC2T,EAAgBvR,GAAG4R,WACxBA,EACIhU,EA93CA,GA83CW,GAAKA,EA93ChB,GA83C2B,GA93C3B,EAg4CMA,EA/3CP,GA+3CiB,GAAKA,EA/3CtB,GA+3CgCqb,GAAYrb,EAj4C5C,GAi4CqDA,EAh4CpD,IACD,EAi4COA,EAh4CP,GAg4CiB,GACVA,EAj4CP,GAi4CiB,IACG,KAAZA,EAl4CR,KAm4C0B,IAAdA,EAl4CV,IAm4C2B,IAAdA,EAl4Cb,IAm4CgC,IAAnBA,EAl4CR,IAHP,EAu4COA,EAt4CL,GAs4CiB,GAAKA,EAt4CtB,GAs4CkC,GAt4ClC,EAw4CKA,EAv4CL,GAu4CiB,GAAKA,EAv4CtB,GAu4CkC,GAv4ClC,EAy4CKA,EAx4CA,GAw4CiB,GAAKA,EAx4CtB,GAw4CuC,IAx4CvC,GA04CC,EAGP2T,EAAgBvR,GAAG6kB,qBAClBjT,EAp5CF,GAo5CqBA,EAl5CrB,KAo5CCA,EAp5CD,GAs5CCL,EAAgBvR,GAAG8kB,iBAAgC,IAAdlT,IACrCA,EAl5CD,GAo5CCL,EAAgBvR,GAAG+kB,mBAAkC,IAAdnT,IACvCA,EAp5CE,GAu5CNL,EAAgBvR,GAAG4R,SAAWA,GAG3B5R,EAKX,IAAIglB,GAAmB,iJACnBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElB9S,GAAU,0LACV+S,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAc1R,GACnB,IAAIzb,EACAkB,EAGAksB,EACAC,EACAC,EACAC,EALApZ,EAASsH,EAAOlH,GAChBf,EAAQ0Y,GAAiBhX,KAAKf,IAAWgY,GAAcjX,KAAKf,GAMhE,GAAIX,EAAO,CAGP,IAFAiF,EAAgBgD,GAAQpC,KAAM,EAEzBrZ,EAAI,EAAGkB,EAAImrB,GAASpsB,OAAQD,EAAIkB,EAAGlB,IACpC,GAAIqsB,GAASrsB,GAAG,GAAGkV,KAAK1B,EAAM,IAAK,CAC/B6Z,EAAahB,GAASrsB,GAAG,GACzBotB,GAA+B,IAAnBf,GAASrsB,GAAG,GACxB,MAGR,GAAkB,MAAdqtB,EAEA,YADA5R,EAAO7B,UAAW,GAGtB,GAAIpG,EAAM,GAAI,CACV,IAAKxT,EAAI,EAAGkB,EAAIorB,GAASrsB,OAAQD,EAAIkB,EAAGlB,IACpC,GAAIssB,GAAStsB,GAAG,GAAGkV,KAAK1B,EAAM,IAAK,CAE/B8Z,GAAc9Z,EAAM,IAAM,KAAO8Y,GAAStsB,GAAG,GAC7C,MAGR,GAAkB,MAAdstB,EAEA,YADA7R,EAAO7B,UAAW,GAI1B,IAAKwT,GAA2B,MAAdE,EAEd,YADA7R,EAAO7B,UAAW,GAGtB,GAAIpG,EAAM,GAAI,CACV,IAAI4Y,GAAQlX,KAAK1B,EAAM,IAInB,YADAiI,EAAO7B,UAAW,GAFlB2T,EAAW,IAMnB9R,EAAOP,GAAKmS,GAAcC,GAAc,KAAOC,GAAY,IAC3DC,GAA0B/R,QAE1BA,EAAO7B,UAAW,EA2B1B,SAAS6T,GAAeC,GACpB,IAAIpO,EAAOkF,SAASkJ,EAAS,IAC7B,OAAIpO,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,EA6CX,SAASqO,GAAkBlS,GACvB,IACImS,EA5EJF,EACAG,EACAC,EACAC,EACAC,EACAC,EAEIvqB,EAoEA8P,EAAQiG,GAAQvE,KAAuBuG,EAAOlH,GAxC7C9J,QAAQ,oBAAqB,KAC7BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,KAuCvB,GAAI+I,EAAO,CASP,GAtFJka,EA+EQla,EAAM,GA9Edqa,EA+EQra,EAAM,GA9Edsa,EA+EQta,EAAM,GA9Edua,EA+EQva,EAAM,GA9Edwa,EA+EQxa,EAAM,GA9Edya,EA+EQza,EAAM,GA7EV9P,EAAS,CACT+pB,GAAeC,GACf9K,GAAyB/kB,QAAQgwB,GACjCrJ,SAASsJ,EAAQ,IACjBtJ,SAASuJ,EAAS,IAClBvJ,SAASwJ,EAAW,KAGpBC,GACAvqB,EAAO5F,KAAK0mB,SAASyJ,EAAW,KA8DhCL,EA3DGlqB,GAsBX,SAAsBwqB,EAAYC,EAAa1S,GAC3C,OAAIyS,GAEsBtH,GAA2B/oB,QAAQqwB,KACrC,IAAIpW,KAChBqW,EAAY,GACZA,EAAY,GACZA,EAAY,IACdC,WAEF3V,EAAgBgD,GAAQ/B,iBAAkB,EAC1C+B,EAAO7B,UAAW,GACX,GAiCNyU,CAAa7a,EAAM,GAAIoa,EAAanS,GACrC,OAGJA,EAAO2G,GAAKwL,EACZnS,EAAOL,KAhCf,SAAyBkT,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAO9B,GAAW8B,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIE,EAAKjK,SAASgK,EAAW,IACzBtnB,EAAIunB,EAAK,IAEb,OADSA,EAAKvnB,GAAK,IACR,GAAKA,EAsBFwnB,CAAgBlb,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExDiI,EAAOxB,GAAK6K,GAAc/jB,MAAM,KAAM0a,EAAO2G,IAC7C3G,EAAOxB,GAAG0U,cAAclT,EAAOxB,GAAG2U,gBAAkBnT,EAAOL,MAE3D3C,EAAgBgD,GAAQhC,SAAU,OAElCgC,EAAO7B,UAAW,EA4C1B,SAASiV,GAAS/pB,EAAGC,EAAGjC,GACpB,OAAS,MAALgC,EACOA,EAEF,MAALC,EACOA,EAEJjC,EAoBX,SAASgsB,GAAgBrT,GACrB,IAAIzb,EACAkgB,EAEA6O,EACAC,EACAC,EAHA3X,EAAQ,GAKZ,IAAImE,EAAOxB,GAAX,CAgCA,IA5BA8U,EA7BJ,SAA0BtT,GAEtB,IAAIyT,EAAW,IAAIpX,KAAKT,EAAM8X,OAC9B,OAAI1T,EAAO2T,QACA,CACHF,EAASlK,iBACTkK,EAASG,cACTH,EAASI,cAGV,CAACJ,EAAStK,cAAesK,EAASK,WAAYL,EAASM,WAmBhDC,CAAiBhU,GAG3BA,EAAOyG,IAAyB,MAAnBzG,EAAO2G,GArsDjB,IAqsDyD,MAApB3G,EAAO2G,GAtsD3C,IAgxDZ,SAA+B3G,GAC3B,IAAI5Q,EAAG6kB,EAAUlK,EAAMC,EAASN,EAAKC,EAAKuK,EAAMC,EAAiBC,EAGrD,OADZhlB,EAAI4Q,EAAOyG,IACL4N,IAAqB,MAAPjlB,EAAEX,GAAoB,MAAPW,EAAEyC,GACjC6X,EAAM,EACNC,EAAM,EAMNsK,EAAWb,GACPhkB,EAAEilB,GACFrU,EAAO2G,GA/xDR,GAgyDCyD,GAAWkK,KAAe,EAAG,GAAGzQ,MAEpCkG,EAAOqJ,GAAShkB,EAAEX,EAAG,KACrBub,EAAUoJ,GAAShkB,EAAEyC,EAAG,IACV,GAAKmY,EAAU,KACzBmK,GAAkB,KAGtBzK,EAAM1J,EAAOF,QAAQyU,MAAM7K,IAC3BC,EAAM3J,EAAOF,QAAQyU,MAAM5K,IAE3ByK,EAAUhK,GAAWkK,KAAe5K,EAAKC,GAEzCsK,EAAWb,GAAShkB,EAAEolB,GAAIxU,EAAO2G,GA7yD9B,GA6yDwCyN,EAAQvQ,MAGnDkG,EAAOqJ,GAAShkB,EAAEA,EAAGglB,EAAQrK,MAElB,MAAP3a,EAAE1D,IAEFse,EAAU5a,EAAE1D,GACE,GAAKse,EAAU,KACzBmK,GAAkB,GAER,MAAP/kB,EAAEnM,GAET+mB,EAAU5a,EAAEnM,EAAIymB,GACZta,EAAEnM,EAAI,GAAKmM,EAAEnM,EAAI,KACjBkxB,GAAkB,IAItBnK,EAAUN,GAGdK,EAAO,GAAKA,EAAOQ,GAAY0J,EAAUvK,EAAKC,GAC9C3M,EAAgBgD,GAAQuQ,gBAAiB,EACf,MAAnB4D,EACPnX,EAAgBgD,GAAQwQ,kBAAmB,GAE3C0D,EAAOpK,GAAmBmK,EAAUlK,EAAMC,EAASN,EAAKC,GACxD3J,EAAO2G,GAz0DJ,GAy0DeuN,EAAKrQ,KACvB7D,EAAOyU,WAAaP,EAAK/J,WAlIzBuK,CAAsB1U,GAID,MAArBA,EAAOyU,aACPjB,EAAYJ,GAASpT,EAAO2G,GA7sDzB,GA6sDmC2M,EA7sDnC,KAgtDCtT,EAAOyU,WAAa5L,GAAW2K,IACT,IAAtBxT,EAAOyU,cAEPzX,EAAgBgD,GAAQsQ,oBAAqB,GAGjD7L,EAAO4E,GAAcmK,EAAW,EAAGxT,EAAOyU,YAC1CzU,EAAO2G,GAttDH,GAstDelC,EAAKmP,cACxB5T,EAAO2G,GAttDJ,GAstDelC,EAAKoP,cAQtBtvB,EAAI,EAAGA,EAAI,GAAqB,MAAhByb,EAAO2G,GAAGpiB,KAAcA,EACzCyb,EAAO2G,GAAGpiB,GAAKsX,EAAMtX,GAAK+uB,EAAY/uB,GAI1C,KAAOA,EAAI,EAAGA,IACVyb,EAAO2G,GAAGpiB,GAAKsX,EAAMtX,GACD,MAAhByb,EAAO2G,GAAGpiB,GAAoB,IAANA,EAAU,EAAI,EAAKyb,EAAO2G,GAAGpiB,GAKrC,KAApByb,EAAO2G,GAzuDJ,IA0uDmB,IAAtB3G,EAAO2G,GAzuDF,IA0uDiB,IAAtB3G,EAAO2G,GAzuDF,IA0uDsB,IAA3B3G,EAAO2G,GAzuDG,KA2uDV3G,EAAO2U,UAAW,EAClB3U,EAAO2G,GA/uDJ,GA+uDe,GAGtB3G,EAAOxB,IAAMwB,EAAO2T,QAAUtK,GAAgBJ,IAAY3jB,MACtD,KACAuW,GAEJ0X,EAAkBvT,EAAO2T,QACnB3T,EAAOxB,GAAGqL,YACV7J,EAAOxB,GAAGmU,SAIG,MAAf3S,EAAOL,MACPK,EAAOxB,GAAG0U,cAAclT,EAAOxB,GAAG2U,gBAAkBnT,EAAOL,MAG3DK,EAAO2U,WACP3U,EAAO2G,GAjwDJ,GAiwDe,IAKlB3G,EAAOyG,SACgB,IAAhBzG,EAAOyG,GAAG/a,GACjBsU,EAAOyG,GAAG/a,IAAM6nB,IAEhBvW,EAAgBgD,GAAQ/B,iBAAkB,IAwElD,SAAS8T,GAA0B/R,GAE/B,GAAIA,EAAOP,KAAO7D,EAAMgZ,SAIxB,GAAI5U,EAAOP,KAAO7D,EAAMiZ,SAAxB,CAIA7U,EAAO2G,GAAK,GACZ3J,EAAgBgD,GAAQ9C,OAAQ,EAGhC,IACI3Y,EACAmuB,EACApM,EACArE,EACA6S,EAGAhX,EARApF,EAAS,GAAKsH,EAAOlH,GAMrBic,EAAerc,EAAOlU,OACtBwwB,EAAyB,EAM7B,IAHA1O,EACIhE,EAAatC,EAAOP,GAAIO,EAAOF,SAAS/H,MAAM6J,IAAqB,GAElErd,EAAI,EAAGA,EAAI+hB,EAAO9hB,OAAQD,IAC3B0d,EAAQqE,EAAO/hB,IACfmuB,GAAeha,EAAOX,MAAMiO,GAAsB/D,EAAOjC,KACrD,IAAI,OAEJ8U,EAAUpc,EAAOiJ,OAAO,EAAGjJ,EAAOtW,QAAQswB,KAC9BluB,OAAS,GACjBwY,EAAgBgD,GAAQ5C,YAAY/a,KAAKyyB,GAE7Cpc,EAASA,EAAOpO,MACZoO,EAAOtW,QAAQswB,GAAeA,EAAYluB,QAE9CwwB,GAA0BtC,EAAYluB,QAGtCud,EAAqBE,IACjByQ,EACA1V,EAAgBgD,GAAQ9C,OAAQ,EAEhCF,EAAgBgD,GAAQ7C,aAAa9a,KAAK4f,GAE9CyE,GAAwBzE,EAAOyQ,EAAa1S,IACrCA,EAAOrB,UAAY+T,GAC1B1V,EAAgBgD,GAAQ7C,aAAa9a,KAAK4f,GAKlDjF,EAAgBgD,GAAQ1C,cACpByX,EAAeC,EACftc,EAAOlU,OAAS,GAChBwY,EAAgBgD,GAAQ5C,YAAY/a,KAAKqW,GAKzCsH,EAAO2G,GAj5DJ,IAi5DgB,KACiB,IAApC3J,EAAgBgD,GAAQpB,SACxBoB,EAAO2G,GAn5DJ,GAm5De,IAElB3J,EAAgBgD,GAAQpB,aAAUta,GAGtC0Y,EAAgBgD,GAAQnC,gBAAkBmC,EAAO2G,GAAGrc,MAAM,GAC1D0S,EAAgBgD,GAAQjC,SAAWiC,EAAOmN,UAE1CnN,EAAO2G,GA35DA,GA26DX,SAAyB/J,EAAQqY,EAAMlX,GACnC,IAAImX,EAEJ,OAAgB,MAAZnX,EAEOkX,EAEgB,MAAvBrY,EAAOuY,aACAvY,EAAOuY,aAAaF,EAAMlX,GACX,MAAfnB,EAAOsQ,OAEdgI,EAAOtY,EAAOsQ,KAAKnP,KACPkX,EAAO,KACfA,GAAQ,IAEPC,GAAiB,KAATD,IACTA,EAAO,GAEJA,GAGAA,EArCOG,CACdpV,EAAOF,QACPE,EAAO2G,GA75DJ,GA85DH3G,EAAOmN,WAKC,QADZrP,EAAMd,EAAgBgD,GAAQlC,OAE1BkC,EAAO2G,GAv6DJ,GAu6De3G,EAAOF,QAAQuV,gBAAgBvX,EAAKkC,EAAO2G,GAv6D1D,KA06DP0M,GAAgBrT,GAChBqQ,GAAcrQ,QA/EVkS,GAAkBlS,QAJlB0R,GAAc1R,GAwMtB,SAASsV,GAActV,GACnB,IAAInE,EAAQmE,EAAOlH,GACf6D,EAASqD,EAAOP,GAIpB,OAFAO,EAAOF,QAAUE,EAAOF,SAAWgQ,GAAU9P,EAAON,IAEtC,OAAV7D,QAA8BvX,IAAXqY,GAAkC,KAAVd,EACpCiD,EAAc,CAAEvB,WAAW,KAGjB,iBAAV1B,IACPmE,EAAOlH,GAAK+C,EAAQmE,EAAOF,QAAQyV,SAAS1Z,IAG5CqE,EAASrE,GACF,IAAIkE,EAAOsQ,GAAcxU,KACzBO,EAAOP,GACdmE,EAAOxB,GAAK3C,EACLlD,EAAQgE,GA1GvB,SAAkCqD,GAC9B,IAAIwV,EACAC,EACAC,EACAnxB,EACAoxB,EACAC,EACAC,GAAoB,EAExB,GAAyB,IAArB7V,EAAOP,GAAGjb,OAGV,OAFAwY,EAAgBgD,GAAQtC,eAAgB,OACxCsC,EAAOxB,GAAK,IAAInC,KAAK0C,MAIzB,IAAKxa,EAAI,EAAGA,EAAIyb,EAAOP,GAAGjb,OAAQD,IAC9BoxB,EAAe,EACfC,GAAmB,EACnBJ,EAAarW,EAAW,GAAIa,GACN,MAAlBA,EAAO2T,UACP6B,EAAW7B,QAAU3T,EAAO2T,SAEhC6B,EAAW/V,GAAKO,EAAOP,GAAGlb,GAC1BwtB,GAA0ByD,GAEtBtX,EAAQsX,KACRI,GAAmB,GAIvBD,GAAgB3Y,EAAgBwY,GAAYlY,cAG5CqY,GAAkE,GAAlD3Y,EAAgBwY,GAAYrY,aAAa3Y,OAEzDwY,EAAgBwY,GAAYM,MAAQH,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpCrZ,EAAOwD,EAAQyV,GAAcD,GAkDzBO,CAAyB/V,GAClBrD,EACPoV,GAA0B/R,GAYlC,SAAyBA,GACrB,IAAInE,EAAQmE,EAAOlH,GACfoD,EAAYL,GACZmE,EAAOxB,GAAK,IAAInC,KAAKT,EAAM8X,OACpBtX,EAAOP,GACdmE,EAAOxB,GAAK,IAAInC,KAAKR,EAAMY,WACH,iBAAVZ,EAjdtB,SAA0BmE,GACtB,IAAImG,EAAU2K,GAAgBrX,KAAKuG,EAAOlH,IAC1B,OAAZqN,GAKJuL,GAAc1R,IACU,IAApBA,EAAO7B,kBACA6B,EAAO7B,SAKlB+T,GAAkBlS,IACM,IAApBA,EAAO7B,kBACA6B,EAAO7B,SAKd6B,EAAOrB,QACPqB,EAAO7B,UAAW,EAGlBvC,EAAMoa,wBAAwBhW,MAtB9BA,EAAOxB,GAAK,IAAInC,MAAM8J,EAAQ,IA+c9B8P,CAAiBjW,GACVrH,EAAQkD,IACfmE,EAAO2G,GAAK/d,EAAIiT,EAAMvR,MAAM,IAAI,SAAUmO,GACtC,OAAOsQ,SAAStQ,EAAK,OAEzB4a,GAAgBrT,IACTlE,EAASD,GA1ExB,SAA0BmE,GACtB,IAAIA,EAAOxB,GAAX,CAIA,IAAIja,EAAI8e,EAAqBrD,EAAOlH,IAChCod,OAAsB5xB,IAAVC,EAAEsnB,IAAoBtnB,EAAEkgB,KAAOlgB,EAAEsnB,IACjD7L,EAAO2G,GAAK/d,EACR,CAACrE,EAAEsf,KAAMtf,EAAEigB,MAAO0R,EAAW3xB,EAAE0wB,KAAM1wB,EAAE4xB,OAAQ5xB,EAAE6xB,OAAQ7xB,EAAE8xB,cAC3D,SAAU5d,GACN,OAAOA,GAAOsQ,SAAStQ,EAAK,OAIpC4a,GAAgBrT,IA6DZsW,CAAiBtW,GACV7D,EAASN,GAEhBmE,EAAOxB,GAAK,IAAInC,KAAKR,GAErBD,EAAMoa,wBAAwBhW,GA7B9BuW,CAAgBvW,GAGf9B,EAAQ8B,KACTA,EAAOxB,GAAK,MAGTwB,IA0BX,SAASlD,GAAiBjB,EAAOc,EAAQC,EAAQC,EAAQ2Z,GACrD,IAnEIja,EAmEAlV,EAAI,GA2BR,OAzBe,IAAXsV,IAA8B,IAAXA,IACnBE,EAASF,EACTA,OAASrY,IAGE,IAAXsY,IAA8B,IAAXA,IACnBC,EAASD,EACTA,OAAStY,IAIRwX,EAASD,IAAUG,EAAcH,IACjClD,EAAQkD,IAA2B,IAAjBA,EAAMrX,UAEzBqX,OAAQvX,GAIZ+C,EAAEmY,kBAAmB,EACrBnY,EAAEssB,QAAUtsB,EAAEuY,OAAS4W,EACvBnvB,EAAEqY,GAAK9C,EACPvV,EAAEyR,GAAK+C,EACPxU,EAAEoY,GAAK9C,EACPtV,EAAEsX,QAAU9B,GA5FRN,EAAM,IAAIwD,EAAOsQ,GAAciF,GA8FXjuB,MA7FhBstB,WAEJpY,EAAIka,IAAI,EAAG,KACXla,EAAIoY,cAAWrwB,GAGZiY,EA0FX,SAAS+X,GAAYzY,EAAOc,EAAQC,EAAQC,GACxC,OAAOC,GAAiBjB,EAAOc,EAAQC,EAAQC,GAAQ,GAre3DjB,EAAMoa,wBAA0B3V,EAC5B,iSAGA,SAAUL,GACNA,EAAOxB,GAAK,IAAInC,KAAK2D,EAAOlH,IAAMkH,EAAO2T,QAAU,OAAS,QAuLpE/X,EAAMgZ,SAAW,aAGjBhZ,EAAMiZ,SAAW,aAySjB,IAAI6B,GAAerW,EACX,sGACA,WACI,IAAIsW,EAAQrC,GAAYhvB,MAAM,KAAMwV,WACpC,OAAI9V,KAAKkZ,WAAayY,EAAMzY,UACjByY,EAAQ3xB,KAAOA,KAAO2xB,EAEtB7X,OAInB8X,GAAevW,EACX,sGACA,WACI,IAAIsW,EAAQrC,GAAYhvB,MAAM,KAAMwV,WACpC,OAAI9V,KAAKkZ,WAAayY,EAAMzY,UACjByY,EAAQ3xB,KAAOA,KAAO2xB,EAEtB7X,OAUvB,SAAS+X,GAAO90B,EAAI+0B,GAChB,IAAIva,EAAKhY,EAIT,GAHuB,IAAnBuyB,EAAQtyB,QAAgBmU,EAAQme,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQtyB,OACT,OAAO8vB,KAGX,IADA/X,EAAMua,EAAQ,GACTvyB,EAAI,EAAGA,EAAIuyB,EAAQtyB,SAAUD,EACzBuyB,EAAQvyB,GAAG2Z,YAAa4Y,EAAQvyB,GAAGxC,GAAIwa,KACxCA,EAAMua,EAAQvyB,IAGtB,OAAOgY,EAgBX,IAIIwa,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAyCJ,SAASC,GAASC,GACd,IAAIzT,EAAkBH,EAAqB4T,GACvCC,EAAQ1T,EAAgBK,MAAQ,EAChCsT,EAAW3T,EAAgB4T,SAAW,EACtCtQ,EAAStD,EAAgBgB,OAAS,EAClC6S,EAAQ7T,EAAgBuG,MAAQvG,EAAgB8T,SAAW,EAC3DC,EAAO/T,EAAgBqI,KAAO,EAC9Ba,EAAQlJ,EAAgByR,MAAQ,EAChCrI,EAAUpJ,EAAgB2S,QAAU,EACpCpJ,EAAUvJ,EAAgB4S,QAAU,EACpCoB,EAAehU,EAAgB6S,aAAe,EAElDrxB,KAAKmZ,SAlDT,SAAyB1S,GACrB,IAAIU,EAEA5H,EADAkzB,GAAiB,EAErB,IAAKtrB,KAAOV,EACR,GACIsQ,EAAWtQ,EAAGU,MAEuB,IAAjC/J,GAAQrB,KAAKg2B,GAAU5qB,IACZ,MAAVV,EAAEU,IAAiBoS,MAAM9S,EAAEU,KAGhC,OAAO,EAIf,IAAK5H,EAAI,EAAGA,EAAIwyB,GAASvyB,SAAUD,EAC/B,GAAIkH,EAAEsrB,GAASxyB,IAAK,CAChB,GAAIkzB,EACA,OAAO,EAEPC,WAAWjsB,EAAEsrB,GAASxyB,OAAS0f,EAAMxY,EAAEsrB,GAASxyB,OAChDkzB,GAAiB,GAK7B,OAAO,EAuBSE,CAAgBnU,GAGhCxe,KAAK4yB,eACAJ,EACS,IAAVzK,EACU,IAAVH,EACQ,IAARF,EAAe,GAAK,GAGxB1nB,KAAK6yB,OAASN,EAAe,EAARF,EAIrBryB,KAAK8yB,SAAWhR,EAAoB,EAAXqQ,EAAuB,GAARD,EAExClyB,KAAK+yB,MAAQ,GAEb/yB,KAAK8a,QAAUgQ,KAEf9qB,KAAKgzB,UAGT,SAASC,GAAWxf,GAChB,OAAOA,aAAeue,GAG1B,SAASkB,GAAShX,GACd,OAAIA,EAAS,GACyB,EAA3BI,KAAK6W,OAAO,EAAIjX,GAEhBI,KAAK6W,MAAMjX,GAuB1B,SAASkX,GAAOnW,EAAOoW,GACnBrW,EAAeC,EAAO,EAAG,GAAG,WACxB,IAAImW,EAASpzB,KAAKszB,YACdC,EAAO,IAKX,OAJIH,EAAS,IACTA,GAAUA,EACVG,EAAO,KAGPA,EACAtX,KAAYmX,EAAS,IAAK,GAC1BC,EACApX,IAAWmX,EAAS,GAAI,MAKpCA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbxS,GAAc,IAAKF,IACnBE,GAAc,KAAMF,IACpBa,GAAc,CAAC,IAAK,OAAO,SAAU1K,EAAO0G,EAAOvC,GAC/CA,EAAO2T,SAAU,EACjB3T,EAAOL,KAAO6Y,GAAiB9S,GAAkB7J,MAQrD,IAAI4c,GAAc,kBAElB,SAASD,GAAiBE,EAAShgB,GAC/B,IAEIigB,EACA/L,EAHAgM,GAAWlgB,GAAU,IAAIX,MAAM2gB,GAKnC,OAAgB,OAAZE,EACO,KAOQ,KAFnBhM,EAAuB,IADvB+L,IADQC,EAAQA,EAAQp0B,OAAS,IAAM,IACtB,IAAIuT,MAAM0gB,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAWxU,EAAM0U,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAa/L,GAAWA,EAI7D,SAASiM,GAAgBhd,EAAOid,GAC5B,IAAIvc,EAAKwc,EACT,OAAID,EAAMlZ,QACNrD,EAAMuc,EAAME,QACZD,GACK7Y,EAASrE,IAAUO,EAAOP,GACrBA,EAAMY,UACN6X,GAAYzY,GAAOY,WAAaF,EAAIE,UAE9CF,EAAIiC,GAAGya,QAAQ1c,EAAIiC,GAAG/B,UAAYsc,GAClCnd,EAAMqE,aAAa1D,GAAK,GACjBA,GAEA+X,GAAYzY,GAAOqd,QAIlC,SAASC,GAAc1tB,GAGnB,OAAQ6V,KAAK6W,MAAM1sB,EAAE+S,GAAG4a,qBA0J5B,SAASC,KACL,QAAOr0B,KAAKkZ,WAAYlZ,KAAK4a,QAA2B,IAAjB5a,KAAK6a,QApJhDjE,EAAMqE,aAAe,aAwJrB,IAAIqZ,GAAc,wDAIdC,GAAW,sKAEf,SAASC,GAAe3d,EAAO1P,GAC3B,IAGIosB,EACAkB,EACAC,EA4FmBC,EAAMhD,EACzBpa,EAlGA0a,EAAWpb,EAEX9D,EAAQ,KAkEZ,OA7DIkgB,GAAWpc,GACXob,EAAW,CACP/N,GAAIrN,EAAM+b,cACVlsB,EAAGmQ,EAAMgc,MACThnB,EAAGgL,EAAMic,SAEN3b,EAASN,KAAW0C,OAAO1C,IAClCob,EAAW,GACP9qB,EACA8qB,EAAS9qB,IAAQ0P,EAEjBob,EAASO,cAAgB3b,IAErB9D,EAAQuhB,GAAY7f,KAAKoC,KACjC0c,EAAoB,MAAbxgB,EAAM,IAAc,EAAI,EAC/Bkf,EAAW,CACPlmB,EAAG,EACHrF,EAAGuY,EAAMlM,EAnjFV,IAmjFyBwgB,EACxBjxB,EAAG2c,EAAMlM,EAnjFV,IAmjFyBwgB,EACxB9sB,EAAGwY,EAAMlM,EAnjFR,IAmjFyBwgB,EAC1B/rB,EAAGyX,EAAMlM,EAnjFR,IAmjFyBwgB,EAC1BrP,GAAIjF,EAAMiU,GAA8B,IAArBngB,EAnjFb,KAmjF2CwgB,KAE7CxgB,EAAQwhB,GAAS9f,KAAKoC,KAC9B0c,EAAoB,MAAbxgB,EAAM,IAAc,EAAI,EAC/Bkf,EAAW,CACPlmB,EAAG6oB,GAAS7hB,EAAM,GAAIwgB,GACtB1nB,EAAG+oB,GAAS7hB,EAAM,GAAIwgB,GACtBnpB,EAAGwqB,GAAS7hB,EAAM,GAAIwgB,GACtB7sB,EAAGkuB,GAAS7hB,EAAM,GAAIwgB,GACtBjxB,EAAGsyB,GAAS7hB,EAAM,GAAIwgB,GACtB9sB,EAAGmuB,GAAS7hB,EAAM,GAAIwgB,GACtB/rB,EAAGotB,GAAS7hB,EAAM,GAAIwgB,KAEP,MAAZtB,EAEPA,EAAW,GAES,iBAAbA,IACN,SAAUA,GAAY,OAAQA,KAmDZ0C,EAhDfrF,GAAY2C,EAAS5X,MAgDAsX,EA/CrBrC,GAAY2C,EAAS7X,IAFzBsa,EAmDEC,EAAKzb,WAAayY,EAAMzY,WAI9ByY,EAAQkC,GAAgBlC,EAAOgD,GAC3BA,EAAKE,SAASlD,GACdpa,EAAMud,GAA0BH,EAAMhD,KAEtCpa,EAAMud,GAA0BnD,EAAOgD,IACnCnC,cAAgBjb,EAAIib,aACxBjb,EAAIuK,QAAUvK,EAAIuK,QAGfvK,GAZI,CAAEib,aAAc,EAAG1Q,OAAQ,IA/ClCmQ,EAAW,IACF/N,GAAKwQ,EAAQlC,aACtBP,EAASpmB,EAAI6oB,EAAQ5S,QAGzB2S,EAAM,IAAIzC,GAASC,GAEfgB,GAAWpc,IAAUE,EAAWF,EAAO,aACvC4d,EAAI3Z,QAAUjE,EAAMiE,SAGpBmY,GAAWpc,IAAUE,EAAWF,EAAO,cACvC4d,EAAItb,SAAWtC,EAAMsC,UAGlBsb,EAMX,SAASG,GAASG,EAAKxB,GAInB,IAAIhc,EAAMwd,GAAOrC,WAAWqC,EAAI/qB,QAAQ,IAAK,MAE7C,OAAQuP,MAAMhC,GAAO,EAAIA,GAAOgc,EAGpC,SAASuB,GAA0BH,EAAMhD,GACrC,IAAIpa,EAAM,GAUV,OARAA,EAAIuK,OACA6P,EAAMnS,QAAUmV,EAAKnV,QAAyC,IAA9BmS,EAAM9S,OAAS8V,EAAK9V,QACpD8V,EAAKX,QAAQvC,IAAIla,EAAIuK,OAAQ,KAAKkT,QAAQrD,MACxCpa,EAAIuK,OAGVvK,EAAIib,cAAgBb,GAASgD,EAAKX,QAAQvC,IAAIla,EAAIuK,OAAQ,KAEnDvK,EAsBX,SAAS0d,GAAYC,EAAWx3B,GAC5B,OAAO,SAAU6c,EAAK4a,GAClB,IAASC,EAmBT,OAjBe,OAAXD,GAAoB5b,OAAO4b,KAC3BzZ,EACIhe,EACA,YACIA,EACA,uDACAA,EAHJ,kGAOJ03B,EAAM7a,EACNA,EAAM4a,EACNA,EAASC,GAIbC,GAAYr1B,KADNw0B,GAAeja,EAAK4a,GACHD,GAChBl1B,MAIf,SAASq1B,GAAY7X,EAAKyU,EAAUqD,EAAUra,GAC1C,IAAIuX,EAAeP,EAASW,cACxBL,EAAOW,GAASjB,EAASY,OACzB/Q,EAASoR,GAASjB,EAASa,SAE1BtV,EAAItE,YAKT+B,EAA+B,MAAhBA,GAA8BA,EAEzC6G,GACAiB,GAASvF,EAAK3f,EAAI2f,EAAK,SAAWsE,EAASwT,GAE3C/C,GACAhT,EAAM/B,EAAK,OAAQ3f,EAAI2f,EAAK,QAAU+U,EAAO+C,GAE7C9C,GACAhV,EAAIhE,GAAGya,QAAQzW,EAAIhE,GAAG/B,UAAY+a,EAAe8C,GAEjDra,GACArE,EAAMqE,aAAauC,EAAK+U,GAAQzQ,IA5FxC0S,GAAez3B,GAAKi1B,GAASn2B,UAC7B24B,GAAee,QA9Xf,WACI,OAAOf,GAAeza,MA4d1B,IAAI0X,GAAMwD,GAAY,EAAG,OACrBO,GAAWP,IAAa,EAAG,YAE/B,SAASQ,GAAS5e,GACd,MAAwB,iBAAVA,GAAsBA,aAAiB6e,OAIzD,SAASC,GAAc9e,GACnB,OACIqE,EAASrE,IACTO,EAAOP,IACP4e,GAAS5e,IACTM,EAASN,IAgDjB,SAA+BA,GAC3B,IAAI+e,EAAYjiB,EAAQkD,GACpBgf,GAAe,EAOnB,OANID,IACAC,EAGkB,IAFdhf,EAAMif,QAAO,SAAUvxB,GACnB,OAAQ4S,EAAS5S,IAASkxB,GAAS5e,MACpCrX,QAEJo2B,GAAaC,EAxDhBE,CAAsBlf,IAO9B,SAA6BA,GACzB,IA4BItX,EACAgI,EA7BAyuB,EAAalf,EAASD,KAAWG,EAAcH,GAC/Cof,GAAe,EACfC,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAKR,IAAK32B,EAAI,EAAGA,EAAI22B,EAAW12B,OAAQD,GAAK,EACpCgI,EAAW2uB,EAAW32B,GACtB02B,EAAeA,GAAgBlf,EAAWF,EAAOtP,GAGrD,OAAOyuB,GAAcC,EA3CjBE,CAAoBtf,IANjB,MAOHA,EAyDR,SAASuf,GAAevf,GACpB,IAUItX,EAVAy2B,EAAalf,EAASD,KAAWG,EAAcH,GAC/Cof,GAAe,EACfC,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAK32B,EAAI,EAAGA,EAAI22B,EAAW12B,OAAQD,GAAK,EAEpC02B,EAAeA,GAAgBlf,EAAWF,EAD/Bqf,EAAW32B,IAI1B,OAAOy2B,GAAcC,EA4KzB,SAASI,GAAUhyB,EAAGC,GAClB,GAAID,EAAEob,OAASnb,EAAEmb,OAGb,OAAQ4W,GAAU/xB,EAAGD,GAGzB,IAAIiyB,EAAyC,IAAvBhyB,EAAEua,OAASxa,EAAEwa,SAAgBva,EAAEkb,QAAUnb,EAAEmb,SAE7D+W,EAASlyB,EAAE2vB,QAAQvC,IAAI6E,EAAgB,UAe3C,QAASA,GAXLhyB,EAAIiyB,EAAS,GAGHjyB,EAAIiyB,IAAWA,EAFflyB,EAAE2vB,QAAQvC,IAAI6E,EAAiB,EAAG,YAMlChyB,EAAIiyB,IAFJlyB,EAAE2vB,QAAQvC,IAAI6E,EAAiB,EAAG,UAETC,MAIF,EAmHzC,SAAS3e,GAAOzQ,GACZ,IAAIqvB,EAEJ,YAAYl3B,IAAR6H,EACOnH,KAAK8a,QAAQ6P,OAGC,OADrB6L,EAAgB1L,GAAU3jB,MAEtBnH,KAAK8a,QAAU0b,GAEZx2B,MA1Hf4W,EAAM6f,cAAgB,uBACtB7f,EAAM8f,iBAAmB,yBA6HzB,IAAIC,GAAOtb,EACP,mJACA,SAAUlU,GACN,YAAY7H,IAAR6H,EACOnH,KAAKod,aAELpd,KAAK4X,OAAOzQ,MAK/B,SAASiW,KACL,OAAOpd,KAAK8a,QAShB,SAAS8b,GAAMC,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,EAG9C,SAASC,GAAiBhrB,EAAGtF,EAAGC,GAE5B,OAAIqF,EAAI,KAAOA,GAAK,EAET,IAAIsL,KAAKtL,EAAI,IAAKtF,EAAGC,GAXb,YAaR,IAAI2Q,KAAKtL,EAAGtF,EAAGC,GAAG+Q,UAIjC,SAASuf,GAAejrB,EAAGtF,EAAGC,GAE1B,OAAIqF,EAAI,KAAOA,GAAK,EAETsL,KAAKiN,IAAIvY,EAAI,IAAKtF,EAAGC,GArBb,YAuBR2Q,KAAKiN,IAAIvY,EAAGtF,EAAGC,GAsb9B,SAASuwB,GAAalW,EAAUnJ,GAC5B,OAAOA,EAAOsf,cAAcnW,GAehC,SAASoW,KACL,IAII53B,EACAkB,EALA22B,EAAa,GACbC,EAAa,GACbC,EAAe,GACf/T,EAAc,GAGdgU,EAAOv3B,KAAKu3B,OAEhB,IAAKh4B,EAAI,EAAGkB,EAAI82B,EAAK/3B,OAAQD,EAAIkB,IAAKlB,EAClC83B,EAAWh6B,KAAK6jB,GAAYqW,EAAKh4B,GAAG7B,OACpC05B,EAAW/5B,KAAK6jB,GAAYqW,EAAKh4B,GAAGyrB,OACpCsM,EAAaj6B,KAAK6jB,GAAYqW,EAAKh4B,GAAGi4B,SAEtCjU,EAAYlmB,KAAK6jB,GAAYqW,EAAKh4B,GAAG7B,OACrC6lB,EAAYlmB,KAAK6jB,GAAYqW,EAAKh4B,GAAGyrB,OACrCzH,EAAYlmB,KAAK6jB,GAAYqW,EAAKh4B,GAAGi4B,SAGzCx3B,KAAKy3B,WAAa,IAAIxW,OAAO,KAAOsC,EAAYze,KAAK,KAAO,IAAK,KACjE9E,KAAK03B,eAAiB,IAAIzW,OAAO,KAAOoW,EAAWvyB,KAAK,KAAO,IAAK,KACpE9E,KAAK23B,eAAiB,IAAI1W,OAAO,KAAOmW,EAAWtyB,KAAK,KAAO,IAAK,KACpE9E,KAAK43B,iBAAmB,IAAI3W,OACxB,KAAOqW,EAAaxyB,KAAK,KAAO,IAChC,KAcR,SAAS+yB,GAAuB5a,EAAOtW,GACnCqW,EAAe,EAAG,CAACC,EAAOA,EAAMzd,QAAS,EAAGmH,GAoFhD,SAASmxB,GAAqBjhB,EAAOkO,EAAMC,EAASN,EAAKC,GACrD,IAAIoT,EACJ,OAAa,MAATlhB,EACOuO,GAAWplB,KAAM0kB,EAAKC,GAAK9F,MAG9BkG,GADJgT,EAAcxS,GAAY1O,EAAO6N,EAAKC,MAElCI,EAAOgT,GAEJC,GAAWj8B,KAAKiE,KAAM6W,EAAOkO,EAAMC,EAASN,EAAKC,IAIhE,SAASqT,GAAW/I,EAAUlK,EAAMC,EAASN,EAAKC,GAC9C,IAAIsT,EAAgBnT,GAAmBmK,EAAUlK,EAAMC,EAASN,EAAKC,GACjElF,EAAO4E,GAAc4T,EAAcpZ,KAAM,EAAGoZ,EAAc9S,WAK9D,OAHAnlB,KAAK6e,KAAKY,EAAK8E,kBACfvkB,KAAKwf,MAAMC,EAAKmP,eAChB5uB,KAAKyf,KAAKA,EAAKoP,cACR7uB,KA5YXgd,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpC4D,GAAc,IAAKqW,IACnBrW,GAAc,KAAMqW,IACpBrW,GAAc,MAAOqW,IACrBrW,GAAc,QAmOd,SAAsBG,EAAUnJ,GAC5B,OAAOA,EAAOsgB,cAAcnX,MAnOhCH,GAAc,SAsOd,SAAwBG,EAAUnJ,GAC9B,OAAOA,EAAOugB,gBAAgBpX,MArOlCQ,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,UAAU,SAC/C1K,EACA0G,EACAvC,EACAiC,GAEA,IAAInE,EAAMkC,EAAOF,QAAQsd,UAAUvhB,EAAOoG,EAAOjC,EAAOrB,SACpDb,EACAd,EAAgBgD,GAAQlC,IAAMA,EAE9Bd,EAAgBgD,GAAQxC,WAAa3B,KAI7C+J,GAAc,IAAKL,IACnBK,GAAc,KAAML,IACpBK,GAAc,MAAOL,IACrBK,GAAc,OAAQL,IACtBK,GAAc,MAsNd,SAA6BG,EAAUnJ,GACnC,OAAOA,EAAOygB,sBAAwB9X,MArN1CgB,GAAc,CAAC,IAAK,KAAM,MAAO,QA53GtB,GA63GXA,GAAc,CAAC,OAAO,SAAU1K,EAAO0G,EAAOvC,EAAQiC,GAClD,IAAIlK,EACAiI,EAAOF,QAAQud,uBACftlB,EAAQ8D,EAAM9D,MAAMiI,EAAOF,QAAQud,uBAGnCrd,EAAOF,QAAQwd,oBACf/a,EAp4GG,GAo4GWvC,EAAOF,QAAQwd,oBAAoBzhB,EAAO9D,GAExDwK,EAt4GG,GAs4GWwG,SAASlN,EAAO,OA4OtCmG,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOhd,KAAKivB,WAAa,OAG7BjS,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOhd,KAAKu4B,cAAgB,OAOhCV,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhC9Z,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BW,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAI/BkC,GAAc,IAAKJ,IACnBI,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,IACjCa,GAAc,OAAQP,GAAWN,IACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,QAASN,GAAWN,IAElCwB,GAAkB,CAAC,OAAQ,QAAS,OAAQ,UAAU,SAClD3K,EACAkO,EACA/J,EACAiC,GAEA8H,EAAK9H,EAAMN,OAAO,EAAG,IAAMsC,EAAMpI,MAGrC2K,GAAkB,CAAC,KAAM,OAAO,SAAU3K,EAAOkO,EAAM/J,EAAQiC,GAC3D8H,EAAK9H,GAASrG,EAAMkN,kBAAkBjN,MAsE1CmG,EAAe,IAAK,EAAG,KAAM,WAI7Be,EAAa,UAAW,KAIxBW,EAAgB,UAAW,GAI3BkC,GAAc,IAAKhB,GACnB2B,GAAc,KAAK,SAAU1K,EAAO0G,GAChCA,EArvHQ,GAqvH4B,GAApB0B,EAAMpI,GAAS,MAanCmG,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCe,EAAa,OAAQ,KAGrBW,EAAgB,OAAQ,GAIxBkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,MAAM,SAAUG,EAAUnJ,GAEpC,OAAOmJ,EACDnJ,EAAO4gB,yBAA2B5gB,EAAO6gB,cACzC7gB,EAAO8gB,kCAGjBnX,GAAc,CAAC,IAAK,MArxHT,GAsxHXA,GAAc,MAAM,SAAU1K,EAAO0G,GACjCA,EAvxHO,GAuxHO0B,EAAMpI,EAAM9D,MAAMkN,IAAW,OAK/C,IAAI0Y,GAAmBtZ,EAAW,QAAQ,GAI1CrC,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3Ce,EAAa,YAAa,OAG1BW,EAAgB,YAAa,GAI7BkC,GAAc,MAAOR,IACrBQ,GAAc,OAAQd,IACtByB,GAAc,CAAC,MAAO,SAAS,SAAU1K,EAAO0G,EAAOvC,GACnDA,EAAOyU,WAAaxQ,EAAMpI,MAiB9BmG,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCe,EAAa,SAAU,KAIvBW,EAAgB,SAAU,IAI1BkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B0B,GAAc,CAAC,IAAK,MA30HP,GA+0Hb,IAAIqX,GAAevZ,EAAW,WAAW,GAIzCrC,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCe,EAAa,SAAU,KAIvBW,EAAgB,SAAU,IAI1BkC,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/B0B,GAAc,CAAC,IAAK,MAh2HP,GAo2Hb,IA8CItE,GAAO4b,GA9CPC,GAAezZ,EAAW,WAAW,GA+CzC,IA3CArC,EAAe,IAAK,EAAG,GAAG,WACtB,SAAUhd,KAAKqxB,cAAgB,QAGnCrU,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,SAAUhd,KAAKqxB,cAAgB,OAGnCrU,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAC9B,OAA4B,GAArBhd,KAAKqxB,iBAEhBrU,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WAC/B,OAA4B,IAArBhd,KAAKqxB,iBAEhBrU,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAChC,OAA4B,IAArBhd,KAAKqxB,iBAEhBrU,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACjC,OAA4B,IAArBhd,KAAKqxB,iBAEhBrU,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WAClC,OAA4B,IAArBhd,KAAKqxB,iBAEhBrU,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACnC,OAA4B,IAArBhd,KAAKqxB,iBAKhBtT,EAAa,cAAe,MAI5BW,EAAgB,cAAe,IAI/BkC,GAAc,IAAKR,GAAWR,GAC9BgB,GAAc,KAAMR,GAAWP,GAC/Be,GAAc,MAAOR,GAAWN,IAG3B7C,GAAQ,OAAQA,GAAMzd,QAAU,EAAGyd,IAAS,IAC7C2D,GAAc3D,GAAOsD,IAGzB,SAASwY,GAAQliB,EAAO0G,GACpBA,EAv5Hc,GAu5HO0B,EAAuB,KAAhB,KAAOpI,IAGvC,IAAKoG,GAAQ,IAAKA,GAAMzd,QAAU,EAAGyd,IAAS,IAC1CsE,GAActE,GAAO8b,IAGzBF,GAAoBxZ,EAAW,gBAAgB,GAI/CrC,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAIgc,GAAQje,EAAOlf,UAgHnB,SAASo9B,GAAmBvlB,GACxB,OAAOA,EA/GXslB,GAAMvH,IAAMA,GACZuH,GAAMtQ,SApoCN,SAAoBwQ,EAAMC,GAEG,IAArBrjB,UAAUtW,SACLsW,UAAU,GAGJ6f,GAAc7f,UAAU,KAC/BojB,EAAOpjB,UAAU,GACjBqjB,OAAU75B,GACH82B,GAAetgB,UAAU,MAChCqjB,EAAUrjB,UAAU,GACpBojB,OAAO55B,IAPP45B,OAAO55B,EACP65B,OAAU75B,IAWlB,IAAIovB,EAAMwK,GAAQ5J,KACd8J,EAAMvF,GAAgBnF,EAAK1uB,MAAMq5B,QAAQ,OACzC1hB,EAASf,EAAM0iB,eAAet5B,KAAMo5B,IAAQ,WAC5C3b,EACI0b,IACCxd,EAAWwd,EAAQxhB,IACdwhB,EAAQxhB,GAAQ5b,KAAKiE,KAAM0uB,GAC3ByK,EAAQxhB,IAEtB,OAAO3X,KAAK2X,OACR8F,GAAUzd,KAAKod,aAAasL,SAAS/Q,EAAQ3X,KAAMsvB,GAAYZ,MA2mCvEsK,GAAMhF,MAvmCN,WACI,OAAO,IAAIjZ,EAAO/a,OAumCtBg5B,GAAMjF,KA/hCN,SAAcld,EAAOuH,EAAOmb,GACxB,IAAIC,EAAMC,EAAWhc,EAErB,IAAKzd,KAAKkZ,UACN,OAAOa,IAKX,KAFAyf,EAAO3F,GAAgBhd,EAAO7W,OAEpBkZ,UACN,OAAOa,IAOX,OAJA0f,EAAoD,KAAvCD,EAAKlG,YAActzB,KAAKszB,aAErClV,EAAQD,EAAeC,IAGnB,IAAK,OACDX,EAAS4Y,GAAUr2B,KAAMw5B,GAAQ,GACjC,MACJ,IAAK,QACD/b,EAAS4Y,GAAUr2B,KAAMw5B,GACzB,MACJ,IAAK,UACD/b,EAAS4Y,GAAUr2B,KAAMw5B,GAAQ,EACjC,MACJ,IAAK,SACD/b,GAAUzd,KAAOw5B,GAAQ,IACzB,MACJ,IAAK,SACD/b,GAAUzd,KAAOw5B,GAAQ,IACzB,MACJ,IAAK,OACD/b,GAAUzd,KAAOw5B,GAAQ,KACzB,MACJ,IAAK,MACD/b,GAAUzd,KAAOw5B,EAAOC,GAAa,MACrC,MACJ,IAAK,OACDhc,GAAUzd,KAAOw5B,EAAOC,GAAa,OACrC,MACJ,QACIhc,EAASzd,KAAOw5B,EAGxB,OAAOD,EAAU9b,EAASqB,EAASrB,IAk/BvCub,GAAMU,MA1uBN,SAAetb,GACX,IAAI8a,EAAMS,EAEV,QAAcr6B,KADd8e,EAAQD,EAAeC,KACc,gBAAVA,IAA4Bpe,KAAKkZ,UACxD,OAAOlZ,KAKX,OAFA25B,EAAc35B,KAAK4a,OAASoc,GAAiBD,GAErC3Y,GACJ,IAAK,OACD8a,EAAOS,EAAY35B,KAAK6e,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACDqa,EACIS,EACI35B,KAAK6e,OACL7e,KAAKwf,QAAWxf,KAAKwf,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACD0Z,EAAOS,EAAY35B,KAAK6e,OAAQ7e,KAAKwf,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACD0Z,EACIS,EACI35B,KAAK6e,OACL7e,KAAKwf,QACLxf,KAAKyf,OAASzf,KAAKglB,UAAY,GAC/B,EACR,MACJ,IAAK,UACDkU,EACIS,EACI35B,KAAK6e,OACL7e,KAAKwf,QACLxf,KAAKyf,QAAUzf,KAAK45B,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDV,EAAOS,EAAY35B,KAAK6e,OAAQ7e,KAAKwf,QAASxf,KAAKyf,OAAS,GAAK,EACjE,MACJ,IAAK,OACDyZ,EAAOl5B,KAAKwZ,GAAG/B,UACfyhB,GAzIM,KA2IFtC,GACIsC,GAAQl5B,KAAK4a,OAAS,EA7ItB,IA6I0B5a,KAAKszB,aA5IjC,MA+IF,EACJ,MACJ,IAAK,SACD4F,EAAOl5B,KAAKwZ,GAAG/B,UACfyhB,GApJQ,IAoJgBtC,GAAMsC,EApJtB,KAoJ6C,EACrD,MACJ,IAAK,SACDA,EAAOl5B,KAAKwZ,GAAG/B,UACfyhB,GAzJQ,IAyJgBtC,GAAMsC,EAzJtB,KAyJ6C,EAM7D,OAFAl5B,KAAKwZ,GAAGya,QAAQiF,GAChBtiB,EAAMqE,aAAajb,MAAM,GAClBA,MAyqBXg5B,GAAMrhB,OAp5BN,SAAgBkiB,GACPA,IACDA,EAAc75B,KAAKq0B,QACbzd,EAAM8f,iBACN9f,EAAM6f,eAEhB,IAAIhZ,EAASJ,EAAard,KAAM65B,GAChC,OAAO75B,KAAKod,aAAa0c,WAAWrc,IA84BxCub,GAAM3e,KA34BN,SAAc6e,EAAMa,GAChB,OACI/5B,KAAKkZ,YACHgC,EAASge,IAASA,EAAKhgB,WAAcoW,GAAY4J,GAAMhgB,WAElDsb,GAAe,CAAEpa,GAAIpa,KAAMqa,KAAM6e,IACnCthB,OAAO5X,KAAK4X,UACZoiB,UAAUD,GAER/5B,KAAKod,aAAaO,eAm4BjCqb,GAAMiB,QA/3BN,SAAiBF,GACb,OAAO/5B,KAAKqa,KAAKiV,KAAeyK,IA+3BpCf,GAAM5e,GA53BN,SAAY8e,EAAMa,GACd,OACI/5B,KAAKkZ,YACHgC,EAASge,IAASA,EAAKhgB,WAAcoW,GAAY4J,GAAMhgB,WAElDsb,GAAe,CAAEna,KAAMra,KAAMoa,GAAI8e,IACnCthB,OAAO5X,KAAK4X,UACZoiB,UAAUD,GAER/5B,KAAKod,aAAaO,eAo3BjCqb,GAAMkB,MAh3BN,SAAeH,GACX,OAAO/5B,KAAKoa,GAAGkV,KAAeyK,IAg3BlCf,GAAMn7B,IArjIN,SAAmBugB,GAEf,OAAIzC,EAAW3b,KADfoe,EAAQD,EAAeC,KAEZpe,KAAKoe,KAETpe,MAijIXg5B,GAAMmB,UAznBN,WACI,OAAOniB,EAAgBhY,MAAMqY,UAynBjC2gB,GAAMhE,QA7mCN,SAAiBne,EAAOuH,GACpB,IAAIgc,EAAalf,EAASrE,GAASA,EAAQyY,GAAYzY,GACvD,SAAM7W,KAAKkZ,YAAakhB,EAAWlhB,aAIrB,iBADdkF,EAAQD,EAAeC,IAAU,eAEtBpe,KAAKyX,UAAY2iB,EAAW3iB,UAE5B2iB,EAAW3iB,UAAYzX,KAAKg0B,QAAQqF,QAAQjb,GAAO3G,YAqmClEuhB,GAAMnE,SAjmCN,SAAkBhe,EAAOuH,GACrB,IAAIgc,EAAalf,EAASrE,GAASA,EAAQyY,GAAYzY,GACvD,SAAM7W,KAAKkZ,YAAakhB,EAAWlhB,aAIrB,iBADdkF,EAAQD,EAAeC,IAAU,eAEtBpe,KAAKyX,UAAY2iB,EAAW3iB,UAE5BzX,KAAKg0B,QAAQ0F,MAAMtb,GAAO3G,UAAY2iB,EAAW3iB,YAylChEuhB,GAAMqB,UArlCN,SAAmBhgB,EAAMD,EAAIgE,EAAOkc,GAChC,IAAIC,EAAYrf,EAASb,GAAQA,EAAOiV,GAAYjV,GAChDmgB,EAAUtf,EAASd,GAAMA,EAAKkV,GAAYlV,GAC9C,SAAMpa,KAAKkZ,WAAaqhB,EAAUrhB,WAAashB,EAAQthB,cAK/B,OAFxBohB,EAAcA,GAAe,MAEZ,GACPt6B,KAAKg1B,QAAQuF,EAAWnc,IACvBpe,KAAK60B,SAAS0F,EAAWnc,MACZ,MAAnBkc,EAAY,GACPt6B,KAAK60B,SAAS2F,EAASpc,IACtBpe,KAAKg1B,QAAQwF,EAASpc,MAykCrC4a,GAAMyB,OArkCN,SAAgB5jB,EAAOuH,GACnB,IACIsc,EADAN,EAAalf,EAASrE,GAASA,EAAQyY,GAAYzY,GAEvD,SAAM7W,KAAKkZ,YAAakhB,EAAWlhB,aAIrB,iBADdkF,EAAQD,EAAeC,IAAU,eAEtBpe,KAAKyX,YAAc2iB,EAAW3iB,WAErCijB,EAAUN,EAAW3iB,UAEjBzX,KAAKg0B,QAAQqF,QAAQjb,GAAO3G,WAAaijB,GACzCA,GAAW16B,KAAKg0B,QAAQ0F,MAAMtb,GAAO3G,aAyjCjDuhB,GAAM2B,cApjCN,SAAuB9jB,EAAOuH,GAC1B,OAAOpe,KAAKy6B,OAAO5jB,EAAOuH,IAAUpe,KAAKg1B,QAAQne,EAAOuH,IAojC5D4a,GAAM4B,eAjjCN,SAAwB/jB,EAAOuH,GAC3B,OAAOpe,KAAKy6B,OAAO5jB,EAAOuH,IAAUpe,KAAK60B,SAAShe,EAAOuH,IAijC7D4a,GAAM9f,QAxoBN,WACI,OAAOA,EAAQlZ,OAwoBnBg5B,GAAMrC,KAAOA,GACbqC,GAAMphB,OAASA,GACfohB,GAAM5b,WAAaA,GACnB4b,GAAMtc,IAAMkV,GACZoH,GAAM/V,IAAMyO,GACZsH,GAAM6B,aA1oBN,WACI,OAAOrjB,EAAO,GAAIQ,EAAgBhY,QA0oBtCg5B,GAAMl7B,IA5jIN,SAAmBsgB,EAAOrgB,GACtB,GAAqB,iBAAVqgB,EAAoB,CAE3B,IACI7e,EADAu7B,EAzFZ,SAA6BC,GACzB,IACI7uB,EADAkS,EAAQ,GAEZ,IAAKlS,KAAK6uB,EACFhkB,EAAWgkB,EAAU7uB,IACrBkS,EAAM/gB,KAAK,CAAE2gB,KAAM9R,EAAGyS,SAAUF,EAAWvS,KAMnD,OAHAkS,EAAMoF,MAAK,SAAUnf,EAAGC,GACpB,OAAOD,EAAEsa,SAAWra,EAAEqa,YAEnBP,EA8Ee4c,CADlB5c,EAAQC,EAAqBD,IAG7B,IAAK7e,EAAI,EAAGA,EAAIu7B,EAAYt7B,OAAQD,IAChCS,KAAK86B,EAAYv7B,GAAGye,MAAMI,EAAM0c,EAAYv7B,GAAGye,YAInD,GAAIrC,EAAW3b,KADfoe,EAAQD,EAAeC,KAEnB,OAAOpe,KAAKoe,GAAOrgB,GAG3B,OAAOiC,MA+iIXg5B,GAAMK,QA/zBN,SAAiBjb,GACb,IAAI8a,EAAMS,EAEV,QAAcr6B,KADd8e,EAAQD,EAAeC,KACc,gBAAVA,IAA4Bpe,KAAKkZ,UACxD,OAAOlZ,KAKX,OAFA25B,EAAc35B,KAAK4a,OAASoc,GAAiBD,GAErC3Y,GACJ,IAAK,OACD8a,EAAOS,EAAY35B,KAAK6e,OAAQ,EAAG,GACnC,MACJ,IAAK,UACDqa,EAAOS,EACH35B,KAAK6e,OACL7e,KAAKwf,QAAWxf,KAAKwf,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACD0Z,EAAOS,EAAY35B,KAAK6e,OAAQ7e,KAAKwf,QAAS,GAC9C,MACJ,IAAK,OACD0Z,EAAOS,EACH35B,KAAK6e,OACL7e,KAAKwf,QACLxf,KAAKyf,OAASzf,KAAKglB,WAEvB,MACJ,IAAK,UACDkU,EAAOS,EACH35B,KAAK6e,OACL7e,KAAKwf,QACLxf,KAAKyf,QAAUzf,KAAK45B,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDV,EAAOS,EAAY35B,KAAK6e,OAAQ7e,KAAKwf,QAASxf,KAAKyf,QACnD,MACJ,IAAK,OACDyZ,EAAOl5B,KAAKwZ,GAAG/B,UACfyhB,GAAQtC,GACJsC,GAAQl5B,KAAK4a,OAAS,EAzElB,IAyEsB5a,KAAKszB,aAxE7B,MA2EN,MACJ,IAAK,SACD4F,EAAOl5B,KAAKwZ,GAAG/B,UACfyhB,GAAQtC,GAAMsC,EA/EN,KAgFR,MACJ,IAAK,SACDA,EAAOl5B,KAAKwZ,GAAG/B,UACfyhB,GAAQtC,GAAMsC,EApFN,KA0FhB,OAFAl5B,KAAKwZ,GAAGya,QAAQiF,GAChBtiB,EAAMqE,aAAajb,MAAM,GAClBA,MAowBXg5B,GAAMxD,SAAWA,GACjBwD,GAAMiC,QAjrBN,WACI,IAAIx0B,EAAIzG,KACR,MAAO,CACHyG,EAAEoY,OACFpY,EAAE+Y,QACF/Y,EAAEgZ,OACFhZ,EAAEwpB,OACFxpB,EAAE0qB,SACF1qB,EAAE2qB,SACF3qB,EAAE4qB,gBAyqBV2H,GAAMkC,SArqBN,WACI,IAAIz0B,EAAIzG,KACR,MAAO,CACHkyB,MAAOzrB,EAAEoY,OACTiD,OAAQrb,EAAE+Y,QACVC,KAAMhZ,EAAEgZ,OACRiI,MAAOjhB,EAAEihB,QACTE,QAASnhB,EAAEmhB,UACXG,QAASthB,EAAEshB,UACXyK,aAAc/rB,EAAE+rB,iBA6pBxBwG,GAAMmC,OAvrBN,WACI,OAAO,IAAI9jB,KAAKrX,KAAKyX,YAurBzBuhB,GAAMoC,YAx+BN,SAAqBC,GACjB,IAAKr7B,KAAKkZ,UACN,OAAO,KAEX,IAAInB,GAAqB,IAAfsjB,EACN50B,EAAIsR,EAAM/X,KAAKg0B,QAAQjc,MAAQ/X,KACnC,OAAIyG,EAAEoY,OAAS,GAAKpY,EAAEoY,OAAS,KACpBxB,EACH5W,EACAsR,EACM,iCACA,gCAGV4D,EAAWtE,KAAKxb,UAAUu/B,aAEtBrjB,EACO/X,KAAKm7B,SAASC,cAEd,IAAI/jB,KAAKrX,KAAKyX,UAA+B,GAAnBzX,KAAKszB,YAAmB,KACpD8H,cACApxB,QAAQ,IAAKqT,EAAa5W,EAAG,MAGnC4W,EACH5W,EACAsR,EAAM,+BAAiC,+BA+8B/CihB,GAAMsC,QAr8BN,WACI,IAAKt7B,KAAKkZ,UACN,MAAO,qBAAuBlZ,KAAK8T,GAAK,OAE5C,IAEIpI,EACAmT,EAEA0c,EALAzmB,EAAO,SACP0mB,EAAO,GAcX,OATKx7B,KAAKy7B,YACN3mB,EAA4B,IAArB9U,KAAKszB,YAAoB,aAAe,mBAC/CkI,EAAO,KAEX9vB,EAAS,IAAMoJ,EAAO,MACtB+J,EAAO,GAAK7e,KAAK6e,QAAU7e,KAAK6e,QAAU,KAAO,OAAS,SAE1D0c,EAASC,EAAO,OAETx7B,KAAK2X,OAAOjM,EAASmT,EAHjB,wBAGmC0c,IAm7B5B,oBAAXz0B,QAAwC,MAAdA,OAAO40B,MACxC1C,GAAMlyB,OAAO40B,IAAI,+BAAiC,WAC9C,MAAO,UAAY17B,KAAK2X,SAAW,MAG3CqhB,GAAM2C,OAjqBN,WAEI,OAAO37B,KAAKkZ,UAAYlZ,KAAKo7B,cAAgB,MAgqBjDpC,GAAMvpB,SAp/BN,WACI,OAAOzP,KAAKg0B,QAAQpc,OAAO,MAAMD,OAAO,qCAo/B5CqhB,GAAM4C,KArsBN,WACI,OAAOtf,KAAK0C,MAAMhf,KAAKyX,UAAY,MAqsBvCuhB,GAAMvhB,QA1sBN,WACI,OAAOzX,KAAKwZ,GAAG/B,UAAkC,KAArBzX,KAAK6a,SAAW,IA0sBhDme,GAAM6C,aAppBN,WACI,MAAO,CACHhlB,MAAO7W,KAAK8T,GACZ6D,OAAQ3X,KAAKya,GACb7C,OAAQ5X,KAAK8a,QACb0W,MAAOxxB,KAAK4a,OACZ/C,OAAQ7X,KAAK2Z,UA+oBrBqf,GAAM8C,QAzgBN,WACI,IAAIv8B,EACAkB,EACA8Z,EACAgd,EAAOv3B,KAAKod,aAAama,OAC7B,IAAKh4B,EAAI,EAAGkB,EAAI82B,EAAK/3B,OAAQD,EAAIkB,IAAKlB,EAAG,CAIrC,GAFAgb,EAAMva,KAAKg0B,QAAQqF,QAAQ,OAAO5hB,UAE9B8f,EAAKh4B,GAAGw8B,OAASxhB,GAAOA,GAAOgd,EAAKh4B,GAAGy8B,MACvC,OAAOzE,EAAKh4B,GAAG7B,KAEnB,GAAI65B,EAAKh4B,GAAGy8B,OAASzhB,GAAOA,GAAOgd,EAAKh4B,GAAGw8B,MACvC,OAAOxE,EAAKh4B,GAAG7B,KAIvB,MAAO,IAyfXs7B,GAAMiD,UAtfN,WACI,IAAI18B,EACAkB,EACA8Z,EACAgd,EAAOv3B,KAAKod,aAAama,OAC7B,IAAKh4B,EAAI,EAAGkB,EAAI82B,EAAK/3B,OAAQD,EAAIkB,IAAKlB,EAAG,CAIrC,GAFAgb,EAAMva,KAAKg0B,QAAQqF,QAAQ,OAAO5hB,UAE9B8f,EAAKh4B,GAAGw8B,OAASxhB,GAAOA,GAAOgd,EAAKh4B,GAAGy8B,MACvC,OAAOzE,EAAKh4B,GAAGi4B,OAEnB,GAAID,EAAKh4B,GAAGy8B,OAASzhB,GAAOA,GAAOgd,EAAKh4B,GAAGw8B,MACvC,OAAOxE,EAAKh4B,GAAGi4B,OAIvB,MAAO,IAseXwB,GAAMkD,QAneN,WACI,IAAI38B,EACAkB,EACA8Z,EACAgd,EAAOv3B,KAAKod,aAAama,OAC7B,IAAKh4B,EAAI,EAAGkB,EAAI82B,EAAK/3B,OAAQD,EAAIkB,IAAKlB,EAAG,CAIrC,GAFAgb,EAAMva,KAAKg0B,QAAQqF,QAAQ,OAAO5hB,UAE9B8f,EAAKh4B,GAAGw8B,OAASxhB,GAAOA,GAAOgd,EAAKh4B,GAAGy8B,MACvC,OAAOzE,EAAKh4B,GAAGyrB,KAEnB,GAAIuM,EAAKh4B,GAAGy8B,OAASzhB,GAAOA,GAAOgd,EAAKh4B,GAAGw8B,MACvC,OAAOxE,EAAKh4B,GAAGyrB,KAIvB,MAAO,IAmdXgO,GAAMmD,QAhdN,WACI,IAAI58B,EACAkB,EACA27B,EACA7hB,EACAgd,EAAOv3B,KAAKod,aAAama,OAC7B,IAAKh4B,EAAI,EAAGkB,EAAI82B,EAAK/3B,OAAQD,EAAIkB,IAAKlB,EAMlC,GALA68B,EAAM7E,EAAKh4B,GAAGw8B,OAASxE,EAAKh4B,GAAGy8B,MAAQ,GAAM,EAG7CzhB,EAAMva,KAAKg0B,QAAQqF,QAAQ,OAAO5hB,UAG7B8f,EAAKh4B,GAAGw8B,OAASxhB,GAAOA,GAAOgd,EAAKh4B,GAAGy8B,OACvCzE,EAAKh4B,GAAGy8B,OAASzhB,GAAOA,GAAOgd,EAAKh4B,GAAGw8B,MAExC,OACK/7B,KAAK6e,OAASjI,EAAM2gB,EAAKh4B,GAAGw8B,OAAOld,QAAUud,EAC9C7E,EAAKh4B,GAAG6zB,OAKpB,OAAOpzB,KAAK6e,QA0bhBma,GAAMna,KAAOmF,GACbgV,GAAMpa,WAzkHN,WACI,OAAOA,EAAW5e,KAAK6e,SAykH3Bma,GAAM/J,SAjUN,SAAwBpY,GACpB,OAAOihB,GAAqB/7B,KACxBiE,KACA6W,EACA7W,KAAK+kB,OACL/kB,KAAKglB,UACLhlB,KAAKod,aAAamS,MAAM7K,IACxB1kB,KAAKod,aAAamS,MAAM5K,MA2ThCqU,GAAMT,YAvTN,SAA2B1hB,GACvB,OAAOihB,GAAqB/7B,KACxBiE,KACA6W,EACA7W,KAAKsyB,UACLtyB,KAAK45B,aACL,EACA,IAiTRZ,GAAM5G,QAAU4G,GAAM7G,SA/OtB,SAAuBtb,GACnB,OAAgB,MAATA,EACDyF,KAAKyC,MAAM/e,KAAKwf,QAAU,GAAK,GAC/Bxf,KAAKwf,MAAoB,GAAb3I,EAAQ,GAAU7W,KAAKwf,QAAU,IA6OvDwZ,GAAMxZ,MAAQ0D,GACd8V,GAAMtZ,YAhuHN,WACI,OAAOA,GAAY1f,KAAK6e,OAAQ7e,KAAKwf,UAguHzCwZ,GAAMjU,KAAOiU,GAAM3G,MAj7GnB,SAAoBxb,GAChB,IAAIkO,EAAO/kB,KAAKod,aAAa2H,KAAK/kB,MAClC,OAAgB,MAAT6W,EAAgBkO,EAAO/kB,KAAKyxB,IAAqB,GAAhB5a,EAAQkO,GAAW,MAg7G/DiU,GAAM1G,QAAU0G,GAAMqD,SA76GtB,SAAuBxlB,GACnB,IAAIkO,EAAOK,GAAWplB,KAAM,EAAG,GAAG+kB,KAClC,OAAgB,MAATlO,EAAgBkO,EAAO/kB,KAAKyxB,IAAqB,GAAhB5a,EAAQkO,GAAW,MA46G/DiU,GAAMzT,YA1SN,WACI,IAAI+W,EAAWt8B,KAAKod,aAAamS,MACjC,OAAOhK,GAAYvlB,KAAK6e,OAAQyd,EAAS5X,IAAK4X,EAAS3X,MAyS3DqU,GAAMuD,gBAtSN,WACI,IAAID,EAAWt8B,KAAKod,aAAamS,MACjC,OAAOhK,GAAYvlB,KAAKivB,WAAYqN,EAAS5X,IAAK4X,EAAS3X,MAqS/DqU,GAAMwD,eApTN,WACI,OAAOjX,GAAYvlB,KAAK6e,OAAQ,EAAG,IAoTvCma,GAAMyD,sBAjTN,WACI,OAAOlX,GAAYvlB,KAAKu4B,cAAe,EAAG,IAiT9CS,GAAMvZ,KAAOkZ,GACbK,GAAMnS,IAAMmS,GAAMzG,KA9pGlB,SAAyB1b,GACrB,IAAK7W,KAAKkZ,UACN,OAAgB,MAATrC,EAAgB7W,KAAO+Z,IAElC,IAAI8M,EAAM7mB,KAAK4a,OAAS5a,KAAKwZ,GAAGqL,YAAc7kB,KAAKwZ,GAAGmU,SACtD,OAAa,MAAT9W,GACAA,EAzNR,SAAsBA,EAAOe,GACzB,MAAqB,iBAAVf,EACAA,EAGN0C,MAAM1C,GAKU,iBADrBA,EAAQe,EAAOqO,cAAcpP,IAElBA,EAGJ,KARIkN,SAASlN,EAAO,IAmNf6lB,CAAa7lB,EAAO7W,KAAKod,cAC1Bpd,KAAKyxB,IAAI5a,EAAQgQ,EAAK,MAEtBA,GAspGfmS,GAAMhU,QAlpGN,SAA+BnO,GAC3B,IAAK7W,KAAKkZ,UACN,OAAgB,MAATrC,EAAgB7W,KAAO+Z,IAElC,IAAIiL,GAAWhlB,KAAK6mB,MAAQ,EAAI7mB,KAAKod,aAAamS,MAAM7K,KAAO,EAC/D,OAAgB,MAAT7N,EAAgBmO,EAAUhlB,KAAKyxB,IAAI5a,EAAQmO,EAAS,MA8oG/DgU,GAAMY,WA3oGN,SAA4B/iB,GACxB,IAAK7W,KAAKkZ,UACN,OAAgB,MAATrC,EAAgB7W,KAAO+Z,IAOlC,GAAa,MAATlD,EAAe,CACf,IAAImO,EAjOZ,SAAyBnO,EAAOe,GAC5B,MAAqB,iBAAVf,EACAe,EAAOqO,cAAcpP,GAAS,GAAK,EAEvC0C,MAAM1C,GAAS,KAAOA,EA6NX8lB,CAAgB9lB,EAAO7W,KAAKod,cAC1C,OAAOpd,KAAK6mB,IAAI7mB,KAAK6mB,MAAQ,EAAI7B,EAAUA,EAAU,GAErD,OAAOhlB,KAAK6mB,OAAS,GA+nG7BmS,GAAM7T,UAhMN,SAAyBtO,GACrB,IAAIsO,EACA7I,KAAK6W,OACAnzB,KAAKg0B,QAAQqF,QAAQ,OAASr5B,KAAKg0B,QAAQqF,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAATxiB,EAAgBsO,EAAYnlB,KAAKyxB,IAAI5a,EAAQsO,EAAW,MA4LnE6T,GAAM/I,KAAO+I,GAAMtR,MAAQc,GAC3BwQ,GAAM7H,OAAS6H,GAAMpR,QAAUgR,GAC/BI,GAAM5H,OAAS4H,GAAMjR,QAAU+Q,GAC/BE,GAAM3H,YAAc2H,GAAMxG,aAAeqG,GACzCG,GAAM1F,UAhnDN,SAAsBzc,EAAO+lB,EAAeC,GACxC,IACIC,EADA1J,EAASpzB,KAAK6a,SAAW,EAE7B,IAAK7a,KAAKkZ,UACN,OAAgB,MAATrC,EAAgB7W,KAAO+Z,IAElC,GAAa,MAATlD,EAAe,CACf,GAAqB,iBAAVA,GAEP,GAAc,QADdA,EAAQ2c,GAAiB9S,GAAkB7J,IAEvC,OAAO7W,UAEJsc,KAAKC,IAAI1F,GAAS,KAAOgmB,IAChChmB,GAAgB,IAwBpB,OAtBK7W,KAAK4a,QAAUgiB,IAChBE,EAAc3I,GAAcn0B,OAEhCA,KAAK6a,QAAUhE,EACf7W,KAAK4a,QAAS,EACK,MAAfkiB,GACA98B,KAAKyxB,IAAIqL,EAAa,KAEtB1J,IAAWvc,KACN+lB,GAAiB58B,KAAK+8B,kBACvB1H,GACIr1B,KACAw0B,GAAe3d,EAAQuc,EAAQ,KAC/B,GACA,GAEIpzB,KAAK+8B,oBACb/8B,KAAK+8B,mBAAoB,EACzBnmB,EAAMqE,aAAajb,MAAM,GACzBA,KAAK+8B,kBAAoB,OAG1B/8B,KAEP,OAAOA,KAAK4a,OAASwY,EAASe,GAAcn0B,OA0kDpDg5B,GAAMjhB,IAxjDN,SAAwB6kB,GACpB,OAAO58B,KAAKszB,UAAU,EAAGsJ,IAwjD7B5D,GAAM9E,MArjDN,SAA0B0I,GAStB,OARI58B,KAAK4a,SACL5a,KAAKszB,UAAU,EAAGsJ,GAClB58B,KAAK4a,QAAS,EAEVgiB,GACA58B,KAAKw1B,SAASrB,GAAcn0B,MAAO,MAGpCA,MA6iDXg5B,GAAMgE,UA1iDN,WACI,GAAiB,MAAbh9B,KAAK2a,KACL3a,KAAKszB,UAAUtzB,KAAK2a,MAAM,GAAO,QAC9B,GAAuB,iBAAZ3a,KAAK8T,GAAiB,CACpC,IAAImpB,EAAQzJ,GAAiB/S,GAAazgB,KAAK8T,IAClC,MAATmpB,EACAj9B,KAAKszB,UAAU2J,GAEfj9B,KAAKszB,UAAU,GAAG,GAG1B,OAAOtzB,MAgiDXg5B,GAAMkE,qBA7hDN,SAA8BrmB,GAC1B,QAAK7W,KAAKkZ,YAGVrC,EAAQA,EAAQyY,GAAYzY,GAAOyc,YAAc,GAEzCtzB,KAAKszB,YAAczc,GAAS,IAAO,IAwhD/CmiB,GAAMmE,MArhDN,WACI,OACIn9B,KAAKszB,YAActzB,KAAKg0B,QAAQxU,MAAM,GAAG8T,aACzCtzB,KAAKszB,YAActzB,KAAKg0B,QAAQxU,MAAM,GAAG8T,aAmhDjD0F,GAAMyC,QAz/CN,WACI,QAAOz7B,KAAKkZ,YAAalZ,KAAK4a,QAy/ClCoe,GAAMoE,YAt/CN,WACI,QAAOp9B,KAAKkZ,WAAYlZ,KAAK4a,QAs/CjCoe,GAAM3E,MAAQA,GACd2E,GAAMxH,MAAQ6C,GACd2E,GAAMqE,SAzFN,WACI,OAAOr9B,KAAK4a,OAAS,MAAQ,IAyFjCoe,GAAMsE,SAtFN,WACI,OAAOt9B,KAAK4a,OAAS,6BAA+B,IAsFxDoe,GAAMuE,MAAQliB,EACV,kDACAsd,IAEJK,GAAMlX,OAASzG,EACX,mDACA6H,IAEJ8V,GAAM9G,MAAQ7W,EACV,iDACA2I,IAEJgV,GAAMwC,KAAOngB,EACT,4GA9lDJ,SAAoBxE,EAAO+lB,GACvB,OAAa,MAAT/lB,GACqB,iBAAVA,IACPA,GAASA,GAGb7W,KAAKszB,UAAUzc,EAAO+lB,GAEf58B,OAECA,KAAKszB,eAulDrB0F,GAAMwE,aAAeniB,EACjB,2GAtiDJ,WACI,IAAKnE,EAAYlX,KAAKy9B,eAClB,OAAOz9B,KAAKy9B,cAGhB,IACI9L,EADAtvB,EAAI,GAcR,OAXA8X,EAAW9X,EAAGrC,OACdqC,EAAIiuB,GAAcjuB,IAEZsf,IACFgQ,EAAQtvB,EAAEuY,OAASlD,EAAUrV,EAAEsf,IAAM2N,GAAYjtB,EAAEsf,IACnD3hB,KAAKy9B,cACDz9B,KAAKkZ,WAtOjB,SAAuBwkB,EAAQC,EAAQC,GACnC,IAGIr+B,EAHAiQ,EAAM8M,KAAK2G,IAAIya,EAAOl+B,OAAQm+B,EAAOn+B,QACrCq+B,EAAavhB,KAAKC,IAAImhB,EAAOl+B,OAASm+B,EAAOn+B,QAC7Cs+B,EAAQ,EAEZ,IAAKv+B,EAAI,EAAGA,EAAIiQ,EAAKjQ,KAEZq+B,GAAeF,EAAOn+B,KAAOo+B,EAAOp+B,KACnCq+B,GAAe3e,EAAMye,EAAOn+B,MAAQ0f,EAAM0e,EAAOp+B,MAEnDu+B,IAGR,OAAOA,EAAQD,EAyNWE,CAAc17B,EAAEsf,GAAIgQ,EAAMsJ,WAAa,GAE7Dj7B,KAAKy9B,eAAgB,EAGlBz9B,KAAKy9B,iBAmiDhB,IAAIO,GAAUhiB,EAAOngB,UAuCrB,SAASoiC,GAAMtmB,EAAQumB,EAAOC,EAAOC,GACjC,IAAIxmB,EAASkT,KACT/S,EAAML,IAAY5Z,IAAIsgC,EAAQF,GAClC,OAAOtmB,EAAOumB,GAAOpmB,EAAKJ,GAG9B,SAAS0mB,GAAe1mB,EAAQumB,EAAOC,GAQnC,GAPIhnB,EAASQ,KACTumB,EAAQvmB,EACRA,OAASrY,GAGbqY,EAASA,GAAU,GAEN,MAATumB,EACA,OAAOD,GAAMtmB,EAAQumB,EAAOC,EAAO,SAGvC,IAAI5+B,EACA++B,EAAM,GACV,IAAK/+B,EAAI,EAAGA,EAAI,GAAIA,IAChB++B,EAAI/+B,GAAK0+B,GAAMtmB,EAAQpY,EAAG4+B,EAAO,SAErC,OAAOG,EAWX,SAASC,GAAiBC,EAAc7mB,EAAQumB,EAAOC,GACvB,kBAAjBK,GACHrnB,EAASQ,KACTumB,EAAQvmB,EACRA,OAASrY,GAGbqY,EAASA,GAAU,KAGnBumB,EADAvmB,EAAS6mB,EAETA,GAAe,EAEXrnB,EAASQ,KACTumB,EAAQvmB,EACRA,OAASrY,GAGbqY,EAASA,GAAU,IAGvB,IAEIpY,EAFAqY,EAASkT,KACT2T,EAAQD,EAAe5mB,EAAO2X,MAAM7K,IAAM,EAE1C4Z,EAAM,GAEV,GAAa,MAATJ,EACA,OAAOD,GAAMtmB,GAASumB,EAAQO,GAAS,EAAGN,EAAO,OAGrD,IAAK5+B,EAAI,EAAGA,EAAI,EAAGA,IACf++B,EAAI/+B,GAAK0+B,GAAMtmB,GAASpY,EAAIk/B,GAAS,EAAGN,EAAO,OAEnD,OAAOG,EAxGXN,GAAQtV,SAn9IR,SAAkBvhB,EAAKqW,EAAKkR,GACxB,IAAIjR,EAASzd,KAAK0+B,UAAUv3B,IAAQnH,KAAK0+B,UAAoB,SAC7D,OAAO/iB,EAAW8B,GAAUA,EAAO1hB,KAAKyhB,EAAKkR,GAAOjR,GAk9IxDugB,GAAQngB,eAx1IR,SAAwB1W,GACpB,IAAIwQ,EAAS3X,KAAK2+B,gBAAgBx3B,GAC9By3B,EAAc5+B,KAAK2+B,gBAAgBx3B,EAAI03B,eAE3C,OAAIlnB,IAAWinB,EACJjnB,GAGX3X,KAAK2+B,gBAAgBx3B,GAAOy3B,EACvB7rB,MAAM6J,GACNhZ,KAAI,SAAUk7B,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAIx5B,MAAM,GAEdw5B,KAEVh6B,KAAK,IAEH9E,KAAK2+B,gBAAgBx3B,KAk0IhC62B,GAAQrgB,YA7zIR,WACI,OAAO3d,KAAK++B,cA6zIhBf,GAAQ7gB,QAvzIR,SAAiBjB,GACb,OAAOlc,KAAKg/B,SAASh1B,QAAQ,KAAMkS,IAuzIvC8hB,GAAQzN,SAAW0I,GACnB+E,GAAQlE,WAAab,GACrB+E,GAAQzU,aAnyIR,SAAsBrN,EAAQ6d,EAAermB,EAAQurB,GACjD,IAAIxhB,EAASzd,KAAKk/B,cAAcxrB,GAChC,OAAOiI,EAAW8B,GACZA,EAAOvB,EAAQ6d,EAAermB,EAAQurB,GACtCxhB,EAAOzT,QAAQ,MAAOkS,IAgyIhC8hB,GAAQmB,WA7xIR,SAAoBpL,EAAMtW,GACtB,IAAI9F,EAAS3X,KAAKk/B,cAAcnL,EAAO,EAAI,SAAW,QACtD,OAAOpY,EAAWhE,GAAUA,EAAO8F,GAAU9F,EAAO3N,QAAQ,MAAOyT,IA4xIvEugB,GAAQlgC,IA/iJR,SAAakd,GACT,IAAIV,EAAM/a,EACV,IAAKA,KAAKyb,EACFjE,EAAWiE,EAAQzb,KAEfoc,EADJrB,EAAOU,EAAOzb,IAEVS,KAAKT,GAAK+a,EAEVta,KAAK,IAAMT,GAAK+a,GAI5Bta,KAAKirB,QAAUjQ,EAIfhb,KAAK04B,+BAAiC,IAAIzX,QACrCjhB,KAAKw4B,wBAAwB4G,QAAUp/B,KAAKy4B,cAAc2G,QACvD,IACA,UAAUA,SA6hJtBpB,GAAQzG,KA1qBR,SAAoB9wB,EAAGkR,GACnB,IAAIpY,EACAkB,EACAgf,EACA8X,EAAOv3B,KAAKq/B,OAASvU,GAAU,MAAMuU,MACzC,IAAK9/B,EAAI,EAAGkB,EAAI82B,EAAK/3B,OAAQD,EAAIkB,IAAKlB,EAAG,CACrC,cAAeg4B,EAAKh4B,GAAGw8B,OACnB,IAAK,SAEDtc,EAAO7I,EAAM2gB,EAAKh4B,GAAGw8B,OAAO1C,QAAQ,OACpC9B,EAAKh4B,GAAGw8B,MAAQtc,EAAKhI,UAI7B,cAAe8f,EAAKh4B,GAAGy8B,OACnB,IAAK,YACDzE,EAAKh4B,GAAGy8B,MAAQ,IAChB,MACJ,IAAK,SAEDvc,EAAO7I,EAAM2gB,EAAKh4B,GAAGy8B,OAAO3C,QAAQ,OAAO5hB,UAC3C8f,EAAKh4B,GAAGy8B,MAAQvc,EAAKhI,WAIjC,OAAO8f,GAkpBXyG,GAAQ5F,UA/oBR,SAAyB0D,EAASnkB,EAAQE,GACtC,IAAItY,EACAkB,EAEA/C,EACAstB,EACAwM,EAHAD,EAAOv3B,KAAKu3B,OAMhB,IAFAuE,EAAUA,EAAQ+C,cAEbt/B,EAAI,EAAGkB,EAAI82B,EAAK/3B,OAAQD,EAAIkB,IAAKlB,EAKlC,GAJA7B,EAAO65B,EAAKh4B,GAAG7B,KAAKmhC,cACpB7T,EAAOuM,EAAKh4B,GAAGyrB,KAAK6T,cACpBrH,EAASD,EAAKh4B,GAAGi4B,OAAOqH,cAEpBhnB,EACA,OAAQF,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAIqT,IAAS8Q,EACT,OAAOvE,EAAKh4B,GAEhB,MAEJ,IAAK,OACD,GAAI7B,IAASo+B,EACT,OAAOvE,EAAKh4B,GAEhB,MAEJ,IAAK,QACD,GAAIi4B,IAAWsE,EACX,OAAOvE,EAAKh4B,QAIrB,GAAI,CAAC7B,EAAMstB,EAAMwM,GAAQp6B,QAAQ0+B,IAAY,EAChD,OAAOvE,EAAKh4B,IA2mBxBy+B,GAAQ3N,gBAtmBR,SAA+BvX,EAAK+F,GAChC,IAAIud,EAAMtjB,EAAIijB,OAASjjB,EAAIkjB,MAAQ,GAAM,EACzC,YAAa18B,IAATuf,EACOjI,EAAMkC,EAAIijB,OAAOld,OAEjBjI,EAAMkC,EAAIijB,OAAOld,QAAUA,EAAO/F,EAAIsa,QAAUgJ,GAkmB/D4B,GAAQ9G,cAjgBR,SAAuBnW,GAInB,OAHKhK,EAAW/W,KAAM,mBAClBm3B,GAAiBp7B,KAAKiE,MAEnB+gB,EAAW/gB,KAAK23B,eAAiB33B,KAAKy3B,YA8fjDuG,GAAQ9F,cAzgBR,SAAuBnX,GAInB,OAHKhK,EAAW/W,KAAM,mBAClBm3B,GAAiBp7B,KAAKiE,MAEnB+gB,EAAW/gB,KAAK03B,eAAiB13B,KAAKy3B,YAsgBjDuG,GAAQ7F,gBA5fR,SAAyBpX,GAIrB,OAHKhK,EAAW/W,KAAM,qBAClBm3B,GAAiBp7B,KAAKiE,MAEnB+gB,EAAW/gB,KAAK43B,iBAAmB53B,KAAKy3B,YA0fnDuG,GAAQlc,OAp9HR,SAAsBrb,EAAGkR,GACrB,OAAKlR,EAKEkN,EAAQ3T,KAAK8yB,SACd9yB,KAAK8yB,QAAQrsB,EAAE+Y,SACfxf,KAAK8yB,SACA9yB,KAAK8yB,QAAQwM,UAAYld,IAAkB5X,KAAKmN,GAC3C,SACA,cACRlR,EAAE+Y,SAVC7L,EAAQ3T,KAAK8yB,SACd9yB,KAAK8yB,QACL9yB,KAAK8yB,QAAoB,YAi9HvCkL,GAAQnc,YAt8HR,SAA2Bpb,EAAGkR,GAC1B,OAAKlR,EAKEkN,EAAQ3T,KAAKu/B,cACdv/B,KAAKu/B,aAAa94B,EAAE+Y,SACpBxf,KAAKu/B,aACDnd,GAAiB5X,KAAKmN,GAAU,SAAW,cAC7ClR,EAAE+Y,SARC7L,EAAQ3T,KAAKu/B,cACdv/B,KAAKu/B,aACLv/B,KAAKu/B,aAAyB,YAm8H5CvB,GAAQ/b,YA34HR,SAA2BO,EAAW7K,EAAQE,GAC1C,IAAItY,EAAGie,EAAKqD,EAEZ,GAAI7gB,KAAKw/B,kBACL,OAAOjd,GAAkBxmB,KAAKiE,KAAMwiB,EAAW7K,EAAQE,GAY3D,IATK7X,KAAK4iB,eACN5iB,KAAK4iB,aAAe,GACpB5iB,KAAK6iB,iBAAmB,GACxB7iB,KAAK8iB,kBAAoB,IAMxBvjB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBAie,EAAM9F,EAAU,CAAC,IAAMnY,IACnBsY,IAAW7X,KAAK6iB,iBAAiBtjB,KACjCS,KAAK6iB,iBAAiBtjB,GAAK,IAAI0hB,OAC3B,IAAMjhB,KAAK8hB,OAAOtE,EAAK,IAAIxT,QAAQ,IAAK,IAAM,IAC9C,KAEJhK,KAAK8iB,kBAAkBvjB,GAAK,IAAI0hB,OAC5B,IAAMjhB,KAAK6hB,YAAYrE,EAAK,IAAIxT,QAAQ,IAAK,IAAM,IACnD,MAGH6N,GAAW7X,KAAK4iB,aAAarjB,KAC9BshB,EACI,IAAM7gB,KAAK8hB,OAAOtE,EAAK,IAAM,KAAOxd,KAAK6hB,YAAYrE,EAAK,IAC9Dxd,KAAK4iB,aAAarjB,GAAK,IAAI0hB,OAAOJ,EAAM7W,QAAQ,IAAK,IAAK,MAI1D6N,GACW,SAAXF,GACA3X,KAAK6iB,iBAAiBtjB,GAAGiL,KAAKgY,GAE9B,OAAOjjB,EACJ,GACHsY,GACW,QAAXF,GACA3X,KAAK8iB,kBAAkBvjB,GAAGiL,KAAKgY,GAE/B,OAAOjjB,EACJ,IAAKsY,GAAU7X,KAAK4iB,aAAarjB,GAAGiL,KAAKgY,GAC5C,OAAOjjB,IA41HnBy+B,GAAQhc,YA1xHR,SAAqBjB,GACjB,OAAI/gB,KAAKw/B,mBACAzoB,EAAW/W,KAAM,iBAClBmjB,GAAmBpnB,KAAKiE,MAExB+gB,EACO/gB,KAAK2jB,mBAEL3jB,KAAKyjB,eAGX1M,EAAW/W,KAAM,kBAClBA,KAAKyjB,aAAenB,IAEjBtiB,KAAK2jB,oBAAsB5C,EAC5B/gB,KAAK2jB,mBACL3jB,KAAKyjB,eA2wHnBua,GAAQjc,iBA/yHR,SAA0BhB,GACtB,OAAI/gB,KAAKw/B,mBACAzoB,EAAW/W,KAAM,iBAClBmjB,GAAmBpnB,KAAKiE,MAExB+gB,EACO/gB,KAAK4jB,wBAEL5jB,KAAK0jB,oBAGX3M,EAAW/W,KAAM,uBAClBA,KAAK0jB,kBAAoBrB,IAEtBriB,KAAK4jB,yBAA2B7C,EACjC/gB,KAAK4jB,wBACL5jB,KAAK0jB,oBAgyHnBsa,GAAQjZ,KAvhHR,SAAoBvH,GAChB,OAAO4H,GAAW5H,EAAKxd,KAAKuvB,MAAM7K,IAAK1kB,KAAKuvB,MAAM5K,KAAKI,MAuhH3DiZ,GAAQyB,eA3gHR,WACI,OAAOz/B,KAAKuvB,MAAM5K,KA2gHtBqZ,GAAQ0B,eAhhHR,WACI,OAAO1/B,KAAKuvB,MAAM7K,KAihHtBsZ,GAAQnY,SA35GR,SAAwBpf,EAAGkR,GACvB,IAAIkO,EAAWlS,EAAQ3T,KAAK2/B,WACtB3/B,KAAK2/B,UACL3/B,KAAK2/B,UACDl5B,IAAW,IAANA,GAAczG,KAAK2/B,UAAUL,SAAS90B,KAAKmN,GAC1C,SACA,cAEhB,OAAa,IAANlR,EACDgf,GAAcI,EAAU7lB,KAAKuvB,MAAM7K,KACnCje,EACAof,EAASpf,EAAEogB,OACXhB,GAg5GVmY,GAAQrY,YAr4GR,SAA2Blf,GACvB,OAAa,IAANA,EACDgf,GAAczlB,KAAK4/B,aAAc5/B,KAAKuvB,MAAM7K,KAC5Cje,EACAzG,KAAK4/B,aAAan5B,EAAEogB,OACpB7mB,KAAK4/B,cAi4Gf5B,GAAQpY,cA94GR,SAA6Bnf,GACzB,OAAa,IAANA,EACDgf,GAAczlB,KAAK6/B,eAAgB7/B,KAAKuvB,MAAM7K,KAC9Cje,EACAzG,KAAK6/B,eAAep5B,EAAEogB,OACtB7mB,KAAK6/B,gBA04Gf7B,GAAQ/X,cAtzGR,SAA6BQ,EAAa9O,EAAQE,GAC9C,IAAItY,EAAGie,EAAKqD,EAEZ,GAAI7gB,KAAK8/B,oBACL,OAAOtZ,GAAoBzqB,KAAKiE,KAAMymB,EAAa9O,EAAQE,GAU/D,IAPK7X,KAAK0mB,iBACN1mB,KAAK0mB,eAAiB,GACtB1mB,KAAK4mB,kBAAoB,GACzB5mB,KAAK2mB,oBAAsB,GAC3B3mB,KAAK+/B,mBAAqB,IAGzBxgC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BAie,EAAM9F,EAAU,CAAC,IAAM,IAAImP,IAAItnB,GAC3BsY,IAAW7X,KAAK+/B,mBAAmBxgC,KACnCS,KAAK+/B,mBAAmBxgC,GAAK,IAAI0hB,OAC7B,IAAMjhB,KAAK6lB,SAASrI,EAAK,IAAIxT,QAAQ,IAAK,QAAU,IACpD,KAEJhK,KAAK2mB,oBAAoBpnB,GAAK,IAAI0hB,OAC9B,IAAMjhB,KAAK4lB,cAAcpI,EAAK,IAAIxT,QAAQ,IAAK,QAAU,IACzD,KAEJhK,KAAK4mB,kBAAkBrnB,GAAK,IAAI0hB,OAC5B,IAAMjhB,KAAK2lB,YAAYnI,EAAK,IAAIxT,QAAQ,IAAK,QAAU,IACvD,MAGHhK,KAAK0mB,eAAennB,KACrBshB,EACI,IACA7gB,KAAK6lB,SAASrI,EAAK,IACnB,KACAxd,KAAK4lB,cAAcpI,EAAK,IACxB,KACAxd,KAAK2lB,YAAYnI,EAAK,IAC1Bxd,KAAK0mB,eAAennB,GAAK,IAAI0hB,OAAOJ,EAAM7W,QAAQ,IAAK,IAAK,MAI5D6N,GACW,SAAXF,GACA3X,KAAK+/B,mBAAmBxgC,GAAGiL,KAAKic,GAEhC,OAAOlnB,EACJ,GACHsY,GACW,QAAXF,GACA3X,KAAK2mB,oBAAoBpnB,GAAGiL,KAAKic,GAEjC,OAAOlnB,EACJ,GACHsY,GACW,OAAXF,GACA3X,KAAK4mB,kBAAkBrnB,GAAGiL,KAAKic,GAE/B,OAAOlnB,EACJ,IAAKsY,GAAU7X,KAAK0mB,eAAennB,GAAGiL,KAAKic,GAC9C,OAAOlnB,IA0vGnBy+B,GAAQhY,cA7sGR,SAAuBjF,GACnB,OAAI/gB,KAAK8/B,qBACA/oB,EAAW/W,KAAM,mBAClB8mB,GAAqB/qB,KAAKiE,MAE1B+gB,EACO/gB,KAAKsnB,qBAELtnB,KAAKmnB,iBAGXpQ,EAAW/W,KAAM,oBAClBA,KAAKmnB,eAAiBd,IAEnBrmB,KAAKsnB,sBAAwBvG,EAC9B/gB,KAAKsnB,qBACLtnB,KAAKmnB,iBA8rGnB6W,GAAQjY,mBA1rGR,SAA4BhF,GACxB,OAAI/gB,KAAK8/B,qBACA/oB,EAAW/W,KAAM,mBAClB8mB,GAAqB/qB,KAAKiE,MAE1B+gB,EACO/gB,KAAKunB,0BAELvnB,KAAKonB,sBAGXrQ,EAAW/W,KAAM,yBAClBA,KAAKonB,oBAAsBd,IAExBtmB,KAAKunB,2BAA6BxG,EACnC/gB,KAAKunB,0BACLvnB,KAAKonB,sBA2qGnB4W,GAAQlY,iBAvqGR,SAA0B/E,GACtB,OAAI/gB,KAAK8/B,qBACA/oB,EAAW/W,KAAM,mBAClB8mB,GAAqB/qB,KAAKiE,MAE1B+gB,EACO/gB,KAAKwnB,wBAELxnB,KAAKqnB,oBAGXtQ,EAAW/W,KAAM,uBAClBA,KAAKqnB,kBAAoBd,IAEtBvmB,KAAKwnB,yBAA2BzG,EACjC/gB,KAAKwnB,wBACLxnB,KAAKqnB,oBAypGnB2W,GAAQ9V,KAv+FR,SAAoBrR,GAGhB,MAAgD,OAAxCA,EAAQ,IAAI/D,cAAcvG,OAAO,IAq+F7CyxB,GAAQjlB,SA39FR,SAAwB2O,EAAOE,EAASoY,GACpC,OAAItY,EAAQ,GACDsY,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAmjGhCpV,GAAmB,KAAM,CACrB2M,KAAM,CACF,CACIwE,MAAO,aACPC,MAAO,IACP5I,OAAQ,EACR11B,KAAM,cACN85B,OAAQ,KACRxM,KAAM,MAEV,CACI+Q,MAAO,aACPC,OAAO,IACP5I,OAAQ,EACR11B,KAAM,gBACN85B,OAAQ,KACRxM,KAAM,OAGd1B,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GATgC,IAA/B+C,EAAO/C,EAAS,IAAO,IACjB,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SAOtBsS,EAAM+f,KAAOtb,EACT,wDACAuP,IAEJhU,EAAMqpB,SAAW5kB,EACb,gEACAyP,IAGJ,IAAIoV,GAAU5jB,KAAKC,IAmBnB,SAAS4jB,GAAclO,EAAUpb,EAAO9Y,EAAOm3B,GAC3C,IAAIvD,EAAQ6C,GAAe3d,EAAO9Y,GAMlC,OAJAk0B,EAASW,eAAiBsC,EAAYvD,EAAMiB,cAC5CX,EAASY,OAASqC,EAAYvD,EAAMkB,MACpCZ,EAASa,SAAWoC,EAAYvD,EAAMmB,QAE/Bb,EAASe,UAapB,SAASoN,GAAQlkB,GACb,OAAIA,EAAS,EACFI,KAAK0C,MAAM9C,GAEXI,KAAKyC,KAAK7C,GA2DzB,SAASmkB,GAAa9N,GAGlB,OAAe,KAAPA,EAAe,OAG3B,SAAS+N,GAAaxe,GAElB,OAAiB,OAATA,EAAmB,KA4D/B,SAASye,GAAOC,GACZ,OAAO,WACH,OAAOxgC,KAAKygC,GAAGD,IAIvB,IAAIE,GAAiBH,GAAO,MACxBI,GAAYJ,GAAO,KACnBK,GAAYL,GAAO,KACnBM,GAAUN,GAAO,KACjBO,GAASP,GAAO,KAChBQ,GAAUR,GAAO,KACjBS,GAAWT,GAAO,KAClBU,GAAaV,GAAO,KACpBW,GAAUX,GAAO,KAWrB,SAASY,GAAWzjC,GAChB,OAAO,WACH,OAAOsC,KAAKkZ,UAAYlZ,KAAK+yB,MAAMr1B,GAAQqc,KAInD,IAAIyY,GAAe2O,GAAW,gBAC1BpZ,GAAUoZ,GAAW,WACrBvZ,GAAUuZ,GAAW,WACrBzZ,GAAQyZ,GAAW,SACnB5O,GAAO4O,GAAW,QAClBrf,GAASqf,GAAW,UACpBjP,GAAQiP,GAAW,SAMnBhO,GAAQ7W,KAAK6W,MACbiO,GAAa,CACT1X,GAAI,GACJliB,EAAG,GACHf,EAAG,GACHnE,EAAG,GACHoE,EAAG,GACH0D,EAAG,KACHyB,EAAG,IAIX,SAASw1B,GAAkB3tB,EAAQwI,EAAQ6d,EAAekF,EAAUrnB,GAChE,OAAOA,EAAO2R,aAAarN,GAAU,IAAK6d,EAAermB,EAAQurB,GAoGrE,IAAIqC,GAAQhlB,KAAKC,IAEjB,SAASgX,GAAKloB,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,EAGjC,SAASk2B,KAQL,IAAKvhC,KAAKkZ,UACN,OAAOlZ,KAAKod,aAAaO,cAG7B,IAGIiK,EACAF,EACAwK,EACA1qB,EAEAg6B,EACAC,EACAC,EACAC,EAXA5Z,EAAUuZ,GAAMthC,KAAK4yB,eAAiB,IACtCL,EAAO+O,GAAMthC,KAAK6yB,OAClB/Q,EAASwf,GAAMthC,KAAK8yB,SAKpB8O,EAAQ5hC,KAAK2gC,YAMjB,OAAKiB,GAOLha,EAAU9I,EAASiJ,EAAU,IAC7BL,EAAQ5I,EAAS8I,EAAU,IAC3BG,GAAW,GACXH,GAAW,GAGXsK,EAAQpT,EAASgD,EAAS,IAC1BA,GAAU,GAGVta,EAAIugB,EAAUA,EAAQ8Z,QAAQ,GAAG73B,QAAQ,SAAU,IAAM,GAEzDw3B,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAASlO,GAAKvzB,KAAK8yB,WAAaS,GAAKqO,GAAS,IAAM,GACpDF,EAAWnO,GAAKvzB,KAAK6yB,SAAWU,GAAKqO,GAAS,IAAM,GACpDD,EAAUpO,GAAKvzB,KAAK4yB,iBAAmBW,GAAKqO,GAAS,IAAM,GAGvDJ,EACA,KACCtP,EAAQuP,EAASvP,EAAQ,IAAM,KAC/BpQ,EAAS2f,EAAS3f,EAAS,IAAM,KACjCyQ,EAAOmP,EAAWnP,EAAO,IAAM,KAC/B7K,GAASE,GAAWG,EAAU,IAAM,KACpCL,EAAQia,EAAUja,EAAQ,IAAM,KAChCE,EAAU+Z,EAAU/Z,EAAU,IAAM,KACpCG,EAAU4Z,EAAUn6B,EAAI,IAAM,KA9BxB,MAkCf,IAAIs6B,GAAU9P,GAASn2B,UAwGvB,OAtGAimC,GAAQ5oB,QAl4ER,WACI,OAAOlZ,KAAKmZ,UAk4EhB2oB,GAAQvlB,IA3YR,WACI,IAAI1b,EAAOb,KAAK+yB,MAahB,OAXA/yB,KAAK4yB,cAAgBsN,GAAQlgC,KAAK4yB,eAClC5yB,KAAK6yB,MAAQqN,GAAQlgC,KAAK6yB,OAC1B7yB,KAAK8yB,QAAUoN,GAAQlgC,KAAK8yB,SAE5BjyB,EAAK2xB,aAAe0N,GAAQr/B,EAAK2xB,cACjC3xB,EAAKknB,QAAUmY,GAAQr/B,EAAKknB,SAC5BlnB,EAAK+mB,QAAUsY,GAAQr/B,EAAK+mB,SAC5B/mB,EAAK6mB,MAAQwY,GAAQr/B,EAAK6mB,OAC1B7mB,EAAKihB,OAASoe,GAAQr/B,EAAKihB,QAC3BjhB,EAAKqxB,MAAQgO,GAAQr/B,EAAKqxB,OAEnBlyB,MA8XX8hC,GAAQrQ,IAhXR,SAAe5a,EAAO9Y,GAClB,OAAOoiC,GAAcngC,KAAM6W,EAAO9Y,EAAO,IAgX7C+jC,GAAQtM,SA5WR,SAAoB3e,EAAO9Y,GACvB,OAAOoiC,GAAcngC,KAAM6W,EAAO9Y,GAAQ,IA4W9C+jC,GAAQrB,GA/RR,SAAYriB,GACR,IAAKpe,KAAKkZ,UACN,OAAOa,IAEX,IAAIwY,EACAzQ,EACA0Q,EAAexyB,KAAK4yB,cAIxB,GAAc,WAFdxU,EAAQD,EAAeC,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFAmU,EAAOvyB,KAAK6yB,MAAQL,EAAe,MACnC1Q,EAAS9hB,KAAK8yB,QAAUuN,GAAa9N,GAC7BnU,GACJ,IAAK,QACD,OAAO0D,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADAyQ,EAAOvyB,KAAK6yB,MAAQvW,KAAK6W,MAAMmN,GAAatgC,KAAK8yB,UACzC1U,GACJ,IAAK,OACD,OAAOmU,EAAO,EAAIC,EAAe,OACrC,IAAK,MACD,OAAOD,EAAOC,EAAe,MACjC,IAAK,OACD,OAAc,GAAPD,EAAYC,EAAe,KACtC,IAAK,SACD,OAAc,KAAPD,EAAcC,EAAe,IACxC,IAAK,SACD,OAAc,MAAPD,EAAeC,EAAe,IAEzC,IAAK,cACD,OAAOlW,KAAK0C,MAAa,MAAPuT,GAAgBC,EACtC,QACI,MAAM,IAAIrxB,MAAM,gBAAkBid,KAyPlD0jB,GAAQpB,eAAiBA,GACzBoB,GAAQnB,UAAYA,GACpBmB,GAAQlB,UAAYA,GACpBkB,GAAQjB,QAAUA,GAClBiB,GAAQhB,OAASA,GACjBgB,GAAQf,QAAUA,GAClBe,GAAQd,SAAWA,GACnBc,GAAQb,WAAaA,GACrBa,GAAQZ,QAAUA,GAClBY,GAAQrqB,QA5PR,WACI,OAAKzX,KAAKkZ,UAINlZ,KAAK4yB,cACQ,MAAb5yB,KAAK6yB,MACJ7yB,KAAK8yB,QAAU,GAAM,OACK,QAA3B7T,EAAMjf,KAAK8yB,QAAU,IANd/Y,KA2Pf+nB,GAAQ9O,QA5WR,WACI,IAIIjL,EACAH,EACAF,EACAwK,EACA6P,EARAvP,EAAexyB,KAAK4yB,cACpBL,EAAOvyB,KAAK6yB,MACZ/Q,EAAS9hB,KAAK8yB,QACdjyB,EAAOb,KAAK+yB,MAgDhB,OArCSP,GAAgB,GAAKD,GAAQ,GAAKzQ,GAAU,GAC5C0Q,GAAgB,GAAKD,GAAQ,GAAKzQ,GAAU,IAGjD0Q,GAAuD,MAAvC4N,GAAQE,GAAaxe,GAAUyQ,GAC/CA,EAAO,EACPzQ,EAAS,GAKbjhB,EAAK2xB,aAAeA,EAAe,IAEnCzK,EAAUjJ,EAAS0T,EAAe,KAClC3xB,EAAKknB,QAAUA,EAAU,GAEzBH,EAAU9I,EAASiJ,EAAU,IAC7BlnB,EAAK+mB,QAAUA,EAAU,GAEzBF,EAAQ5I,EAAS8I,EAAU,IAC3B/mB,EAAK6mB,MAAQA,EAAQ,GAErB6K,GAAQzT,EAAS4I,EAAQ,IAGzBqa,EAAiBjjB,EAASuhB,GAAa9N,IACvCzQ,GAAUigB,EACVxP,GAAQ6N,GAAQE,GAAayB,IAG7B7P,EAAQpT,EAASgD,EAAS,IAC1BA,GAAU,GAEVjhB,EAAK0xB,KAAOA,EACZ1xB,EAAKihB,OAASA,EACdjhB,EAAKqxB,MAAQA,EAENlyB,MAyTX8hC,GAAQ9N,MAlOR,WACI,OAAOQ,GAAex0B,OAkO1B8hC,GAAQjkC,IA/NR,SAAeugB,GAEX,OADAA,EAAQD,EAAeC,GAChBpe,KAAKkZ,UAAYlZ,KAAKoe,EAAQ,OAASrE,KA8NlD+nB,GAAQtP,aAAeA,GACvBsP,GAAQ/Z,QAAUA,GAClB+Z,GAAQla,QAAUA,GAClBka,GAAQpa,MAAQA,GAChBoa,GAAQvP,KAAOA,GACfuP,GAAQzP,MAlNR,WACI,OAAOvT,EAAS9e,KAAKuyB,OAAS,IAkNlCuP,GAAQhgB,OAASA,GACjBggB,GAAQ5P,MAAQA,GAChB4P,GAAQ9H,SAlIR,SAAkBgI,EAAeC,GAC7B,IAAKjiC,KAAKkZ,UACN,OAAOlZ,KAAKod,aAAaO,cAG7B,IAEI/F,EACA6F,EAHAykB,GAAa,EACbC,EAAKf,GAyBT,MArB6B,iBAAlBY,IACPC,EAAgBD,EAChBA,GAAgB,GAES,kBAAlBA,IACPE,EAAaF,GAEY,iBAAlBC,IACPE,EAAKvmC,OAAOwmC,OAAO,GAAIhB,GAAYa,GACZ,MAAnBA,EAAcz6B,GAAiC,MAApBy6B,EAAcvY,KACzCyY,EAAGzY,GAAKuY,EAAcz6B,EAAI,IAIlCoQ,EAAS5X,KAAKod,aACdK,EAxFJ,SAAwB4kB,EAAgBtI,EAAeqH,EAAYxpB,GAC/D,IAAIqa,EAAWuC,GAAe6N,GAAgB9lB,MAC1CwL,EAAUoL,GAAMlB,EAASwO,GAAG,MAC5B7Y,EAAUuL,GAAMlB,EAASwO,GAAG,MAC5B/Y,EAAQyL,GAAMlB,EAASwO,GAAG,MAC1BlO,EAAOY,GAAMlB,EAASwO,GAAG,MACzB3e,EAASqR,GAAMlB,EAASwO,GAAG,MAC3BpO,EAAQc,GAAMlB,EAASwO,GAAG,MAC1BvO,EAAQiB,GAAMlB,EAASwO,GAAG,MAC1Bp8B,EACK0jB,GAAWqZ,EAAW1X,IAAM,CAAC,IAAK3B,IAClCA,EAAUqZ,EAAW55B,GAAK,CAAC,KAAMugB,IACjCH,GAAW,GAAK,CAAC,MACjBA,EAAUwZ,EAAW36B,GAAK,CAAC,KAAMmhB,IACjCF,GAAS,GAAK,CAAC,MACfA,EAAQ0Z,EAAW9+B,GAAK,CAAC,KAAMolB,IAC/B6K,GAAQ,GAAK,CAAC,MACdA,EAAO6O,EAAW16B,GAAK,CAAC,KAAM6rB,GAgBvC,OAdoB,MAAhB6O,EAAWh3B,IACX/F,EACIA,GACCguB,GAAS,GAAK,CAAC,MACfA,EAAQ+O,EAAWh3B,GAAK,CAAC,KAAMioB,KAExChuB,EAAIA,GACCyd,GAAU,GAAK,CAAC,MAChBA,EAASsf,EAAWv1B,GAAK,CAAC,KAAMiW,IAChCoQ,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAK6H,EACP11B,EAAE,IAAMg+B,EAAiB,EACzBh+B,EAAE,GAAKuT,EACAypB,GAAkB/gC,MAAM,KAAM+D,GAuD5Bi+B,CAAetiC,MAAOkiC,EAAYC,EAAIvqB,GAE3CsqB,IACAzkB,EAAS7F,EAAOunB,YAAYn/B,KAAMyd,IAG/B7F,EAAOkiB,WAAWrc,IAoG7BqkB,GAAQ1G,YAAcmG,GACtBO,GAAQryB,SAAW8xB,GACnBO,GAAQnG,OAAS4F,GACjBO,GAAQlqB,OAASA,GACjBkqB,GAAQ1kB,WAAaA,GAErB0kB,GAAQS,YAAclnB,EAClB,sFACAkmB,IAEJO,GAAQnL,KAAOA,GAIf3Z,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1B4D,GAAc,IAAKJ,IACnBI,GAAc,IAhuJO,wBAiuJrBW,GAAc,KAAK,SAAU1K,EAAO0G,EAAOvC,GACvCA,EAAOxB,GAAK,IAAInC,KAAyB,IAApBqb,WAAW7b,OAEpC0K,GAAc,KAAK,SAAU1K,EAAO0G,EAAOvC,GACvCA,EAAOxB,GAAK,IAAInC,KAAK4H,EAAMpI;;AAK/BD,EAAM4rB,QAAU,SAj+KZ9rB,EAm+KY4Y,GAEhB1Y,EAAM7Z,GAAKi8B,GACXpiB,EAAMqM,IA1/EN,WACI,IAAI9O,EAAO,GAAG7O,MAAMvJ,KAAK+Z,UAAW,GAEpC,OAAO+b,GAAO,WAAY1d,IAw/E9ByC,EAAM8F,IAr/EN,WACI,IAAIvI,EAAO,GAAG7O,MAAMvJ,KAAK+Z,UAAW,GAEpC,OAAO+b,GAAO,UAAW1d,IAm/E7ByC,EAAM8X,IAh/EI,WACN,OAAOrX,KAAKqX,IAAMrX,KAAKqX,OAAS,IAAIrX,MAg/ExCT,EAAMmB,IAAML,EACZd,EAAMglB,KA1oBN,SAAoB/kB,GAChB,OAAOyY,GAAoB,IAARzY,IA0oBvBD,EAAMkL,OAlhBN,SAAoBnK,EAAQumB,GACxB,OAAOG,GAAe1mB,EAAQumB,EAAO,WAkhBzCtnB,EAAMQ,OAASA,EACfR,EAAMgB,OAASgT,GACfhU,EAAM2e,QAAUzb,EAChBlD,EAAMqb,SAAWuC,GACjB5d,EAAMsE,SAAWA,EACjBtE,EAAMiP,SAhhBN,SAAsB2Y,EAAc7mB,EAAQumB,GACxC,OAAOK,GAAiBC,EAAc7mB,EAAQumB,EAAO,aAghBzDtnB,EAAMomB,UA9oBN,WACI,OAAO1N,GAAYhvB,MAAM,KAAMwV,WAAWknB,aA8oB9CpmB,EAAMwG,WAAa0N,GACnBlU,EAAMqc,WAAaA,GACnBrc,EAAMiL,YAxhBN,SAAyBlK,EAAQumB,GAC7B,OAAOG,GAAe1mB,EAAQumB,EAAO,gBAwhBzCtnB,EAAM+O,YA7gBN,SAAyB6Y,EAAc7mB,EAAQumB,GAC3C,OAAOK,GAAiBC,EAAc7mB,EAAQumB,EAAO,gBA6gBzDtnB,EAAMmU,aAAeA,GACrBnU,EAAM6rB,aAr4GN,SAAsB/kC,EAAMsd,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAIpD,EACA8qB,EACA5mB,EAAe2M,GAEE,MAAjByB,GAAQxsB,IAA+C,MAA9BwsB,GAAQxsB,GAAMwtB,aAEvChB,GAAQxsB,GAAMI,IAAI+d,EAAaqO,GAAQxsB,GAAMutB,QAASjQ,KAIrC,OADjB0nB,EAAYjY,GAAW/sB,MAEnBoe,EAAe4mB,EAAUzX,SAE7BjQ,EAASa,EAAaC,EAAcd,GACnB,MAAb0nB,IAIA1nB,EAAOgQ,KAAOttB,IAElBka,EAAS,IAAIoE,EAAOhB,IACbkQ,aAAehB,GAAQxsB,GAC9BwsB,GAAQxsB,GAAQka,GAIpBgT,GAAmBltB,QAGE,MAAjBwsB,GAAQxsB,KAC0B,MAA9BwsB,GAAQxsB,GAAMwtB,cACdhB,GAAQxsB,GAAQwsB,GAAQxsB,GAAMwtB,aAC1BxtB,IAASktB,MACTA,GAAmBltB,IAEC,MAAjBwsB,GAAQxsB,WACRwsB,GAAQxsB,IAI3B,OAAOwsB,GAAQxsB,IA41GnBkZ,EAAMsT,QAj0GN,WACI,OAAO1kB,EAAK0kB,KAi0GhBtT,EAAMgP,cArhBN,SAA2B4Y,EAAc7mB,EAAQumB,GAC7C,OAAOK,GAAiBC,EAAc7mB,EAAQumB,EAAO,kBAqhBzDtnB,EAAMuH,eAAiBA,EACvBvH,EAAM+rB,qBAtNN,SAAoCC,GAChC,YAAyBtjC,IAArBsjC,EACOzP,GAEqB,mBAArByP,IACPzP,GAAQyP,GACD,IAiNfhsB,EAAMisB,sBA3MN,SAAqCC,EAAWC,GAC5C,YAA8BzjC,IAA1B8hC,GAAW0B,UAGDxjC,IAAVyjC,EACO3B,GAAW0B,IAEtB1B,GAAW0B,GAAaC,EACN,MAAdD,IACA1B,GAAW1X,GAAKqZ,EAAQ,IAErB,KAiMXnsB,EAAM0iB,eAx5DN,SAA2B0J,EAAUtU,GACjC,IAAIqF,EAAOiP,EAASjP,KAAKrF,EAAK,QAAQ,GACtC,OAAOqF,GAAQ,EACT,WACAA,GAAQ,EACR,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,YA24DVnd,EAAM/a,UAAYm9B,GAGlBpiB,EAAMqsB,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnBC,KAAM,aACNC,KAAM,QACNC,aAAc,WACdC,QAAS,eACTC,KAAM,aACNC,MAAO,WAGJ9sB,EA5hLyE+sB,K,0/DCM9EC,EAAiB,GAQvB,SAASC,IACR,GAAIhmC,YAAI,UAAU2M,MAAQlP,OAAOiC,QAAS,4BAD3B4W,EAC2B,yBAD3BA,EAC2B,gBACzC,cAAkBA,EAAlB,eAAwB,CAAnB,IAAMvB,EAAG,KACbtX,OAAOiC,QAAQsmC,IAAIjxB,KAatB,SAASkxB,EAAGC,GAA8B,IAApB//B,EAAoB,uDAAb,YAC5B,OAAO,EAAO+/B,KAAa//B,EAW5B,SAASoS,EAAM4tB,EAAQ7gC,GAMtB,IAAIzF,EACAkF,EACAqhC,EAIJ,IAAKvmC,KAXAyF,IACJA,EAAU6gC,EACVA,EAAS,IASG7gC,EACZP,EAAMohC,EAAOtmC,GAITsmC,KAHJC,EAAO9gC,EAAQzF,KAQX,MAAOumC,IACVD,EAAOtmC,GAAQkF,IAAQhH,OAAOgH,IAASkhC,EAAGlhC,EAAK,YAAiCqhC,EAAnB7tB,EAAMxT,EAAKqhC,IAM1E,OAAOD,EASR,SAASE,EAAO30B,GACf,OAAIjU,OAAO6oC,mBACH7oC,OAAO6oC,mBAAmB50B,GAE1BjU,OAAO8oC,OAAO70B,GAUvB,SAAS80B,EAAO90B,GACf,OAAIjU,OAAOgpC,mBACHhpC,OAAOgpC,mBAAmB/0B,GAE1BjU,OAAOipC,SAASh1B,GAYzB,SAASi1B,EAASC,EAASC,EAAOC,GAC7BF,EAAQG,iBACXH,EAAQG,iBAAiBF,EAAOC,GAAU,GAE1CF,EAAQI,YAAY,KAAOH,EAAOC,GAYpC,SAASG,EAAUC,EAAWC,EAAWC,GACxCA,EAASA,GAAU,GACnB,IACC3pC,OAAO4pC,cAAc,IAAIC,YAAYJ,EAAY,IAAMC,EAAW,CACjEC,OAAQA,EACRG,SAAS,KAET,MAAOp/B,KAWV,SAASq/B,EAAOhiC,GACXygC,EAAGzgC,EAAI,cAAgBugC,EAAe0B,SAASjiC,IAClDugC,EAAevmC,KAAKgG,GAStB,SAASkiC,IACR,IAAK,IAAIhmC,EAAI,EAAGA,EAAIqkC,EAAepkC,OAAQD,IAC1CqkC,EAAerkC,KAUjB,SAASimC,EAAmB9R,GAC3B,OAAOjxB,SAASgjC,OAAO1yB,MAAM2gB,IAA0B,KAAdzS,OAAOykB,IAA2B,SAAdzkB,OAAOykB,GAAgBzkB,OAAOykB,GAAK,KAUjG,SAASC,EAAkBC,EAAgBC,GAC1C,IADgE,EAC1DC,EAAiB,GADyC,E,goBAAA,CAEtCD,GAFsC,IAEhE,2BAAgD,KAArCE,EAAqC,QAC3CH,EAAeG,KAClBD,EAAeC,GAAeH,EAAeG,KAJiB,8BAOhE,OAAOD,EASR,SAASE,EAAUz2B,GAClB,MAAsB,iBAARA,EAAmBA,EAAI5F,OAAS4F,EAU/C,SAAS02B,EAAmBC,EAASlC,GACpC,IAAK,IAAM1pB,KAAQ4rB,EACblC,EAAO1pB,GAIX/c,QAAQC,KAAR,iDAAuD8c,IAHvD0pB,EAAO1pB,GAAQ4rB,EAAQ5rB,GAc1B,SAAS6rB,EAAoBC,GAC5B,IAAMC,EAAkB,IAAIC,QACtBC,EAAgB,GAmCtB,OAjCA,SAASC,EAAqBC,EAAeC,GAI5C,GAAIL,EAAgBM,IAAIF,GACvBF,EAAclpC,KAAKqpC,QAMpB,GAAID,aAAyB7qC,OAAQ,CACpCyqC,EAAgB5U,IAAIgV,GAGpB,cAA2B7qC,OAAOgrC,QAAQH,GAA1C,eAA0D,CAArD,gBAAOt/B,EAAP,KAAYpJ,EAAZ,KAGJ,GAAIA,aAAiBnC,OAInB4qC,EAAqBzoC,EAHQsQ,MAAMsF,QAAQ8yB,GAGvB,UAAWC,EAAX,YAAmBv/B,EAAnB,KAGA,UAAWu/B,EAAX,YAAmBv/B,MAO5Cq/B,CAAqBJ,EAAY,IAC1BG,EASR,SAASM,EAAsBT,GAE9B,IAAMC,EAAkB,IAAIC,QAkC5B,OAAOQ,QA3BP,SAASC,EAAuBN,GAI/B,GAAIJ,EAAgBM,IAAIF,GACvB,OAAO,EAKR,GAAIA,aAAyB7qC,OAAQ,CACpCyqC,EAAgB5U,IAAIgV,GAEpB,cAAoB7qC,OAAOivB,OAAO4b,GAAlC,eAAkD,CAA7C,IAAM1oC,EAAK,KAGf,GAAIA,aAAiBnC,QAChBmrC,EAAuBhpC,GAC1B,OAAO,IAUXgpC,CACCX,IAYH,SAASY,EAAY3iC,EAAGC,GACvB,GAAID,IAAMC,EACT,OAAO,EAGR,GACCD,GACAC,GACa,WAAb,EAAOD,IACM,WAAb,EAAOC,GACN,CACD,GAAID,EAAE4iC,cAAgB3iC,EAAE2iC,YACvB,OAAO,EAGR,GAAI54B,MAAMsF,QAAQtP,GAAI,CACrB,IAAM7E,EAAS6E,EAAE7E,OACjB,GAAIA,IAAW8E,EAAE9E,OAChB,OAAO,EAER,IAAK,IAAID,EAAIC,EAAgB,GAARD,KACpB,IAAKynC,EAAY3iC,EAAE9E,GAAI+E,EAAE/E,IACxB,OAAO,EAGT,OAAO,EAGR,GAAI8E,EAAE4iC,cAAgBhmB,OACrB,OACC5c,EAAE+6B,SAAW96B,EAAE86B,QAAU/6B,EAAE+U,QAAU9U,EAAE8U,MAGzC,GAAI/U,EAAEoT,UAAY7b,OAAOC,UAAU4b,QAClC,OAAOpT,EAAEoT,YAAcnT,EAAEmT,UAE1B,GAAIpT,EAAEoL,WAAa7T,OAAOC,UAAU4T,SACnC,OAAOpL,EAAEoL,aAAenL,EAAEmL,WAG3B,IAAMjK,EAAO5J,OAAO4J,KAAKnB,GACnB7E,EAASgG,EAAKhG,OACpB,GAAIA,IAAW5D,OAAO4J,KAAKlB,GAAG9E,OAC7B,OAAO,EAGR,IAAK,IAAID,EAAIC,EAAgB,GAARD,KACpB,IAAK3D,OAAOC,UAAUC,eAAeC,KAAKuI,EAAGkB,EAAKjG,IACjD,OAAO,EAIT,IAAK,IAAIA,EAAIC,EAAgB,GAARD,KAAa,CACjC,IAAM4H,EAAM3B,EAAKjG,GAEjB,IAAKynC,EAAY3iC,EAAE8C,GAAM7C,EAAE6C,IAC1B,OAAO,EAIT,OAAO,I,6FApXHy8B,E,uHAQGC,E,4GAgBAC,E,2GAYA1tB,E,8GAsCA8tB,E,+GAcAG,E,+GAgBAG,E,iHAgBAM,E,kHAkBAO,E,+GAWAE,E,oHAYAC,E,2HAWAG,E,yHAgBAK,E,iHAWAC,E,0HAiBAE,E,4HA8CAU,E,8HAkDAG,E,2OCrUT;;;;;GAOC,WACA,aAEA,IAAIE,EAAS,GAAGprC,eAEhB,SAASmT,IAGR,IAFA,IAAIk4B,EAAU,GAEL5nC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAC1C,IAAIqT,EAAMkD,UAAUvW,GACpB,GAAKqT,EAAL,CAEA,IAAIw0B,SAAiBx0B,EAErB,GAAgB,WAAZw0B,GAAoC,WAAZA,EAC3BD,EAAQ9pC,KAAKuV,QACP,GAAIvE,MAAMsF,QAAQf,IACxB,GAAIA,EAAIpT,OAAQ,CACf,IAAI6nC,EAAQp4B,EAAW3O,MAAM,KAAMsS,GAC/By0B,GACHF,EAAQ9pC,KAAKgqC,SAGT,GAAgB,WAAZD,EACV,GAAIx0B,EAAInD,WAAa7T,OAAOC,UAAU4T,SACrC,IAAK,IAAItI,KAAOyL,EACXs0B,EAAOnrC,KAAK6W,EAAKzL,IAAQyL,EAAIzL,IAChCggC,EAAQ9pC,KAAK8J,QAIfggC,EAAQ9pC,KAAKuV,EAAInD,aAKpB,OAAO03B,EAAQriC,KAAK,KAGgBvB,EAAOiD,SAC3CyI,EAAWq4B,QAAUr4B,EACrB1L,EAAOiD,QAAUyI,QAKhB,KAFwB,EAAF,WACtB,OAAOA,GACP,QAFoB,OAEpB,aA9CH,I,6BCPA,8OAAO,MAAMs4B,EAAiB,IACjBC,EAAkC,GAAjBD,EACjBE,EAAgC,GAAjBD,EACfE,EAA6B,GAAfD,EACdE,EAA6B,EAAdD,EACfE,EAA8B,GAAdF,EAChBG,EAA6B,IAAdH,G,cCS5BnkC,EAAOiD,QAfP,SAAyBiN,EAAKtM,EAAKpJ,GAYjC,OAXIoJ,KAAOsM,EACT7X,OAAOoC,eAAeyV,EAAKtM,EAAK,CAC9BpJ,MAAOA,EACPH,YAAY,EACZD,cAAc,EACdmqC,UAAU,IAGZr0B,EAAItM,GAAOpJ,EAGN0V,GAITlQ,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,6BChBxE,sFAEA,SAAS+gC,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAMjS,SAASkyB,EAAMC,GAC5B,IAAIC,EAAWD,EAAKE,IAChBA,OAAmB,IAAbD,EAAsB,EAAIA,EAChCE,EAAYH,EAAKI,KACjBA,OAAqB,IAAdD,EAAuB,EAAIA,EAClCE,EAAYL,EAAKK,UACjBn5B,EAAY84B,EAAK94B,UACjB7R,EAAW2qC,EAAK3qC,SAChBirC,EAAWN,EAAKM,SAChBC,EAbN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAaxR2E,CAA8BV,EAAM,CAAC,MAAO,OAAQ,YAAa,YAAa,WAAY,aAE1G,OAAoB,IAAMvlC,cAAc,IAAKqlC,EAAS,CACpD9yB,IAAKszB,EACLp5B,UAAW,IAAG,aAAcA,GAC5Bm5B,UAAWA,GAAa,aAAeD,EAAO,KAAOF,EAAM,KAC1DK,GAAYlrC,GAEjB0qC,EAAMY,UAAY,CAChBT,IAAK,IAAIjsB,OACTmsB,KAAM,IAAInsB,OACVosB,UAAW,IAAI50B,OACfvE,UAAW,IAAIuE,OACfpW,SAAU,IAAIgR,KACdi6B,SAAU,IAAIM,UAAU,CAAC,IAAIn1B,OAAQ,IAAIoB,KAAM,IAAIxN,W,ygDCzB/CwhC,EAAW,SAACC,GAAD,OAAS,IAAI16B,MAAM06B,GAAKC,KAAK,GAAGplC,KAAI,kBAAMqlC,YAAa,QAE3DC,EAA4B,CACvCC,OAAO,EACPC,QAAQ,EACRC,QAAQ,EACRC,QAAS,CAAEnB,IAAK,EAAGoB,MAAO,GAAIC,OAAQ,EAAGnB,KAAM,IAC/CrkC,KAAM,OAGKylC,EAAyB,CACpCzlC,KAAM,OAGK0lC,EAAoB,EAAH,OACzBR,GACAO,GAFyB,IAG5BE,WAAY,UACZrsC,SAAU,GACVssC,YACE,2GACFC,kBAAkB,EAClBC,WAAW,EACXC,YAAY,EACZC,YAAY,EACZC,gBAAiB,CAAE5+B,EAAG,GAAIU,EAAG,GAC7Bm+B,iBAAkBC,MAGPC,EAA0B,CAErCjB,MAAO,IACPC,OAAQ,IACRC,OAAQ,CAAElB,IAAK,IAAKoB,MAAO,GAAIC,OAAQ,GAAInB,KAAM,IACjDsB,WAAY,UACZG,UAAWO,IACXJ,gBAAiB,CAAE5+B,EAAG,GAAIU,EAAG,IAE7Bu+B,UAAU,EACVC,iBAAkB,GAClBC,mBAAoB,GACpBC,iBAAkB,CAAEp/B,EAAG,GAAIU,EAAG,KAC9B2+B,cAAe,GACfC,gBAAiB,GACjBC,cAAe,CAAEv/B,EAAG,GAAIU,EAAG,IAE3B8+B,UAAW,KACXC,eAAgB,GAChBC,iBAAkB,GAClBC,eAAgB,CAAE3/B,EAAG,GAAIU,EAAG,KAGjBk/B,EAAyB,CAEpC9B,MAAO,KACPC,OAAQ,KACRC,OAAQ,CAAElB,IAAK,IAAKoB,MAAO,IAAKC,OAAQ,IAAKnB,KAAM,KACnDsB,WAAY,UACZG,WAAW,EAEXQ,UAAU,EACVC,iBAAkB,GAClBC,mBAAoB,GACpBC,iBAAkB,CAAEp/B,EAAG,IAAKU,EAAG,KAC/B2+B,cAAe,GACfC,gBAAiB,GACjBC,cAAe,CAAEv/B,EAAG,IAAKU,EAAG,KAE5B8+B,UAAW,KACXC,eAAgB,GAChBC,iBAAkB,GAClBC,eAAgB,CAAE3/B,EAAG,IAAKU,EAAG,KAGlBm/B,EAAyB,CAEpC/B,MAAO,MACPC,OAAQ,MACRE,QAAS,CAAEnB,IAAK,EAAGoB,MAAO,EAAGC,OAAQ,EAAGnB,KAAM,GAC9CgB,OAAQ,CAAElB,IAAK,GAAIoB,MAAO,EAAGC,OAAQ,GAAInB,KAAM,GAC/CsB,WAAY,UACZG,WAAW,EACXG,gBAAiB,CAAE5+B,EAAG,EAAGU,EAAG,GAE5Bu+B,UAAU,EACVC,iBAAkB,IAClBC,mBAAoB,GACpBC,iBAAkB,CAAEp/B,EAAG,EAAGU,EAAG,IAC7B2+B,cAAe,GACfC,gBAAiB,GACjBC,cAAe,CAAEv/B,EAAG,EAAGU,EAAG,IAE1B8+B,UAAW,KACXC,eAAgB,IAChBC,iBAAkB,EAClBC,eAAgB,CAAE3/B,EAAG,EAAGU,EAAG,IAGhBo/B,EAA0B,EAAH,OAC/BjC,GACAO,GAF+B,IAGlCa,UAAU,EACVc,SAAU,gBACVC,sBAAsB,EACtBC,MAAO,iBACPC,mBAAmB,IAGRC,EAA0B,EAAH,OAC/BtC,GACAO,GAF+B,IAGlCoB,UAAW,OACXzL,OAAQ,sBACR4L,eAAgB,CAAE3/B,EAAG,EAAGU,EAAG,KAGhB0/B,EAA8B,CACzCC,YAAa,IACbC,aAAc,IACdC,KAAM,GACNC,KAAM,GACNC,WAAY,cACZC,QAAQ,EACRC,SAAU,OACVC,WAAW,EACXC,YAAa,WACbC,OAAQ,GACRC,MAAO,uBAKIC,EAAkC,CAC7CC,YAAY,EACZC,iBAAiB,EACjBC,kBAAmB,CACjBrE,IAAK,EACLoB,MAAO,GACPC,OAAQ,EACRnB,KAAM,KAIGoE,EAAmC,CAC9CC,aAAa,EACbC,cAAc,GAGHC,EAA4B,EAAH,OACjC1D,GACAmD,GAFiC,IAGpCH,YAAa,SACbW,OAAO,EACPC,gBAAgB,EAChBC,cAAc,EACdC,aAAa,EACbC,iCAAiC,EACjCC,uBAAuB,EACvBC,oBAAoB,EACpBC,sBAAsB,EACtBC,kBAAmB,QACnBC,sBAAsB,EACtBC,YAAa,KAGFC,EAA4B,EAAH,KACjCtE,GADiC,IAEpCroC,KAAM4sC,IACNzE,KAAM,YACN0E,QAAQ,EACRC,UAAW,YACXC,QAAQ,EACRC,UAAW,SACXC,YAAY,EACZC,cAAe,OACfC,mBAAmB,EACnBC,gBAAgB,EAChBf,uBAAuB,IAGZgB,EAA4B,EAAH,KACjChF,GADiC,IAEpC33B,QAAS,EACTm8B,QAAQ,EACRE,QAAQ,EACRO,UAAW,kBAAM,GACjBL,WAAY,iBAAM,WAClBM,YAAY,EACZC,YAAa,OACbC,YAAY,EACZC,cAAc,EACdC,iBAAkB,EAClBC,sBAAsB,EACtBC,sBAAuB,eACvBC,wBAAwB,IAGbC,EAA4B,CACvC/tC,KAAMioC,EAAS,GACf6E,UAAW,OACXE,UAAW,QACXv7B,YAAa,GAGFu8B,EAA6B,EAAH,KAClCD,GADkC,IAErCE,4BAA6B,EAC7BC,4BAA6B,UAC7BC,uBAAwB,EACxBC,uBAAwB,iBAAM,aAGnBC,EAA2B,EAAH,KAChChG,GADgC,IAEnCiG,oBAAqB,wBACrBC,8BAA+B,GAC/BC,yBAA0B,GAC1BC,aAAc,GACdC,QAAS,CACP,CAAEC,IAAK,MAAOrG,MAAO,GAAIC,OAAQ,GACjC,CAAEoG,IAAK,SAAUrG,MAAO,GAAIC,OAAQ,IACpC,CAAEoG,IAAK,SAAUrG,MAAO,GAAIC,OAAQ,IAEtCqG,gBAAiB,GACjBC,UAAW,GACXC,SAAU,MACVC,cAAe,KAGJC,EAAuB,EAAH,KAC5BrC,GAD4B,IAE/BsC,iBAAkB,SAClBC,iBAAkB,OAClB9C,iCAAiC,EAEjCpsC,KAAM4sC,IACNE,UAAW,YACXE,UAAW,SACXC,WAAY,iBAAM,WAClBkC,aAAc,GACdC,aAAc,GACdC,YAAY,IAGDC,EAA6B,EAAH,OAClC3C,GACA0B,GAFkC,IAGrCkB,cAAc,EACdN,iBAAkB,MAClBC,iBAAkB,OAClBM,eAAe,EACfC,kBAAkB,EAClBC,MAAM,EACNC,MAAM,EACNC,QAAQ,EAER5vC,KAAM6vC,IACN/C,UAAW,SACXE,UAAW,UACX8C,eAAgB,QAChBC,kCAAkC,EAClCC,aAAa,EACbC,gBAAiB,EACjBC,gBAAiB,IAGNC,EAAoC,EAAH,KACzC9H,GADyC,IAE5CroC,KAAM,GACN8sC,UAAW,IACXE,UAAW,IACXE,cAAe,QACfkD,cAAe,OACfnB,iBAAkB,SAClBC,iBAAkB,OAClB1B,YAAa,SAGF6C,EAAwB,EAAH,KAC7BhI,GAD6B,IAEhC4G,iBAAkB,SAClBC,iBAAkB,OAClBO,kBAAkB,EAClBa,kBAAkB,EAClBC,YAAY,EAEZvwC,KAAMioC,EAAS,GACf6E,UAAW,OACXE,UAAW,GACXwD,WAAY,OACZC,UAAU,EACVC,iBAAiB,EACjBxE,cAAc,EACdwB,cAAc,EACdiD,mBAAoBrH,IACpBsH,iBAAiB,EACjBvH,iBAAkB,gBAAGwH,EAAH,EAAGA,WAAYC,EAAf,EAAeA,OAAf,gBAA+BD,EAA/B,aAA8CC,IAEhE5H,YAAY,EACZC,YAAY,EACZH,kBAAkB,EAClB+H,kBAAmB,KACnBC,iBAAkB,UAClBrD,iBAAkB,EAElBsD,eAAgB,UAChBC,yBAA0B,iBAAM,WAChCC,8BAA+B,iBAAM,WACrCC,uBAAuB,IAGZC,EAA4B,EAAH,GACjCrC,GAGQsC,EAA2B,EAAH,KAChCjJ,GADgC,IAEnCllC,KAAM,MACNnD,KAAM,GACN8sC,UAAW,IACXE,UAAW,IACXuE,cAAc,EACdrE,cAAe,QACfD,YAAY,EACZgC,iBAAkB,SAClBC,iBAAkB,OAClBsC,YAAY,EACZC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXC,cAAe,CACbC,IAAK,GACLC,MAAO,IACPC,OAAQ,GACRC,MAAO,IAETthC,QAAS,GACTuhC,YAAa,EACb1E,YAAY,EACZ2E,gBAAiB,EACjBC,kBAAkB,EAClB3E,YAAa,OACb4E,QAAS,CAAC,EAAG,IACbC,QAAS,CAAC,EAAG,IACbC,WAAY,CAAC,EAAG,GAChBC,eAAgB,SAChBC,kBAAmB,aACnBC,YAAY,EACZC,gBAAgB,EAChBC,YAAa,EACbC,YAAa,EACblF,cAAc,EACdrE,iBAAkB,gBAAGwH,EAAH,EAAGA,WAAYC,EAAf,EAAeA,OAAf,gBAA+BD,EAA/B,aAA8CC,IAChE+B,yBAAyB,EACzBC,oBAAoB,EACpBC,uBAAwB,OACxBC,uBAAwB,IAGbC,EAAuB,CAClChG,WAAY,iBAAM,WAClBiG,OAAO,EACPC,UAAU,EACVC,YAAY,EACZzC,oBAAoB,EACpBkC,yBAAyB,EACzBQ,YAAY,EACZC,cAAc,EACdC,aAAa,I,6FAhXTtL,E,wHAEOI,E,yIAQAO,E,sIAIAC,E,iIAeAU,E,uIAuBAa,E,sIAsBAC,E,sIAwBAC,E,uIAUAK,E,uIAQAC,E,2IAgBAY,E,+IAWAI,E,gJAKAG,E,yIAiBAY,E,yIAeAU,E,yIAiBAU,E,yIAOAC,E,0IAQAK,E,wIAiBAW,E,oIAeAM,E,0IAsBAa,E,iJAYAE,E,qIAiCAgB,E,yIAIAC,E,wIA4CA2B,E,2PC7Wb,IAAIO,EAAoB,EAAQ,KAE5BC,EAAkB,EAAQ,KAE1BC,EAA6B,EAAQ,KAErCC,EAAoB,EAAQ,KAMhCjxC,EAAOiD,QAJP,SAA4B8Q,GAC1B,OAAO+8B,EAAkB/8B,IAAQg9B,EAAgBh9B,IAAQi9B,EAA2Bj9B,IAAQk9B,KAI9FjxC,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,gBCbxE,IAAIytC,EAAiB,EAAQ,KAEzBC,EAAuB,EAAQ,KAE/BH,EAA6B,EAAQ,KAErCI,EAAkB,EAAQ,KAM9BpxC,EAAOiD,QAJP,SAAwB8Q,EAAK/X,GAC3B,OAAOk1C,EAAen9B,IAAQo9B,EAAqBp9B,EAAK/X,IAAMg1C,EAA2Bj9B,EAAK/X,IAAMo1C,KAItGpxC,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,wbCblE8a,EAAS,KAAO,wFAAwFlY,MAAM,KAAK9E,KAAK,OAAS,KACjIytB,EAAO,KAAO,2DAA2D3oB,MAAM,KAAK9E,KAAK,OAAS,KAClGq0B,EAAU,CACfyb,SAAU,qBACVn1B,KAAM,eAGDo1B,EAAoB,GAOpBC,EAAwB,CAC7BC,KAAM,0BACNC,IAAK,sCACLjrB,GAAI,+BACJle,EAAG,wBACHopC,KAAM,qBACNjrB,GAAI,wCACJkrB,KAAM,sBACNC,IAAK,kCACLzuC,EAAG,iBACHmjB,GAAI,uBACJurB,GAAI,0BACJ3uC,EAAG,oBACHkjB,GAAI,0BACJrnB,EAAG,sCACHsnB,GAAI,0CACJ1e,EAAG,kBACHmqC,GAAI,wBACJhxC,EAAG,yCAGEixC,EAAY,CACjBnkB,OAAQ,GACRlB,KAAM,KACNpJ,IAAK,MACL9B,KAAM,OACNvF,MAAO,OACPX,KAAM,SAGP,SAAS02B,EAAQ59B,GAChB,IAEI69B,EAAa,eAAiB1zB,EAAS,WAAayQ,EAAO,IAgB/D,OAfAijB,GAAc,2DACdA,GAAc,6LAKdA,GAAc,YATFrc,EAAQxhB,IAAWA,GASA3N,QAAQ,eAAe,SAAU+I,GAC/D,GAAwB,OAApBA,EAAMxG,OAAO,GAChB,OAAOwG,EAAM4J,OAAO,GAErB,IAAM84B,EAAWX,EAAsB/hC,GAEvC,OAAO0iC,EAAW,OAASA,EAAW,OAAS1iC,KAC3C,IAEG8hC,EAAkBl9B,GAAU,IAAIiE,SAAS,OAAQ45B,GAG1D,I,IAAME,EAAe,CACpBva,OAAQ,SAAU1b,GAEjB,GAAwB,kBADxBA,EAAOA,aAAgBpI,KAAOoI,EAAO,IAAIpI,KAAKoI,IACrChQ,WACR,OAAOgQ,GAGTk2B,4BAA6B,SAAUl2B,GAEtC,GAAKA,EAAL,CAIA,IAAMiP,EAAM,IAAIrX,KACVu+B,EAAWF,EAAaG,kBAAkBnnB,EAAKjP,GAarD,OARIi2B,EAAaI,QAAQr2B,EAAMiP,EAAKknB,GACtB,QACHF,EAAaK,YAAYt2B,EAAMiP,EAAKknB,GACjC,YAEA,KAKfj+B,OAAQ,SAAU8H,EAAMmN,GAEvB,IAAMopB,EAAMnB,EADZjoB,EAAaA,GAAc,aACkB2oB,EAAQ3oB,GAErD,OADAnN,EAAOi2B,EAAava,OAAO1b,KACZu2B,EAAIv2B,IAEpBw2B,QAAS,SAAUx2B,EAAMm2B,EAAUzyC,GAGlC,GADAsc,EAAOi2B,EAAava,OAAO1b,GAC3B,CAgBA,GAXyB,IAArB3J,UAAUtW,QAAoC,WAApB,EAAOo2C,KAEpCA,GADAzyC,EAAUyyC,GACSA,UAIfA,IACJA,EAAWF,EAAaG,kBAAkB,IAAIx+B,KAAQoI,IAInDtc,GAAWA,EAAQ4/B,MAAQ,KAAO6S,GAAYA,EAAWzyC,EAAQ4/B,OACpE,MAAO,GAGR,IAAMmT,IAAc/yC,GAAUA,EAAQ+yC,YAElC3a,EAASqa,EAAW,EAAI,WAAa,MAIzC,OAFAA,EAAWt5B,KAAKC,IAAIq5B,IAELN,EAAUnkB,OACxB,UAAU+kB,EAAcN,EAAW,IAAMA,EAAW,WAApD,YAAkEra,GACxDqa,EAAY,IAAMN,EAAUnkB,OACtC,UAAU+kB,EAAc,KAAO,WAA/B,YAA6C3a,GACnCqa,EAAY,GAAKN,EAAUnkB,OACrC,UAAU7U,KAAK6W,MAAMyiB,EAAWN,EAAUnkB,SAA1C,OAAoD+kB,EAAc,IAAM,WAAxE,YAAsF3a,GAC5Eqa,EAAY,IAAMN,EAAUrlB,KACtC,UAAUimB,EAAc,KAAO,UAA/B,YAA4C3a,GAClCqa,EAAW,GAAKN,EAAUrlB,KACpC,UAAU3T,KAAK6W,MAAMyiB,EAAWN,EAAUrlB,OAA1C,OAAkDimB,EAAc,IAAM,SAAtE,YAAkF3a,GACxEqa,EAAY,IAAMN,EAAUzuB,IACtC,UAAUqvB,EAAc,KAAO,QAA/B,YAA0C3a,GAChCqa,EAAW,GAAKN,EAAUzuB,IACpC,UAAUvK,KAAK6W,MAAMyiB,EAAWN,EAAUzuB,MAA1C,OAAiDqvB,EAAc,IAAM,QAArE,YAAgF3a,GACtEqa,EAAY,GAAKN,EAAUzuB,IACrC,UAAUqvB,EAAc,OAAS,UAAjC,YAA8C3a,GACpCqa,EAAW,IAAMN,EAAUzuB,IACrC,UAAUvK,KAAK6W,MAAMyiB,EAAWN,EAAU91B,QAA1C,OAAmD02B,EAAc,MAAQ,UAAzE,YAAsF3a,GAC5Eqa,EAAY,IAAMN,EAAUzuB,IACtC,UAAUqvB,EAAc,KAAO,SAA/B,YAA2C3a,GAE3C,UAAWjf,KAAKI,IAAI,EAAGJ,KAAK0C,MAAM42B,EAAWN,EAAUz2B,QAAvD,OAAgEq3B,EAAc,IAAM,SAApF,YAAgG3a,KAGlG4a,iBAAkB,SAAU12B,GAE3B,GAAKA,EAAL,CAIA,IAAMiP,EAAM,IAAIrX,KAIhB,OAHiBq+B,EAAaG,kBAAkBnnB,EAAKjP,GAGtC,GACP,yBAEDi2B,EAAaO,QAAQx2B,KAE7B22B,OAAQ,SAAUC,GACjB,IAAM3nB,EAAM,IAAIrX,KACVu+B,EAAWF,EAAaG,kBAAkBnnB,EAAK2nB,GA0BrD,OArBIX,EAAaY,aAAaV,GAChB,WAIHF,EAAaa,YAAYX,GACtBF,EAAa/9B,OAAO0+B,EAAS,QAGhCX,EAAaI,QAAQO,EAAS3nB,EAAKknB,IAAcA,EAAY,EAAIN,EAAUrlB,KACxEylB,EAAaO,QAAQI,EAAST,GAGjCF,EAAaK,YAAYM,EAAS3nB,EAAKknB,GACpC,YAIAF,EAAa/9B,OAAO0+B,EAAS,SAK5CR,kBAAmB,SAAU3c,EAAMsd,GAClC,OAAOl6B,KAAK6W,OAAO+F,EAAOsd,GAAa,MAExCF,aAAc,SAAUV,GAEvB,OAAQA,EAAW,GAAKA,GAAa,EAAIN,EAAUnkB,QAEpDolB,YAAa,SAAUX,GAEtB,OAAOA,GAAa,EAAIN,EAAUnkB,QAEnC2kB,QAAS,SAAUr2B,EAAMiP,EAAKknB,GAC7B,IAAMa,EAAgBb,EAAWN,EAAUzuB,IACrC6vB,EAAgBhoB,EAAIf,WAAalO,EAAKkO,SAC5C,OAAQ8oB,GAAiBC,GAE1BX,YAAa,SAAUt2B,EAAMiP,EAAKknB,GACjC,IAAMe,EAAgBf,EAAW,EAAIN,EAAUzuB,IACzC+vB,EAA2BloB,EAAIf,WAAalO,EAAKkO,SAAW,EAClE,OAAQgpB,GAAiBC,GAE1BtB,aAGD/xC,EAAOiD,QAAUkvC,G,6FA/NX5zB,E,oGACAyQ,E,kGACA4G,E,qGAKA0b,E,+GAOAC,E,mHAqBAQ,E,uGASGC,E,qGAsBHG,E,imBC7DOmB,EAAgB,SAACxrC,GAAD,OAAW,iBAAJA,GAEvByrC,EAAsB,SAAC3N,GAAiD,6DAAP,GAAO,IAAxC4N,cAAwC,aAAzBC,cAAyB,SAEnF,OAAI7N,GAAS,KACJ,CACLC,OAAQ,IACRC,OAAQ,CAAElB,IAAK4O,EAAS,IAAM,EAAGxN,MAAO,EAAGC,OAAQwN,EAAS,GAAK,EAAG3O,KAAM,IAC1EyC,eAAgB,GAChBC,iBAAkB,GAClBR,iBAAkB,GAClBC,mBAAoB,GACpBC,iBAAkB,CAAEp/B,EAAG,EAAGU,EAAG,IAC7BkrC,eAAgB,CACdC,SAAU,IAEZC,WAAY,GACZzM,cAAe,GACfC,gBAAiB,GACjBC,cAAe,CAAEv/B,EAAG,EAAGU,EAAG,IAC1BqrC,eAAgB,CACdF,SAAU,IAEZ/N,SAIAA,GAAS,IACJ,CACLC,OAAQ,IACRC,OAAQ,CAAElB,IAAK4O,EAAS,IAAM,EAAGxN,MAAO,EAAGC,OAAQwN,EAAS,GAAK,EAAG3O,KAAM,IAC1EyC,eAAgB,GAChBC,iBAAkB,GAClBR,iBAAkB,GAClBC,mBAAoB,GACpBC,iBAAkB,CAAEp/B,EAAG,EAAGU,EAAG,IAC7BkrC,eAAgB,CACdC,SAAU,IAEZC,WAAY,GACZzM,cAAe,GACfC,gBAAiB,GACjBC,cAAe,CAAEv/B,EAAG,EAAGU,EAAG,IAC1BqrC,eAAgB,CACdF,SAAU,IAEZ/N,SAIAA,GAAS,IACJ,CACLC,OAAQ,IACRC,OAAQ,CAAElB,IAAK4O,EAAS,GAAK,EAAGxN,MAAO,EAAGC,OAAQwN,EAAS,GAAK,EAAG3O,KAAM,IACzEyC,eAAgB,GAChBC,iBAAkB,GAClBR,iBAAkB,GAClBC,mBAAoB,GACpBC,iBAAkB,CAAEp/B,EAAG,EAAGU,EAAG,IAC7BkrC,eAAgB,CACdC,SAAU,IAEZC,WAAY,GACZzM,cAAe,GACfC,gBAAiB,GACjBC,cAAe,CAAEv/B,EAAG,EAAGU,EAAG,IAC1BqrC,eAAgB,CACdF,SAAU,IAEZ/N,SAIG,CACLC,OAAQ,IACRC,OAAQ,CAAElB,IAAK4O,EAAS,GAAK,EAAGxN,MAAO,EAAGC,OAAQwN,EAAS,GAAK,EAAG3O,KAAM,IACzEyC,eAAgB,GAChBC,iBAAkB,GAClBR,iBAAkB,GAClBC,mBAAoB,GACpBC,iBAAkB,CAAEp/B,EAAG,EAAGU,EAAG,IAC7BorC,WAAY,EACZF,eAAgB,CACdC,SAAU,IAEZxM,cAAe,GACfC,gBAAiB,GACjBC,cAAe,CAAEv/B,EAAG,EAAGU,EAAG,IAC1BqrC,eAAgB,CACdF,SAAU,IAEZ/N,UAISgB,EAAW,SAACzjC,GAAD,OAAOA,GAElB2wC,EAAkB,SAACt5C,GAAD,OAAqB,IAAVA,GAAeA,GAE5Cu5C,EAAgB,SAAC5jC,GAAD,OAC3BA,EAAO1J,QAAQ,gBAAiB,IAAIA,QAAQ,aAAc,O,6FApG/C6sC,E,yGAEAC,E,+GA6FA3M,E,oGAEAkN,E,2GAEAC,E,2pDCjGAC,EAAaC,IAAUC,MAAM,CACxCtP,IAAKqP,IAAUt7B,OACfqtB,MAAOiO,IAAUt7B,OACjBstB,OAAQgO,IAAUt7B,OAClBmsB,KAAMmP,IAAUt7B,SAGLw7B,EAASF,IAAUC,MAAM,CACpCpsC,EAAGmsC,IAAUt7B,OACbnQ,EAAGyrC,IAAUt7B,SAGFy7B,EAAaH,IAAUI,MAAM,CACxC,QACA,SACA,QACA,MACA,QACA,SACA,QACA,QAGWC,EAAyB,CACpC1O,MAAOqO,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUM,OACxD1O,OAAQoO,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUM,OACzDzO,OAAQmO,IAAU3O,UAAU,CAAC0O,EAAYC,IAAUM,OACnDxO,QAASiO,EACTvzC,KAAM2zC,GAGKI,EAAsB,CACjC/zC,KAAM2zC,GAGKK,EAAiB,EAAH,OACtBH,GACAE,GAFsB,IAGzBpO,WAAY6N,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAC7Dx6C,SAAUk6C,IAAU3O,UAAU,CAAC2O,IAAUlpC,KAAMkpC,IAAUS,QAAQT,IAAUlpC,QAC3Es7B,YAAa4N,IAAU9jC,OACvBm2B,iBAAkB2N,IAAUM,KAC5BhO,UAAW0N,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OAC1D7N,gBAAiByN,EACjB3N,WAAYyN,IAAUM,KACtB9N,WAAYwN,IAAUM,KACtBI,aAAcV,IAAUlwC,OACxB4iC,iBAAkBsN,IAAU1iC,OAGjBqjC,EAAuB,EAAH,GAC5BH,GAGQI,EAAsB,EAAH,GAC3BJ,GAGQK,EAAsB,EAAH,GAC3BL,GAGQM,EAAuB,EAAH,OAC5BT,GACAE,GAF4B,IAG/BzN,SAAUkN,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACzD1M,SAAUoM,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAC3DvN,iBAAkBiN,IAAUt7B,OAC5BsuB,mBAAoBgN,IAAUt7B,OAC9BmvB,qBAAsBmM,IAAUM,KAChCrN,iBAAkBiN,EAClBa,qBAAsBf,IAAUgB,SAC9BhB,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,UAEnD43B,MAAOkM,IAAU9jC,OACjBg3B,cAAe8M,IAAUt7B,OACzByuB,gBAAiB6M,IAAUt7B,OAC3BqvB,kBAAmBiM,IAAUM,KAC7BlN,cAAe8M,EACfe,kBAAmBjB,IAAUgB,SAAShB,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,YAG5EglC,EAAuB,EAAH,OAC5Bb,GACAE,GAF4B,IAG/BlN,UAAW2M,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAC5D1Y,OAAQoY,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OACzDhN,eAAgB0M,IAAUt7B,OAC1B6uB,iBAAkByM,IAAUt7B,OAC5B8uB,eAAgB0M,IAKLiB,EAA+B,CAC1CrM,WAAYkL,IAAU3O,UAAU,CAC9B2O,IAAUM,KACVN,IAAUS,QACRT,IAAUC,MAAM,CACdviB,UAAWsiB,IAAUI,MAAM,CAAC,OAAQ,UACpCgB,WAAYpB,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SAC7DlU,OAAQg4C,IAAUt7B,OAClBne,MAAOy5C,IAAU9jC,YAIvB64B,gBAAiBiL,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU1iC,OAChE03B,kBAAmBgL,IAAUC,MAAM,CACjCtP,IAAKqP,IAAUt7B,OACfqtB,MAAOiO,IAAUt7B,OACjBstB,OAAQgO,IAAUt7B,OAClBmsB,KAAMmP,IAAUt7B,UAKP28B,EAAyB,EAAH,OAC9BhB,GACAc,GAF8B,IAGjCG,cAAetB,IAAU9jC,OACzBqlC,kBAAmBvB,IAAU9jC,OAC7BpW,SAAUk6C,IAAU1iC,KACpBkkC,aAAcxB,IAAUM,KACxBmB,UAAWzB,IAAUM,KACrBoB,SAAU1B,IAAUM,KACpB1L,MAAOoL,IAAU9jC,OACjBylC,eAAgB3B,IAAU9jC,OAC1B65B,YAAaiK,IAAUt7B,OACvBoyB,WAAYkJ,IAAUlwC,OACtB+gC,KAAMmP,IAAUt7B,OAChBk9B,SAAU5B,IAAUt7B,OACpBgwB,YAAasL,IAAU9jC,OACvB2lC,aAAc7B,IAAUt7B,OACxB2wB,MAAO2K,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACtDwB,OAAQ9B,IAAU9jC,OAClBxB,gBAAiBslC,IAAU9jC,OAC3BpB,YAAaklC,IAAUt7B,OACvBq9B,cAAe/B,IAAU9jC,OACzB8lC,cAAehC,IAAU1iC,KACzB2kC,WAAYjC,IAAU1iC,KACtB4kC,eAAgBlC,IAAU1iC,KAC1Bq4B,mBAAoBqK,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUM,OACrE6B,WAAYnC,IAAU9jC,OACtBkmC,cAAepC,IAAU9jC,OACzBmmC,WAAYrC,IAAU3O,UAAU,CAAC2O,IAAUj6B,MAAOi6B,IAAUM,OAC5D3P,IAAKqP,IAAUt7B,OACf4wB,eAAgB0K,IAAUM,KAC1B/K,aAAcyK,IAAUM,KACxBgC,qBAAsBtC,IAAUlwC,OAChC2lC,gCAAiCuK,IAAUM,KAC3C5K,sBAAuBsK,IAAUM,KACjC1K,qBAAsBoK,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OACvEzK,kBAAmBmK,IAAU9jC,OAC7B45B,qBAAsBkK,IAAU3O,UAAU,CAAC2O,IAAUj6B,MAAOi6B,IAAUM,SAG3DiC,EAA2B,CACtC9N,UAAWuL,IAAUM,KACrBL,MAAOD,IAAU9jC,OACjBsmC,eAAgBxC,IAAU3O,UAAU,CAClC2O,IAAUC,MAAM,CACdpsC,EAAGmsC,IAAUt7B,OACbnQ,EAAGyrC,IAAUt7B,SAEfs7B,IAAUM,OAEZ5L,YAAasL,IAAUI,MAAM,CAAC,WAAY,gBAG/BqC,EAAmC,CAC9Cp5C,KAAM22C,IAAUS,QAAQT,IAAU0C,KAAKC,WACvCxM,UAAW6J,IAAU9jC,OAAOymC,WAC5BtM,UAAW2J,IAAU9jC,OAAOymC,WAC5BzM,OAAQ8J,IAAU1iC,KAAKqlC,WACvBvM,OAAQ4J,IAAU1iC,KAAKqlC,YAGZC,EAAyB,EAAH,KAC9BvC,GAD8B,IAEjCh3C,KAAM22C,IAAUS,QAAQT,IAAU0C,KAClCpM,WAAY0J,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OAC3D/J,cAAeyJ,IAAU9jC,OACzBs1B,KAAMwO,IAAU9jC,OAChBg6B,OAAQ8J,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACvDnK,UAAW6J,IAAU9jC,OACrBk6B,OAAQ4J,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACvDjK,UAAW2J,IAAU9jC,OACrBs6B,kBAAmBwJ,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OACpE7J,eAAgBuJ,IAAUM,KAC1B5K,sBAAuBsK,IAAUM,OAGtBuC,EAAyB,EAAH,KAC9BxC,GAD8B,IAEjCh3C,KAAM22C,IAAUS,QAAQT,IAAU0C,KAAKC,WACvCxM,UAAW6J,IAAU9jC,OAAOymC,WAC5BtM,UAAW2J,IAAU9jC,OAAOymC,WAC5B/H,aAAcoF,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAC/D/J,cAAeyJ,IAAU9jC,OAAOymC,WAChC5oC,QAASimC,IAAUt7B,OACnBwxB,OAAQ8J,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACvDlK,OAAQ4J,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACvD3J,UAAWqJ,IAAU1iC,KACrBg5B,WAAY0J,IAAU1iC,KACtBs5B,WAAYoJ,IAAUM,KACtBzJ,YAAamJ,IAAU9jC,OACvB46B,WAAYkJ,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OAC3DvJ,aAAciJ,IAAUM,KACxBtG,mBAAoBgG,IAAU1iC,KAC9BwlC,YAAa9C,IAAU9jC,OACvBpB,YAAaklC,IAAUt7B,OACvB21B,iBAAkB2F,IAAU9jC,OAC5B86B,iBAAkBgJ,IAAUt7B,OAC5BuyB,qBAAsB+I,IAAUM,KAChCyC,sBAAuB/C,IAAU1iC,KACjC0lC,2BAA4BhD,IAAU1iC,KACtC2lC,gBAAiBjD,IAAU1iC,KAC3B45B,sBAAuB8I,IAAUI,MAAM,CAAC,eAAgB,QACxDjJ,uBAAwB6I,IAAUM,OAGvB4C,EAAyB,CACpC75C,KAAM22C,IAAUS,QAAQT,IAAU0C,KAClClR,KAAMwO,IAAU9jC,OAChBi6B,UAAW6J,IAAU9jC,OACrBm6B,UAAW2J,IAAU9jC,OACrBg6B,OAAQ8J,IAAU1iC,KAClB84B,OAAQ4J,IAAU1iC,KAClBg5B,WAAY0J,IAAU1iC,KACtBxC,YAAaklC,IAAUt7B,OACvBs1B,mBAAoBgG,IAAU1iC,KAC9B6lC,QAASnD,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,QAG7C8C,EAA0B,CACrCzR,MAAOqO,IAAUt7B,OACjBktB,OAAQoO,IAAUt7B,OAClB2+B,YAAarD,IAAUS,QAAQT,IAAU9jC,QACzC7S,KAAM22C,IAAUS,QAAQT,IAAU0C,KAClCvM,UAAW6J,IAAU9jC,OACrBg6B,OAAQ8J,IAAU1iC,KAClB84B,OAAQ4J,IAAU1iC,KAClBg5B,WAAY0J,IAAU1iC,KACtBxC,YAAaklC,IAAUt7B,OACvBs1B,mBAAoBgG,IAAU1iC,KAC9B6lC,QAASnD,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACxDgD,6BAA8BtD,IAAUt7B,OACxC6yB,4BAA6ByI,IAAU9jC,OAEvCqnC,sBAAuBvD,IAAUM,KACjC9I,uBAAwBwI,IAAUt7B,OAClC+yB,uBAAwBuI,IAAU1iC,MAGvBkmC,EAAwB,EAAH,KAC7BnD,GAD6B,IAEhC1I,oBAAqBqI,IAAU9jC,OAC/B07B,8BAA+BoI,IAAUt7B,OACzCmzB,yBAA0BmI,IAAUt7B,OACpCozB,aAAckI,IAAUt7B,OACxBqzB,QAASiI,IAAUS,QAAQT,IAAU0C,KACrCxK,UAAW8H,IAAUt7B,OACrBuzB,gBAAiB+H,IAAUt7B,OAC3ByzB,SAAU6H,IAAU9jC,OACpBk8B,cAAe4H,IAAUt7B,OACzB++B,KAAMzD,IAAUt7B,OAChBg/B,KAAM1D,IAAUt7B,SAGLi/B,EAAoB,EAAH,KACzBf,GADyB,IAE5BtK,iBAAkB0H,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OACnE/H,iBAAkByH,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OACnE/N,WAAYyN,IAAUM,KACtB9N,WAAYwN,IAAUM,KACtB7K,gCAAiCuK,IAAUM,KAC3C9H,aAAcwH,IAAUt7B,OACxB+zB,aAAcuH,IAAUt7B,OACxB20B,YAAa2G,IAAUt7B,OACvBk/B,YAAa5D,IAAUt7B,OACvBm/B,cAAe7D,IAAUM,KACzBwD,cAAe9D,IAAUM,KACzBnO,WAAY6N,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAC7DtH,KAAMgH,IAAUt7B,OAChBg0B,WAAYsH,IAAUM,OAGXyD,EAA0B,EAAH,OAC/BnB,GACAY,GAF+B,IAGlC5K,aAAcoH,IAAUM,KACxBhI,iBAAkB0H,IAAU9jC,OAC5Bq8B,iBAAkByH,IAAU9jC,OAC5Bi9B,eAAgB6G,IAAU9jC,OAC1Bk9B,iCAAkC4G,IAAUM,KAC5CjH,YAAa2G,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUM,OAC9DhH,gBAAiB0G,IAAUt7B,OAC3B60B,gBAAiByG,IAAUt7B,OAC3Bm0B,cAAemH,IAAUM,KACzBxH,iBAAkBkH,IAAUM,KAC5BtH,KAAMgH,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUM,OACvDvH,KAAMiH,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUM,OACvDrH,OAAQ+G,IAAU3O,UAAU,CAAC2O,IAAUj6B,MAAOi6B,IAAUM,SAG7C0D,EAAiC,EAAH,OACtCnB,GACAO,GAFsC,IAGzC3J,cAAeuG,IAAU9jC,OACzBo8B,iBAAkB0H,IAAU9jC,OAC5Bq8B,iBAAkByH,IAAU9jC,SAGjB+nC,EAAqB,EAAH,KAC1Bb,GAD0B,IAE7B9K,iBAAkB0H,IAAU9jC,OAC5Bq8B,iBAAkByH,IAAU9jC,OAC5Bm6B,UAAW2J,IAAUS,QAAQT,IAAU9jC,QACvC49B,SAAUkG,IAAUM,KACpB4D,YAAalE,IAAUj6B,MACvB+yB,iBAAkBkH,IAAUM,KAC5B3G,iBAAkBqG,IAAUM,KAC5B6D,KAAMnE,IAAUt7B,OAChB0/B,KAAMpE,IAAUt7B,OAChBm1B,WAAYmG,IAAUI,MAAM,CAAC,OAAQ,WACrCxG,WAAYoG,IAAUM,KACtBvG,gBAAiBiG,IAAUM,KAC3B+D,YAAarE,IAAU1iC,KACvBgnC,YAAatE,IAAU1iC,KACvBi4B,aAAcyK,IAAUM,KACxBgC,qBAAsBtC,IAAUlwC,OAChCgjC,SAAUkN,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACzDzF,WAAYmF,IAAU9jC,OACtBqoC,iBAAkBvE,IAAUt7B,OAC5B8/B,gBAAiBxE,IAAUlwC,OAC3BinC,aAAciJ,IAAUM,KACxBI,aAAcV,IAAUlwC,OACxB4iC,iBAAkBsN,IAAU1iC,KAC5B28B,gBAAiB+F,IAAUM,KAC3B/N,WAAYyN,IAAUM,KACtB9N,WAAYwN,IAAUM,KACtBjO,iBAAkB2N,IAAUM,KAC5BlG,kBAAmB4F,IAAUS,QAAQT,IAAU9jC,QAC/Cm+B,iBAAkB2F,IAAU9jC,OAC5B86B,iBAAkBgJ,IAAUt7B,OAC5B+/B,kBAAmBzE,IAAUM,KAC7BoE,iBAAkB1E,IAAUj6B,MAC5B4+B,kBAAmB3E,IAAUj6B,MAC7Bu0B,eAAgB0F,IAAU9jC,OAC1Bq+B,yBAA0ByF,IAAU1iC,KACpCk9B,8BAA+BwF,IAAU1iC,KACzCg6B,4BAA6B0I,IAAUt7B,OACvCk4B,YAAaoD,IAAUt7B,OACvB+1B,sBAAuBuF,IAAU3O,UAAU,CAAC2O,IAAUj6B,MAAOi6B,IAAUM,SAG5DsE,EAAyB,EAAH,GAC9BjB,GAGQkB,EAAwB,EAAH,KAC7BhC,GAD6B,IAEhCr2C,KAAMwzC,IAAU9jC,OAChBo8B,iBAAkB0H,IAAU9jC,OAC5Bq8B,iBAAkByH,IAAU9jC,OAC5B2+B,WAAYmF,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAC7DxF,WAAYkF,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAC7DhK,WAAY0J,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OAC3DvF,UAAWiF,IAAUM,KACrBtF,UAAWgF,IAAUM,KACrB1E,eAAgBoE,IAAU9jC,OAC1B2/B,kBAAmBmE,IAAU9jC,OAC7B4/B,WAAYkE,IAAUM,KACtBvE,eAAgBiE,IAAUM,KAC1BtE,YAAagE,IAAUt7B,OACvBu3B,YAAa+D,IAAUt7B,OACvB82B,iBAAkBwE,IAAUM,KAC5BvJ,aAAciJ,IAAUM,KACxBI,aAAcV,IAAUlwC,OACxB4iC,iBAAkBsN,IAAU1iC,KAC5Bi+B,gBAAiByE,IAAUt7B,OAC3Bi3B,WAAYqE,IAAUS,QAAQT,IAAUt7B,QACxC03B,uBAAwB4D,IAAU9jC,OAClCmgC,uBAAwB2D,IAAUt7B,SAGvBogC,EAAoB,CAC/B5O,OAAQ8J,IAAU1iC,KAAKqlC,WACvBvM,OAAQ4J,IAAU1iC,KAAKqlC,WACvBrM,WAAY0J,IAAU1iC,KACtB08B,mBAAoBgG,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACnEnK,UAAW6J,IAAU9jC,OAAOymC,WAC5BtM,UAAW2J,IAAU9jC,OAAO6oC,WAC5B17C,KAAM22C,IAAUj6B,MAAM48B,WACtBpG,MAAOyD,IAAUM,KACjBpE,wBAAyB8D,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACxE9D,SAAUwD,IAAUM,KACpB7D,WAAYuD,IAAUM,KACtB5D,WAAYsD,IAAU3O,UAAU,CAAC2O,IAAUlwC,OAAQkwC,IAAUM,OAC7D3D,aAAcqD,IAAU3O,UAAU,CAAC2O,IAAUlwC,OAAQkwC,IAAUM,OAC/D1D,YAAaoD,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUM,S,6FAhZnDP,E,uHAOAG,E,mHAKAC,E,uHAWAE,E,mIAQAE,E,gIAIAC,E,2HAeAG,E,iIAIAC,E,gIAIAC,E,gIAIAC,E,iIAoBAI,E,iIAYAC,E,yIAsBAE,E,mIAwCAkB,E,qIAaAE,E,6IAQAG,E,mIAeAC,E,mIA6BAK,E,mIAaAE,E,oIAoBAI,E,kIAeAG,E,8HAkBAI,E,oIAkBAC,E,2IAQAC,E,+HA2CAW,E,mIAIAC,E,kIA0BAC,E,kQCzYb,sCAAIE,EAAK,IAAInlC,KACTolC,EAAK,IAAIplC,KAEE,SAASqlC,EAAYC,EAAQC,EAASC,EAAO1e,GAE1D,SAASyX,EAASn2B,GAChB,OAAOk9B,EAAOl9B,EAA4B,IAArB3J,UAAUtW,OAAe,IAAI6X,KAAO,IAAIA,MAAMoI,IAAQA,EA8D7E,OA3DAm2B,EAAS52B,MAAQ,SAASS,GACxB,OAAOk9B,EAAOl9B,EAAO,IAAIpI,MAAMoI,IAAQA,GAGzCm2B,EAAS72B,KAAO,SAASU,GACvB,OAAOk9B,EAAOl9B,EAAO,IAAIpI,KAAKoI,EAAO,IAAKm9B,EAAQn9B,EAAM,GAAIk9B,EAAOl9B,GAAOA,GAG5Em2B,EAASziB,MAAQ,SAAS1T,GACxB,IAAIq9B,EAAKlH,EAASn2B,GACds9B,EAAKnH,EAAS72B,KAAKU,GACvB,OAAOA,EAAOq9B,EAAKC,EAAKt9B,EAAOq9B,EAAKC,GAGtCnH,EAASxiB,OAAS,SAAS3T,EAAMu9B,GAC/B,OAAOJ,EAAQn9B,EAAO,IAAIpI,MAAMoI,GAAe,MAARu9B,EAAe,EAAI1gC,KAAK0C,MAAMg+B,IAAQv9B,GAG/Em2B,EAASqH,MAAQ,SAASC,EAAOC,EAAMH,GACrC,IAAgBI,EAAZH,EAAQ,GAGZ,GAFAC,EAAQtH,EAAS72B,KAAKm+B,GACtBF,EAAe,MAARA,EAAe,EAAI1gC,KAAK0C,MAAMg+B,KAC/BE,EAAQC,GAAWH,EAAO,GAAI,OAAOC,EAC3C,GAAGA,EAAM5/C,KAAK+/C,EAAW,IAAI/lC,MAAM6lC,IAASN,EAAQM,EAAOF,GAAOL,EAAOO,SAClEE,EAAWF,GAASA,EAAQC,GACnC,OAAOF,GAGTrH,EAAS9f,OAAS,SAAStrB,GACzB,OAAOkyC,GAAY,SAASj9B,GAC1B,GAAIA,GAAQA,EAAM,KAAOk9B,EAAOl9B,IAAQjV,EAAKiV,IAAOA,EAAKwU,QAAQxU,EAAO,MACvE,SAASA,EAAMu9B,GAChB,GAAIv9B,GAAQA,EACV,GAAIu9B,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAOJ,EAAQn9B,GAAO,IAAKjV,EAAKiV,UAC3B,OAASu9B,GAAQ,GACtB,KAAOJ,EAAQn9B,EAAM,IAAMjV,EAAKiV,UAMpCo9B,IACFjH,EAASiH,MAAQ,SAASK,EAAOG,GAG/B,OAFAb,EAAGvoB,SAASipB,GAAQT,EAAGxoB,SAASopB,GAChCV,EAAOH,GAAKG,EAAOF,GACZngC,KAAK0C,MAAM69B,EAAML,EAAIC,KAG9B7G,EAAS0H,MAAQ,SAASN,GAExB,OADAA,EAAO1gC,KAAK0C,MAAMg+B,GACV59B,SAAS49B,IAAWA,EAAO,EAC3BA,EAAO,EACTpH,EAAS9f,OAAOqI,EACZ,SAASz3B,GAAK,OAAOy3B,EAAMz3B,GAAKs2C,GAAS,GACzC,SAASt2C,GAAK,OAAOkvC,EAASiH,MAAM,EAAGn2C,GAAKs2C,GAAS,IAH3CpH,EADoB,OAQrCA,I,6BCpET,kHAEA,SAAS2H,EAAOl5C,EAAGqC,GACjB,OAAO,SAASjI,GACd,OAAO4F,EAAI5F,EAAIiI,GAUZ,SAAS82C,EAAIn5C,EAAGC,GACrB,IAAIoC,EAAIpC,EAAID,EACZ,OAAOqC,EAAI62C,EAAOl5C,EAAGqC,EAAI,KAAOA,GAAK,IAAMA,EAAI,IAAM4V,KAAK6W,MAAMzsB,EAAI,KAAOA,GAAK,YAAS6S,MAAMlV,GAAKC,EAAID,GAGnG,SAASo5C,EAAM1xC,GACpB,OAAoB,IAAZA,GAAKA,GAAW2xC,EAAU,SAASr5C,EAAGC,GAC5C,OAAOA,EAAID,EAbf,SAAqBA,EAAGC,EAAGyH,GACzB,OAAO1H,EAAIiY,KAAKG,IAAIpY,EAAG0H,GAAIzH,EAAIgY,KAAKG,IAAInY,EAAGyH,GAAK1H,EAAG0H,EAAI,EAAIA,EAAG,SAAStN,GACrE,OAAO6d,KAAKG,IAAIpY,EAAI5F,EAAI6F,EAAGyH,IAWZ4xC,CAAYt5C,EAAGC,EAAGyH,GAAK,YAASwN,MAAMlV,GAAKC,EAAID,IAInD,SAASq5C,EAAQr5C,EAAGC,GACjC,IAAIoC,EAAIpC,EAAID,EACZ,OAAOqC,EAAI62C,EAAOl5C,EAAGqC,GAAK,YAAS6S,MAAMlV,GAAKC,EAAID,K,sUC1B9Cu5C,EAAW,CAAC5iC,OAAO,IAUzB,SAASgZ,EAAMj2B,GACd,QAAcuB,IAAVvB,EACH,OAAOA,EAER,OAAQnC,OAAOC,UAAU4T,SAAS1T,KAAKgC,IACtC,IAAK,kBACJ,OAAOkE,KAAKC,MAAMD,KAAK47C,UAAU9/C,IAClC,IAAK,iBACJ,MAAO,GAAGuH,MAAMvJ,KAAKgC,GACtB,QACC,OAAOA,GAWV,SAAS+/C,EAAS32C,EAAKpJ,GACtB6/C,EAASz2C,GAAO6sB,EAAMj2B,GAUvB,SAASggD,EAAS52C,GACjB,OAAO6sB,EAAM4pB,EAASz2C,IASvB,SAAS62C,EAAQ72C,UACTy2C,EAASz2C,GAEjB,I,IAAMrJ,EAAMggD,EACNjgD,EAAMkgD,G,6FAxDNH,E,yHAUG5pB,E,sHAqBA8pB,E,yHAWAC,E,yHAUAC,E,wHAGHlgD,E,oHACAD,E,glBC5CS,CACbogD,YACAC,cACAC,oB,8kBCbWC,EAAQ,SAAC,GAAmC,IAAjC/yC,EAAiC,EAAjCA,EAAGU,EAA8B,EAA9BA,EAAGsyC,EAA2B,EAA3BA,SAAUC,EAAiB,EAAjBA,WACtC,OACE,oBAAMnvC,UAAU,SAAS9D,EAAGA,EAAGU,EAAGA,EAAGwyC,cAAaD,GAC/CD,IAKPD,EAAMxV,UAAY,CAChBv9B,EAAGmsC,IAAUt7B,OAAOi+B,WACpBpuC,EAAGyrC,IAAUt7B,OAAOi+B,WACpBkE,SAAU7G,IAAU9jC,OAAOymC,Y,UAGdiE,G,6FAdFA,E,oWCGE,IANG,CAChBjW,IAAK,MACLE,KAAM,OACNkB,MAAO,QACPC,OAAQ,W,6BCEVjmC,EAAOiD,QAJP,SAA4Bg4C,GAC1B,OAAOA,GAAQ,I,gBCHjB,IAAIC,EAA+B,EAAQ,KAqB3Cl7C,EAAOiD,QAnBP,SAAkC44B,EAAQqJ,GACxC,GAAc,MAAVrJ,EAAgB,MAAO,GAC3B,IACIj4B,EAAK5H,EADLykC,EAASya,EAA6Brf,EAAQqJ,GAGlD,GAAI7sC,OAAO8iD,sBAAuB,CAChC,IAAIC,EAAmB/iD,OAAO8iD,sBAAsBtf,GAEpD,IAAK7/B,EAAI,EAAGA,EAAIo/C,EAAiBn/C,OAAQD,IACvC4H,EAAMw3C,EAAiBp/C,GACnBkpC,EAASrrC,QAAQ+J,IAAQ,GACxBvL,OAAOC,UAAU+iD,qBAAqB7iD,KAAKqjC,EAAQj4B,KACxD68B,EAAO78B,GAAOi4B,EAAOj4B,IAIzB,OAAO68B,GAITzgC,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,gkBCpB3D63C,EAAuB,WACvBC,EAAuB,WAEvBC,EAA0BC,IAAcH,GACxCI,EAAuBD,IAAaH,GAEpCK,EAA0BF,IAAcF,GACxCK,EAAuBH,IAAaF,GAEpCM,EAAkB,SAAC3/B,EAAMpY,GACpC,IAAMg4C,EAAa,IAAIhoC,KAAKoI,EAAKhG,WAEjC,OADA4lC,EAAWC,QAAQD,EAAWtwB,UAAY1nB,GACnCg4C,GAGIE,EAAa,CACxB,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGWC,EAAiB,SAAChgC,EAAOX,GAGpC,OAAO,IAAIxH,KAAKwH,EAAM4gC,OAAOjgC,GAAS,EAAG,GAAGuP,WAGjC2wB,EAAe,SAACC,EAASC,GACpC,IAAMC,EAAUF,EAAQx7B,cAClB27B,EAAUF,EAAQz7B,cAExB,OAAO9V,MAAMyxC,EAAUD,EAAU,GAC9B7W,OACAplC,KAAI,SAACm8C,EAAG7hB,GAAJ,OAAc2hB,EAAU3hB,MAGpB8hB,EAAkB,SAAAvgC,GAK7B,MAAO,CAAEoH,IAJGpH,EAAKsP,UAIHvP,MAHAC,EAAKqP,WAGEjQ,KAFRY,EAAK0E,gBAKP87B,EAAwB,WAYnC,OAPkB,IAAI5oC,KAJT,KACC,GACF,IAGmB6oC,qBAE5Bl2C,QAPU,KAOI,QACdA,QAAQwV,GAAW,SACnBxV,QAPS,GAOI,S,6FA/DL60C,E,wGACAC,E,wGAEAC,E,2GACAE,E,wGAEAC,E,2GACAC,E,wGAEAC,E,mGAMAG,E,8FAeAC,E,kGAMAE,E,gGASAM,E,mGAQAC,E,yGAeE,K,yVCpEXlM,E,iFAQJ,SAASjP,EAAUE,EAAWnkC,EAAMmjC,GACnCA,EAASA,GAAUvhC,SAAS09C,KAExBpM,GAEHx2C,QAAQsmC,IAAI,aAAcmB,EAAWnkC,GAGtCmjC,EAAOkB,cACN,IAAIC,YAAY,aAAeH,EAAW,CACzCC,OAAQpkC,EACRukC,SAAS,KAWZ,SAASgb,EAAUC,GAClB,OAAOA,EACJ59C,SAAS69C,gBAAgBC,aACzBjkC,KAAKI,IAAIja,SAAS69C,gBAAgBC,aAAcjlD,OAAOklD,aAAe,GAS1E,SAASC,EAASJ,GACjB,OAAOA,EACJ59C,SAAS69C,gBAAgBI,YACzBpkC,KAAKI,IAAIja,SAAS69C,gBAAgBI,YAAaplD,OAAOqlD,YAAc,GAiBxE,SAASC,EAAQP,GAChB,MAAO,CACNjX,OAAQgX,EAAUC,GAClBlX,MAAOsX,EAASJ,IAiBlB,SAASQ,IACR,MAAO,CACNzX,OAAQ3mC,SAAS09C,KAAKW,aACtB3X,MAAO1mC,SAAS09C,KAAKY,YACrB1Y,KAAM/sC,OAAO0lD,aAAe1lD,OAAO2lD,QACnC9Y,IAAK7sC,OAAO4lD,aAAe5lD,OAAO6lD,SAOpC,SAASC,IACR,IAAMlV,EAAc5wC,OAAO+lD,OAAOnV,YAClC,OAAIA,EAC2B,iBAAhBA,EACXA,EAAYtiC,MAAM,KAAK,GACvBsiC,EAAYloC,KAAK4F,MAAM,KAAK,GACrBtO,OAAOgmD,WACVhmD,OAAOgmD,WAAW,2BAA2B1tB,QACjD,WACA,YAEIwsB,KAAeK,IAAa,WAAa,YAOlD,SAASc,IACR,OAAO9+C,SAAS++C,O,UAGF,CACdzN,MAAO,WACNA,GAAQ,GAETjP,YACA2b,WACAL,YACAQ,UACAC,oBACAU,gBACAH,iBACAK,SAAUC,IACVC,SAAUD,KAZI,O,6FApHX3N,E,mGAQKjP,E,uGAsBAsb,E,uGAYAK,E,sGAoBAG,E,qGAoBAC,E,+GAYAO,E,4GAkBAG,E,uVChHT,IAAIK,EAAgB,EAAQ,IA2B5Br+C,EAAOiD,QAzBP,SAAsBq7C,EAASC,EAAI99C,EAAM0Y,GACvC,IAAIqmB,EAAQrmB,EAAMA,EAAM,EAAIqlC,IACxBC,EAAO,EACX,OAEA,SAAexD,GACb,GAAIoD,EAAcpD,GAEhB,OADAqD,EAAQI,MAAMj+C,GACP0H,EAAO8yC,GAGhB,OAAOsD,EAAGtD,IAGZ,SAAS9yC,EAAO8yC,GACd,OAAIoD,EAAcpD,IAASwD,IAASjf,GAClC8e,EAAQK,QAAQ1D,GACT9yC,IAGTm2C,EAAQM,KAAKn+C,GACN89C,EAAGtD,O,cCzBd,SAASzW,IAgBP,OAfAxkC,EAAOiD,QAAUuhC,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GACrD,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CACzC,IAAI6/B,EAAStpB,UAAUvW,GAEvB,IAAK,IAAI4H,KAAOi4B,EACVxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAC/C68B,EAAO78B,GAAOi4B,EAAOj4B,IAK3B,OAAO68B,GAGTzgC,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,EACjE+gC,EAASznC,MAAMN,KAAM8V,WAG9BvS,EAAOiD,QAAUuhC,EACjBxkC,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,mMCpBzD,gBACR1C,IAAGA,EAAI,IACZ,IAEI/E,EAFA8H,EAAIhD,EAAIiY,KAAK2G,IAAI3e,EAAE9E,OAAQ6E,EAAE7E,QAAU,EACvC6C,EAAIiC,EAAEgB,QAEV,OAAO,SAAS7G,GACd,IAAKc,EAAI,EAAGA,EAAI8H,IAAK9H,EAAG8C,EAAE9C,GAAK8E,EAAE9E,IAAM,EAAId,GAAK6F,EAAE/E,GAAKd,EACvD,OAAO4D,IAIJ,SAAS+/C,EAAc/2C,GAC5B,OAAOg3C,YAAYC,OAAOj3C,MAAQA,aAAak3C,UCL1C,SAASC,EAAan+C,EAAGC,GAC9B,IAII/E,EAJAkjD,EAAKn+C,EAAIA,EAAE9E,OAAS,EACpBuL,EAAK1G,EAAIiY,KAAK2G,IAAIw/B,EAAIp+C,EAAE7E,QAAU,EAClC6L,EAAI,IAAIgD,MAAMtD,GACd1I,EAAI,IAAIgM,MAAMo0C,GAGlB,IAAKljD,EAAI,EAAGA,EAAIwL,IAAMxL,EAAG8L,EAAE9L,GAAKxB,EAAMsG,EAAE9E,GAAI+E,EAAE/E,IAC9C,KAAOA,EAAIkjD,IAAMljD,EAAG8C,EAAE9C,GAAK+E,EAAE/E,GAE7B,OAAO,SAASd,GACd,IAAKc,EAAI,EAAGA,EAAIwL,IAAMxL,EAAG8C,EAAE9C,GAAK8L,EAAE9L,GAAGd,GACrC,OAAO4D,GCnBI,oBACb,IAAIqE,EAAI,IAAI2Q,KACZ,OAAOhT,GAAKA,EAAGC,GAAKA,EAAG,SAAS7F,GAC9B,OAAOiI,EAAEutB,QAAQ5vB,GAAK,EAAI5F,GAAK6F,EAAI7F,GAAIiI,ICH5B,gBACb,OAAOrC,GAAKA,EAAGC,GAAKA,EAAG,SAAS7F,GAC9B,OAAO4F,GAAK,EAAI5F,GAAK6F,EAAI7F,ICAd,gBACb,IAEIqN,EAFAvM,EAAI,GACJ8C,EAAI,GAMR,IAAKyJ,KAHK,OAANzH,GAA2B,iBAANA,IAAgBA,EAAI,IACnC,OAANC,GAA2B,iBAANA,IAAgBA,EAAI,IAEnCA,EACJwH,KAAKzH,EACP9E,EAAEuM,GAAK/N,EAAMsG,EAAEyH,GAAIxH,EAAEwH,IAErBzJ,EAAEyJ,GAAKxH,EAAEwH,GAIb,OAAO,SAASrN,GACd,IAAKqN,KAAKvM,EAAG8C,EAAEyJ,GAAKvM,EAAEuM,GAAGrN,GACzB,OAAO4D,IClBPqgD,EAAM,8CACNC,EAAM,IAAI1hC,OAAOyhC,EAAItjB,OAAQ,KAclB,oBACb,IACIwjB,EACAC,EACAC,EAHAC,EAAKL,EAAInuC,UAAYouC,EAAIpuC,UAAY,EAIrChV,GAAK,EACLiI,EAAI,GACJ2D,EAAI,GAMR,IAHA9G,GAAQ,GAAIC,GAAQ,IAGZs+C,EAAKF,EAAIjuC,KAAKpQ,MACdw+C,EAAKF,EAAIluC,KAAKnQ,MACfw+C,EAAKD,EAAG3kB,OAAS6kB,IACpBD,EAAKx+C,EAAEgB,MAAMy9C,EAAID,GACbt7C,EAAEjI,GAAIiI,EAAEjI,IAAMujD,EACbt7C,IAAIjI,GAAKujD,IAEXF,EAAKA,EAAG,OAASC,EAAKA,EAAG,IACxBr7C,EAAEjI,GAAIiI,EAAEjI,IAAMsjD,EACbr7C,IAAIjI,GAAKsjD,GAEdr7C,IAAIjI,GAAK,KACT4L,EAAE9N,KAAK,CAACkC,EAAGA,EAAG8L,EAAG6Q,EAAO0mC,EAAIC,MAE9BE,EAAKJ,EAAIpuC,UAYX,OARIwuC,EAAKz+C,EAAE9E,SACTsjD,EAAKx+C,EAAEgB,MAAMy9C,GACTv7C,EAAEjI,GAAIiI,EAAEjI,IAAMujD,EACbt7C,IAAIjI,GAAKujD,GAKTt7C,EAAEhI,OAAS,EAAK2L,EAAE,GA7C3B,SAAa7G,GACX,OAAO,SAAS7F,GACd,OAAO6F,EAAE7F,GAAK,IA4CVukD,CAAI73C,EAAE,GAAGE,GApDjB,SAAc/G,GACZ,OAAO,WACL,OAAOA,GAmDH2+C,CAAK3+C,IACJA,EAAI6G,EAAE3L,OAAQ,SAASf,GACtB,IAAK,IAAWmI,EAAPrH,EAAI,EAAMA,EAAI+E,IAAK/E,EAAGiI,GAAGZ,EAAIuE,EAAE5L,IAAIA,GAAKqH,EAAEyE,EAAE5M,GACrD,OAAO+I,EAAE1C,KAAK,O,QCnDT,gBACb,IAAkBzC,EAAd5D,SAAW6F,EACf,OAAY,MAALA,GAAmB,YAAN7F,EAAkB,OAAAykD,EAAA,GAAS5+C,IAClC,WAAN7F,EAAiByd,EACZ,WAANzd,GAAmB4D,EAAI,OAAA8gD,EAAA,GAAM7+C,KAAOA,EAAIjC,EAAG+gD,EAAA,GAAO1vC,EAClDpP,aAAa6+C,EAAA,EAAQC,EAAA,EACrB9+C,aAAa+S,KAAOoI,EACpB2iC,EAAc99C,GAAK++C,EACnBh1C,MAAMsF,QAAQrP,GAAKk+C,EACE,mBAAdl+C,EAAEmT,SAAgD,mBAAfnT,EAAEmL,UAA2B8J,MAAMjV,GAAKgD,EAClF4U,GAAQ7X,EAAGC,I,SCpBJ,SAAS,EAAO+G,GAC7B,OAAQA,ECIV,IAAI2S,EAAO,CAAC,EAAG,GAER,SAASmsB,EAAS9+B,GACvB,OAAOA,EAGT,SAASi4C,EAAUj/C,EAAGC,GACpB,OAAQA,GAAMD,GAAKA,GACb,SAASgH,GAAK,OAAQA,EAAIhH,GAAKC,ICbL+G,EDcjBkO,MAAMjV,GAAKyV,IAAM,GCbzB,WACL,OAAO1O,IAFI,IAAmBA,EDyBlC,SAASk4C,EAAMC,EAAQvG,EAAOwG,GAC5B,IAAI3G,EAAK0G,EAAO,GAAIzG,EAAKyG,EAAO,GAAIE,EAAKzG,EAAM,GAAI0G,EAAK1G,EAAM,GAG9D,OAFIF,EAAKD,GAAIA,EAAKwG,EAAUvG,EAAID,GAAK4G,EAAKD,EAAYE,EAAID,KACrD5G,EAAKwG,EAAUxG,EAAIC,GAAK2G,EAAKD,EAAYC,EAAIC,IAC3C,SAASt4C,GAAK,OAAOq4C,EAAG5G,EAAGzxC,KAGpC,SAASu4C,EAAQJ,EAAQvG,EAAOwG,GAC9B,IAAIngD,EAAIgZ,KAAK2G,IAAIugC,EAAOhkD,OAAQy9C,EAAMz9C,QAAU,EAC5CkH,EAAI,IAAI2H,MAAM/K,GACduD,EAAI,IAAIwH,MAAM/K,GACd/D,GAAK,EAQT,IALIikD,EAAOlgD,GAAKkgD,EAAO,KACrBA,EAASA,EAAOl+C,QAAQu+C,UACxB5G,EAAQA,EAAM33C,QAAQu+C,aAGftkD,EAAI+D,GACXoD,EAAEnH,GAAK+jD,EAAUE,EAAOjkD,GAAIikD,EAAOjkD,EAAI,IACvCsH,EAAEtH,GAAKkkD,EAAYxG,EAAM19C,GAAI09C,EAAM19C,EAAI,IAGzC,OAAO,SAAS8L,GACd,IAAI9L,EAAI,OAAAukD,EAAA,GAAON,EAAQn4C,EAAG,EAAG/H,GAAK,EAClC,OAAOuD,EAAEtH,GAAGmH,EAAEnH,GAAG8L,KAId,SAAS44B,EAAK7E,EAAQ4E,GAC3B,OAAOA,EACFwf,OAAOpkB,EAAOokB,UACdvG,MAAM7d,EAAO6d,SACbwG,YAAYrkB,EAAOqkB,eACnBM,MAAM3kB,EAAO2kB,SACbC,QAAQ5kB,EAAO4kB,WAGf,SAASC,IACd,IAGI3b,EACA4b,EACAF,EAEAG,EACA1mC,EACA5G,EATA2sC,EAASxlC,EACTi/B,EAAQj/B,EACRylC,EAAc,EAIdM,EAAQ5Z,EAKZ,SAASia,IACP,IA5Da//C,EAAGC,EACd7F,EA2DE4I,EAAIiV,KAAK2G,IAAIugC,EAAOhkD,OAAQy9C,EAAMz9C,QAItC,OAHIukD,IAAU5Z,IA7DD9lC,EA6D2Bm/C,EAAO,GA7D/Bl/C,EA6DmCk/C,EAAOn8C,EAAI,GA3D5DhD,EAAIC,IAAG7F,EAAI4F,EAAGA,EAAIC,EAAGA,EAAI7F,GA2DHslD,EA1DnB,SAAS14C,GAAK,OAAOiR,KAAKI,IAAIrY,EAAGiY,KAAK2G,IAAI3e,EAAG+G,MA2DlD84C,EAAY98C,EAAI,EAAIu8C,EAAUL,EAC9B9lC,EAAS5G,EAAQ,KACVg2B,EAGT,SAASA,EAAMxhC,GACb,OAAY,MAALA,GAAakO,MAAMlO,GAAKA,GAAK24C,GAAWvmC,IAAWA,EAAS0mC,EAAUX,EAAO5/C,IAAI0kC,GAAY2U,EAAOwG,KAAenb,EAAUyb,EAAM14C,KA+B5I,OA5BAwhC,EAAMd,OAAS,SAAShgC,GACtB,OAAOg4C,EAAMG,GAAartC,IAAUA,EAAQstC,EAAUlH,EAAOuG,EAAO5/C,IAAI0kC,GAAY,KAAqBv8B,MAG3G8gC,EAAM2W,OAAS,SAASzD,GACtB,OAAOjqC,UAAUtW,QAAUgkD,EAASn1C,MAAMgM,KAAK0lC,EAAG,GAASqE,KAAaZ,EAAOl+C,SAGjFunC,EAAMoQ,MAAQ,SAAS8C,GACrB,OAAOjqC,UAAUtW,QAAUy9C,EAAQ5uC,MAAMgM,KAAK0lC,GAAIqE,KAAanH,EAAM33C,SAGvEunC,EAAMwX,WAAa,SAAStE,GAC1B,OAAO9C,EAAQ5uC,MAAMgM,KAAK0lC,GAAI0D,EAAc,IAAkBW,KAGhEvX,EAAMkX,MAAQ,SAAShE,GACrB,OAAOjqC,UAAUtW,QAAUukD,IAAQhE,GAAW5V,EAAUia,KAAaL,IAAU5Z,GAGjF0C,EAAM4W,YAAc,SAAS1D,GAC3B,OAAOjqC,UAAUtW,QAAUikD,EAAc1D,EAAGqE,KAAaX,GAG3D5W,EAAMmX,QAAU,SAASjE,GACvB,OAAOjqC,UAAUtW,QAAUwkD,EAAUjE,EAAGlT,GAASmX,GAG5C,SAASvlD,EAAGyN,GAEjB,OADAo8B,EAAY7pC,EAAGylD,EAAch4C,EACtBk4C,KAII,SAASE,IACtB,OAAOL,IAAc9Z,EAAUA,K,iGE3HjC,IAAIqS,EAAK,IAAInlC,KACTolC,EAAK,IAAIplC,KAEE,SAASqlC,EAAYC,EAAQC,EAASC,EAAO1e,GAE1D,SAASyX,EAASn2B,GAChB,OAAOk9B,EAAOl9B,EAA4B,IAArB3J,UAAUtW,OAAe,IAAI6X,KAAO,IAAIA,MAAMoI,IAAQA,EA8D7E,OA3DAm2B,EAAS52B,MAAQ,SAASS,GACxB,OAAOk9B,EAAOl9B,EAAO,IAAIpI,MAAMoI,IAAQA,GAGzCm2B,EAAS72B,KAAO,SAASU,GACvB,OAAOk9B,EAAOl9B,EAAO,IAAIpI,KAAKoI,EAAO,IAAKm9B,EAAQn9B,EAAM,GAAIk9B,EAAOl9B,GAAOA,GAG5Em2B,EAASziB,MAAQ,SAAS1T,GACxB,IAAIq9B,EAAKlH,EAASn2B,GACds9B,EAAKnH,EAAS72B,KAAKU,GACvB,OAAOA,EAAOq9B,EAAKC,EAAKt9B,EAAOq9B,EAAKC,GAGtCnH,EAASxiB,OAAS,SAAS3T,EAAMu9B,GAC/B,OAAOJ,EAAQn9B,EAAO,IAAIpI,MAAMoI,GAAe,MAARu9B,EAAe,EAAI1gC,KAAK0C,MAAMg+B,IAAQv9B,GAG/Em2B,EAASqH,MAAQ,SAASC,EAAOC,EAAMH,GACrC,IAAgBI,EAAZH,EAAQ,GAGZ,GAFAC,EAAQtH,EAAS72B,KAAKm+B,GACtBF,EAAe,MAARA,EAAe,EAAI1gC,KAAK0C,MAAMg+B,KAC/BE,EAAQC,GAAWH,EAAO,GAAI,OAAOC,EAC3C,GAAGA,EAAM5/C,KAAK+/C,EAAW,IAAI/lC,MAAM6lC,IAASN,EAAQM,EAAOF,GAAOL,EAAOO,SAClEE,EAAWF,GAASA,EAAQC,GACnC,OAAOF,GAGTrH,EAAS9f,OAAS,SAAStrB,GACzB,OAAOkyC,GAAY,SAASj9B,GAC1B,GAAIA,GAAQA,EAAM,KAAOk9B,EAAOl9B,IAAQjV,EAAKiV,IAAOA,EAAKwU,QAAQxU,EAAO,MACvE,SAASA,EAAMu9B,GAChB,GAAIv9B,GAAQA,EACV,GAAIu9B,EAAO,EAAG,OAASA,GAAQ,GAC7B,KAAOJ,EAAQn9B,GAAO,IAAKjV,EAAKiV,UAC3B,OAASu9B,GAAQ,GACtB,KAAOJ,EAAQn9B,EAAM,IAAMjV,EAAKiV,UAMpCo9B,IACFjH,EAASiH,MAAQ,SAASK,EAAOG,GAG/B,OAFAb,EAAGvoB,SAASipB,GAAQT,EAAGxoB,SAASopB,GAChCV,EAAOH,GAAKG,EAAOF,GACZngC,KAAK0C,MAAM69B,EAAML,EAAIC,KAG9B7G,EAAS0H,MAAQ,SAASN,GAExB,OADAA,EAAO1gC,KAAK0C,MAAMg+B,GACV59B,SAAS49B,IAAWA,EAAO,EAC3BA,EAAO,EACTpH,EAAS9f,OAAOqI,EACZ,SAASz3B,GAAK,OAAOy3B,EAAMz3B,GAAKs2C,GAAS,GACzC,SAASt2C,GAAK,OAAOkvC,EAASiH,MAAM,EAAGn2C,GAAKs2C,GAAS,IAH3CpH,EADoB,OAQrCA,ECjET,SAAS2O,EAAWhlD,GAClB,OAAO,GAAS,SAASkgB,GACvBA,EAAK+kC,WAAW/kC,EAAKoP,cAAgBpP,EAAKoF,YAAc,EAAItlB,GAAK,GACjEkgB,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+kC,WAAW/kC,EAAKoP,aAAsB,EAAPmuB,MACnC,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GCNQ,UDUnB,IAAIwH,EAAYH,EAAW,GACvBI,EAAYJ,EAAW,GACvBK,EAAaL,EAAW,GACxBM,EAAeN,EAAW,GAC1BO,EAAcP,EAAW,GACzBQ,EAAYR,EAAW,GACvBS,EAAcT,EAAW,GEjBhCU,GFmBoBP,EAAUzH,MACV0H,EAAU1H,MACT2H,EAAW3H,MACT4H,EAAa5H,MACd6H,EAAY7H,MACd8H,EAAU9H,MACR+H,EAAY/H,MEzBzB,GAAS,SAASx9B,GAC7BA,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+kC,WAAW/kC,EAAKoP,aAAemuB,MACnC,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GDLS,SCMtB,SAASz9B,GACV,OAAOA,EAAKoP,aAAe,MAGd,IACMo2B,EAAOhI,MCX5B,SAASj4B,EAAQzlB,GACf,OAAO,GAAS,SAASkgB,GACvBA,EAAK6/B,QAAQ7/B,EAAKsP,WAAatP,EAAKkO,SAAW,EAAIpuB,GAAK,GACxDkgB,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAK6/B,QAAQ7/B,EAAKsP,UAAmB,EAAPiuB,MAC7B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,EFTU,KESDG,EAAIjpB,oBAAsB8oB,EAAM9oB,sBFNjC,UEUnB,IAAI+wB,EAASngC,EAAQ,GACjBogC,EAASpgC,EAAQ,GACjBqgC,EAAUrgC,EAAQ,GAClBsgC,EAAYtgC,EAAQ,GACpBugC,EAAWvgC,EAAQ,GACnBwgC,EAASxgC,EAAQ,GACjBygC,EAAWzgC,EAAQ,GCjB1B,GDmBiBmgC,EAAOlI,MACPmI,EAAOnI,MACNoI,EAAQpI,MACNqI,EAAUrI,MACXsI,EAAStI,MACXuI,EAAOvI,MACLwI,EAASxI,MCzBtB,GAAS,SAASx9B,GAC1BA,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAK6/B,QAAQ7/B,EAAKsP,UAAYiuB,MAC7B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,EHPY,KGOHG,EAAIjpB,oBAAsB8oB,EAAM9oB,sBHLhC,SGMtB,SAAS3U,GACV,OAAOA,EAAKsP,UAAY,MAGX,ICXXlQ,GDYc,EAAIo+B,MCZX,GAAS,SAASx9B,GAC3BA,EAAKsD,SAAS,EAAG,GACjBtD,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAK2E,YAAY3E,EAAK0E,cAAgB64B,MACrC,SAASE,EAAOG,GACjB,OAAOA,EAAIl5B,cAAgB+4B,EAAM/4B,iBAChC,SAAS1E,GACV,OAAOA,EAAK0E,kBAIdtF,EAAKy+B,MAAQ,SAASxxC,GACpB,OAAQsT,SAAStT,EAAIwQ,KAAK0C,MAAMlT,KAASA,EAAI,EAAY,GAAS,SAAS2T,GACzEA,EAAK2E,YAAY9H,KAAK0C,MAAMS,EAAK0E,cAAgBrY,GAAKA,GACtD2T,EAAKsD,SAAS,EAAG,GACjBtD,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAK2E,YAAY3E,EAAK0E,cAAgB64B,EAAOlxC,MALG,MASrC,QCtBX45C,GDuBe7mC,EAAKo+B,MCvBV,GAAS,SAASx9B,GAC9BA,EAAKkmC,YAAY,EAAG,GACpBlmC,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+E,eAAe/E,EAAK8E,iBAAmBy4B,MAC3C,SAASE,EAAOG,GACjB,OAAOA,EAAI94B,iBAAmB24B,EAAM34B,oBACnC,SAAS9E,GACV,OAAOA,EAAK8E,qBAIdmhC,EAAQpI,MAAQ,SAASxxC,GACvB,OAAQsT,SAAStT,EAAIwQ,KAAK0C,MAAMlT,KAASA,EAAI,EAAY,GAAS,SAAS2T,GACzEA,EAAK+E,eAAelI,KAAK0C,MAAMS,EAAK8E,iBAAmBzY,GAAKA,GAC5D2T,EAAKkmC,YAAY,EAAG,GACpBlmC,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+E,eAAe/E,EAAK8E,iBAAmBy4B,EAAOlxC,MALH,MASrC,QACO45C,EAAQzI,MCZ9B,SAAS2I,EAAUl/C,GACjB,GAAI,GAAKA,EAAEqF,GAAKrF,EAAEqF,EAAI,IAAK,CACzB,IAAI0T,EAAO,IAAIpI,MAAM,EAAG3Q,EAAED,EAAGC,EAAEA,EAAGA,EAAEwE,EAAGxE,EAAEmF,EAAGnF,EAAE6E,EAAG7E,EAAE2D,GAEnD,OADAoV,EAAK2E,YAAY1d,EAAEqF,GACZ0T,EAET,OAAO,IAAIpI,KAAK3Q,EAAEqF,EAAGrF,EAAED,EAAGC,EAAEA,EAAGA,EAAEwE,EAAGxE,EAAEmF,EAAGnF,EAAE6E,EAAG7E,EAAE2D,GAGlD,SAASw7C,EAAQn/C,GACf,GAAI,GAAKA,EAAEqF,GAAKrF,EAAEqF,EAAI,IAAK,CACzB,IAAI0T,EAAO,IAAIpI,KAAKA,KAAKiN,KAAK,EAAG5d,EAAED,EAAGC,EAAEA,EAAGA,EAAEwE,EAAGxE,EAAEmF,EAAGnF,EAAE6E,EAAG7E,EAAE2D,IAE5D,OADAoV,EAAK+E,eAAe9d,EAAEqF,GACf0T,EAET,OAAO,IAAIpI,KAAKA,KAAKiN,IAAI5d,EAAEqF,EAAGrF,EAAED,EAAGC,EAAEA,EAAGA,EAAEwE,EAAGxE,EAAEmF,EAAGnF,EAAE6E,EAAG7E,EAAE2D,IAG3D,SAASy7C,EAAQ/5C,EAAGtF,EAAGC,GACrB,MAAO,CAACqF,EAAGA,EAAGtF,EAAGA,EAAGC,EAAGA,EAAGwE,EAAG,EAAGW,EAAG,EAAGN,EAAG,EAAGlB,EAAG,GAmWjD,ICjYI,EACOwiB,EACAk5B,ED+XPC,EAAO,CAAC,IAAK,GAAI,EAAK,IAAK,EAAK,KAChCC,EAAW,UACXC,EAAY,KACZC,EAAY,sBAEhB,SAASC,EAAIroD,EAAOirC,EAAMG,GACxB,IAAI5V,EAAOx1B,EAAQ,EAAI,IAAM,GACzB2V,GAAU6f,GAAQx1B,EAAQA,GAAS,GACnCyB,EAASkU,EAAOlU,OACpB,OAAO+zB,GAAQ/zB,EAAS2pC,EAAQ,IAAI96B,MAAM86B,EAAQ3pC,EAAS,GAAGsF,KAAKkkC,GAAQt1B,EAASA,GAGtF,SAAS2yC,EAAQ7+C,GACf,OAAOA,EAAEwC,QAAQm8C,EAAW,QAG9B,SAASG,EAASn7B,GAChB,OAAO,IAAIlK,OAAO,OAASkK,EAAMvnB,IAAIyiD,GAASvhD,KAAK,KAAO,IAAK,KAGjE,SAASyhD,EAAap7B,GAEpB,IADA,IAAIvnB,EAAM,GAAIrE,GAAK,EAAG8H,EAAI8jB,EAAM3rB,SACvBD,EAAI8H,GAAGzD,EAAIunB,EAAM5rB,GAAGuT,eAAiBvT,EAC9C,OAAOqE,EAGT,SAAS4iD,EAAyB9/C,EAAGgN,EAAQnU,GAC3C,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAE0D,GAAK/C,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASinD,EAAyB//C,EAAGgN,EAAQnU,GAC3C,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEwF,GAAK7E,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASknD,EAAsBhgD,EAAGgN,EAAQnU,GACxC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAE+E,GAAKpE,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASmnD,EAAmBjgD,EAAGgN,EAAQnU,GACrC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEkgD,GAAKv/C,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASqnD,EAAsBngD,EAAGgN,EAAQnU,GACxC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAE+C,GAAKpC,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASsnD,EAAcpgD,EAAGgN,EAAQnU,GAChC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEqF,GAAK1E,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASunD,EAAUrgD,EAAGgN,EAAQnU,GAC5B,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEqF,GAAK1E,EAAE,KAAOA,EAAE,GAAK,GAAK,KAAO,KAAO9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG5E,SAASw9B,EAAUt2B,EAAGgN,EAAQnU,GAC5B,IAAI8H,EAAI,+BAA+BoN,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAChE,OAAO8H,GAAKX,EAAEoD,EAAIzC,EAAE,GAAK,IAAMA,EAAE,IAAMA,EAAE,IAAM,OAAQ9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG7E,SAASwnD,EAAatgD,EAAGgN,EAAQnU,GAC/B,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEyE,EAAW,EAAP9D,EAAE,GAAS,EAAG9H,EAAI8H,EAAE,GAAG7H,SAAW,EAGtD,SAASynD,EAAiBvgD,EAAGgN,EAAQnU,GACnC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAED,EAAIY,EAAE,GAAK,EAAG9H,EAAI8H,EAAE,GAAG7H,SAAW,EAGlD,SAAS0nD,GAAgBxgD,EAAGgN,EAAQnU,GAClC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEA,GAAKW,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAAS2nD,GAAezgD,EAAGgN,EAAQnU,GACjC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAED,EAAI,EAAGC,EAAEA,GAAKW,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAGxD,SAAS4nD,GAAY1gD,EAAGgN,EAAQnU,GAC9B,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEwE,GAAK7D,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAAS6nD,GAAa3gD,EAAGgN,EAAQnU,GAC/B,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAEmF,GAAKxE,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAAS8nD,GAAa5gD,EAAGgN,EAAQnU,GAC/B,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAE6E,GAAKlE,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAAS+nD,GAAkB7gD,EAAGgN,EAAQnU,GACpC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAE2D,GAAKhD,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASgoD,GAAkB9gD,EAAGgN,EAAQnU,GACpC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC1C,OAAO8H,GAAKX,EAAE2D,EAAIiS,KAAK0C,MAAM3X,EAAE,GAAK,KAAO9H,EAAI8H,EAAE,GAAG7H,SAAW,EAGjE,SAASioD,GAAoB/gD,EAAGgN,EAAQnU,GACtC,IAAI8H,EAAI6+C,EAAUzxC,KAAKf,EAAOpO,MAAM/F,EAAGA,EAAI,IAC3C,OAAO8H,EAAI9H,EAAI8H,EAAE,GAAG7H,QAAU,EAGhC,SAASkoD,GAAmBhhD,EAAGgN,EAAQnU,GACrC,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,IACnC,OAAO8H,GAAKX,EAAEqG,GAAK1F,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASmoD,GAA0BjhD,EAAGgN,EAAQnU,GAC5C,IAAI8H,EAAI4+C,EAASxxC,KAAKf,EAAOpO,MAAM/F,IACnC,OAAO8H,GAAKX,EAAEc,GAAKH,EAAE,GAAI9H,EAAI8H,EAAE,GAAG7H,SAAW,EAG/C,SAASooD,GAAiBlhD,EAAGhF,GAC3B,OAAO0kD,EAAI1/C,EAAEqoB,UAAWrtB,EAAG,GAG7B,SAASmmD,GAAanhD,EAAGhF,GACvB,OAAO0kD,EAAI1/C,EAAEohD,WAAYpmD,EAAG,GAG9B,SAASqmD,GAAarhD,EAAGhF,GACvB,OAAO0kD,EAAI1/C,EAAEohD,WAAa,IAAM,GAAIpmD,EAAG,GAGzC,SAASsmD,GAAgBthD,EAAGhF,GAC1B,OAAO0kD,EAAI,EAAI,EAAQvJ,MAAM,EAASn2C,GAAIA,GAAIhF,EAAG,GAGnD,SAASumD,GAAmBvhD,EAAGhF,GAC7B,OAAO0kD,EAAI1/C,EAAEwhD,kBAAmBxmD,EAAG,GAGrC,SAASymD,GAAmBzhD,EAAGhF,GAC7B,OAAOumD,GAAmBvhD,EAAGhF,GAAK,MAGpC,SAAS0mD,GAAkB1hD,EAAGhF,GAC5B,OAAO0kD,EAAI1/C,EAAEooB,WAAa,EAAGptB,EAAG,GAGlC,SAAS2mD,GAAc3hD,EAAGhF,GACxB,OAAO0kD,EAAI1/C,EAAE4hD,aAAc5mD,EAAG,GAGhC,SAAS6mD,GAAc7hD,EAAGhF,GACxB,OAAO0kD,EAAI1/C,EAAE8hD,aAAc9mD,EAAG,GAGhC,SAAS+mD,GAA0B/hD,GACjC,IAAImgB,EAAMngB,EAAEinB,SACZ,OAAe,IAAR9G,EAAY,EAAIA,EAGzB,SAAS6hC,GAAuBhiD,EAAGhF,GACjC,OAAO0kD,EAAI,EAAWvJ,MAAM,EAASn2C,GAAK,EAAGA,GAAIhF,EAAG,GAGtD,SAASinD,GAAKjiD,GACZ,IAAImgB,EAAMngB,EAAEinB,SACZ,OAAQ9G,GAAO,GAAa,IAARA,EAAa,EAAangB,GAAK,EAAaqY,KAAKrY,GAGvE,SAASkiD,GAAoBliD,EAAGhF,GAE9B,OADAgF,EAAIiiD,GAAKjiD,GACF0/C,EAAI,EAAavJ,MAAM,EAASn2C,GAAIA,IAA+B,IAAzB,EAASA,GAAGinB,UAAiBjsB,EAAG,GAGnF,SAASmnD,GAA0BniD,GACjC,OAAOA,EAAEinB,SAGX,SAASm7B,GAAuBpiD,EAAGhF,GACjC,OAAO0kD,EAAI,EAAWvJ,MAAM,EAASn2C,GAAK,EAAGA,GAAIhF,EAAG,GAGtD,SAASqnD,GAAWriD,EAAGhF,GACrB,OAAO0kD,EAAI1/C,EAAEyd,cAAgB,IAAKziB,EAAG,GAGvC,SAASsnD,GAActiD,EAAGhF,GAExB,OAAO0kD,GADP1/C,EAAIiiD,GAAKjiD,IACIyd,cAAgB,IAAKziB,EAAG,GAGvC,SAASunD,GAAeviD,EAAGhF,GACzB,OAAO0kD,EAAI1/C,EAAEyd,cAAgB,IAAOziB,EAAG,GAGzC,SAASwnD,GAAkBxiD,EAAGhF,GAC5B,IAAImlB,EAAMngB,EAAEinB,SAEZ,OAAOy4B,GADP1/C,EAAKmgB,GAAO,GAAa,IAARA,EAAa,EAAangB,GAAK,EAAaqY,KAAKrY,IACrDyd,cAAgB,IAAOziB,EAAG,GAGzC,SAASynD,GAAWziD,GAClB,IAAIkF,EAAIlF,EAAE0tB,oBACV,OAAQxoB,EAAI,EAAI,KAAOA,IAAM,EAAG,MAC1Bw6C,EAAIx6C,EAAI,GAAK,EAAG,IAAK,GACrBw6C,EAAIx6C,EAAI,GAAI,IAAK,GAGzB,SAASw9C,GAAoB1iD,EAAGhF,GAC9B,OAAO0kD,EAAI1/C,EAAEmoB,aAAcntB,EAAG,GAGhC,SAAS2nD,GAAgB3iD,EAAGhF,GAC1B,OAAO0kD,EAAI1/C,EAAE4iD,cAAe5nD,EAAG,GAGjC,SAAS6nD,GAAgB7iD,EAAGhF,GAC1B,OAAO0kD,EAAI1/C,EAAE4iD,cAAgB,IAAM,GAAI5nD,EAAG,GAG5C,SAAS8nD,GAAmB9iD,EAAGhF,GAC7B,OAAO0kD,EAAI,EAAI,EAAOvJ,MAAM,EAAQn2C,GAAIA,GAAIhF,EAAG,GAGjD,SAAS+nD,GAAsB/iD,EAAGhF,GAChC,OAAO0kD,EAAI1/C,EAAEgjD,qBAAsBhoD,EAAG,GAGxC,SAASioD,GAAsBjjD,EAAGhF,GAChC,OAAO+nD,GAAsB/iD,EAAGhF,GAAK,MAGvC,SAASkoD,GAAqBljD,EAAGhF,GAC/B,OAAO0kD,EAAI1/C,EAAEkoB,cAAgB,EAAGltB,EAAG,GAGrC,SAASmoD,GAAiBnjD,EAAGhF,GAC3B,OAAO0kD,EAAI1/C,EAAEynB,gBAAiBzsB,EAAG,GAGnC,SAASooD,GAAiBpjD,EAAGhF,GAC3B,OAAO0kD,EAAI1/C,EAAEqjD,gBAAiBroD,EAAG,GAGnC,SAASsoD,GAA6BtjD,GACpC,IAAIge,EAAMhe,EAAEme,YACZ,OAAe,IAARH,EAAY,EAAIA,EAGzB,SAASulC,GAA0BvjD,EAAGhF,GACpC,OAAO0kD,EAAI1B,EAAU7H,MAAM,EAAQn2C,GAAK,EAAGA,GAAIhF,EAAG,GAGpD,SAASwoD,GAAQxjD,GACf,IAAImgB,EAAMngB,EAAEme,YACZ,OAAQgC,GAAO,GAAa,IAARA,EAAai+B,EAAYp+C,GAAKo+C,EAAY/lC,KAAKrY,GAGrE,SAASyjD,GAAuBzjD,EAAGhF,GAEjC,OADAgF,EAAIwjD,GAAQxjD,GACL0/C,EAAItB,EAAYjI,MAAM,EAAQn2C,GAAIA,IAAiC,IAA3B,EAAQA,GAAGme,aAAoBnjB,EAAG,GAGnF,SAAS0oD,GAA6B1jD,GACpC,OAAOA,EAAEme,YAGX,SAASwlC,GAA0B3jD,EAAGhF,GACpC,OAAO0kD,EAAIzB,EAAU9H,MAAM,EAAQn2C,GAAK,EAAGA,GAAIhF,EAAG,GAGpD,SAAS4oD,GAAc5jD,EAAGhF,GACxB,OAAO0kD,EAAI1/C,EAAE6d,iBAAmB,IAAK7iB,EAAG,GAG1C,SAAS6oD,GAAiB7jD,EAAGhF,GAE3B,OAAO0kD,GADP1/C,EAAIwjD,GAAQxjD,IACC6d,iBAAmB,IAAK7iB,EAAG,GAG1C,SAAS8oD,GAAkB9jD,EAAGhF,GAC5B,OAAO0kD,EAAI1/C,EAAE6d,iBAAmB,IAAO7iB,EAAG,GAG5C,SAAS+oD,GAAqB/jD,EAAGhF,GAC/B,IAAImlB,EAAMngB,EAAEme,YAEZ,OAAOuhC,GADP1/C,EAAKmgB,GAAO,GAAa,IAARA,EAAai+B,EAAYp+C,GAAKo+C,EAAY/lC,KAAKrY,IACnD6d,iBAAmB,IAAO7iB,EAAG,GAG5C,SAASgpD,KACP,MAAO,QAGT,SAASC,KACP,MAAO,IAGT,SAASC,GAAoBlkD,GAC3B,OAAQA,EAGV,SAASmkD,GAA2BnkD,GAClC,OAAO4V,KAAK0C,OAAOtY,EAAI,KCrqBvB,EDea,SAAsBkR,GACnC,IAAIkzC,EAAkBlzC,EAAOmzC,SACzBC,EAAcpzC,EAAO6H,KACrBwrC,EAAcrzC,EAAOshB,KACrBgyB,EAAiBtzC,EAAOuzC,QACxBC,EAAkBxzC,EAAO2a,KACzB84B,EAAuBzzC,EAAO0zC,UAC9BC,EAAgB3zC,EAAOkK,OACvB0pC,EAAqB5zC,EAAO6zC,YAE5BC,EAAWpF,EAAS4E,GACpBS,EAAepF,EAAa2E,GAC5BU,EAAYtF,EAAS8E,GACrBS,EAAgBtF,EAAa6E,GAC7BU,EAAiBxF,EAAS+E,GAC1BU,EAAqBxF,EAAa8E,GAClCW,EAAU1F,EAASiF,GACnBU,EAAc1F,EAAagF,GAC3BW,EAAe5F,EAASkF,GACxBW,EAAmB5F,EAAaiF,GAEhCryB,EAAU,CACZ,EAkQF,SAA4BzyB,GAC1B,OAAO2kD,EAAqB3kD,EAAEinB,WAlQ9B,EAqQF,SAAuBjnB,GACrB,OAAO0kD,EAAgB1kD,EAAEinB,WArQzB,EAwQF,SAA0BjnB,GACxB,OAAO8kD,EAAmB9kD,EAAEooB,aAxQ5B,EA2QF,SAAqBpoB,GACnB,OAAO6kD,EAAc7kD,EAAEooB,aA3QvB,EAAK,KACL,EAAK84B,GACL,EAAKA,GACL,EAAKO,GACL,EAAKa,GACL,EAAKE,GACL,EAAKrB,GACL,EAAKE,GACL,EAAKC,GACL,EAAKC,GACL,EAAKG,GACL,EAAKC,GACL,EAkQF,SAAsB3hD,GACpB,OAAOwkD,IAAiBxkD,EAAEohD,YAAc,MAlQxC,EAqQF,SAAuBphD,GACrB,OAAO,KAAOA,EAAEooB,WAAa,IArQ7B,EAAK87B,GACL,EAAKC,GACL,EAAKtC,GACL,EAAKE,GACL,EAAKC,GACL,EAAKE,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAKC,GACL,EAAKE,GACL,EAAKE,GACL,IAAKwB,IAGHyB,EAAa,CACf,EAuPF,SAA+B1lD,GAC7B,OAAO2kD,EAAqB3kD,EAAEme,cAvP9B,EA0PF,SAA0Bne,GACxB,OAAO0kD,EAAgB1kD,EAAEme,cA1PzB,EA6PF,SAA6Bne,GAC3B,OAAO8kD,EAAmB9kD,EAAEkoB,gBA7P5B,EAgQF,SAAwBloB,GACtB,OAAO6kD,EAAc7kD,EAAEkoB,gBAhQvB,EAAK,KACL,EAAKw6B,GACL,EAAKA,GACL,EAAKO,GACL,EAAKY,GACL,EAAKE,GACL,EAAKpB,GACL,EAAKE,GACL,EAAKC,GACL,EAAKC,GACL,EAAKG,GACL,EAAKC,GACL,EAuPF,SAAyBnjD,GACvB,OAAOwkD,IAAiBxkD,EAAE4iD,eAAiB,MAvP3C,EA0PF,SAA0B5iD,GACxB,OAAO,KAAOA,EAAEkoB,cAAgB,IA1PhC,EAAKg8B,GACL,EAAKC,GACL,EAAKf,GACL,EAAKE,GACL,EAAKC,GACL,EAAKE,GACL,EAAKC,GACL,EAAKC,GACL,EAAK,KACL,EAAK,KACL,EAAKC,GACL,EAAKE,GACL,EAAKE,GACL,IAAKC,IAGH0B,EAAS,CACX,EA4JF,SAA2B3lD,EAAGgN,EAAQnU,GACpC,IAAI8H,EAAIykD,EAAer3C,KAAKf,EAAOpO,MAAM/F,IACzC,OAAO8H,GAAKX,EAAE0D,EAAI2hD,EAAmB1kD,EAAE,GAAGyL,eAAgBvT,EAAI8H,EAAE,GAAG7H,SAAW,GA7J9E,EAgKF,SAAsBkH,EAAGgN,EAAQnU,GAC/B,IAAI8H,EAAIukD,EAAUn3C,KAAKf,EAAOpO,MAAM/F,IACpC,OAAO8H,GAAKX,EAAE0D,EAAIyhD,EAAcxkD,EAAE,GAAGyL,eAAgBvT,EAAI8H,EAAE,GAAG7H,SAAW,GAjKzE,EAoKF,SAAyBkH,EAAGgN,EAAQnU,GAClC,IAAI8H,EAAI6kD,EAAaz3C,KAAKf,EAAOpO,MAAM/F,IACvC,OAAO8H,GAAKX,EAAED,EAAI0lD,EAAiB9kD,EAAE,GAAGyL,eAAgBvT,EAAI8H,EAAE,GAAG7H,SAAW,GArK5E,EAwKF,SAAoBkH,EAAGgN,EAAQnU,GAC7B,IAAI8H,EAAI2kD,EAAQv3C,KAAKf,EAAOpO,MAAM/F,IAClC,OAAO8H,GAAKX,EAAED,EAAIwlD,EAAY5kD,EAAE,GAAGyL,eAAgBvT,EAAI8H,EAAE,GAAG7H,SAAW,GAzKvE,EA4KF,SAA6BkH,EAAGgN,EAAQnU,GACtC,OAAO+sD,EAAe5lD,EAAGokD,EAAiBp3C,EAAQnU,IA5KlD,EAAK2nD,GACL,EAAKA,GACL,EAAKM,GACL,EAAKT,EACL,EAAKD,EACL,EAAKM,GACL,EAAKA,GACL,EAAKD,GACL,EAAKI,GACL,EAAKN,EACL,EAAKI,GACL,EAuIF,SAAqB3gD,EAAGgN,EAAQnU,GAC9B,IAAI8H,EAAIqkD,EAASj3C,KAAKf,EAAOpO,MAAM/F,IACnC,OAAO8H,GAAKX,EAAEhF,EAAIiqD,EAAatkD,EAAE,GAAGyL,eAAgBvT,EAAI8H,EAAE,GAAG7H,SAAW,GAxIxE,EAAKwnD,EACL,EAAKU,GACL,EAAKC,GACL,EAAKL,GACL,EAAKb,EACL,EAAKC,EACL,EAAKC,EACL,EAAKH,EACL,EAAKK,EACL,EA0JF,SAAyBngD,EAAGgN,EAAQnU,GAClC,OAAO+sD,EAAe5lD,EAAGskD,EAAat3C,EAAQnU,IA1J9C,EA6JF,SAAyBmH,EAAGgN,EAAQnU,GAClC,OAAO+sD,EAAe5lD,EAAGukD,EAAav3C,EAAQnU,IA7J9C,EAAKwnD,EACL,EAAKD,EACL,EAAK9pB,EACL,IAAKyqB,IAWP,SAAS8E,EAAUC,EAAWrzB,GAC5B,OAAO,SAAS1Z,GACd,IAIIpd,EACA+jD,EACAzuC,EANAjE,EAAS,GACTnU,GAAK,EACL+D,EAAI,EACJ+D,EAAImlD,EAAUhtD,OAOlB,IAFMigB,aAAgBpI,OAAOoI,EAAO,IAAIpI,MAAMoI,MAErClgB,EAAI8H,GACqB,KAA5BmlD,EAAUrjD,WAAW5J,KACvBmU,EAAOrW,KAAKmvD,EAAUlnD,MAAMhC,EAAG/D,IACgB,OAA1C6mD,EAAMJ,EAAK3jD,EAAImqD,EAAUjgD,SAAShN,KAAc8C,EAAImqD,EAAUjgD,SAAShN,GACvE6mD,EAAY,MAAN/jD,EAAY,IAAM,KACzBsV,EAASwhB,EAAQ92B,MAAIA,EAAIsV,EAAO8H,EAAM2mC,IAC1C1yC,EAAOrW,KAAKgF,GACZiB,EAAI/D,EAAI,GAKZ,OADAmU,EAAOrW,KAAKmvD,EAAUlnD,MAAMhC,EAAG/D,IACxBmU,EAAO5O,KAAK,KAIvB,SAAS2nD,EAASD,EAAW1iD,GAC3B,OAAO,SAAS4J,GACd,IAEIqR,EAAM8B,EAFNngB,EAAIo/C,EAAQ,UAAMxmD,EAAW,GAGjC,GAFQgtD,EAAe5lD,EAAG8lD,EAAW94C,GAAU,GAAI,IAE1CA,EAAOlU,OAAQ,OAAO,KAG/B,GAAI,MAAOkH,EAAG,OAAO,IAAI2Q,KAAK3Q,EAAEqG,GAChC,GAAI,MAAOrG,EAAG,OAAO,IAAI2Q,KAAW,IAAN3Q,EAAEc,GAAY,MAAOd,EAAIA,EAAE2D,EAAI,IAY7D,GATIP,KAAO,MAAOpD,KAAIA,EAAEoD,EAAI,GAGxB,MAAOpD,IAAGA,EAAEwE,EAAIxE,EAAEwE,EAAI,GAAW,GAANxE,EAAEhF,QAGrBpC,IAARoH,EAAED,IAAiBC,EAAED,EAAI,MAAOC,EAAIA,EAAEyE,EAAI,GAG1C,MAAOzE,EAAG,CACZ,GAAIA,EAAEkgD,EAAI,GAAKlgD,EAAEkgD,EAAI,GAAI,OAAO,KAC1B,MAAOlgD,IAAIA,EAAE0D,EAAI,GACnB,MAAO1D,GAC2BmgB,GAApC9B,EAAO8gC,EAAQC,EAAQp/C,EAAEqF,EAAG,EAAG,KAAgB8Y,YAC/CE,EAAO8B,EAAM,GAAa,IAARA,EAAY89B,EAAU5lC,KAAKgG,GAAQ4/B,EAAU5/B,GAC/DA,EAAO,EAAOqO,OAAOrO,EAAkB,GAAXre,EAAEkgD,EAAI,IAClClgD,EAAEqF,EAAIgZ,EAAKR,iBACX7d,EAAED,EAAIse,EAAK6J,cACXloB,EAAEA,EAAIqe,EAAK8J,cAAgBnoB,EAAE0D,EAAI,GAAK,IAEAyc,GAAtC9B,EAAO6gC,EAAUE,EAAQp/C,EAAEqF,EAAG,EAAG,KAAgB4hB,SACjD5I,EAAO8B,EAAM,GAAa,IAARA,EAAY,EAAW9H,KAAKgG,GAAQ,EAAWA,GACjEA,EAAO,EAAQqO,OAAOrO,EAAkB,GAAXre,EAAEkgD,EAAI,IACnClgD,EAAEqF,EAAIgZ,EAAKZ,cACXzd,EAAED,EAAIse,EAAK+J,WACXpoB,EAAEA,EAAIqe,EAAKgK,WAAaroB,EAAE0D,EAAI,GAAK,QAE5B,MAAO1D,GAAK,MAAOA,KACtB,MAAOA,IAAIA,EAAE0D,EAAI,MAAO1D,EAAIA,EAAEwF,EAAI,EAAI,MAAOxF,EAAI,EAAI,GAC3DmgB,EAAM,MAAOngB,EAAIm/C,EAAQC,EAAQp/C,EAAEqF,EAAG,EAAG,IAAI8Y,YAAc+gC,EAAUE,EAAQp/C,EAAEqF,EAAG,EAAG,IAAI4hB,SACzFjnB,EAAED,EAAI,EACNC,EAAEA,EAAI,MAAOA,GAAKA,EAAE0D,EAAI,GAAK,EAAU,EAAN1D,EAAE+C,GAASod,EAAM,GAAK,EAAIngB,EAAE0D,EAAU,EAAN1D,EAAE+E,GAASob,EAAM,GAAK,GAKzF,MAAI,MAAOngB,GACTA,EAAEwE,GAAKxE,EAAEoD,EAAI,IAAM,EACnBpD,EAAEmF,GAAKnF,EAAEoD,EAAI,IACN+7C,EAAQn/C,IAIVk/C,EAAUl/C,IAIrB,SAAS4lD,EAAe5lD,EAAG8lD,EAAW94C,EAAQpQ,GAO5C,IANA,IAGIjB,EACAH,EAJA3C,EAAI,EACJ8H,EAAImlD,EAAUhtD,OACdiH,EAAIiN,EAAOlU,OAIRD,EAAI8H,GAAG,CACZ,GAAI/D,GAAKmD,EAAG,OAAQ,EAEpB,GAAU,MADVpE,EAAImqD,EAAUrjD,WAAW5J,OAIvB,GAFA8C,EAAImqD,EAAUjgD,OAAOhN,OACrB2C,EAAQmqD,EAAOhqD,KAAK2jD,EAAOwG,EAAUjgD,OAAOhN,KAAO8C,MACnCiB,EAAIpB,EAAMwE,EAAGgN,EAAQpQ,IAAM,EAAI,OAAQ,OAClD,GAAIjB,GAAKqR,EAAOvK,WAAW7F,KAChC,OAAQ,EAIZ,OAAOA,EAwFT,OAzMA61B,EAAQ9tB,EAAIkhD,EAAUvB,EAAa7xB,GACnCA,EAAQzvB,EAAI6iD,EAAUtB,EAAa9xB,GACnCA,EAAQ92B,EAAIkqD,EAAUzB,EAAiB3xB,GACvCizB,EAAW/gD,EAAIkhD,EAAUvB,EAAaoB,GACtCA,EAAW1iD,EAAI6iD,EAAUtB,EAAamB,GACtCA,EAAW/pD,EAAIkqD,EAAUzB,EAAiBsB,GAoMnC,CACLz0C,OAAQ,SAAS60C,GACf,IAAIngD,EAAIkgD,EAAUC,GAAa,GAAIrzB,GAEnC,OADA9sB,EAAEoD,SAAW,WAAa,OAAO+8C,GAC1BngD,GAETnK,MAAO,SAASsqD,GACd,IAAI9qD,EAAI+qD,EAASD,GAAa,IAAI,GAElC,OADA9qD,EAAE+N,SAAW,WAAa,OAAO+8C,GAC1B9qD,GAETgrD,UAAW,SAASF,GAClB,IAAIngD,EAAIkgD,EAAUC,GAAa,GAAIJ,GAEnC,OADA//C,EAAEoD,SAAW,WAAa,OAAO+8C,GAC1BngD,GAETsgD,SAAU,SAASH,GACjB,IAAI9qD,EAAI+qD,EAASD,GAAa,IAAI,GAElC,OADA9qD,EAAE+N,SAAW,WAAa,OAAO+8C,GAC1B9qD,IC1WFkrD,CAZG,CACZ7B,SAAU,SACVtrC,KAAM,aACNyZ,KAAM,eACNiyB,QAAS,CAAC,KAAM,MAChB54B,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzE+4B,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDxpC,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvH2pC,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,SAK3F5+B,EAAa,EAAOlV,OACpBouC,EAAY,EAAO7jD,MACP,EAAOwqD,UACR,EAAOC,U,qRChBPE,EAAcC,wBAAc,CACvCC,WAAYrjB,IAAkBP,MAC9B6jB,YAAatjB,IAAkBN,OAC/BD,MAAOO,IAAkBP,MACzBC,OAAQM,IAAkBN,OAC1BC,OAAQK,IAAkBL,OAC1BC,QAAS,CAAEnB,IAAK,EAAGoB,MAAO,GAAIC,OAAQ,EAAGnB,KAAM,IAC/CrkC,KAAM0lC,IAAkB1lC,KACxBipD,cAAe,gB,4FARJJ,E,mQCRb,4RAEO,SAASK,KAET,IAAIC,EAAS,GACTC,EAAW,EAAID,EAEtBE,EAAM,sBACNC,EAAM,gDACNC,EAAM,iDACNC,EAAQ,qBACRC,EAAe,IAAIxsC,OAAO,UAAY,CAACosC,EAAKA,EAAKA,GAAO,QACxDK,EAAe,IAAIzsC,OAAO,UAAY,CAACssC,EAAKA,EAAKA,GAAO,QACxDI,EAAgB,IAAI1sC,OAAO,WAAa,CAACosC,EAAKA,EAAKA,EAAKC,GAAO,QAC/DM,EAAgB,IAAI3sC,OAAO,WAAa,CAACssC,EAAKA,EAAKA,EAAKD,GAAO,QAC/DO,EAAe,IAAI5sC,OAAO,UAAY,CAACqsC,EAAKC,EAAKA,GAAO,QACxDO,EAAgB,IAAI7sC,OAAO,WAAa,CAACqsC,EAAKC,EAAKA,EAAKD,GAAO,QAE/DS,EAAQ,CACVC,UAAW,SACXC,aAAc,SACdC,KAAM,MACNC,WAAY,QACZC,MAAO,SACPC,MAAO,SACPC,OAAQ,SACRC,MAAO,EACPC,eAAgB,SAChBC,KAAM,IACNC,WAAY,QACZC,MAAO,SACPC,UAAW,SACXC,UAAW,QACXC,WAAY,QACZC,UAAW,SACXC,MAAO,SACPC,eAAgB,QAChBC,SAAU,SACVC,QAAS,SACTC,KAAM,MACNC,SAAU,IACVC,SAAU,MACVC,cAAe,SACfC,SAAU,SACVC,UAAW,MACXC,SAAU,SACVC,UAAW,SACXC,YAAa,QACbC,eAAgB,QAChBC,WAAY,SACZC,WAAY,SACZC,QAAS,QACTC,WAAY,SACZC,aAAc,QACdC,cAAe,QACfC,cAAe,QACfC,cAAe,QACfC,cAAe,MACfC,WAAY,QACZC,SAAU,SACVC,YAAa,MACbC,QAAS,QACTC,QAAS,QACTC,WAAY,QACZC,UAAW,SACXC,YAAa,SACbC,YAAa,QACbC,QAAS,SACTC,UAAW,SACXC,WAAY,SACZC,KAAM,SACNC,UAAW,SACXC,KAAM,QACNC,MAAO,MACPC,YAAa,SACbC,KAAM,QACNC,SAAU,SACVC,QAAS,SACTC,UAAW,SACXC,OAAQ,QACRC,MAAO,SACPC,MAAO,SACPC,SAAU,SACVC,cAAe,SACfC,UAAW,QACXC,aAAc,SACdC,UAAW,SACXC,WAAY,SACZC,UAAW,SACXC,qBAAsB,SACtBC,UAAW,SACXC,WAAY,QACZC,UAAW,SACXC,UAAW,SACXC,YAAa,SACbC,cAAe,QACfC,aAAc,QACdC,eAAgB,QAChBC,eAAgB,QAChBC,eAAgB,SAChBC,YAAa,SACbC,KAAM,MACNC,UAAW,QACXC,MAAO,SACPC,QAAS,SACTC,OAAQ,QACRC,iBAAkB,QAClBC,WAAY,IACZC,aAAc,SACdC,aAAc,QACdC,eAAgB,QAChBC,gBAAiB,QACjBC,kBAAmB,MACnBC,gBAAiB,QACjBC,gBAAiB,SACjBC,aAAc,QACdC,UAAW,SACXC,UAAW,SACXC,SAAU,SACVC,YAAa,SACbC,KAAM,IACNC,QAAS,SACTC,MAAO,QACPC,UAAW,QACXC,OAAQ,SACRC,UAAW,SACXC,OAAQ,SACRC,cAAe,SACfC,UAAW,SACXC,cAAe,SACfC,cAAe,SACfC,WAAY,SACZC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,WAAY,SACZC,OAAQ,QACRC,cAAe,QACfC,IAAK,SACLC,UAAW,SACXC,UAAW,QACXC,YAAa,QACbC,OAAQ,SACRC,WAAY,SACZC,SAAU,QACVC,SAAU,SACVC,OAAQ,SACRC,OAAQ,SACRC,QAAS,QACTC,UAAW,QACXC,UAAW,QACXC,UAAW,QACXC,KAAM,SACNC,YAAa,MACbC,UAAW,QACXC,IAAK,SACLC,KAAM,MACNC,QAAS,SACTC,OAAQ,SACRC,UAAW,QACXC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,WAAY,SACZC,OAAQ,SACRC,YAAa,UAiBf,SAASC,IACP,OAAOp3D,KAAKojD,MAAMiU,YAOpB,SAASC,IACP,OAAOt3D,KAAKojD,MAAMmU,YAGL,SAASpU,EAAMxrC,GAC5B,IAAIlR,EAAGhG,EAEP,OADAkX,GAAUA,EAAS,IAAIhO,OAAOmJ,eACtBrM,EAAI+mD,EAAM/4C,KAAKkD,KAAYlX,EAAIgG,EAAE,GAAGjH,OAAQiH,EAAIsd,SAAStd,EAAE,GAAI,IAAW,IAANhG,EAAU+2D,EAAK/wD,GAC/E,IAANhG,EAAU,IAAIg3D,EAAKhxD,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,GAAiB,GAAJA,IAAY,EAAU,GAAJA,EAAU,GACzG,IAANhG,EAAUi3D,EAAKjxD,GAAK,GAAK,IAAMA,GAAK,GAAK,IAAMA,GAAK,EAAI,KAAW,IAAJA,GAAY,KACrE,IAANhG,EAAUi3D,EAAMjxD,GAAK,GAAK,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAQA,GAAK,EAAI,IAAQA,GAAK,EAAI,GAAY,IAAJA,IAAkB,GAAJA,IAAY,EAAU,GAAJA,GAAY,KAClJ,OACCA,EAAIgnD,EAAah5C,KAAKkD,IAAW,IAAI8/C,EAAIhxD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAI,IAC3DA,EAAIinD,EAAaj5C,KAAKkD,IAAW,IAAI8/C,EAAW,IAAPhxD,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAK,IAC/FA,EAAIknD,EAAcl5C,KAAKkD,IAAW+/C,EAAKjxD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,KAC3DA,EAAImnD,EAAcn5C,KAAKkD,IAAW+/C,EAAY,IAAPjxD,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAY,IAAPA,EAAE,GAAW,IAAKA,EAAE,KAC/FA,EAAIonD,EAAap5C,KAAKkD,IAAWggD,EAAKlxD,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAK,IACpEA,EAAIqnD,EAAcr5C,KAAKkD,IAAWggD,EAAKlxD,EAAE,GAAIA,EAAE,GAAK,IAAKA,EAAE,GAAK,IAAKA,EAAE,IACxEsnD,EAAMjyD,eAAe6b,GAAU6/C,EAAKzJ,EAAMp2C,IAC/B,gBAAXA,EAA2B,IAAI8/C,EAAI19C,IAAKA,IAAKA,IAAK,GAClD,KAGR,SAASy9C,EAAKnwD,GACZ,OAAO,IAAIowD,EAAIpwD,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,EAAU,GAG1D,SAASqwD,EAAK7wD,EAAGuE,EAAG9G,EAAGD,GAErB,OADIA,GAAK,IAAGwC,EAAIuE,EAAI9G,EAAIyV,KACjB,IAAI09C,EAAI5wD,EAAGuE,EAAG9G,EAAGD,GAGnB,SAASuzD,EAAWhxD,GAEzB,OADMA,aAAasmD,IAAQtmD,EAAIu8C,EAAMv8C,IAChCA,EAEE,IAAI6wD,GADX7wD,EAAIA,EAAEw8C,OACWv8C,EAAGD,EAAEwE,EAAGxE,EAAEtC,EAAGsC,EAAE2K,SAFjB,IAAIkmD,EAKd,SAASrU,EAAIv8C,EAAGuE,EAAG9G,EAAGiN,GAC3B,OAA4B,IAArBuE,UAAUtW,OAAeo4D,EAAW/wD,GAAK,IAAI4wD,EAAI5wD,EAAGuE,EAAG9G,EAAc,MAAXiN,EAAkB,EAAIA,GAGlF,SAASkmD,EAAI5wD,EAAGuE,EAAG9G,EAAGiN,GAC3BvR,KAAK6G,GAAKA,EACV7G,KAAKoL,GAAKA,EACVpL,KAAKsE,GAAKA,EACVtE,KAAKuR,SAAWA,EA2BlB,SAASsmD,IACP,MAAO,IAAMC,EAAI93D,KAAK6G,GAAKixD,EAAI93D,KAAKoL,GAAK0sD,EAAI93D,KAAKsE,GAGpD,SAASyzD,IACP,IAAI1zD,EAAIrE,KAAKuR,QACb,OAAc,KADQlN,EAAIkV,MAAMlV,GAAK,EAAIiY,KAAKI,IAAI,EAAGJ,KAAK2G,IAAI,EAAG5e,KAC/C,OAAS,SACrBiY,KAAKI,IAAI,EAAGJ,KAAK2G,IAAI,IAAK3G,KAAK6W,MAAMnzB,KAAK6G,IAAM,IAAM,KACtDyV,KAAKI,IAAI,EAAGJ,KAAK2G,IAAI,IAAK3G,KAAK6W,MAAMnzB,KAAKoL,IAAM,IAAM,KACtDkR,KAAKI,IAAI,EAAGJ,KAAK2G,IAAI,IAAK3G,KAAK6W,MAAMnzB,KAAKsE,IAAM,KACzC,IAAND,EAAU,IAAM,KAAOA,EAAI,KAGpC,SAASyzD,EAAI/5D,GAEX,QADAA,EAAQue,KAAKI,IAAI,EAAGJ,KAAK2G,IAAI,IAAK3G,KAAK6W,MAAMp1B,IAAU,KACvC,GAAK,IAAM,IAAMA,EAAM0R,SAAS,IAGlD,SAASkoD,EAAKr1D,EAAGkF,EAAG/G,EAAG4D,GAIrB,OAHIA,GAAK,EAAG/B,EAAIkF,EAAI/G,EAAIsZ,IACftZ,GAAK,GAAKA,GAAK,EAAG6B,EAAIkF,EAAIuS,IAC1BvS,GAAK,IAAGlF,EAAIyX,KACd,IAAIi+C,EAAI11D,EAAGkF,EAAG/G,EAAG4D,GAGnB,SAAS4zD,EAAWrxD,GACzB,GAAIA,aAAaoxD,EAAK,OAAO,IAAIA,EAAIpxD,EAAEtE,EAAGsE,EAAEY,EAAGZ,EAAEnG,EAAGmG,EAAE2K,SAEtD,GADM3K,aAAasmD,IAAQtmD,EAAIu8C,EAAMv8C,KAChCA,EAAG,OAAO,IAAIoxD,EACnB,GAAIpxD,aAAaoxD,EAAK,OAAOpxD,EAE7B,IAAIC,GADJD,EAAIA,EAAEw8C,OACIv8C,EAAI,IACVuE,EAAIxE,EAAEwE,EAAI,IACV9G,EAAIsC,EAAEtC,EAAI,IACV2e,EAAM3G,KAAK2G,IAAIpc,EAAGuE,EAAG9G,GACrBoY,EAAMJ,KAAKI,IAAI7V,EAAGuE,EAAG9G,GACrBhC,EAAIyX,IACJvS,EAAIkV,EAAMuG,EACVxiB,GAAKic,EAAMuG,GAAO,EAUtB,OATIzb,GACalF,EAAXuE,IAAM6V,GAAUtR,EAAI9G,GAAKkD,EAAc,GAAT4D,EAAI9G,GAC7B8G,IAAMsR,GAAUpY,EAAIuC,GAAKW,EAAI,GAC5BX,EAAIuE,GAAK5D,EAAI,EACvBA,GAAK/G,EAAI,GAAMic,EAAMuG,EAAM,EAAIvG,EAAMuG,EACrC3gB,GAAK,IAELkF,EAAI/G,EAAI,GAAKA,EAAI,EAAI,EAAI6B,EAEpB,IAAI01D,EAAI11D,EAAGkF,EAAG/G,EAAGmG,EAAE2K,SAGrB,SAAS2mD,EAAI51D,EAAGkF,EAAG/G,EAAG8Q,GAC3B,OAA4B,IAArBuE,UAAUtW,OAAey4D,EAAW31D,GAAK,IAAI01D,EAAI11D,EAAGkF,EAAG/G,EAAc,MAAX8Q,EAAkB,EAAIA,GAGzF,SAASymD,EAAI11D,EAAGkF,EAAG/G,EAAG8Q,GACpBvR,KAAKsC,GAAKA,EACVtC,KAAKwH,GAAKA,EACVxH,KAAKS,GAAKA,EACVT,KAAKuR,SAAWA,EAyClB,SAAS4mD,EAAQ71D,EAAG81D,EAAIC,GACtB,OAGY,KAHJ/1D,EAAI,GAAK81D,GAAMC,EAAKD,GAAM91D,EAAI,GAChCA,EAAI,IAAM+1D,EACV/1D,EAAI,IAAM81D,GAAMC,EAAKD,IAAO,IAAM91D,GAAK,GACvC81D,GAxMR,YAAOlL,EAAO/J,EAAO,CACnBlf,KAAM,SAASq0B,GACb,OAAO18D,OAAOwmC,OAAO,IAAIpiC,KAAKinC,YAAajnC,KAAMs4D,IAEnDC,YAAa,WACX,OAAOv4D,KAAKojD,MAAMmV,eAEpBT,IAAKV,EACLC,UAAWD,EACXoB,UASF,WACE,OAAOP,EAAWj4D,MAAMw4D,aATxBjB,UAAWD,EACX7nD,SAAU6nD,IA6DZ,YAAOG,EAAKrU,EAAK,YAAO8J,EAAO,CAC7BE,SAAU,SAASthD,GAEjB,OADAA,EAAS,MAALA,EAAYshD,EAAW9wC,KAAKG,IAAI2wC,EAAUthD,GACvC,IAAI2rD,EAAIz3D,KAAK6G,EAAIiF,EAAG9L,KAAKoL,EAAIU,EAAG9L,KAAKsE,EAAIwH,EAAG9L,KAAKuR,UAE1D47C,OAAQ,SAASrhD,GAEf,OADAA,EAAS,MAALA,EAAYqhD,EAAS7wC,KAAKG,IAAI0wC,EAAQrhD,GACnC,IAAI2rD,EAAIz3D,KAAK6G,EAAIiF,EAAG9L,KAAKoL,EAAIU,EAAG9L,KAAKsE,EAAIwH,EAAG9L,KAAKuR,UAE1D6xC,IAAK,WACH,OAAOpjD,MAETu4D,YAAa,WACX,OAAS,IAAOv4D,KAAK6G,GAAK7G,KAAK6G,EAAI,QAC1B,IAAO7G,KAAKoL,GAAKpL,KAAKoL,EAAI,QAC1B,IAAOpL,KAAKsE,GAAKtE,KAAKsE,EAAI,OAC3B,GAAKtE,KAAKuR,SAAWvR,KAAKuR,SAAW,GAE/CumD,IAAKD,EACLR,UAAWQ,EACXN,UAAWQ,EACXtoD,SAAUsoD,KAiEZ,YAAOC,EAAKE,EAAK,YAAOhL,EAAO,CAC7BE,SAAU,SAASthD,GAEjB,OADAA,EAAS,MAALA,EAAYshD,EAAW9wC,KAAKG,IAAI2wC,EAAUthD,GACvC,IAAIksD,EAAIh4D,KAAKsC,EAAGtC,KAAKwH,EAAGxH,KAAKS,EAAIqL,EAAG9L,KAAKuR,UAElD47C,OAAQ,SAASrhD,GAEf,OADAA,EAAS,MAALA,EAAYqhD,EAAS7wC,KAAKG,IAAI0wC,EAAQrhD,GACnC,IAAIksD,EAAIh4D,KAAKsC,EAAGtC,KAAKwH,EAAGxH,KAAKS,EAAIqL,EAAG9L,KAAKuR,UAElD6xC,IAAK,WACH,IAAI9gD,EAAItC,KAAKsC,EAAI,IAAqB,KAAdtC,KAAKsC,EAAI,GAC7BkF,EAAI+R,MAAMjX,IAAMiX,MAAMvZ,KAAKwH,GAAK,EAAIxH,KAAKwH,EACzC/G,EAAIT,KAAKS,EACT43D,EAAK53D,GAAKA,EAAI,GAAMA,EAAI,EAAIA,GAAK+G,EACjC4wD,EAAK,EAAI33D,EAAI43D,EACjB,OAAO,IAAIZ,EACTU,EAAQ71D,GAAK,IAAMA,EAAI,IAAMA,EAAI,IAAK81D,EAAIC,GAC1CF,EAAQ71D,EAAG81D,EAAIC,GACfF,EAAQ71D,EAAI,IAAMA,EAAI,IAAMA,EAAI,IAAK81D,EAAIC,GACzCr4D,KAAKuR,UAGTgnD,YAAa,WACX,OAAQ,GAAKv4D,KAAKwH,GAAKxH,KAAKwH,GAAK,GAAK+R,MAAMvZ,KAAKwH,KACzC,GAAKxH,KAAKS,GAAKT,KAAKS,GAAK,GACzB,GAAKT,KAAKuR,SAAWvR,KAAKuR,SAAW,GAE/CinD,UAAW,WACT,IAAIn0D,EAAIrE,KAAKuR,QACb,OAAc,KADQlN,EAAIkV,MAAMlV,GAAK,EAAIiY,KAAKI,IAAI,EAAGJ,KAAK2G,IAAI,EAAG5e,KAC/C,OAAS,UACpBrE,KAAKsC,GAAK,GAAK,KACA,KAAftC,KAAKwH,GAAK,GAAW,MACN,KAAfxH,KAAKS,GAAK,GAAW,KACf,IAAN4D,EAAU,IAAM,KAAOA,EAAI,U,6BCtWtC,IAAIo0D,EAAQ,EAAQ,KAEhBC,EAAU,EAAQ,KAElBx2D,EAAQ,EAAQ,KAEhBs1C,EAAY,EAAQ,GAEpBmhB,EAAkB,EAAQ,KAE1BC,EAAY,EAAQ,KAEpBC,EAAe,EAAQ,KAEvBC,EAAa,EAAQ,KAErBC,EAAgB,EAAQ,KAExBC,EAAiB,EAAQ,KAEzBC,EAAiB,EAAQ,KAEzBC,EAAmB,EAAQ,KAE3BC,EAAU,EAAQ,KAElBC,EAAWx9D,OAAO4J,KAAK0zD,GAEvBG,EAAgB,SAAuBrkD,GAEzC,IAAIpS,EAAMoS,EAAMoqB,QAAUpqB,EAAM1X,UAAY,GAE5C,GAAI0X,EAAMskD,cAAgBtkD,EAAMukD,gBAC9B,MAAM,IAAIp4D,MAAM,sEAGlB,IAAIq4D,EAAYf,EAAMS,EAAkBlkD,EAAMwkD,WAC1CC,EAAYf,IAAU1rD,IAAI9K,GAAO8K,IAAIgI,EAAM0kD,SAAW,IAEtDC,EAAOF,EAAUG,QAAQH,EAAUv3D,MAAMU,IACzCi3D,EAAcpB,EAAMzjD,EAAO,CAC7BwkD,UAAWA,EACXM,YAAad,EAAeW,KAK9B,OAGF,SAAuC3kD,GACrC,IAAI+kD,EAAa,CAAChB,EAAeJ,KAC7BY,EAAkBvkD,EAAMukD,gBAExBvkD,EAAMskD,eACRC,EAAkBH,EAAStjC,QAAO,SAAU9xB,GAC1C,MAAgB,SAATA,IAAyD,IAAtCgR,EAAMskD,aAAal8D,QAAQ4G,OAIzD,IAAIg2D,EAAgBhlD,EAAMilD,iBAAmB,SAAW,SAEpDV,GAAmBA,EAAgB/5D,OAAS,GAC9Cu6D,EAAW18D,KAAKw7D,EAAaqB,OAAOX,EAAiBS,IAGnDhlD,EAAMmlD,WACRJ,EAAW18D,KAAKw7D,EAAauB,WAAWplD,EAAMmlD,UAAWH,IAI3D,IAAIK,GAAcrlD,EAAMslD,qBAA2C,IAArBtlD,EAAMulD,cAA0BvlD,EAAMwlD,SAChFC,GAAiBzlD,EAAM0lD,YAAc,IAAI/jD,MAAK,SAAU2xB,GAC1D,OAAOA,EAAU6B,WAAagvB,EAAQwB,cAGpCN,IAAeI,GACjBV,EAAW18D,KAAKu7D,GAGd5jD,EAAM0lD,aACRX,EAAaA,EAAW51D,OAAO6Q,EAAM0lD,aAKvC,OADAX,EAAW18D,KAAKy7D,GACTiB,EA1CPa,CAA8B5lD,GAAOvP,SAAQ,SAAU6iC,GACrDqxB,EAAOrxB,EAAUqxB,EAAME,MAElBF,GA0CTN,EAAcwB,aAAe,CAC3BC,iBAAkB7B,GAEpBI,EAAczwB,UAAY,CACxBz5B,UAAWqoC,EAAU9jC,OACrB0rB,OAAQoY,EAAU9jC,OAClBpW,SAAUk6C,EAAU9jC,OACpBqnD,UAAWvjB,EAAUM,KACrBkjB,aAAcxjB,EAAUM,KACxByiB,WAAY/iB,EAAUM,KACtBwiB,mBAAoB9iB,EAAUM,KAC9B0iB,SAAUhjB,EAAUM,KACpBqiB,UAAW3iB,EAAU1iC,KACrBwkD,aAAc9hB,EAAUS,QAAQT,EAAUI,MAAMwhB,IAChDG,gBAAiB/hB,EAAUS,QAAQT,EAAUI,MAAMwhB,IACnD0B,iBAAkBtjB,EAAU3O,UAAU,CAAC2O,EAAU1iC,KAAM0iC,EAAUM,OACjEmjB,WAAYzjB,EAAU3O,UAAU,CAAC2O,EAAU1iC,KAAM0iC,EAAU9jC,SAC3DwnD,kBAAmB1jB,EAAU1iC,KAC7B4lD,WAAYljB,EAAUS,QAAQT,EAAU1iC,MACxCmlD,iBAAkBziB,EAAUM,KAC5B0hB,UAAWhiB,EAAUlwC,OACrBoyD,QAASliB,EAAUj6B,OAErB87C,EAAc8B,MAAQ/B,EACtBC,EAAcG,UAAYN,EAC1BG,EAAcJ,eAAiBA,EAC/B11D,EAAOiD,QAAU6yD,G,6BChHV,SAAS7hD,EAAOtT,EAAQk3D,GAC7B,IAAIv/D,EAAYD,OAAOsL,OAAOhD,EAAOrI,WACrC,IAAK,IAAIsL,KAAOi0D,EAAYv/D,EAAUsL,GAAOi0D,EAAWj0D,GACxD,OAAOtL,EART,kCAAe,oBACborC,EAAYprC,UAAY8nC,EAAQ9nC,UAAYA,EAC5CA,EAAUorC,YAAcA,I,wLCItBo0B,E,iFAQJ,SAASC,IAER,OADAD,EAASE,cASV,SAASC,IAKR,OAJKH,GACJC,IAGMD,EAWR,SAASI,EAAMzgD,GAA6C,IAArC3b,EAAqC,uDAA1B,aAC3Bq8D,EAAiBC,cAGjB3+D,EAAU,CACfqC,WACAkO,QAAS,CACRrM,GAAI8Z,EAAO9Z,IAAMq6D,cACjBK,QAASJ,KAEVK,KAAM,CACLC,WAAYt2B,YAAmB,qBAC/Bu2B,aAAcv2B,YAAmB,wBAElCw2B,OAAQ,CACPC,cAAeP,EAAex6D,GAC9Bg7D,qBAAsBR,EAAeS,MACrCC,SAAUC,gBAKNC,EAAiBz+D,YAAI,WAAa,GAmBxC,OAlBIy+D,EAAe/uD,SAClB6I,YAAMpZ,EAAQuQ,QAAS+uD,EAAe/uD,SAEnC+uD,EAAeT,MAClBzlD,YAAMpZ,EAAQ6+D,KAAMS,EAAeT,MAEhCS,EAAeN,QAClB5lD,YAAMpZ,EAAQg/D,OAAQM,EAAeN,QAItC5lD,YAAMpZ,EAASge,GAEf6oB,YAAI,aAAc7mC,GAGlBu/D,YAAUv/D,GAEHA,E,UAGO,CACds+D,YACAE,YACAC,SAHc,O,6FA9EXJ,E,8GAQKC,E,iHAUAE,E,iHAgBAC,E,6iBCtCH9Z,EAAW6a,IAAM7a,SACjBF,EAAW+a,IAAM/a,SAEjBgb,EAAY,GACZC,EAAY,CACjBC,OAAQ,IACRzwB,YAAa,IACb0wB,WAAY,IACZC,OAAQ,KAiBT,SAASC,EAAoB93B,EAAW4Q,GACX,iBAAjB9/B,UAAU,IACpBgnD,EAAoB,SAAUhnD,UAAU,IACxCgnD,EAAoB,SAAUhnD,UAAU,IACxCgnD,EAAoB,cAAehnD,UAAU,IAC7CgnD,EAAoB,aAAchnD,UAAU,KAClC8/B,IACV8mB,EAAU13B,GAAa4Q,GAOzB,SAASmnB,IACR,IAAIN,EAAUE,OAAd,CAGA,IACMK,EAAUvb,GAAS,SAASwb,GACjCT,IAAM13B,UAAU,SAAU,CACzBo4B,SAAUV,IAAM5b,UAChBuc,cAAeF,MAEdP,EAAUC,QAGbrhE,OAAOspC,iBATW,SASiBo4B,GACnCP,EAAUE,OAAS,CAClB33B,UAXiB,SAYjBg4B,QAASA,IAOX,SAASI,IAER,IAAIX,EAAUvwB,YAAd,CAIA,IACM8wB,EAAUvb,GAAS,SAASwb,GACjCT,IAAM13B,UAAU,cAAe,CAC9Bo4B,SAAUV,IAAM5b,UAChB1U,YAAaswB,IAAMpb,iBACnB+b,cAAeF,MAEdP,EAAUxwB,aAEb5wC,OAAOspC,iBATW,oBASiBo4B,GACnCP,EAAUvwB,YAAc,CACvBlH,UAXiB,oBAYjBg4B,QAASA,IAOX,SAASK,IAER,IAAIZ,EAAUG,WAAd,CAIA,IACMI,EAAUvb,GAAS,SAASwb,GACjCT,IAAM13B,UAAU,aAAc,CAC7B0c,OAAQgb,IAAMjb,gBACd4b,cAAeF,MAEdP,EAAUE,YAEbthE,OAAOspC,iBARW,mBAQiBo4B,GAEnCP,EAAUG,WAAa,CACtB53B,UAXiB,mBAYjBg4B,QAASA,IAOX,SAASM,IAER,IAAIb,EAAUI,OAAd,CAIA,IACMG,EAAUrb,GAAS,SAASsb,GACjC,IAAMM,EAAYf,IAAM3b,oBACxB2b,IAAM13B,UAAU,SAAU,CACzBo4B,SAAUV,IAAM5b,UAChBE,aAAcyc,EAAUn0B,OACxBo0B,WAAYD,EAAUl1B,KACtBo1B,UAAWF,EAAUp1B,IACrB4Y,YAAawc,EAAUp0B,MACvBg0B,cAAeF,MAEdP,EAAUG,QAEbvhE,OAAOspC,iBAbW,SAaiBo4B,GACnCP,EAAUI,OAAS,CAClB73B,UAfiB,SAgBjBg4B,QAASA,IAiBX,SAASU,EAAS14B,GACC,WAAdA,GAAwC,QAAdA,GAC7B+3B,IAGiB,WAAd/3B,GAAwC,QAAdA,GAC7Bs4B,IAGiB,gBAAdt4B,GAA6C,QAAdA,GAClCo4B,IAGiB,eAAdp4B,GAA4C,QAAdA,GACjCq4B,IAcF,SAASM,EAAgB34B,GACN,QAAdA,EACHppC,OAAO4J,KAAKi3D,GAAWh3D,QAAQk4D,GACrBlB,EAAUz3B,KACpB1pC,OAAOsiE,oBAAoBnB,EAAUz3B,GAAWA,UAAWy3B,EAAUz3B,GAAWg4B,gBACzEP,EAAUz3B,I,UAIJ,CACd+O,MAAO,WACNyoB,IAAMzoB,SAEP2pB,WACAC,kBACAb,sBACA1b,eAAgBob,IAAMpb,eACtBR,QAAS4b,IAAM5b,QACfC,kBAAmB2b,IAAM3b,kBACzBU,cAAeib,IAAMjb,eAVP,O,6FA5LTI,E,iGACAF,E,iGAEAgb,E,kGACAC,E,kGAqBGI,E,4GAcAC,E,uGAuBAK,E,4GAyBAC,E,2GAyBAC,E,uGAuCAI,E,iGA4BAC,E,8UC8DF,SAASE,EAAYhnD,GACxB,GAAKA,EAGL,OAAMA,aAAiBxI,MAGhBwI,EACFjT,KAAI,SAAUW,GAAQ,MAAiB,KAATA,OAAcjF,EAAYiF,KACxDuxB,QAAO,SAAUvxB,GAAQ,YAAgBjF,IAATiF,KAJ1B,CAACsS,G,wICpPT,IAAIinD,EAAc,CACrB55B,OD6JG,SAAsB30B,GACzB,GAAW,MAAPA,EAGJ,OAAOmmB,OAAOnmB,IChKd80B,OD0KG,SAAsBxtB,GACzB,GAAa,MAATA,EAAJ,CAGA,IAAItH,EAAMsH,aAAiBxI,MAAQwI,EAAM,GAAKA,EAC9C,GAAW,MAAPtH,EAGJ,OAAOmmB,OAAOnmB,MC/JPwuD,EAAa,CACpB75B,OD4MG,SAAqB3mB,GACxB,GAAKA,EAGL,OAAOA,GC/MP8mB,OAAQ,GAiCD25B,EAAe,CACtB95B,ODgCG,SAAuB4T,GAC1B,QAAax4C,IAATw4C,EAGJ,OAAOA,EAAO,IAAM,KCnCpBzT,OD8CG,SAAuBxtB,GAC1B,GAAa,MAATA,EAAJ,CAGA,IAAIonD,EAAUpnD,aAAiBxI,MAAQwI,EAAM,GAAKA,EAClD,MAAgB,MAAZonD,GAGiB,MAAZA,QAAJ,K,QEpHLC,EAAsC,WAStC,OARAA,EAAWtiE,OAAOwmC,QAAU,SAAS3jC,GACjC,IAAK,IAAI+I,EAAGjI,EAAI,EAAG8H,EAAIyO,UAAUtW,OAAQD,EAAI8H,EAAG9H,IAE5C,IAAK,IAAImC,KADT8F,EAAIsO,UAAUvW,GACO3D,OAAOC,UAAUC,eAAeC,KAAKyL,EAAG9F,KACzDjD,EAAEiD,GAAK8F,EAAE9F,IAEjB,OAAOjD,IAEK6B,MAAMN,KAAM8V,YAOhC,SAASqoD,EAAYC,GAUjB,OAToBxiE,OAAO4J,KAAK44D,GAAOC,QAAO,SAAUC,EAAkBC,GAEtE,IAAIC,EAAeJ,EAAMG,GAKzB,OAHoB,MAAhBC,GAAyC,KAAjBA,IACxBF,EAAiBC,GAAcC,GAE5BF,IACR,IAMA,SAASG,EAAeC,EAAcC,GACzC,IAAIC,EAAsB,oBAAUT,EAAYO,IAEhD,OADkBR,EAAS,GAAIS,EAAU,CAAEx3D,IAAK,GAAKkQ,KAAKqX,MAAOmwC,OAAQD,EAAoBp/D,OAAS,IAAMo/D,EAAsB,GAAIR,MAAOM,IAM1I,SAASI,EAAiBC,EAA0BJ,GAEvD,IAAIK,EAAYL,EAASP,OAAS,gBAAiBO,EAASE,QAE5D,OAAOJ,EAAeN,EADPD,EAAS,GAAIc,EAAWD,IACMJ,GCpC1C,SAASM,EAAkBC,EAAgBd,GAG9C,IAFA,IAAIM,EAAe,GAEV5qD,EAAK,EAAGqrD,EADAvjE,OAAO4J,KAAK44D,GACetqD,EAAKqrD,EAAa3/D,OAAQsU,IAAM,CACxE,IAAIsrD,EAAYD,EAAarrD,GACzBurD,EAAejB,EAAMgB,GACL,MAAhBC,EAICH,EAAeE,GAShBV,EAAaU,GAAaF,EAAeE,GAAWl7B,OAAOk6B,EAAMgB,IAHjEV,EAAaU,GAAa1pC,OAAO2pC,GATjCX,EAAaU,QAAa9/D,EAelC,OAAOo/D,E,WC7BP,EAAsC,WAStC,OARA,EAAW9iE,OAAOwmC,QAAU,SAAS3jC,GACjC,IAAK,IAAI+I,EAAGjI,EAAI,EAAG8H,EAAIyO,UAAUtW,OAAQD,EAAI8H,EAAG9H,IAE5C,IAAK,IAAImC,KADT8F,EAAIsO,UAAUvW,GACO3D,OAAOC,UAAUC,eAAeC,KAAKyL,EAAG9F,KACzDjD,EAAEiD,GAAK8F,EAAE9F,IAEjB,OAAOjD,IAEK6B,MAAMN,KAAM8V,YAuChC,SAASwpD,EAAgBC,QACA,IAAjBA,IAA2BA,EAAe,IAC9C,IAhCwBC,EAgCpBzhE,EAAQ,EAAS,GAAIwhE,GAUzB,MATkC,oBAAXjkE,SAEdyC,EAAMyhE,UACPzhE,EAAMyhE,SApCUA,EAoCmBlkE,OAAOkkE,QAnC3C,CACHx1D,QAAS,SAAU20D,GACfa,EAAQC,aAAad,EAASe,MAAO,GAAIf,EAASgB,SAAW,KAAOhB,EAASiB,KAAOjB,EAASkB,SAAWlB,EAASE,SAErHxhE,KAAM,SAAUshE,GACZa,EAAQM,UAAUnB,EAASe,MAAO,GAAIf,EAASgB,SAAW,KAAOhB,EAASiB,KAAOjB,EAASkB,SAAWlB,EAASE,YAgC7G9gE,EAAM4gE,WACP5gE,EAAM4gE,SAAWrjE,OAAOqjE,WAGzB5gE,EAEJ,IAAIgiE,EAAoB,gBAAoBT,KCvD5C,SAASU,EAAeC,EAAmBtB,EAAUa,EAASU,GAEjE,YADmB,IAAfA,IAAyBA,EAAa,aAClCA,GACJ,IAAK,YACDV,EAAQx1D,QAAQ80D,EAAiBmB,EAAmBtB,IACpD,MACJ,IAAK,SACDa,EAAQniE,KAAKyhE,EAAiBmB,EAAmBtB,IACjD,MACJ,IAAK,UACDa,EAAQx1D,QAAQy0D,EAAewB,EAAmBtB,IAClD,MACJ,IAAK,OACDa,EAAQniE,KAAKohE,EAAewB,EAAmBtB,KAK5C,QCER,IAAIwB,EAAiB,SAAUjB,GAClC,IAtBiBnhE,EACbkX,EAqBA0M,EAAK,aAAiBo+C,GAAoBP,EAAU79C,EAAG69C,QAASb,EAAWh9C,EAAGg9C,SAC9EyB,EAAuC,iBAAbzB,EAI1B0B,EAnBR,SAAwBC,EAAMC,GAC1B,IAAK,IAAIp5D,KAAOm5D,EACZ,KAAMn5D,KAAOo5D,IAASD,EAAKn5D,KAASo5D,EAAKp5D,GACrC,OAAO,EACf,IAAK,IAAIA,KAAOo5D,EACZ,KAAMp5D,KAAOm5D,IAASA,EAAKn5D,KAASo5D,EAAKp5D,GACrC,OAAO,EACf,OAAO,EAYiBq5D,EA3BPziE,EA0BoBmhE,EAzBjCjqD,EAAM,SAAalX,GACvB,aAAgB,WACZkX,EAAI5H,QAAUtP,IACf,CAACA,IACGkX,EAAI5H,SAsBgD6xD,GAEvDuB,EAAqB,WAAc,WAAc,OAAOvB,IAAmB,CAC3EmB,IAEJnB,EAAiBuB,EAEjB,IAAIC,EAAa,SAAalB,GAC9B,aAAgB,WACZkB,EAAWrzD,QAAUmyD,IACtB,CAACA,IAEJ,IAAImB,EAAc,SAAahC,GAC/B,aAAgB,WACZgC,EAAYtzD,QAAUsxD,IACvB,CAACA,IACJ,IAAIE,EAASuB,EAAmBzB,EAASE,OAAS,GAE9C+B,EAAW,WAAc,WAAc,OAAO,gBAAiB/B,IAAW,KAAO,CACjFA,IAIAgC,EAAajlE,OAAO4J,KAAK05D,GACzB4B,EAAcD,EAAWj9D,KAAI,SAAUw7D,GACvC,OCxCmB,SAAU1hE,EAAMqjE,EAAaH,GACpD,IAAIj/C,OACgB,IAAhBo/C,IAA0BA,EAAcjD,GAC5C,IAAIkD,EAAK,aAAiBjB,GAAoBP,EAAUwB,EAAGxB,QAASb,EAAWqC,EAAGrC,SAE9E+B,EAAa,SAAalB,GAC9B,aAAgB,WACZkB,EAAWrzD,QAAUmyD,IACtB,CAACA,IAEJ,IAAImB,EAAc,SAAahC,GAK/B,GAJA,aAAgB,WACZgC,EAAYtzD,QAAUsxD,IACvB,CAACA,KAECiC,EAAU,CACX,IAAIK,EAAyC,iBAAbtC,EAC5BuC,EAAsC,oBAAX5lE,OAC/BslE,EAAW,WAAc,WACrB,IAAIf,EAAW,GAEf,GAAIoB,EAEA,GAAIC,EACArB,EAAW,gBAAiBlB,EAASE,YAEpC,CAED,IAAIsC,EAAMxC,EAASkB,SACflB,EAASE,SACTsC,GAAOxC,EAASE,QAEpBgB,EAAW,mBAAcsB,GAAK/C,MAGtC,OAAOyB,GAAY,KACpB,CAAClB,EAASE,OAAQF,EAASkB,SAAUoB,EAAoBC,IAGhE,IAAI1C,EAAeoC,EAASljE,GAMxB0jE,EAAwB5C,aAAwBnwD,MAC9C,sBAAWsT,EAAK,IAAOjkB,GAAQ8gE,EAAc78C,IAC7C68C,EAgBN,MAAO,CAbY,WAAc,WAC7B,GAAoB,MAAhBA,EAGJ,OAAOuC,EAAY18B,OAAOm6B,KAC3B,CAAC4C,EAAuBL,IAEZ,eAAkB,SAAUM,EAAUnB,GACjD,IAAIv+C,EACA2/C,EAAkBP,EAAY78B,OAAOm9B,GACzCrB,IAAgBr+C,EAAK,IAAOjkB,GAAQ4jE,EAAiB3/C,GAAK++C,EAAWrzD,QAAQsxD,UAAYgC,EAAYtzD,QACrGqzD,EAAWrzD,QAAS6yD,KACrB,CAACa,EAAarjE,KDtBN6jE,CAAcnC,EAAWF,EAAeE,GAAYwB,GAAU,MAqBzE,MAAO,CAjBa,WAAc,WAG9B,IADA,IAAIY,EAAgB,GACXjiE,EAAI,EAAGA,EAAIshE,EAAWrhE,SAAUD,EACrCiiE,EAAcX,EAAWthE,IAAMuhE,EAAYvhE,GAE/C,OAAOiiE,IACRV,GAEY,eAAkB,SAAUW,EAASvB,GAEhD,IAAIwB,EAAiBzC,EAAkBC,EAAgBuC,GAEvD,EAAeC,EAAgBhB,EAAWrzD,QAAQsxD,UAAYgC,EAAYtzD,QAC1EqzD,EAAWrzD,QAAS6yD,KACrB,CAAChB,O,6BE7ER,+EAASn3B,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAMjS,SAAS6rD,EAAK15B,GAC3B,IAAI25B,EAAY35B,EAAK5tB,KACjBA,OAAqB,IAAdunD,EAAuB,CAChCv2D,EAAG,EACHU,EAAG,GACD61D,EACAC,EAAU55B,EAAK7tB,GACfA,OAAiB,IAAZynD,EAAqB,CAC5Bx2D,EAAG,EACHU,EAAG,GACD81D,EACAC,EAAY75B,EAAKe,KACjBA,OAAqB,IAAd84B,EAAuB,cAAgBA,EAC9C3yD,EAAY84B,EAAK94B,UACjBo5B,EAAWN,EAAKM,SAChBC,EAnBN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAmBxR2E,CAA8BV,EAAM,CAAC,OAAQ,KAAM,OAAQ,YAAa,aAEpF85B,EAAgB1nD,EAAKhP,IAAM+O,EAAG/O,GAAKgP,EAAKtO,IAAMqO,EAAGrO,EACrD,OAAoB,IAAMrJ,cAAc,OAAQqlC,EAAS,CACvD9yB,IAAKszB,EACLp5B,UAAW,IAAG,YAAaA,GAC3B6yD,GAAI3nD,EAAKhP,EACT42D,GAAI5nD,EAAKtO,EACTm2D,GAAI9nD,EAAG/O,EACP82D,GAAI/nD,EAAGrO,EACPi9B,KAAMA,EACNo5B,eAAgBL,EAAgB,aAAe,QAC9Cv5B,M,4lCCrBQ65B,EAAS,SAAC,GAAD,IACpBlzD,EADoB,EACpBA,UACAmzD,EAFoB,EAEpBA,SACAt+D,EAHoB,EAGpBA,KACAu+D,EAJoB,EAIpBA,WACAjlE,EALoB,EAKpBA,SACAklE,EANoB,EAMpBA,IACAC,EAPoB,EAOpBA,KACAltD,EARoB,EAQpBA,MACAmtD,EAToB,EASpBA,SACAt2B,EAVoB,EAUpBA,MACAu2B,EAXoB,EAWpBA,QACG3tD,EAZiB,cAcpB,wBACE7F,UAAW8G,IACT9G,EACA,YAFmB,qBAGLnL,GACduR,GAAS,cAAJ,OAAkBA,GACvBitD,GAAO,iBACPC,GAAQ,kCAAJ,OAAsCA,GAC1CA,GAAQr2B,GAAS,4BACjBu2B,GAAW,sBAEb3+D,KAAMu+D,EACNK,eAAcN,EACdI,SAAUA,GACN1tD,GAEHo3B,GAASq2B,EAAO,oBAAMtzD,UAAU,yBAAyBi9B,GAAgB9uC,IAI9E+kE,EAAOz5B,UAAY,CACjBz5B,UAAWqoC,IAAU9jC,OACrB6B,MAAOiiC,IAAUI,MAAM,CAAC,OAAQ,MAAO,KACvC0qB,SAAU9qB,IAAUM,KACpB4qB,SAAUlrB,IAAUM,KACpB0qB,IAAKhrB,IAAUM,KACfyqB,WAAY/qB,IAAUI,MAAM,CAAC,SAAU,SAAU,UACjD5zC,KAAMwzC,IAAUI,MAAM,CAAC,UAAW,cAClCt6C,SAAUk6C,IAAU3O,UAAU,CAAC2O,IAAUlpC,KAAMkpC,IAAUS,QAAQT,IAAUlpC,QAC3Em0D,KAAMjrB,IAAUI,MAAV,W,EAAoBirB,I,knBAApB,CAAgC,MACtCz2B,MAAOoL,IAAU9jC,OACjBivD,QAASnrB,IAAUM,MAGrBuqB,EAAOxH,aAAe,CACpB1rD,UAAW,GACXoG,MAAO,GACP+sD,cAAUhjE,EACVojE,UAAU,EACVF,KAAK,EACLC,KAAM,GACNz+D,KAAM,YACNu+D,WAAY,SACZn2B,MAAO,GACPu2B,SAAS,EACTrlE,SAAU,YAGL,IAAMwlE,EAAc,SAAC,GAAD,IAAGxlE,EAAH,EAAGA,SAAU6R,EAAb,EAAaA,UAAb,OACzB,mBAAKA,UAAW8G,IAAW9G,EAAW,oBAAqB7R,IAG7DwlE,EAAYl6B,UAAY,CACtBtrC,SAAUk6C,IAAU3O,UAAU,CAAC2O,IAAUlpC,KAAMkpC,IAAUS,QAAQT,IAAUlpC,QAAQ6rC,WACnFhrC,UAAWqoC,IAAU9jC,QAGvBovD,EAAYjI,aAAe,CACzB1rD,eAAW7P,GAGN,IAAMyjE,EAAwB,SAAC,GAAD,IAAGzlE,EAAH,EAAGA,SAAU6R,EAAb,EAAaA,UAAb,OACnC,mBAAKA,UAAW8G,IAAW9G,EAAW,yBAA0B7R,IAGlEylE,EAAsBn6B,UAAY,CAChCtrC,SAAUk6C,IAAU3O,UAAU,CAAC2O,IAAUlpC,KAAMkpC,IAAUS,QAAQT,IAAUlpC,QAAQ6rC,WACnFhrC,UAAWqoC,IAAU9jC,QAGvBqvD,EAAsBlI,aAAe,CACnC1rD,eAAW7P,G,UAGE+iE,EAAA,O,6FAxFFA,E,6GA8DAS,E,kHAaAC,E,gXCvFN,SAASC,EAAUxf,EAAQvG,GAChC,OAAQnnC,UAAUtW,QAChB,KAAK,EAAG,MACR,KAAK,EAAGQ,KAAKi9C,MAAMuG,GAAS,MAC5B,QAASxjD,KAAKi9C,MAAMA,GAAOuG,OAAOA,GAEpC,OAAOxjD,KANT,mC,oFCAWijE,EAAU3mD,KAAK4mD,GAAK,IACpBC,EAAU,IAAM7mD,KAAK4mD,GCS5BzmB,EAAK,EAAI,GACT2mB,EAAK,EAAI3mB,EAAKA,EAGlB,SAAS4mB,EAAWz8D,GAClB,GAAIA,aAAa08D,EAAK,OAAO,IAAIA,EAAI18D,EAAEnG,EAAGmG,EAAEvC,EAAGuC,EAAEtC,EAAGsC,EAAE2K,SACtD,GAAI3K,aAAa28D,EAAK,OAAOC,EAAQ58D,GAC/BA,aAAa,MAAMA,EAAI,YAAWA,IACxC,IAGuEyE,EAAGO,EAHtE/E,EAAI48D,EAAS78D,EAAEC,GACfuE,EAAIq4D,EAAS78D,EAAEwE,GACf9G,EAAIm/D,EAAS78D,EAAEtC,GACfyH,EAAI23D,GAAS,SAAY78D,EAAI,SAAYuE,EAAI,SAAY9G,GAdtD,GAmBP,OAJIuC,IAAMuE,GAAKA,IAAM9G,EAAG+G,EAAIO,EAAIG,GAC9BV,EAAIq4D,GAAS,SAAY78D,EAAI,SAAYuE,EAAI,SAAY9G,GAjBpD,QAkBLsH,EAAI83D,GAAS,SAAY78D,EAAI,SAAYuE,EAAI,SAAY9G,GAhBpD,SAkBA,IAAIg/D,EAAI,IAAMv3D,EAAI,GAAI,KAAOV,EAAIU,GAAI,KAAOA,EAAIH,GAAIhF,EAAE2K,SAOhD,SAASoyD,EAAIljE,EAAG4D,EAAGC,EAAGiN,GACnC,OAA4B,IAArBuE,UAAUtW,OAAe6jE,EAAW5iE,GAAK,IAAI6iE,EAAI7iE,EAAG4D,EAAGC,EAAc,MAAXiN,EAAkB,EAAIA,GAGlF,SAAS+xD,EAAI7iE,EAAG4D,EAAGC,EAAGiN,GAC3BvR,KAAKS,GAAKA,EACVT,KAAKqE,GAAKA,EACVrE,KAAKsE,GAAKA,EACVtE,KAAKuR,SAAWA,EA0BlB,SAASmyD,EAAQjlE,GACf,OAAOA,EAxDAg+C,oBAwDSngC,KAAKG,IAAIhe,EAAG,EAAI,GAAKA,EAAI2kE,EA3DlC,EAAI,GA8Db,SAASQ,EAAQnlE,GACf,OAAOA,EAAIg+C,EAAKh+C,EAAIA,EAAIA,EAAI2kE,GAAM3kE,EA/D3B,EAAI,IAkEb,SAASolE,EAASx4D,GAChB,OAAO,KAAOA,GAAK,SAAY,MAAQA,EAAI,MAAQiR,KAAKG,IAAIpR,EAAG,EAAI,KAAO,MAG5E,SAASo4D,EAASp4D,GAChB,OAAQA,GAAK,MAAQ,OAAUA,EAAI,MAAQiR,KAAKG,KAAKpR,EAAI,MAAS,MAAO,KAG3E,SAASy4D,EAAWl9D,GAClB,GAAIA,aAAa28D,EAAK,OAAO,IAAIA,EAAI38D,EAAEtE,EAAGsE,EAAEvE,EAAGuE,EAAEnG,EAAGmG,EAAE2K,SAEtD,GADM3K,aAAa08D,IAAM18D,EAAIy8D,EAAWz8D,IAC5B,IAARA,EAAEvC,GAAmB,IAARuC,EAAEtC,EAAS,OAAO,IAAIi/D,EAAIxpD,IAAK,EAAInT,EAAEnG,GAAKmG,EAAEnG,EAAI,IAAM,EAAIsZ,IAAKnT,EAAEnG,EAAGmG,EAAE2K,SACvF,IAAIjP,EAAIga,KAAKynD,MAAMn9D,EAAEtC,EAAGsC,EAAEvC,GAAK8+D,EAC/B,OAAO,IAAII,EAAIjhE,EAAI,EAAIA,EAAI,IAAMA,EAAGga,KAAK0nD,KAAKp9D,EAAEvC,EAAIuC,EAAEvC,EAAIuC,EAAEtC,EAAIsC,EAAEtC,GAAIsC,EAAEnG,EAAGmG,EAAE2K,SAOxE,SAAS0yD,EAAI3hE,EAAGD,EAAG5B,EAAG8Q,GAC3B,OAA4B,IAArBuE,UAAUtW,OAAeskE,EAAWxhE,GAAK,IAAIihE,EAAIjhE,EAAGD,EAAG5B,EAAc,MAAX8Q,EAAkB,EAAIA,GAGlF,SAASgyD,EAAIjhE,EAAGD,EAAG5B,EAAG8Q,GAC3BvR,KAAKsC,GAAKA,EACVtC,KAAKqC,GAAKA,EACVrC,KAAKS,GAAKA,EACVT,KAAKuR,SAAWA,EAGlB,SAASiyD,EAAQ58D,GACf,GAAI2S,MAAM3S,EAAEtE,GAAI,OAAO,IAAIghE,EAAI18D,EAAEnG,EAAG,EAAG,EAAGmG,EAAE2K,SAC5C,IAAIjP,EAAIsE,EAAEtE,EAAI2gE,EACd,OAAO,IAAIK,EAAI18D,EAAEnG,EAAG6b,KAAK4nD,IAAI5hE,GAAKsE,EAAEvE,EAAGia,KAAK6nD,IAAI7hE,GAAKsE,EAAEvE,EAAGuE,EAAE2K,SAjE9D,OAAA6yD,EAAA,GAAOd,EAAKK,EAAK,YAAO,IAAO,CAC7BvW,SAAU,SAASthD,GACjB,OAAO,IAAIw3D,EAAItjE,KAAKS,EAzChB,IAyC8B,MAALqL,EAAY,EAAIA,GAAI9L,KAAKqE,EAAGrE,KAAKsE,EAAGtE,KAAKuR,UAExE47C,OAAQ,SAASrhD,GACf,OAAO,IAAIw3D,EAAItjE,KAAKS,EA5ChB,IA4C8B,MAALqL,EAAY,EAAIA,GAAI9L,KAAKqE,EAAGrE,KAAKsE,EAAGtE,KAAKuR,UAExE6xC,IAAK,WACH,IAAIr3C,GAAK/L,KAAKS,EAAI,IAAM,IACpB4K,EAAIkO,MAAMvZ,KAAKqE,GAAK0H,EAAIA,EAAI/L,KAAKqE,EAAI,IACrCuH,EAAI2N,MAAMvZ,KAAKsE,GAAKyH,EAAIA,EAAI/L,KAAKsE,EAAI,IAIzC,OAHA+G,EAjDK,OAiDIu4D,EAAQv4D,GACjBU,EAjDK,EAiDI63D,EAAQ73D,GACjBH,EAjDK,OAiDIg4D,EAAQh4D,GACV,IAAI,IACTi4D,EAAU,UAAYx4D,EAAI,UAAYU,EAAI,SAAYH,GACtDi4D,GAAU,SAAYx4D,EAAI,UAAYU,EAAI,QAAYH,GACtDi4D,EAAU,SAAYx4D,EAAI,SAAYU,EAAI,UAAYH,GACtD5L,KAAKuR,aAkDX,OAAA6yD,EAAA,GAAOb,EAAKU,EAAK,YAAO,IAAO,CAC7B7W,SAAU,SAASthD,GACjB,OAAO,IAAIy3D,EAAIvjE,KAAKsC,EAAGtC,KAAKqC,EAAGrC,KAAKS,EA7GhC,IA6G8C,MAALqL,EAAY,EAAIA,GAAI9L,KAAKuR,UAExE47C,OAAQ,SAASrhD,GACf,OAAO,IAAIy3D,EAAIvjE,KAAKsC,EAAGtC,KAAKqC,EAAGrC,KAAKS,EAhHhC,IAgH8C,MAALqL,EAAY,EAAIA,GAAI9L,KAAKuR,UAExE6xC,IAAK,WACH,OAAOogB,EAAQxjE,MAAMojD,U,YCrHzB,SAAS,EAAI5F,GACX,OAAO,SAASN,EAAOG,GACrB,IAAI/6C,EAAIk7C,GAAKN,EAAQ,EAASA,IAAQ56C,GAAI+6C,EAAM,EAASA,IAAM/6C,GAC3DD,EAAI,YAAM66C,EAAM76C,EAAGg7C,EAAIh7C,GACvB5B,EAAI,YAAMy8C,EAAMz8C,EAAG48C,EAAI58C,GACvB8Q,EAAU,YAAM2rC,EAAM3rC,QAAS8rC,EAAI9rC,SACvC,OAAO,SAAS9S,GAKd,OAJAy+C,EAAM56C,EAAIA,EAAE7D,GACZy+C,EAAM76C,EAAIA,EAAE5D,GACZy+C,EAAMz8C,EAAIA,EAAEhC,GACZy+C,EAAM3rC,QAAUA,EAAQ9S,GACjBy+C,EAAQ,KAKN,QAAI,KACRmnB,EAAU,EAAI,KCjBzB,SAASnM,EAAI1a,GACX,OAAO,SAASN,EAAOG,GACrB,IAAI/6C,EAAIk7C,GAAKN,EAAQ,OAAAiG,EAAA,GAASjG,IAAQ56C,GAAI+6C,EAAM,OAAA8F,EAAA,GAAS9F,IAAM/6C,GAC3DkF,EAAI,YAAM01C,EAAM11C,EAAG61C,EAAI71C,GACvB/G,EAAI,YAAMy8C,EAAMz8C,EAAG48C,EAAI58C,GACvB8Q,EAAU,YAAM2rC,EAAM3rC,QAAS8rC,EAAI9rC,SACvC,OAAO,SAAS9S,GAKd,OAJAy+C,EAAM56C,EAAIA,EAAE7D,GACZy+C,EAAM11C,EAAIA,EAAE/I,GACZy+C,EAAMz8C,EAAIA,EAAEhC,GACZy+C,EAAM3rC,QAAUA,EAAQ9S,GACjBy+C,EAAQ,KAKN,MAAAgb,EAAI,KACRoM,EAAUpM,EAAI,KChBrB5sD,GAAK,OACLE,EAAI,QACJQ,GAAK,OACLL,GAAK,OACLkB,EAAI,QACJ03D,EAAK13D,EAAIlB,EACT64D,EAAK33D,EAAIrB,EACTi5D,EAAQj5D,EAAIQ,EAAIL,EAAIL,EAExB,SAASo5D,EAAiB99D,GACxB,GAAIA,aAAa+9D,EAAW,OAAO,IAAIA,EAAU/9D,EAAEtE,EAAGsE,EAAEY,EAAGZ,EAAEnG,EAAGmG,EAAE2K,SAC5D3K,aAAa,MAAMA,EAAI,YAAWA,IACxC,IAAIC,EAAID,EAAEC,EAAI,IACVuE,EAAIxE,EAAEwE,EAAI,IACV9G,EAAIsC,EAAEtC,EAAI,IACV7D,GAAKgkE,EAAQngE,EAAIigE,EAAK19D,EAAI29D,EAAKp5D,IAAMq5D,EAAQF,EAAKC,GAClDI,EAAKtgE,EAAI7D,EACTqL,GAAKe,GAAKzB,EAAI3K,GAAKuL,EAAI44D,GAAMj5D,EAC7BnE,EAAI8U,KAAK0nD,KAAKl4D,EAAIA,EAAI84D,EAAKA,IAAO/3D,EAAIpM,GAAK,EAAIA,IAC/C6B,EAAIkF,EAAI8U,KAAKynD,MAAMj4D,EAAG84D,GAAMzB,EAAU,IAAMppD,IAChD,OAAO,IAAI4qD,EAAUriE,EAAI,EAAIA,EAAI,IAAMA,EAAGkF,EAAG/G,EAAGmG,EAAE2K,SAGrC,SAAS,EAAUjP,EAAGkF,EAAG/G,EAAG8Q,GACzC,OAA4B,IAArBuE,UAAUtW,OAAeklE,EAAiBpiE,GAAK,IAAIqiE,EAAUriE,EAAGkF,EAAG/G,EAAc,MAAX8Q,EAAkB,EAAIA,GAG9F,SAASozD,EAAUriE,EAAGkF,EAAG/G,EAAG8Q,GACjCvR,KAAKsC,GAAKA,EACVtC,KAAKwH,GAAKA,EACVxH,KAAKS,GAAKA,EACVT,KAAKuR,SAAWA,EChClB,SAAS,EAAUisC,GACjB,OAAO,SAAUqnB,EAAe94D,GAG9B,SAAS+4D,EAAU5nB,EAAOG,GACxB,IAAI/6C,EAAIk7C,GAAKN,EAAQ,EAAeA,IAAQ56C,GAAI+6C,EAAM,EAAeA,IAAM/6C,GACvEkF,EAAI,YAAM01C,EAAM11C,EAAG61C,EAAI71C,GACvB/G,EAAI,YAAMy8C,EAAMz8C,EAAG48C,EAAI58C,GACvB8Q,EAAU,YAAM2rC,EAAM3rC,QAAS8rC,EAAI9rC,SACvC,OAAO,SAAS9S,GAKd,OAJAy+C,EAAM56C,EAAIA,EAAE7D,GACZy+C,EAAM11C,EAAIA,EAAE/I,GACZy+C,EAAMz8C,EAAIA,EAAE6b,KAAKG,IAAIhe,EAAGsN,IACxBmxC,EAAM3rC,QAAUA,EAAQ9S,GACjBy+C,EAAQ,IAMnB,OAlBAnxC,GAAKA,EAgBL+4D,EAAUrnB,MAAQonB,EAEXC,EAnBF,CAoBJ,GDcL,OAAAV,EAAA,GAAOO,EAAW,EAAW,YAAO,IAAO,CACzCvX,SAAU,SAASthD,GAEjB,OADAA,EAAS,MAALA,EAAY,IAAWwQ,KAAKG,IAAI,IAAU3Q,GACvC,IAAI64D,EAAU3kE,KAAKsC,EAAGtC,KAAKwH,EAAGxH,KAAKS,EAAIqL,EAAG9L,KAAKuR,UAExD47C,OAAQ,SAASrhD,GAEf,OADAA,EAAS,MAALA,EAAY,IAASwQ,KAAKG,IAAI,IAAQ3Q,GACnC,IAAI64D,EAAU3kE,KAAKsC,EAAGtC,KAAKwH,EAAGxH,KAAKS,EAAIqL,EAAG9L,KAAKuR,UAExD6xC,IAAK,WACH,IAAI9gD,EAAIiX,MAAMvZ,KAAKsC,GAAK,GAAKtC,KAAKsC,EAAI,KAAO2gE,EACzCxiE,GAAKT,KAAKS,EACV4D,EAAIkV,MAAMvZ,KAAKwH,GAAK,EAAIxH,KAAKwH,EAAI/G,GAAK,EAAIA,GAC1CskE,EAAOzoD,KAAK4nD,IAAI5hE,GAChB0iE,EAAO1oD,KAAK6nD,IAAI7hE,GACpB,OAAO,IAAI,IACT,KAAO7B,EAAI4D,GAAKiH,EAAIy5D,EAAOv5D,EAAIw5D,IAC/B,KAAOvkE,EAAI4D,GAAK2H,EAAI+4D,EAAOp5D,EAAIq5D,IAC/B,KAAOvkE,EAAI4D,GAAKwI,EAAIk4D,IACpB/kE,KAAKuR,aC9BI,IC1BX0zD,EAAkB,CACpBtB,ICCa,SAAazmB,EAAOG,GACjC,IAAI58C,EAAI,aAAOy8C,EAAQ,EAASA,IAAQz8C,GAAI48C,EAAM,EAASA,IAAM58C,GAC7D4D,EAAI,YAAM64C,EAAM74C,EAAGg5C,EAAIh5C,GACvBC,EAAI,YAAM44C,EAAM54C,EAAG+4C,EAAI/4C,GACvBiN,EAAU,YAAM2rC,EAAM3rC,QAAS8rC,EAAI9rC,SACvC,OAAO,SAAS9S,GAKd,OAJAy+C,EAAMz8C,EAAIA,EAAEhC,GACZy+C,EAAM74C,EAAIA,EAAE5F,GACZy+C,EAAM54C,EAAIA,EAAE7F,GACZy+C,EAAM3rC,QAAUA,EAAQ9S,GACjBy+C,EAAQ,KDVjB+mB,IAAK,EACL,WAAY,EACZ/L,IAAK,EACL,WAAY,EACZ4M,UDoBa,EAAU,KCnBvB,iBDoByB,EAAU,KCnBnC1hB,I,OAAK,G,gIEPH8hB,GAAqB,CACvBr+C,IAAK,IACLoJ,KAAM,IACNkB,OAAQ,IACR3R,MAAO,IACP4R,OAAQ,IACRrM,KAAM,IACNlG,KAAM,KAEJsmD,GAAe,CACjBt+C,IAAKo+B,EAAA,EACLh1B,KAAMm1C,EAAA,EACNj0C,OAAQk0C,EAAA,EACR7lD,MAAO8lD,EAAA,EACPl0C,OAAQ,IACRrM,KAAMwgD,EAAA,EACN1mD,KAAM6mC,EAAA,G,cCAD,IAAI8f,GAAgB,CAC3B,SAAU,OAAQ,OAClB,cAAe,QACf,QAAS,UACT,QAAS,OAAQ,QAAS,WAAY,WAAY,UAAW,WAEzDC,GAAY,CACdjiB,OCzBa,SAAqB3W,EAAO7xB,GACrCA,EAAOwoC,QAGP3W,EAAM2W,OAAOxoC,EAAOwoC,SDsBxBkiB,KDNa,SAAmB74B,EAAO7xB,GACvC,GAAI,SAAUA,QAAiC,IAAhBA,EAAO0qD,MAAwB,SAAU74B,EAAO,CAC7E,IAAI64B,EAAO1qD,EAAO0qD,KAElB,GAAoB,kBAATA,EACLA,GACF74B,EAAM64B,YAEH,GAAoB,iBAATA,EAChB74B,EAAM64B,KAAKA,OACN,CACL,IAAIC,EAAY94B,EACZxY,EAAQ,OAAAuxC,EAAA,GAAWD,GAEvB,GAAoB,iBAATD,EACTC,EAAUD,KAAKrxC,EAAQ8wC,GAAaO,GAAQR,GAAmBQ,QAC1D,CACL,IAAI9vB,EAAW8vB,EAAK9vB,SAChBoH,EAAO0oB,EAAK1oB,KACZ6oB,GAAkBxxC,EAAQ8wC,GAAavvB,GAAYsvB,GAAmBtvB,IAAW0H,MAAMN,GAErE,MAAlB6oB,GACFF,EAAUD,KAAKG,OCfvB5iB,KE3Ba,SAAmBpW,EAAO7xB,GACvC,GAAI,SAAUA,IAA0B,IAAhBA,EAAOioC,KAAe,CAC5C,IAAIO,EAAS3W,EAAM2W,SACfn/C,EAAIm/C,EAAO,GACXl/C,EAAIk/C,EAAO,GACXsiB,EAAexhE,EAAID,EAEnB4jC,EAAO69B,EAAe,CAACxhE,EAAGD,GAAK,CAACA,EAAGC,GACnC2e,EAAMglB,EAAK,GACXvrB,EAAMurB,EAAK,GAEX89B,EAAiB,CAACzpD,KAAK2G,IAAI,EAAGA,GAAM3G,KAAKI,IAAI,EAAGA,IACpDmwB,EAAM2W,OAAOsiB,EAAeC,EAAeliB,UAAYkiB,KFgBzDtiB,YG3Ba,SAA0B5W,EAAO7xB,GAC9C,GAAI,gBAAiBA,GAAU,gBAAiB6xB,QAAuC,IAAvB7xB,EAAOyoC,YAA6B,CAClG,IAAIuiB,ENQO,SAAiCviB,GAC9C,OAAQA,GACN,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,MACL,IAAK,WACL,IAAK,YACL,IAAK,iBACL,IAAK,MACH,OAAOwhB,EAAgBxhB,GAK3B,IAAIz/C,EAAOy/C,EAAYz/C,KACnBy5C,EAAQgG,EAAYhG,MACpBuoB,EAAef,EAAgBjhE,GACnC,YAAwB,IAAVy5C,EAAwBuoB,EAAeA,EAAavoB,MAAMA,GM1BnDwoB,CAAwBjrD,EAAOyoC,aAClD5W,EAAM4W,YAAYuiB,KHyBpB7yC,MI5Ba,SAAoB0Z,EAAO7xB,GACpC,UAAWA,QAAkC,IAAjBA,EAAOmY,QACjCnY,EAAOmY,OAAS,gBAAiBnY,QAAwC,IAAvBA,EAAOyoC,YAC3DlmD,QAAQC,KAAK,0HAA2Hwd,GAC/H,UAAW6xB,EAEpBA,EAAM1Z,MAAMnY,EAAOmY,OACV,gBAAiB0Z,GAAS7xB,EAAOmY,OAK1C0Z,EAAM4W,YAAY,QJiBtByiB,MK9Ba,SAAoBr5B,EAAO7xB,GACpC,UAAW6xB,GAAS,UAAW7xB,QAAkC,IAAjBA,EAAOkrD,OACzDr5B,EAAMq5B,MAAMlrD,EAAOkrD,QL6BrBvxC,KM/Ba,SAAmBkY,EAAO7xB,GACnC,SAAU6xB,GAAS,SAAU7xB,QAAiC,IAAhBA,EAAO2Z,MACvDkY,EAAMlY,KAAK3Z,EAAO2Z,ON8BpBovB,MOhCa,SAAoBlX,EAAO7xB,GACpC,UAAW6xB,GAAS,UAAW7xB,QAAkC,IAAjBA,EAAO+oC,OACzDlX,EAAMkX,MAAM/oC,EAAO+oC,QP+BrBb,SQjCa,SAAuBrW,EAAO7xB,GACvC,aAAc6xB,GAAS,aAAc7xB,QAAqC,IAApBA,EAAOkoC,UAC/DrW,EAAMqW,SAASloC,EAAOkoC,WRgCxBijB,SSlCa,SAAuBt5B,EAAO7xB,GACvC,aAAc6xB,GAAS,aAAc7xB,QAAqC,IAApBA,EAAOmrD,UAC/Dt5B,EAAMs5B,SAASnrD,EAAOmrD,WTiCxB78B,QUnCa,SAAsBuD,EAAO7xB,GACtC,YAAa6xB,GAAS,YAAa7xB,QAAoC,IAAnBA,EAAOsuB,SAC7DuD,EAAMvD,QAAQtuB,EAAOsuB,SAGnB,iBAAkBuD,GAAS,iBAAkB7xB,QAAyC,IAAxBA,EAAOg1B,cACvEnD,EAAMmD,aAAah1B,EAAOg1B,cAGxB,iBAAkBnD,GAAS,iBAAkB7xB,QAAyC,IAAxBA,EAAOi1B,cACvEpD,EAAMoD,aAAaj1B,EAAOi1B,eV0B5BgN,MWpCa,SAAoBpQ,EAAO7xB,GACpCA,EAAOiiC,OAGPpQ,EAAMoQ,MAAMjiC,EAAOiiC,QXiCvB4G,QYrCa,SAAsBhX,EAAO7xB,GAC1C,GAAIA,EAAO6oC,QAAS,CAClB,IAAIuiB,EAAgBv5B,EAAMoQ,QAAQ33C,QAAQu+C,UAIxChX,EAAMoQ,MAAMmpB,KZgChBpiB,QatCa,SAAsBnX,EAAO7xB,GACtC,YAAa6xB,GAAS,YAAa7xB,QAAoC,IAAnBA,EAAOgpC,SAC7DnX,EAAMmX,QAAQhpC,EAAOgpC,WbsCV,SAASqiB,KACtB,IAAK,IAAIxwD,EAAOC,UAAUtW,OAAQ8mE,EAAM,IAAIj4D,MAAMwH,GAAOjC,EAAO,EAAGA,EAAOiC,EAAMjC,IAC9E0yD,EAAI1yD,GAAQkC,UAAUlC,GAGxB,IAAI2yD,EAAY,IAAIC,IAAIF,GACpBG,EAAcjB,GAAc1vC,QAAO,SAAUlvB,GAC/C,OAAO2/D,EAAU5/B,IAAI//B,MAEvB,OAAO,SAAwBimC,EAAO7xB,GAOpC,YANsB,IAAXA,GACTyrD,EAAYhhE,SAAQ,SAAUihE,GAC5BjB,GAAUiB,GAAI75B,EAAO7xB,MAIlB6xB,K,0VcjDE85B,EAAqBnvB,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OAEtE8uB,EAAgBpvB,IAAUC,MAAM,CAC3CovB,KAAMF,EAAmBxsB,WACzB2sB,eAAgBH,EAAmBxsB,WACnC4sB,UAAWJ,EAAmBxsB,WAC9B6sB,gBAAiBL,EAAmBxsB,WACpC8sB,IAAKN,EAAmBxsB,WACxB+sB,UAAWP,EAAmBxsB,WAC9BgtB,QAASR,EAAmBxsB,WAC5BitB,QAAST,EAAmBxsB,WAC5BktB,cAAeV,EAAmBxsB,WAClCmtB,aAAcX,EAAmBxsB,WACjCotB,OAAQZ,EAAmBxsB,WAC3BnD,OAAQ2vB,EAAmBxsB,WAC3BqtB,SAAUb,EAAmBxsB,WAC7Bt5C,KAAM8lE,EAAmBxsB,WACzBstB,KAAMd,EAAmBxsB,aAGdutB,EAAoBlwB,IAAU3O,UAAU,CACnD2O,IAAUC,MAAM,CACdkwB,KAAMnwB,IAAU9jC,OAAOymC,aAEzB3C,IAAUC,MAAM,CACd0pB,IAAK3pB,IAAU9jC,OAAOymC,eAEvBA,WAEUytB,EAAmBpwB,IAAUC,MAAM,CAC9CowB,cAAerwB,IAAU9jC,OACzBo0D,QAAStwB,IAAU9jC,SAGRq0D,EAAgBvwB,IAAUC,MAAM,CAC3C0pB,IAAK3pB,IAAU9jC,OAAOymC,WACtBz8C,KAAM85C,IAAU9jC,OAAOymC,aAGZ6tB,EAAmBxwB,IAAUC,MAAM,CAC9C,WAAYD,IAAUI,MAAM,CAAC,wBAC7B,QAASJ,IAAUI,MAAM,CAAC,YAC1Bl6C,KAAM85C,IAAU9jC,OAAOymC,WACvBvQ,YAAa4N,IAAU9jC,OAAOymC,WAC9BgnB,IAAK3pB,IAAU9jC,OAAOymC,WACtB8tB,OAAQzwB,IAAU9jC,OAAOymC,WACzB+tB,SAAU1wB,IAAUS,QAAQT,IAAU9jC,QAAQymC,WAC9CguB,QAAS3wB,IAAUC,MAAM,CACvB,QAASD,IAAUI,MAAM,CAAC,iBAC1BupB,IAAK3pB,IAAU9jC,OAAOymC,WACtBz8C,KAAM85C,IAAU9jC,OAAOymC,WACvBiuB,aAAc5wB,IAAUC,MAAM,CAC5B,QAASD,IAAUI,MAAM,CAAC,iBAC1BywB,YAAa7wB,IAAU9jC,OACvB40D,UAAW9wB,IAAU9jC,OACrB60D,MAAO/wB,IAAU9jC,WAElBymC,WACHquB,sBAAuBhxB,IAAUC,MAAM,CACrC,QAASD,IAAUI,MAAM,CAAC,gBAC1Bl6C,KAAM85C,IAAU9jC,OAAOymC,aAEzBsuB,aAAcjxB,IAAUS,QACtBT,IAAUC,MAAM,CACd,QAASD,IAAUI,MAAM,CAAC,iBAC1B8wB,eAAgBlxB,IAAU9jC,OAAOymC,WACjCwuB,WAAYnxB,IAAU9jC,OAAOymC,cAIjCyuB,iBAAkBpxB,IAAU9jC,OAAOymC,WAEnC0uB,gBAAiBrxB,IAAUC,MAAM,CAC/B,QAASD,IAAUI,MAAM,CAAC,UAC1BkxB,IAAKtxB,IAAUC,MAAM,CACnB,QAASD,IAAUI,MAAM,CAAC,aAC1BmxB,IAAKvxB,IAAU9jC,OAAOymC,iBAKf6uB,EAAkBxxB,IAAU3O,UAAU,CACjD2O,IAAU9jC,OACV8jC,IAAUS,QACRT,IAAUC,MAAM,CACd/5C,KAAM85C,IAAU9jC,OAAOymC,WACvBgnB,IAAK3pB,IAAU9jC,OACfirD,SAAUnnB,IAAU9jC,a,6FAvFbizD,E,6HAEAC,E,wHAkBAc,E,4HASAE,E,2HAKAG,E,wHAKAC,E,2HA0CAgB,E,0HAWE,G,6mBCnGfzlE,EAAOiD,QAAU,EAAQ,M,imBCOnBmuB,EAAO,CAAH,4FAKGs0C,EAAiB,CAAH,4EAIdC,EAAuB,CAAH,wFAIpBC,EAAkB,CAAH,0GAMfC,EAAkB3zD,YAC3Bkf,EADwB,yCAKf00C,EAAmB,CAAH,mFAIhBC,EAAoB,CAAH,iFAIjBC,EAAmB,CAAH,+EAIhBC,EAAqB/zD,YAC9Bkf,EAD2B,4CAKlB80C,EAAsB,CAAH,sFAInBC,EAAuB,CAAH,uFAIpBC,EAAsB,CAAH,sF,6FAjD1Bh1C,E,oHAKOs0C,E,8HAIAC,E,oIAIAC,E,+HAMAC,E,+HAKAC,E,gIAIAC,E,iIAIAC,E,gIAIAC,E,kIAKAC,E,mIAIAC,E,oIAIAC,E,w4DCvCAC,EAAU9c,wBAAc,IAE/B+c,EAAgB,SAAC,GAAuC,IAArCzwD,EAAqC,EAArCA,MAAO6tD,EAA8B,EAA9BA,IAAK3pE,EAAyB,EAAzBA,SAAa0X,EAAY,OACtD80D,EAAaC,cAGnB,OAFAC,YAAO/C,EAAK7tD,EAAM6tD,KAGhB,YAAC2C,EAAQ/0D,SAAT,CACE9W,MAAK,GACHqb,QACA6tD,MACA6C,cACG90D,IAGJoE,EAAM2tD,WAAa,YAAC,IAAD,OAAoB/xD,GAApB,IAA2BoE,QAAO0wD,gBACrD1wD,EAAM6tD,KAAO,YAAC,IAAD,MACb7tD,EAAMmuD,QAAU,YAAC,IAAD,GAAQpgE,IAAI,UAAZ,OAA8B6N,GAA9B,IAAqCoE,QAAO0wD,iBAC5DxsE,EACA8b,EAAMiuD,eAAiB,YAAC,IAAD,GAAelgE,IAAI,MAAnB,OAAiC6N,GAAjC,IAAwC80D,iBAC/D1wD,EAAMouD,UAAY,YAAC,IAAD,GAAUrgE,IAAI,YAAd,OAAkC6N,GAAlC,IAAyCoE,QAAO0wD,iBAClE1wD,EAAM49B,QAAU,YAAC,IAAD,GAAQ7vC,IAAI,UAAZ,OAA8B6N,GAA9B,IAAqCoE,QAAO0wD,mB,EAnB7DD,E,iEACeE,IACnBC,QAsBFH,EAAcI,YAAc,iBAE5BJ,EAAcjhC,UAAY,CACxBxvB,MAAOwtD,IAAczsB,WACrB8sB,IAAKzvB,IAAU0yB,MAAM,CACnBC,QAAS3yB,IAAU9jC,OAAOymC,WAC1BiwB,QAASzD,IAAmBxsB,WAC5BkwB,UAAW1D,IAAmBxsB,aAEhC78C,SAAUk6C,IAAU3O,UAAU,CAAC2O,IAAUlpC,KAAMkpC,IAAUS,QAAQT,IAAUlpC,QAAQ6rC,YAGrF0vB,EAAchP,aAAe,CAC3BoM,IAAK,CACHkD,QAAS,oBACTC,SAAS,EACTC,WAAW,I,UAIAR,EAAA,O,6FA9CFD,E,sHAEPC,E,wXCnBN,YAEe,gBACb,OAAOx+D,EAAI,YAAmBiR,KAAKC,IAAIlR,KAASA,EAAE,GAAK0O,M,6BCGzDxW,EAAOiD,QAJP,SAAuBg4C,GACrB,OAAiB,IAAVA,IAAyB,IAAVA,GAAwB,KAATA,I,qRCO1B8rB,EAAU,SAAC,GAAD,IAAGtoB,EAAH,EAAGA,KAAMzsC,EAAT,EAASA,MAAT,OACrB,mBAAKpG,UAAWF,IAAW,YAAD,qBAA4B+yC,GAA5B,qBAAkDzsC,OAG9E+0D,EAAQ1hC,UAAY,CAClBoZ,KAAMxK,IAAUI,MAAM,CAAC,QAAS,SAAU,UAC1CriC,MAAOiiC,IAAUI,MAAM,CAAC,QAAS,UAGnC0yB,EAAQzP,aAAe,CACrB7Y,KAAM,QACNzsC,MAAO,QAGT+0D,EAAQL,YAAc,W,UACPK,EAAA,O,6FAfFA,E,oWCDN,SAASC,EAAmBl/D,EAAG3J,GACpC,IAAKnC,GAAK8L,EAAI3J,EAAI2J,EAAEm/D,cAAc9oE,EAAI,GAAK2J,EAAEm/D,iBAAiBptE,QAAQ,MAAQ,EAAG,OAAO,KACxF,IAAImC,EAAGkrE,EAAcp/D,EAAE/F,MAAM,EAAG/F,GAIhC,MAAO,CACLkrE,EAAYjrE,OAAS,EAAIirE,EAAY,GAAKA,EAAYnlE,MAAM,GAAKmlE,GAChEp/D,EAAE/F,MAAM/F,EAAI,IAjBjB,kCAAe,gBACb,OAAO+c,KAAKC,IAAIlR,EAAIiR,KAAK6W,MAAM9nB,KAAO,KAChCA,EAAEq/D,eAAe,MAAM1gE,QAAQ,KAAM,IACrCqB,EAAEoE,SAAS,M,sJC0BJ,M,MAAA,IA1Bf,SAAwBF,EAAKo7D,GAC3B,IAEE,IAAIC,EAASnoE,SAASooE,eALG,mCAOzB,IAAKD,EAAQ,CACX,IAAIE,EAAMroE,SAASsoE,gBAAgB,6BAA8B,OACjED,EAAIH,MAAMxhC,MAAQ,IAClB2hC,EAAIH,MAAMvhC,OAAS,IACnB0hC,EAAIH,MAAMK,SAAW,WACrBF,EAAIH,MAAMxiC,IAAM,QAChB2iC,EAAIH,MAAMtiC,KAAO,SACjBuiC,EAASnoE,SAASsoE,gBAAgB,6BAA8B,SACzDtiE,aAAa,KAfG,mCAgBvBqiE,EAAIhoE,YAAY8nE,GAChBnoE,SAAS09C,KAAKr9C,YAAYgoE,GAK5B,OAFAlvE,OAAOwmC,OAAOwoC,EAAOD,MAAOA,GAC5BC,EAAOK,YAAc17D,EACdq7D,EAAOM,wBACd,MAAOjtE,GACP,OAAO,SAI4B,SAAUsR,EAAKo7D,GACpD,OAAOp7D,EAAM,IAAMtN,KAAK47C,UAAU8sB,MCxBpC,SAASxzD,EAASoD,GAChB,MAAsB,iBAARA,EAGhB,SAAS4wD,EAAcC,GACrB,MACkB,iBAATA,GAAqB3rB,OAAOrgC,SAASgsD,IAC5B,iBAATA,EAII,SAASC,EAAQr2D,GAC9B,IAAIs2D,EAAwBt2D,EAAMu2D,eAC9BA,OAA2C,IAA1BD,EAAmC,MAAQA,EAC5DE,EAAoBx2D,EAAMy2D,WAC1BA,OAAmC,IAAtBD,GAAuCA,EACpDE,EAAQ12D,EAAM02D,MACdviC,EAAQn0B,EAAMm0B,MACdwiC,EAAoB32D,EAAM1D,WAC1BA,OAAmC,IAAtBq6D,EAA+B,MAAQA,EACpDC,EAAmB52D,EAAM62D,UACzBA,OAAiC,IAArBD,EAA8B,SAAWA,EACrDtuE,EAAW0X,EAAM1X,SACjBqtE,EAAQ31D,EAAM21D,MACdmB,EA9BN,SAAuC1sC,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EA8BxR2E,CAA8B3zB,EAAO,CAAC,iBAAkB,aAAc,QAAS,QAAS,aAAc,YAAa,WAAY,UAE3I+2D,EAAeD,EAAUzgE,EACzBA,OAAqB,IAAjB0gE,EAA0B,EAAIA,EAClCC,EAAeF,EAAU//D,EACzBA,OAAqB,IAAjBigE,EAA0B,EAAIA,EAClCC,GAAkBd,EAAc9/D,KAAO8/D,EAAcp/D,GAErDmgE,EAAW,mBAAQ,WAErB,MAAO,CACLC,gBAFsB,MAAZ7uE,EAAmB,GAAKA,EAASmS,WAAW7F,MAAM,uBAEtChG,KAAI,SAAUwoE,GAClC,MAAO,CACLA,KAAMA,EACNC,UAAW,EAAeD,EAAMzB,IAAU,MAG9C2B,WAAY,EAAe,IAAQ3B,IAAU,KAE9C,CAACrtE,EAAUqtE,IACVwB,EAAiBD,EAASC,eAC1BG,EAAaJ,EAASI,WAEtBC,EAAe,mBAAQ,WACzB,OAAIN,EACK,GAIL9iC,GAASsiC,EACJU,EAAe9N,QAAO,SAAUp7D,EAAQglC,GAC7C,IAAImkC,EAAOnkC,EAAKmkC,KACZC,EAAYpkC,EAAKokC,UACjBG,EAAcvpE,EAAOA,EAAOzD,OAAS,GAEzC,GAAIgtE,IAAyB,MAATrjC,GAAiBsiC,IAAee,EAAYrjC,OAAS,GAAKkjC,EAAYC,EAAanjC,GAErGqjC,EAAYC,MAAMpvE,KAAK+uE,GACvBI,EAAYrjC,MAAQqjC,EAAYrjC,OAAS,EACzCqjC,EAAYrjC,OAASkjC,EAAYC,MAC5B,CAEL,IAAII,EAAU,CACZD,MAAO,CAACL,GACRjjC,MAAOkjC,GAETppE,EAAO5F,KAAKqvE,GAGd,OAAOzpE,IACN,IAGE,CAAC,CACNwpE,MAAmB,MAAZnvE,EAAmB,GAAKA,EAASmS,WAAW7F,MAAM,0BAE1D,CAACqiE,EAAgB9iC,EAAOsiC,EAAYnuE,EAAU6uE,EAAgBG,IAC7DK,EAAU,mBAAQ,WAEpB,OADiBV,EAAiB,GAAwB,UAAnBV,EAA6B,IAAc,QAAUM,EAAY,KAA0B,WAAnBN,EAA8B,IAAc,SAAWgB,EAAa/sE,OAAS,GAAK,EAAI,OAAS8R,EAAa,OAASu6D,EAAY,UAAY,IAAc,SAAWU,EAAa/sE,OAAS,GAAK,OAAS8R,EAAa,OAErU,CAAC26D,EAAgBV,EAAgBM,EAAWU,EAAa/sE,OAAQ8R,IAChEg3B,EAAY,mBAAQ,WACtB,IAAIyxB,EAAa,GAEjB,GAAIkS,EACF,MAAO,GAGT,GAAI90D,EAAS9L,IAAM8L,EAASpL,IAAMoL,EAASgyB,IAAUsiC,GAAcc,EAAa/sE,OAAS,EAAG,CAC1F,IAAIotE,EAAYL,EAAa,GAAGpjC,OAAS,EACrC0jC,EAAK1jC,EAAQyjC,EACbE,EAAKD,EACLE,EAAU1hE,EAAIwhE,EAAKxhE,EACnB2hE,EAAUjhE,EAAI+gE,EAAK/gE,EACvBguD,EAAW18D,KAAK,UAAYwvE,EAAK,WAAaC,EAAK,KAAOC,EAAU,KAAOC,EAAU,KAOvF,OAJItB,GACF3R,EAAW18D,KAAK,UAAYquE,EAAQ,KAAOrgE,EAAI,KAAOU,EAAI,KAGrDguD,EAAWv6D,OAAS,EAAIu6D,EAAWj1D,KAAK,KAAO,KACrD,CAACmnE,EAAgB5gE,EAAGU,EAAGo9B,EAAOsiC,EAAYc,EAAcb,IAC3D,MAAO,CACLa,aAAcA,EACdI,QAASA,EACTrkC,UAAWA,GCpHf,SAASP,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAQhT,IAAIm3D,EAAY,CACd50D,SAAU,WAEG,SAAS60D,EAAKl4D,GAC3B,IAAIm4D,EAAYn4D,EAAMo4D,GAClBA,OAAmB,IAAdD,EAAuB,EAAIA,EAChCE,EAAYr4D,EAAMs4D,GAClBA,OAAmB,IAAdD,EAAuB,EAAIA,EAChCE,EAAoBv4D,EAAMspC,WAC1BA,OAAmC,IAAtBivB,EAA+B,QAAUA,EACtDhlC,EAAWvzB,EAAMuzB,SACjBilC,EAAex4D,EAAMw4D,aAGrB7B,GAFiB32D,EAAMu2D,eACfv2D,EAAM02D,MACM12D,EAAM1D,YAC1BA,OAAmC,IAAtBq6D,EAA+B,MAAQA,EAKpDG,GAJoB92D,EAAMy2D,WAEdz2D,EAAM62D,UACV72D,EAAMm0B,MAzBpB,SAAuC/J,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EA0BxR,CAA8BhvB,EAAO,CAAC,KAAM,KAAM,aAAc,WAAY,eAAgB,iBAAkB,QAAS,aAAc,aAAc,YAAa,WAE5K+2D,EAAeD,EAAUzgE,EACzBA,OAAqB,IAAjB0gE,EAA0B,EAAIA,EAClC70B,EAAW40B,EAAU50B,SAErBu2B,EAAWpC,EAAQr2D,GACnBu3D,EAAekB,EAASlB,aACxBI,EAAUc,EAASd,QACnBrkC,EAAYmlC,EAASnlC,UAEzB,OAAoB,IAAM5lC,cAAc,MAAO,CAC7CuS,IAAKszB,EACLl9B,EAAG+hE,EACHrhE,EAAGuhE,EACHp2B,SAAUA,EACVyzB,MAAOsC,GACNV,EAAa/sE,OAAS,EAAiB,IAAMkD,cAAc,OAAQqlC,EAAS,CAC7E9yB,IAAKu4D,EACLllC,UAAWA,GACVwjC,EAAW,CACZxtB,WAAYA,IACViuB,EAAa3oE,KAAI,SAAU8J,EAAMwwB,GACnC,OAAoB,IAAMx7B,cAAc,QAAS,CAC/CyE,IAAK+2B,EACL7yB,EAAGA,EACHiiE,GAAc,IAAVpvC,EAAcyuC,EAAUr7D,GAC3B5D,EAAK++D,MAAM3nE,KAAK,UACf,M,YCxDR,SAAS,IAA2Q,OAA9P,EAAWlJ,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAQjS,SAAS43D,EAAMzlC,GAC5B,IAAIgR,EAAYhR,EAAKgR,UACjB00B,EAAa1lC,EAAK0lC,WAClBzhC,EAAcjE,EAAKiE,YACnBqN,EAAgBtR,EAAKsR,cACrBC,EAAgBvR,EAAKuR,cACrBo0B,EAAoB3lC,EAAKyR,eACzBm0B,EAAkB5lC,EAAK0R,WACvBA,OAAiC,IAApBk0B,EAA6B,OAASA,EACnDj0B,EAAgB3R,EAAK2R,cACrBk0B,EAAQ7lC,EAAK6lC,MACbx7D,EAAc21B,EAAK31B,YACnBy7D,EAAgB9lC,EAAK8lC,cACzB,OAAOD,EAAMlqE,KAAI,SAAUoqE,GACzB,IAAIC,EAEAlwE,EAAQiwE,EAAMjwE,MACdmgC,EAAQ8vC,EAAM9vC,MACd7jB,EAAO2zD,EAAM3zD,KACbD,EAAK4zD,EAAM5zD,GACX8zD,EAAiBF,EAAME,eACvBx0B,EAAuE,OAArDu0B,EAAwBL,EAAkB1vC,IAAkB+vC,EAAwB,GACtGE,EAAoB7xD,KAAKI,IAAI,GAAuC,iBAA5Bg9B,EAAexC,UAAyBwC,EAAexC,UAAY,GAC3Gk3B,EAAah0D,EAAGrO,GAAK4hE,GAAczhC,IAAgB,IAAY/D,IAAMgmC,EAAoB,GAC7F,OAAoB,IAAMzrE,cAAcslC,EAAA,EAAO,CAC7C7gC,IAAK,aAAepJ,EAAQ,IAAMmgC,EAClC/uB,UAAW,IAAG,iBAAkBoqC,GAChCjR,UAAWsR,IACTX,GAA0B,IAAMv2C,cAAci/D,EAAA,EAAM,EAAS,CAC/DtnD,KAAMA,EACND,GAAIA,EACJk/B,OAAQK,EACRrnC,YAAaA,EACb+7D,cAAe,UACdN,IAAiBv0B,EAAgBA,EAAc,EAAS,GAAIE,EAAgB,CAC7EruC,EAAG+O,EAAG/O,EACNU,EAAGqiE,EACHF,eAAgBA,KACC,IAAMxrE,cAAcwqE,EAAM,EAAS,CACpD7hE,EAAG+O,EAAG/O,EACNU,EAAGqiE,GACF10B,GAAiBw0B,OCjDxB,SAAS,IAA2Q,OAA9P,EAAWtyE,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAShT,IAAIw4D,EAAmB,CACrBhwB,WAAY,SACZiwB,WAAY,QACZr3B,SAAU,GACVlO,KAAM,QAEO,SAASwlC,EAAavmC,GACnC,IAAIwmC,EAAgBxmC,EAAKwmC,cACrB11B,EAAoB9Q,EAAK8Q,kBACzB21B,EAAczmC,EAAKymC,YACnB11B,EAAe/Q,EAAK+Q,aACpBC,EAAYhR,EAAKgR,UACjB00B,EAAa1lC,EAAK0lC,WAClBgB,EAAa1mC,EAAKmE,MAClBA,OAAuB,IAAfuiC,EAAwB,GAAKA,EACrCx1B,EAAiBlR,EAAKkR,eACtBy1B,EAAmB3mC,EAAKsF,YACxBA,OAAmC,IAArBqhC,EAA8B,GAAKA,EACjDC,EAAkB5mC,EAAKqG,WACvBA,OAAiC,IAApBugC,EAA6BP,EAAmBO,EAC7DC,EAAmB7mC,EAAKiE,YACxBA,OAAmC,IAArB4iC,EAA8B,IAAYtlC,OAASslC,EACjEjiC,EAAQ5E,EAAK4E,MACbkiC,EAAc9mC,EAAKqR,OACnBA,OAAyB,IAAhBy1B,EAAyB,OAASA,EAC3C78D,EAAkB+1B,EAAK/1B,gBACvB88D,EAAmB/mC,EAAK31B,YACxBA,OAAmC,IAArB08D,EAA8B,EAAIA,EAChDz1B,EAAgBtR,EAAKsR,cACrBC,EAAgBvR,EAAKuR,cACrBu0B,EAAgB9lC,EAAK8lC,cACrBkB,EAAsBhnC,EAAKyR,eAC3BA,OAAyC,IAAxBu1B,EAAiC,WACpD,OAAO,GAILA,EACAC,EAAkBjnC,EAAKkP,WACvBA,OAAiC,IAApB+3B,EAA6B,EAAIA,EAC9CrB,EAAkB5lC,EAAK0R,WACvBA,OAAiC,IAApBk0B,EAA6B,OAASA,EACnDj0B,EAAgB3R,EAAK2R,cACrBk0B,EAAQ7lC,EAAK6lC,MACbqB,EAAsBlnC,EAAKmnC,eAC3BA,OAAyC,IAAxBD,EAAiCzB,EAAQyB,EAE1DvB,EAAoBE,EAAMlqE,KAAI,SAAUoqE,GAC1C,IAAIjwE,EAAQiwE,EAAMjwE,MACdmgC,EAAQ8vC,EAAM9vC,MAClB,OAAOwb,EAAe37C,EAAOmgC,EAAO4vC,MAElCuB,EAAuB/yD,KAAKI,IAAIpc,MAAMgc,KAAM,CAAC,IAAInY,OAAOypE,EAAkBhqE,KAAI,SAAUoR,GAC1F,MAAiC,iBAAnBA,EAAMkiC,SAAwBliC,EAAMkiC,SAAW,OAE/D,OAAoB,IAAMx0C,cAAc,IAAM4sE,SAAU,KAAMF,EAAe,CAC3En2B,UAAWA,EACX00B,WAAYA,EACZzhC,YAAaA,EACbW,MAAOA,EACP0M,cAAeA,EACfC,cAAeA,EACfE,eAAgBk0B,EAChBj0B,WAAYA,EACZC,cAAeA,EACfk0B,MAAOA,EACPx7D,YAAaA,EACby7D,cAAeA,KACZ/0B,GAA6B,IAAMt2C,cAAci/D,EAAA,EAAM,CAC1DxyD,UAAW,IAAG,iBAAkB4pC,GAChC1+B,KAAMo0D,EACNr0D,GAAIs0D,EACJp1B,OAAQA,EACRhnC,YAAaA,EACbJ,gBAAiBA,IACfk6B,GAAsB,IAAM1pC,cAAcwqE,EAAM,EAAS,CAC3D/9D,UAAW,IAAG,kBAAmBgqC,ICpFtB,SAA2BlR,GACxC,IAOI58B,EACAU,EACAu8B,EATAiF,EAActF,EAAKsF,YACnBe,EAAarG,EAAKqG,WAClBpC,EAAcjE,EAAKiE,YACnB+Q,EAAQhV,EAAKgV,MACbkxB,EAAoBlmC,EAAKkmC,kBACzBh3B,EAAalP,EAAKkP,WAClB5jB,EAAO2Y,IAAgB,IAAY7D,MAAQ6D,IAAgB,IAAY/D,KAAO,EAAI,EAKtF,GAAI+D,IAAgB,IAAY/D,KAAO+D,IAAgB,IAAY1C,OAAQ,CACzE,IAAI+lC,EAAgBrjC,IAAgB,IAAY1C,QAAyC,iBAAxB8E,EAAW4I,SAAwB5I,EAAW4I,SAAW,EAC1H7rC,GAAKo0C,OAAOxC,EAAM,IAAMwC,OAAOxC,EAAMA,EAAMz9C,OAAS,KAAO,EAC3DuM,EAAIwnB,GAAQ4jB,EAAa5J,EAAc4gC,EAAoBoB,QAE3DlkE,EAAIkoB,IAASksB,OAAOxC,EAAM,IAAMwC,OAAOxC,EAAMA,EAAMz9C,OAAS,KAAO,GACnEuM,IAAMorC,EAAa5J,GACnBjF,EAAY,UAAmB,GAAP/U,EAAY,IAGtC,MAAO,CACLloB,EAAGA,EACHU,EAAGA,EACHu8B,UAAWA,GD4DVknC,CAAkB,CACnBjiC,YAAaA,EACbe,WAAYA,EACZpC,YAAaA,EACb+Q,MAAOpQ,EAAMoQ,QACbkxB,kBAAmBkB,EACnBl4B,WAAYA,IACV7I,GAAalC,IE7FJ,SAAS,EAAS/gC,GAC/B,OAAY,MAALA,OAAY,EAASA,EAAEoE,W,aCAjB,SAASggE,EAAYxnC,EAAM0lC,GACxC,IAAItiE,EAAI48B,EAAK58B,EACTU,EAAIk8B,EAAKl8B,EACb,OAAO,IAAI2jE,EAAA,EAAM/B,EAAa,CAC5BtiE,EAAGA,EACHU,EAAGA,GACD,CACFV,EAAGU,EACHA,EAAGV,ICPP,SAAS,IAA2Q,OAA9P,EAAWzP,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAajS,SAAS65D,EAAK1nC,GAC3B,IAAI2nC,EAAgB3nC,EAAK3qC,SACrBA,OAA6B,IAAlBsyE,EAA2BpB,EAAeoB,EACrD92B,EAAgB7Q,EAAK6Q,cACrB+2B,EAAoB5nC,EAAK+Q,aACzBA,OAAqC,IAAtB62B,GAAuCA,EACtDC,EAAiB7nC,EAAKgR,UACtBA,OAA+B,IAAnB62B,GAAoCA,EAChDC,EAAgB9nC,EAAKiR,SACrBA,OAA6B,IAAlB62B,GAAmCA,EAC9C3nC,EAAYH,EAAKI,KACjBA,OAAqB,IAAdD,EAAuB,EAAIA,EAClC4nC,EAAgB/nC,EAAKmR,SACrBA,OAA6B,IAAlB42B,EAA2B,GAAKA,EAC3ClB,EAAmB7mC,EAAKiE,YACxBA,OAAmC,IAArB4iC,EAA8B,IAAYtlC,OAASslC,EACjEmB,EAAoBhoC,EAAKoR,aACzBA,OAAqC,IAAtB42B,EAA+B,EAAIA,EAClDpjC,EAAQ5E,EAAK4E,MACb4M,EAAaxR,EAAKwR,WAClBy1B,EAAkBjnC,EAAKkP,WACvBA,OAAiC,IAApB+3B,EAA6B,EAAIA,EAC9Cr1B,EAAa5R,EAAK4R,WAClB3R,EAAWD,EAAKE,IAChBA,OAAmB,IAAbD,EAAsB,EAAIA,EAChCM,EApCN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAoCxR,CAA8BiE,EAAM,CAAC,WAAY,gBAAiB,eAAgB,YAAa,WAAY,OAAQ,WAAY,cAAe,eAAgB,QAAS,aAAc,aAAc,aAAc,QAE7NtwB,EAAuB,MAAd8hC,EAAqBA,ECrCrB,SAA0B5M,GAKvC,MAAI,eAHIA,IAIG4M,aAGJ,ED4BwCy2B,CAAiBrjC,GAC5DsjC,EAASjkC,IAAgB,IAAY7D,KACrC+nC,EAAQlkC,IAAgB,IAAY/D,IACpCwlC,EAAayC,GAASlkC,IAAgB,IAAY1C,OAClD6mC,EE3CS,SAAyBxjC,EAAOq5B,QAC/B,IAAVA,IACFA,EAAQ,UAIV,IAAI1+D,EAAIqlC,EAGR,GAAc,UAAVq5B,GAAqB,cAAe1+D,EAAG,CACzC,IAAI4rB,EAAS5rB,EAAE8oE,YAGf,MAFc,WAAVpK,IAAoB9yC,GAAU,GAC9B5rB,EAAE2rB,UAASC,EAAS9W,KAAK6W,MAAMC,IAC5B,SAAU1sB,GACf,IAAI6pE,EAAc/oE,EAAEd,GACpB,MAA8B,iBAAhB6pE,EAA2BA,EAAcn9C,EAASm9C,GAIpE,OAAO1jC,EFwBY2jC,CAAgB3jC,GAC/B4jC,EAAWN,GAAUC,GAAS,EAAI,EAClCnzB,EAAQpQ,EAAMoQ,QACdwxB,EAAgBgB,EAAY,CAC9BpkE,EAAGo0C,OAAOxC,EAAM,IAAM,GAAM5D,EAC5BttC,EAAG,GACF4hE,GACCe,EAAce,EAAY,CAC5BpkE,EAAGo0C,OAAOxC,EAAMA,EAAMz9C,OAAS,IAAM,GAAM65C,EAC3CttC,EAAG,GACF4hE,GACC+C,GAAoC,MAAd72B,EAAqBA,EGzDlC,SAAkBhN,EAAOuM,GAKtC,IAAI5xC,EAAIqlC,EAER,MAAI,UAAWrlC,EACNA,EAAEsmE,MAAM10B,GAGV5xC,EAAEg8C,SAAS1tB,QAAO,SAAUiqB,EAAG7hB,EAAO5mB,GAC3C,OAAmB,MAAZ8hC,GAAoB9hC,EAAI9X,QAAU45C,GAAYlb,EAAQ5hB,KAAK6W,OAAO7b,EAAI9X,OAAS,GAAK45C,IAAc,KH6C/Cu3B,CAAS9jC,EAAOuM,IAAWtjB,QAAO,SAAU/3B,GACtG,OAAQm7C,GAAsB,IAAVn7C,GAAyB,MAAVA,KAClC6F,KAAI,SAAU7F,EAAOmgC,GACtB,MAAO,CACLngC,MAAOA,EACPmgC,MAAOA,MAGP4vC,EAAQ4C,EAAmB9sE,KAAI,SAAUoqE,GAC3C,IAAIjwE,EAAQiwE,EAAMjwE,MACdmgC,EAAQ8vC,EAAM9vC,MACdqyC,EIpEO,SAAsBh2D,GACnC,IAAoB,mBAARA,GAAqC,iBAARA,GAAsBA,IAAQ,YAAaA,EAAK,CACvF,IAAIwuB,EAAMxuB,EAAI9C,UACd,GAAmB,iBAARsxB,EAAkB,OAAOA,EAGtC,OAAOxuB,EJ8Daq2D,CAAaP,EAAatyE,IAC5C,MAAO,CACLA,MAAOA,EACPmgC,MAAOA,EACP7jB,KAAMo1D,EAAY,CAChBpkE,EAAGklE,EACHxkE,EAAG,GACF4hE,GACHvzD,GAAIq1D,EAAY,CACdpkE,EAAGklE,EACHxkE,EAAGorC,EAAas5B,GACf9C,GACHO,eAAgBv2D,EAAO5Z,EAAOmgC,EAAOwyC,OAGzC,OAAoB,IAAMhuE,cAAcslC,EAAA,EAAO,CAC7C74B,UAAW,IAAG,YAAa2pC,GAC3B3Q,IAAKA,EACLE,KAAMA,GACL/qC,EAAS,EAAS,GAAIkrC,EAAW,CAClCimC,cAAeA,EACfC,YAAaA,EACb11B,aAAcA,EACdC,UAAWA,EACXC,SAAUA,EACVy0B,WAAYA,EACZv0B,SAAUA,EACVlN,YAAaA,EACbmN,aAAcA,EACdxM,MAAOA,EACP4M,WAAY9hC,EACZw/B,WAAYA,EACZk5B,aAAcA,EACdI,SAAUA,EACV3C,MAAOA,Q,qRK5FL+C,EAAO,SAAC,GAAsD,IAApD1hE,EAAoD,EAApDA,UAAW2hE,EAAyC,EAAzCA,SAAUC,EAA+B,EAA/BA,UAAW5nC,EAAoB,EAApBA,MAAOC,EAAa,EAAbA,OAC/C4nC,EAAWD,EAAU/mE,QAAQ,IAAK,IACxC,OACE,iBACEmF,UAAWF,IAAWE,EAAW,UACjCw7D,MAAO,CACLsG,gBAAiB,2EAAF,OAA6EH,EAA7E,mCAAgHE,EAAhH,eAA+HA,EAA/H,iBACf7nC,QACAC,aAMRynC,EAAKjoC,UAAY,CACfz5B,UAAWqoC,IAAU9jC,OACrBo9D,SAAUt5B,IAAU9jC,OAAOymC,WAC3B42B,UAAWv5B,IAAU9jC,OACrBy1B,MAAOqO,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACxD01B,OAAQoO,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,UAG3Dm9D,EAAKhW,aAAe,CAClB1rD,UAAW,KACX4hE,UAAW,UACX5nC,MAAO,GACPC,OAAQ,I,UAGKynC,EAAA,O,6FA7BTA,E,2VCVN,+CACe,SAASK,EAAerkC,GAErC,MAAI,iBAAkBA,EACb,OAGL,YAAaA,EACR,QAGL,cAAeA,EACV,WAGL,SAAUA,EACL,MAGL,aAAcA,EACY,KAArBA,EAAMs5B,WAAqB,OAAS,MAGzC,aAAct5B,EACT,SAGL,UAAWA,EAETA,EAAMihC,QAAQ,aAAcz2D,KACvB,YAAWw1B,GAAS,MAAQ,OAG9B,SAGL,SAAUA,EACL,WAGL,iBAAkBA,EACb,YAGF,Y,6BC5CT,+EAAS9E,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAMjS,SAASq7D,EAAOlpC,GAC7B,IAAI94B,EAAY84B,EAAK94B,UACjBo5B,EAAWN,EAAKM,SAChBC,EAPN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAOxR2E,CAA8BV,EAAM,CAAC,YAAa,aAElE,OAAoB,IAAMvlC,cAAc,SAAUqlC,EAAS,CACzD9yB,IAAKszB,EACLp5B,UAAW,IAAG,cAAeA,IAC5Bq5B,M,8BCZL,IAAI1oC,EAAS,EAAQ,KAmCrByD,EAAOiD,QA/BP,SAAuBD,EAAM22C,EAAOk0B,EAAQC,GAC1C,IAEIC,EAFAj0B,EAAM92C,EAAK/G,OACX+xE,EAAa,EAWjB,GAPEr0B,EADEA,EAAQ,GACDA,EAAQG,EAAM,EAAIA,EAAMH,EAEzBA,EAAQG,EAAMA,EAAMH,EAG9Bk0B,EAASA,EAAS,EAAIA,EAAS,EAE3BC,EAAM7xE,OAAS,KACjB8xE,EAAajjE,MAAMgM,KAAKg3D,IACbG,QAAQt0B,EAAOk0B,GAC1BtxE,EAAOQ,MAAMiG,EAAM+qE,QAKnB,IAFIF,GAAQtxE,EAAOQ,MAAMiG,EAAM,CAAC22C,EAAOk0B,IAEhCG,EAAaF,EAAM7xE,SACxB8xE,EAAaD,EAAM/rE,MAAMisE,EAAYA,EAAa,MACvCC,QAAQt0B,EAAO,GAC1Bp9C,EAAOQ,MAAMiG,EAAM+qE,GACnBC,GAAc,IACdr0B,GAAS,M,6BC1Bf35C,EAAOiD,QAJP,SAAmCg4C,GACjC,OAAOA,EAAO,GAAc,KAATA,I,6BCDrB,IAAIizB,EAAe,EAAQ,IAU3BluE,EAAOiD,QARP,SAAoBqa,GAClB,OAEA,SAAe29B,GACb,OAAO39B,EAAMrW,KAAKinE,EAAajzB,O,6BCPnC,IAAIkzB,EAAkB,EAAQ,KAC1BC,EAAe,EAAQ,KACvBC,EAAkB,EAAQ,KA0F9B,SAAS1tC,EAAOnmC,EAAO8zE,GACtB,OAAIA,EAAK3tC,OACD2tC,EAAKh6D,OAAS65D,EAAgB3zE,GAASomC,mBAAmBpmC,GAG3DA,EAiBR,SAAS+zE,EAAQviE,GAChB,IAAIwiE,EAAaxiE,EAAInS,QAAQ,KAC7B,OAAoB,IAAhB20E,EACI,GAEDxiE,EAAIjK,MAAMysE,EAAa,GAG/B,SAAS7vE,EAAMqN,EAAKsiE,GAGnB,IAAIG,EAnFL,SAA8BH,GAC7B,IAAI5uE,EAEJ,OAAQ4uE,EAAKI,aACZ,IAAK,QACJ,OAAO,SAAU9qE,EAAKpJ,EAAOm0E,GAC5BjvE,EAAS,aAAawR,KAAKtN,GAE3BA,EAAMA,EAAI6C,QAAQ,WAAY,IAEzB/G,QAKoB3D,IAArB4yE,EAAY/qE,KACf+qE,EAAY/qE,GAAO,IAGpB+qE,EAAY/qE,GAAKlE,EAAO,IAAMlF,GAR7Bm0E,EAAY/qE,GAAOpJ,GAWtB,IAAK,UACJ,OAAO,SAAUoJ,EAAKpJ,EAAOm0E,GAC5BjvE,EAAS,UAAUwR,KAAKtN,GACxBA,EAAMA,EAAI6C,QAAQ,QAAS,IAEtB/G,OAG2B3D,IAArB4yE,EAAY/qE,GAKvB+qE,EAAY/qE,GAAO,GAAGhD,OAAO+tE,EAAY/qE,GAAMpJ,GAJ9Cm0E,EAAY/qE,GAAO,CAACpJ,GAHpBm0E,EAAY/qE,GAAOpJ,GAUtB,QACC,OAAO,SAAUoJ,EAAKpJ,EAAOm0E,QACH5yE,IAArB4yE,EAAY/qE,GAKhB+qE,EAAY/qE,GAAO,GAAGhD,OAAO+tE,EAAY/qE,GAAMpJ,GAJ9Cm0E,EAAY/qE,GAAOpJ,IA0CPo0E,CAFhBN,EAAOF,EAAa,CAACM,YAAa,QAASJ,IAMvCp9C,EAAM74B,OAAOsL,OAAO,MAExB,MAAmB,iBAARqI,EACHklB,GAGRllB,EAAMA,EAAI5F,OAAOK,QAAQ,SAAU,MAMnCuF,EAAI3F,MAAM,KAAKnE,SAAQ,SAAU2sE,GAChC,IAAIz+C,EAAQy+C,EAAMpoE,QAAQ,MAAO,KAAKJ,MAAM,KAGxCzC,EAAMwsB,EAAM8K,QACZlkB,EAAMoZ,EAAMn0B,OAAS,EAAIm0B,EAAM7uB,KAAK,UAAOxF,EAI/Cib,OAAcjb,IAARib,EAAoB,KAAOq3D,EAAgBr3D,GAEjDy3D,EAAUJ,EAAgBzqE,GAAMoT,EAAKka,MAG/B74B,OAAO4J,KAAKivB,GAAKjR,OAAO66C,QAAO,SAAUp7D,EAAQkE,GACvD,IAAIoT,EAAMka,EAAIttB,GAQd,OAPI2/B,QAAQvsB,IAAuB,iBAARA,IAAqBlM,MAAMsF,QAAQ4G,GAE7DtX,EAAOkE,GA3DV,SAASkrE,EAAWx7D,GACnB,OAAIxI,MAAMsF,QAAQkD,GACVA,EAAM2M,OACc,iBAAV3M,EACVw7D,EAAWz2E,OAAO4J,KAAKqR,IAAQ2M,MAAK,SAAUnf,EAAGC,GACvD,OAAOm7C,OAAOp7C,GAAKo7C,OAAOn7C,MACxBV,KAAI,SAAUuD,GAChB,OAAO0P,EAAM1P,MAIR0P,EAgDSw7D,CAAW93D,GAEzBtX,EAAOkE,GAAOoT,EAGRtX,IACLrH,OAAOsL,OAAO,QA3BTutB,EA8BTjuB,EAAQsrE,QAAUA,EAClBtrE,EAAQtE,MAAQA,EAEhBsE,EAAQq3C,UAAY,SAAUpqC,EAAKo+D,IAShB,KAFlBA,EAAOF,EANQ,CACdztC,QAAQ,EACRrsB,QAAQ,EACRo6D,YAAa,QAGgBJ,IAErBruD,OACRquD,EAAKruD,KAAO,cAGb,IAAIwuD,EApLL,SAA+BH,GAC9B,OAAQA,EAAKI,aACZ,IAAK,QACJ,OAAO,SAAU9qE,EAAKpJ,EAAOmgC,GAC5B,OAAiB,OAAVngC,EAAiB,CACvBmmC,EAAO/8B,EAAK0qE,GACZ,IACA3zC,EACA,KACCp5B,KAAK,IAAM,CACZo/B,EAAO/8B,EAAK0qE,GACZ,IACA3tC,EAAOhG,EAAO2zC,GACd,KACA3tC,EAAOnmC,EAAO8zE,IACb/sE,KAAK,KAGT,IAAK,UACJ,OAAO,SAAUqC,EAAKpJ,GACrB,OAAiB,OAAVA,EAAiBmmC,EAAO/8B,EAAK0qE,GAAQ,CAC3C3tC,EAAO/8B,EAAK0qE,GACZ,MACA3tC,EAAOnmC,EAAO8zE,IACb/sE,KAAK,KAGT,QACC,OAAO,SAAUqC,EAAKpJ,GACrB,OAAiB,OAAVA,EAAiBmmC,EAAO/8B,EAAK0qE,GAAQ,CAC3C3tC,EAAO/8B,EAAK0qE,GACZ,IACA3tC,EAAOnmC,EAAO8zE,IACb/sE,KAAK,MAmJMwtE,CAAsBT,GAEtC,OAAOp+D,EAAM7X,OAAO4J,KAAKiO,GAAK+P,KAAKquD,EAAKruD,MAAM5f,KAAI,SAAUuD,GAC3D,IAAIoT,EAAM9G,EAAItM,GAEd,QAAY7H,IAARib,EACH,MAAO,GAGR,GAAY,OAARA,EACH,OAAO2pB,EAAO/8B,EAAK0qE,GAGpB,GAAIxjE,MAAMsF,QAAQ4G,GAAM,CACvB,IAAItX,EAAS,GAUb,OARAsX,EAAIjV,QAAQG,SAAQ,SAAU8sE,QAChBjzE,IAATizE,GAIJtvE,EAAO5F,KAAK20E,EAAU7qE,EAAKorE,EAAMtvE,EAAOzD,YAGlCyD,EAAO6B,KAAK,KAGpB,OAAOo/B,EAAO/8B,EAAK0qE,GAAQ,IAAM3tC,EAAO3pB,EAAKs3D,MAC3C/7C,QAAO,SAAUzqB,GACnB,OAAOA,EAAE7L,OAAS,KAChBsF,KAAK,KAAO,IAGhB0B,EAAQgsE,SAAW,SAAUjjE,EAAKsiE,GACjC,MAAO,CACN1Q,IAAK5xD,EAAI3F,MAAM,KAAK,IAAM,GAC1Bw0D,MAAOl8D,EAAM4vE,EAAQviE,GAAMsiE,M,gnGC5MvBY,EAAQ,SAAC,GAyCT,IAxCJ9oC,EAwCI,EAxCJA,WACArsC,EAuCI,EAvCJA,SACAssC,EAsCI,EAtCJA,YACW8oC,EAqCP,EArCJ5oC,UACAG,EAoCI,EApCJA,gBAEAZ,EAkCI,EAlCJA,OACAF,EAiCI,EAjCJA,MACAC,EAgCI,EAhCJA,OACAE,EA+BI,EA/BJA,QAEAtlC,EA6BI,EA7BJA,KAEAsmC,EA2BI,EA3BJA,SACAc,EA0BI,EA1BJA,SACAb,EAyBI,EAzBJA,iBACAC,EAwBI,EAxBJA,mBACAa,EAuBI,EAvBJA,qBACAZ,EAsBI,EAtBJA,iBACA8N,EAqBI,EArBJA,qBACAjN,EAoBI,EApBJA,MACAZ,EAmBI,EAnBJA,cACAC,EAkBI,EAlBJA,gBACAY,EAiBI,EAjBJA,kBACAX,EAgBI,EAhBJA,cACA6N,EAeI,EAfJA,kBAEA5N,EAaI,EAbJA,UACAzL,EAYI,EAZJA,OACA0L,EAWI,EAXJA,eACAC,EAUI,EAVJA,iBACA4nC,EASI,EATJA,kBACA3nC,EAQI,EARJA,eACAnB,EAOI,EAPJA,iBACAE,EAMI,EANJA,WACAC,EAKI,EALJA,WAEAkO,EAGI,EAHJA,aACAhO,EAEI,EAFJA,iBACGl1B,EACC,OACJ,GAAmF49D,cAA3EC,GAAR,GAAQA,YAAaC,GAArB,GAAqBA,YAAaC,GAAlC,GAAkCA,WAAYC,GAA9C,GAA8CA,YAAgBC,GAA9D,QACA,KAA2CC,sBACzC,SAACC,EAAgBC,GAAjB,cACKD,GACAC,KAEL9pC,GALF,GAAO+pC,GAAP,MAAqBC,GAArB,MAQA,OACE,8BACE,YAAC,IAAD,MACG,YAA4B,IAAlBC,EAAkB,EAAzBpqC,MAEF,EAaI2N,YAAoB3N,GAASoqC,EAAa,CAC5Cx8B,QAAShN,EACTiN,QAAShN,IAdDwpC,EADV,EACEpqC,OACQqqC,EAFV,EAEEpqC,OACgBqqC,EAHlB,EAGE5oC,eACkB6oC,EAJpB,EAIE5oC,iBACAoM,EALF,EAKEA,WACkBy8B,EANpB,EAMErpC,iBACoBspC,EAPtB,EAOErpC,mBACkBspC,EARpB,EAQErpC,iBACespC,GATjB,EASErpC,cACiBspC,GAVnB,EAUErpC,gBACespC,GAXjB,EAWErpC,cACOspC,GAZT,EAYE/qC,MAOIgrC,GAAWhrC,GAAS+qC,GACpBE,GAAYhrC,GAAUoqC,EACtBa,GAAahrC,GAAUoqC,EAGvBa,GAAuBxpC,GAAkB4oC,EACzCa,GAAyBxpC,GAAoB4oC,EAC7Ca,GAAyBjqC,GAAoBqpC,EAC7Ca,GAA2BjqC,GAAsBqpC,EACjDa,GAAyBjqC,GAAoBqpC,EAC7Ca,GAAsBjqC,GAAiBqpC,GACvCa,GAAwBjqC,GAAmBqpC,GAC3Ca,GAAsBjqC,GAAiBqpC,GAGvCa,GAAczB,GACd1yB,GACJwzB,IACCE,GAAWhsC,KAAOysC,GAAYzsC,OAC9BgsC,GAAW9qC,MAAQurC,GAAYvrC,OAC5BiX,GACJ4zB,IACCC,GAAWlsC,IAAM2sC,GAAY3sC,MAC7BksC,GAAW7qC,OAASsrC,GAAYtrC,QAEnC,OACE,YAAC,IAAY30B,SAAb,CACE9W,MAAK,KACHgvD,WAAYonB,GACZnnB,YAAaonB,GACbjrC,MAAOwX,GACPvX,OAAQoX,GACRnX,OAAQgrC,GACR/qC,QAAS+pC,GACTl8B,aACAnzC,OACAipD,cAAe,eAACmmB,EAAD,uDAAc,GAAd,OAAqBE,GAAmBF,KACpDH,IAVA,IAWH8B,cAAelC,KAAgBA,GAAYhyE,MAAQgyE,GAAYnhC,WAC/DsjC,YAAanC,IAAeA,GAAYhyE,KACxCo0E,WAAYpC,IAAeA,GAAYoC,cAGzC,qBACEC,kBAAA,wBAAkClxE,EAAlC,4CAA0EA,EAA1E,qBACAyR,IAAK0/D,IACL5G,WAAW,uBACXnlC,OAAQgrC,GACRgB,KAAK,MACLC,QAAO,cAASlB,GAAT,YAAqBC,IAC5BjrC,MAAOgrC,IAEFn/D,GAIH60B,GACE,0BAIJ,qBAAO3oC,GAAE,wBAAmB8C,EAAnB,uBACNunC,EAAoB+L,YAAchM,GAASA,GAG9C,oBAAMpqC,GAAE,wBAAmB8C,EAAnB,sBAA6C4lC,GAEpDD,GACC,oBACE2rC,UAAQ,mBACRtsC,KAAMW,EACNP,OAAQgrC,GACRgB,KAAK,eACLjsC,MAAOgrC,GACP9oE,EAAE,IACFU,EAAE,OAIJg+B,GACA,YAAC,IAAD,CACEX,OAAQgrC,GACR/qC,OAAQgrC,GACR/pC,SAAUA,EACVc,SAAUA,EACVb,iBAAkBiqC,GAClBhqC,mBAAoBiqC,GACpBppC,qBAAsBA,EACtBZ,iBAAkBiqC,GAClBn8B,qBAAsBA,EACtBjN,MAAOA,EACPZ,cAAeiqC,GACfhqC,gBAAiBiqC,GACjBrpC,kBAAmBA,EACnBX,cAAeiqC,GACfp8B,kBAAmBA,EACnBz0C,KAAMA,EACNmlC,MAAOgrC,KAIX,YAAC,IAAD,CACEhlE,UAAU,aACVimE,KAAK,eACL9sC,UAAS,oBAAe+rC,GAAWhsC,KAAOysC,GAAYzsC,KAA7C,aACPgsC,GAAWlsC,IAAM2sC,GAAY3sC,IADtB,MAIRotC,WAAS3xE,IAAItG,GAAU,SAACyI,GACvB,OAAKyvE,yBAAezvE,GAIb0vE,uBAAa1vE,EAAO,CACzBojC,MAAOwX,GACPvX,OAAQoX,GACRnX,OAAQgrC,GACR/qC,QAASwrC,GACT9wE,SARO,UAaXgmC,GACA,YAAC,IAAD,CACEa,UAAWA,EACXzB,OAAQgrC,GACR/qC,OAAQgrC,GACRj1C,OAAQA,EACR0L,eAAgBwpC,GAChBvpC,iBAAkBwpC,GAClB5B,kBAAmBA,EACnB3nC,eAAgBA,EAChBhnC,KAAMA,EACNmlC,MAAOgrC,KAIVzB,GACC,YAAC,IAAD,CACEvjE,UAAU,kBACVimE,KAAK,eACL9sC,UAAS,oBAAea,EAAQupC,EAAUvpC,MAAQc,EAAgB5+B,EAAzD,aACP+9B,EAASspC,EAAUtpC,OAASa,EAAgBl+B,EADrC,eAKP2pE,IAAMhzE,cACJgwE,SAUjBM,IAAeH,IAAeA,GAAYrlE,SACzC,YAAC,IAAD,CAEErG,IAAKmV,KAAKq5D,SACVxtC,IAAK4qC,GACL1qC,KAAMyqC,GACN8C,UAAW,EACXC,WAAY,EACZlL,MAAK,OAAOzyB,GAAP,IAAqB49B,cAAe,SAEzCC,QAAQ,OACRC,QAAQ,OACRC,cAAepD,GAAYoD,cAC3BC,WAAYrD,GAAYqD,YAEvBhsC,EAAiB2oC,GAAYrlE,Y,EAxPlCilE,E,qKA0C+EG,QAqNrFH,EAAM7pC,UAAYoP,IAClBy6B,EAAM5X,aAAenxB,I,UAEN+oC,EAAA,O,6FAlQTA,E,gsBCVO0C,EAAc,CAAH,mOAYXgB,EAAyB,CAAH,84BAsFtBC,EAAwB,CAAH,6EAErBC,EAAwB,CAAH,6E,EAEnBlB,G,6FAtGFA,E,0HAYAgB,E,qIAsFAC,E,oIAEAC,E,qyEClGN,SAASC,EAAM/mE,GAA8B,IAAzBgnE,IAAyB,yDAClD,OAAOC,IAAejnE,EAAK,CAAEgnE,mBAAkBE,KAAK,IAG/C,SAASC,EAAY3jD,GAC1B,IAAMlyB,EAAOkyB,aAAiB2C,OAASzzB,KAAKC,MAAM6wB,GAASA,EAC3D,IACE,OAAOoR,mBAAmBliC,KAAK47C,UAAUh9C,EAAM,KAAM,KACrD,MAAO5C,GACP,MAAO,IAIJ,SAAS04E,EAAmB91E,GACjC,IAAM+1E,EAAaF,EAAY71E,GAC/B,GAAI4B,SAAU,CACZ,IAAMo0E,EAAYp0E,SAASq0E,aAAer0E,SAASq0E,aAAe,GAC5DC,EAAM,kDAAH,OAAqDH,EAArD,6BACT,OAAOC,EAAY,EAAIE,EAAM,wBAAUC,mBAAiB,cAAcD,GAGxE,OAAO,KAGF,SAASE,EAAUtP,GACxB,iFAA2EA,EAA3E,cAGK,SAASuP,IAAuB,IAAVH,EAAU,uDAAJ,GACjC,OAAIn7E,OAAOC,UAAUC,eAAeC,KAAKg7E,EAAK,QAAgBE,EAAUF,EAAIpP,MACxE/rE,OAAOC,UAAUC,eAAeC,KAAKg7E,EAAK,OAAeA,EAAI5V,IAC1D,GAKF,I,IAAMgW,EAAiB,SAAC50E,GAC7B,IAAI60E,GAAc,EAWlB,MAAO,CACL70E,QAVqB,IAAIlB,SAAQ,SAACC,EAASC,GAE3CgB,EAAQnE,MACN,SAACmc,GAAD,OAAU68D,EAAc71E,EAAO,CAAE81E,YAAY,IAAU/1E,EAAQiZ,MAC/D,SAACvU,GAAD,OAA0BzE,EAAd61E,EAAqB,CAAEC,YAAY,GAAiBrxE,SAOlEsxE,OAFK,WAGHF,GAAc,KAKPG,EAA6B,WAExC,IAAQC,EAAYC,cAAZD,QACR,GAAIA,EAAS,CACX,IAAME,EAAc,IAAIC,IAAJ,YAAY/7E,OAAOgrC,QAAQ4wC,IAA3B,CAAqC,CAAC,UAAW,YAC/DI,EAAQ,SAACr9D,GAAD,gBAAYklC,OAAOllC,EAAIvQ,QAAQ,KAAM,IAAM,GAA3C,OAER6tE,EAAa,SAACzZ,EAAOpc,GAEzB,IAAM81B,EAAiB,SAACC,GAClBA,EAAInkD,SACNt4B,OAAO4pC,cACL,IAAIC,YAAY,sBAAuB,CACrCF,OAAQ+c,MAMV+1B,EAAMz8E,OAAOgmD,WAAW8c,GAI9B,OAHA2Z,EAAIC,YAAYF,GAChBA,EAAeC,GAER,CAAC3Z,EAAO0Z,IAIjB,OAAO,EAAIJ,GAAa9zE,KAAI,YAAmB,aAAjBo+C,EAAiB,KAAX7Y,EAAW,KAC7C,OAAQ6Y,GACN,IAAK,IACH,OAAO61B,EAAW,eAAD,OACA1uC,EADA,6BAC0ByuC,EAAMF,EAAY75E,IAAI,MADhD,KAEfmkD,GAEJ,IAAK,IACH,OAAO61B,EAAW,eAAD,OACA1uC,EADA,6BAC0ByuC,EAAMF,EAAY75E,IAAI,MADhD,KAEfmkD,GAEJ,IAAK,IACH,OAAO61B,EAAW,eAAD,OACA1uC,EADA,6BAC0ByuC,EAAMF,EAAY75E,IAAI,OADhD,KAEfmkD,GAEJ,IAAK,KACH,OAAO61B,EAAW,eAAD,OAAgB1uC,EAAhB,KAA0B6Y,GAC7C,IAAK,UACL,QACE,OAAO61B,EAAW,eAAD,OAAgBD,EAAMF,EAAY75E,IAAI,MAAtC,KAAgDmkD,OAKzE,MAAM,IAAI7gD,MACR,sFAIS82E,EAA+B,SAACxb,GAC3C,IAAQ+a,EAAYC,cAAZD,QACR,GAAIA,EAAS,CACX,IAAME,EAAc,IAAIC,IAAJ,YAAY/7E,OAAOgrC,QAAQ4wC,IAA3B,CAAqC,CAAC,UAAW,YAC/DI,EAAQ,SAACr9D,GAAD,gBAAYklC,OAAOllC,EAAIvQ,QAAQ,KAAM,IAAM,GAA3C,OAERkuE,EAAc,SAAC9Z,GACnB,MAAqB3B,EAAU0b,MAAK,+BAAe/Z,KAA1Cz5B,EAAT,UACYrpC,OAAOgmD,WAAW8c,GAC1Bga,eAAezzC,IAGrB+yC,EAAYjyE,SAAQ,SAAC0jC,EAAO6Y,GAC1B,OAAQA,GACN,IAAK,IACHk2B,EAAY,eAAD,OACM/uC,EADN,6BACgCyuC,EAAMF,EAAY75E,IAAI,MADtD,MAIX,MACF,IAAK,IACHq6E,EAAY,eAAD,OACM/uC,EADN,6BACgCyuC,EAAMF,EAAY75E,IAAI,MADtD,MAIX,MACF,IAAK,IACHq6E,EAAY,eAAD,OACM/uC,EADN,6BACgCyuC,EAAMF,EAAY75E,IAAI,OADtD,MAIX,MACF,IAAK,KACHq6E,EAAY,eAAD,OAAgB/uC,EAAhB,MACX,MACF,IAAK,UACL,QACE+uC,EAAY,eAAD,OAAgBN,EAAMF,EAAY75E,IAAI,MAAtC,YAYd,SAASw6E,EAAOzxE,GACrB,MAAuB,YAAhB,oBAAO0xE,KAAP,cAAOA,OACV1xE,aAAa0xE,KACb1xE,GACe,WAAb,EAAOA,IACe,iBAAfA,EAAE2xE,UACa,iBAAf3xE,EAAE4xE,SAQV,SAASC,EAAU7xE,GACxB,MAA8B,YAAvB,oBAAO+N,YAAP,cAAOA,cACV/N,aAAa+N,YACb/N,GACe,WAAb,EAAOA,IACD,OAANA,GACe,IAAfA,EAAE2xE,UACoB,iBAAf3xE,EAAE4xE,U,6FAxLDlC,E,8GAIAI,E,oHASAC,E,2HAWAM,E,kHAIAC,E,qHAQHC,E,uHAoBAI,E,mIA0DAU,E,qIAiDGI,E,+GAcAI,E,uPCxLhB,SAASC,IAEP,GAC4C,oBAAnCC,gCAC4C,mBAA5CA,+BAA+BD,SAFxC,CAMI,EAUJ,IAEEC,+BAA+BD,SAASA,GACxC,MAAOp6E,GAGPf,QAAQyI,MAAM1H,KAOhBo6E,GACAn1E,EAAOiD,QAAU,EAAQ,M,yOChCrBoyE,EAAe,SAAfA,IACLC,IAAOC,OACPr2E,SAASm7D,oBAAoB,qBAAsBgb,IAGpDn2E,SAASmiC,iBAAiB,qBAAsBg0C,G,UAEjCC,IAAA,O,6FAPTD,E,klBCWN,SAASn3B,EAAS3sC,EAAMikE,GACvB,IAAIn3E,EACJ,OAAO,WAAW,WACXuS,EAAO2B,UACPkjE,EAAQ,WACbp3E,EAAU,KACVkT,EAAKxU,MAAM,EAAM6T,IAElB8kE,aAAar3E,GACbA,EAAUs3E,WAAWF,EAAOD,IAgB9B,SAASp3B,EAAS7sC,EAAMikE,GACvB,IAAIn3E,EACJ,OAAO,WAAW,WACjB,IAAIA,EAAJ,CAGA,IAAMuS,EAAO2B,UACPkjE,EAAQ,WACbp3E,EAAU,KACVkT,EAAKxU,MAAM,EAAM6T,IAGlBvS,EAAUs3E,WAAWF,EAAOD,M,6FArCrBt3B,E,8FAyBAE,E,mNCtCT,SAASw3B,EAAmBC,EAAK93E,EAASC,EAAQ83E,EAAOC,EAAQnyE,EAAKyL,GACpE,IACE,IAAI2mE,EAAOH,EAAIjyE,GAAKyL,GAChB7U,EAAQw7E,EAAKx7E,MACjB,MAAOiI,GAEP,YADAzE,EAAOyE,GAILuzE,EAAKC,KACPl4E,EAAQvD,GAERsD,QAAQC,QAAQvD,GAAOK,KAAKi7E,EAAOC,GAwBvC/1E,EAAOiD,QApBP,SAA2BzJ,GACzB,OAAO,WACL,IAAI08E,EAAOz5E,KACPmU,EAAO2B,UACX,OAAO,IAAIzU,SAAQ,SAAUC,EAASC,GACpC,IAAI63E,EAAMr8E,EAAGuD,MAAMm5E,EAAMtlE,GAEzB,SAASklE,EAAMt7E,GACbo7E,EAAmBC,EAAK93E,EAASC,EAAQ83E,EAAOC,EAAQ,OAAQv7E,GAGlE,SAASu7E,EAAOh7E,GACd66E,EAAmBC,EAAK93E,EAASC,EAAQ83E,EAAOC,EAAQ,QAASh7E,GAGnE+6E,OAAM/5E,QAMZiE,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,sOCrCzD,CACd0yE,aAAc,SAASnqE,GACtB,OAAOA,EAAIhD,OAAO,GAAGuG,cAAgBvD,EAAIoN,OAAO,IAGjDg9D,WAAY,SAASpqE,GACpB,OAAOA,EAAIhD,OAAO,GAAGsyB,cAAgBtvB,EAAIoN,OAAO,IAGjDi9D,uBAAwB,SAASpsE,EAASnO,GAEzCA,EADkC,WAArBmO,EAAQgrE,SAAwBhrE,EAAQqsE,UAAYrsE,EAAQssE,YAI1EC,mBAAoB,SAAS5Y,EAAK9hE,GACjC,IAAM26E,EAAM,IAAIx4E,eAChBw4E,EAAIr4E,KAAK,MAAOw/D,GAAK,GACrB6Y,EAAIC,OAAS,WACW,IAAnBD,EAAIj4E,aACY,MAAfi4E,EAAIx5E,OACPnB,EAAS26E,EAAI73E,cAEb9C,EAAS,sCAIZ26E,EAAIE,QAAU,SAASj8E,GACtB,MAAM,IAAIkD,MAAM,4CAA8CggE,EAAM,uBAAyBljE,IAG9F+7E,EAAIn4E,KAAK,OAGVs4E,eAAgB,SAAShzE,EAAKpJ,EAAO8zE,GACpC,IAAMuI,EAAYjzE,EAAI/J,QAAQ,KAC9B,IAAmB,IAAfg9E,EACH,IAGCvI,EAAK1qE,GAAOlF,KAAKC,MAAMnE,EAAMiM,QAAQ,MAAO,MAC3C,MAAO/L,GACR4zE,EAAK1qE,GAAOpJ,MAEP,CAEN,IAAMs8E,EAASlzE,EAAIwV,OAAO,EAAGy9D,GAGxBvI,EAAKwI,KACTxI,EAAKwI,GAAU,IAIhBxI,EAAKwI,GAAUr6E,KAAKm6E,eAAehzE,EAAIwV,OAAOy9D,EAAU,GAAIr8E,EAAO8zE,EAAKwI,IAGzE,OAAOxI,GAIRyI,cAAe,SAASr8E,GACvB,IAAMs8E,EAAct8E,EAAEu8E,wBAEhBr6B,EAAO19C,SAAS09C,KAChBs6B,EAAUh4E,SAAS69C,gBAGnBmd,EAAYniE,OAAO4lD,aAAeu5B,EAAQhd,WAAatd,EAAKsd,UAC5DD,EAAaliE,OAAO0lD,aAAey5B,EAAQjd,YAAcrd,EAAKqd,WAG9Dkd,EAAYD,EAAQC,WAAav6B,EAAKu6B,WAAa,EACnDC,EAAaF,EAAQE,YAAcx6B,EAAKw6B,YAAc,EAE5D,MAAO,CAENxxC,MAAOoxC,EAAYpxC,OAASoxC,EAAYhxC,MAAQgxC,EAAYlyC,KAC5De,OAAQmxC,EAAYnxC,QAAUmxC,EAAY/wC,OAAS+wC,EAAYpyC,IAC/DA,IAAKoyC,EAAYpyC,IAAMs1B,EAAYid,EACnCryC,KAAMkyC,EAAYlyC,KAAOm1B,EAAamd,KA/E1B,O,gsBCOFC,EAAiB,CAAH,2FAIdC,EAAgBplE,YACzBmlE,EADsB,6hBAuDbE,EAAmBrlE,YAC5BmlE,EADyB,mgBAsDhBG,EAAkBtlE,YAC3BmlE,EADwB,kgBAsDfI,EAAkBvlE,YAC3BmlE,EADwB,seAkDfK,EAAgB,SAACC,EAAeC,GAAhB,OAC3B1lE,YACIylE,EAFuB,IAGvBC,EAHuB,K,EAMdN,G,6FA/NFD,E,sHAIAC,E,qHAuDAC,E,wHAsDAC,E,uHAsDAC,E,uHAkDAC,E,0WC9Nb,IAAI74C,EAAS,EAAQ,IAMrB7+B,EAAOiD,QAJP,SAAiBc,GACf,OAAO86B,EAAO,GAAI96B,K,6QCOd8zE,EAAQ,SAAU19E,GAAmB,IAAbsd,EAAa,uDAAJ,GAKhCqgE,EAAY,aAGlB,GAAoB,iBAAT39E,GAA8B,KAATA,EAAa,CAC5C,IAAM49E,EAAgB,IAAIn6E,MAAM,0CAKhC,MAJA2jC,YAAU,UAAW,MAAO,CAC3B9+B,MAAOs1E,EAAcC,QACrBhC,KAAM,CAAEh2E,OAAQ,gBAEX+3E,EAsCP,SAASE,EAAW99E,GACnBA,GAAc,IAEd,IACI6B,EACAkmC,EAFEg2C,EAAUngF,OAAOmH,SAASgjC,OAAO77B,MAAM,KAI7C,IAAKrK,EAAI,EAAGA,EAAIk8E,EAAQj8E,OAAQD,GAAQ,EAEvC,GAA6B,KAD7BkmC,EAASg2C,EAAQl8E,GAAGyK,QAAQ,aAAc,KAC/B5M,QAAQM,GAClB,OAAO2mC,YAAOoB,EAAOt7B,UAAUzM,EAAK8B,OAAQimC,EAAOjmC,SAIrD,OAAO,KAGR,SAASk8E,EAAWh+E,EAAMK,EAAO49E,GAChC,IAAIj1E,EACAk1E,EAAU,GAEV93C,YAAG63C,EAAQ,aACdj1E,EAAI,IAAI2Q,MACN4c,QAAQvtB,EAAE+S,UAAYkiE,GACxBC,EAAU,WAAal1E,EAAEm1E,cAAgB,KAG1C,IAAMp2C,EAASvB,YAAOxmC,GAAQ,IAAMwmC,YAAOnmC,GAAS,IAAM69E,EAAU,WAAa5gE,EAAOwoC,OAAS,WAAaxoC,EAAOwoC,OAAS,IAAM,IACpIloD,OAAOmH,SAASgjC,OAASA,EAG1B,SAASq2C,EAAap+E,GACrBg+E,EAAWh+E,EAAM,IAAK,GAnEvBsC,KAAKgb,OAASpf,OAAOwmC,OAAO,GAAIpnB,GAKhChb,KAAKa,KAAO,KAKZb,KAAK+7E,WAAa/7E,KAAKgb,OAAOghE,aAAeh8E,KAAKgb,OAAOghE,aAAe,CAACX,EAAW39E,GAAMoH,KAAK,KAO/F9E,KAAKi8E,QAAU,CACdC,MAAO,eACPC,KAAM,SAAUz+E,GACf,OAAOpC,OAAO8gF,aAAaC,QAAQ3+E,IAEpC4+E,KAAM,SAAU5+E,EAAMK,GACrB,OAAOzC,OAAO8gF,aAAaG,QAAQ7+E,EAAMK,IAE1CqzE,OAAQ,SAAU1zE,GAMjB,OADAo+E,EAAap+E,GACNpC,OAAO8gF,aAAaI,WAAW9+E,KA6CxC,IAAM++E,EAAYz8E,KAAKi8E,QAAQE,KAAKn8E,KAAK+7E,YACzC,GAAIU,EACH,IACCz8E,KAAKa,KAAOoB,KAAKC,MAAMu6E,GACtB,MAAOz2E,GACR8+B,YAAU,UAAW,MAAO,CAC3B9+B,MAAOA,EAAMu1E,QACbh4E,OAAQ,eAETvD,KAAKa,KAAO47E,EAMd,IAAMC,EAAqBlB,EAAWx7E,KAAK+7E,YAC3C,GAAIW,EACH,IACC,GAAwB,aAApB18E,KAAK+7E,WAER/7E,KAAKa,KAAO67E,MACN,CACN,IAAM77E,EAAOoB,KAAKC,MAAMw6E,GACpB18E,KAAKa,KACRjF,OAAOwmC,OAAOpiC,KAAKa,KAAMA,GAEzBb,KAAKa,KAAOA,EAEb,cAAmBjF,OAAO4J,KAAK3E,GAA/B,eAAsC,CAAjC,IAAMnD,EAAI,KACD,aAATA,GACHo+E,EAAap+E,KAIf,MAAOsI,GACR8+B,YAAU,UAAW,MAAO,CAC3B9+B,MAAOA,EAAMu1E,QACbh4E,OAAQ,eAETvD,KAAKa,KAAO47E,EAId,OAAOz8E,MAQRo7E,EAAMv/E,UAAU8gF,KAAO,WACtB,OAAO38E,KAAKa,MASbu6E,EAAMv/E,UAAU+gF,MAAQ,SAAU/7E,GAGjC,IAAI9C,EAEJ,GAHAiC,KAAKa,KAAOA,EAGa,iBAAdb,KAAKa,KACf9C,EAAQiC,KAAKa,SACP,CACN,GAAIgmC,YAAsB7mC,KAAKa,MAAO,CACrC,IAAMg8E,EAAe,mLAGrB56E,KAAK47C,UAAU1X,YAAoBnmC,KAAKa,WAAOvB,EAAW,GAC1D,MAAM,IAAI6B,MAAM07E,GAEjB9+E,EAAQkE,KAAK47C,UAAU79C,KAAKa,MAK7B,OAFAb,KAAKi8E,QAAQK,KAAKt8E,KAAK+7E,WAAYh+E,GAE5BiC,MAQRo7E,EAAMv/E,UAAUmiD,QAAU,WAGzB,OAFAh+C,KAAKa,KAAO,KACZb,KAAKi8E,QAAQ7K,OAAOpxE,KAAK+7E,YAClB/7E,O,4FAzLFo7E,E,4wDCXA0B,EAAqB,yKAS3B,SAASC,IACR,IAAM7mD,EAAa8mD,EAAe,SAIlC,OAHuC,IAAnCphF,OAAO4J,KAAK0wB,GAAY12B,QAC3BjC,QAAQC,KAAKs/E,GAEP5mD,EAUR,SAASuhD,IACR,IAAMC,EAAcsF,EAAe,UAInC,OAHwC,IAApCphF,OAAO4J,KAAKkyE,GAAal4E,QAC5BjC,QAAQC,KAAKs/E,GAEPpF,EASR,SAASsF,EAAehS,GAGvB,IACC,IAAIiS,EAAiB3hF,OAAO4hF,iBAAiBz6E,SAAS69C,gBAAiB,IAAM0qB,GAAUmS,iBAAiB,WAIxG,OADAF,EAAiBA,EAAejzE,QAAQ,KAAM,IAAIA,QAAQ,MAAO,IAAIA,QAAQ,KAAM,IAAIA,QAAQ,KAAM,IAC9F/H,KAAKC,MAAM+6E,GACjB,MAAOh/E,GACR,MAAO,IAWT,SAASm/E,IACR,OAAOL,IAAoBM,OAU5B,SAASC,IACR,OAAOP,IAAoBQ,OAW5B,SAASC,IAER,IAAMC,EAAchG,IAEpB,GAAIgG,EAAY3hF,eAAe,WA0B9B,IAzBA,IAAM07E,EAAUiG,EAAYjG,QACtBE,EAAc,YAChB97E,OAAOgrC,QAAQ4wC,IADC,CAEnB,CAAC,UAAW,WACXh0D,MAAK,SAACnf,EAAGC,GAAJ,OAAUouB,WAAWruB,EAAE,IAAMquB,WAAWpuB,EAAE,OAE3CuzE,EAAa,SAACzZ,EAAOpc,GAE1B,IAAM81B,EAAiB,SAAAC,GAClBA,EAAInkD,SACPt4B,OAAO4pC,cAAc,IAAIC,YAAY,sBAAuB,CAC3DF,OAAQ,CACPo4C,OAAQr7B,OAMN+1B,EAAMz8E,OAAOgmD,WAAW8c,GAC9B2Z,EAAIC,YAAYF,GAChBA,EAAeC,IAKP75C,EAAQ,EAAGA,EAAQw5C,EAAYl4E,OAAQ0+B,IAAS,CACxD,QAAkCw5C,EAAYx5C,GAA9C,GAAOw/C,EAAP,KAAmBC,EAAnB,KAEA,GADez/C,IAAUw5C,EAAYl4E,OAAS,EAE7Cq4E,EAAW,eAAD,OAAgB8F,EAAhB,KAAgCD,OAD3C,CAIA,IAAQE,EAAR,EAA2BlG,EAAYx5C,EAAQ,GAA/C,MACA25C,EAAW,eAAD,OAAgB8F,EAAhB,6BATM,UAAOl+B,OASyCm+B,EAT9B5zE,QAAQ,KAAM,IAAM,GAAtC,MASN,KAA2E0zE,SAGtFngF,QAAQyI,MAAM,+J,UAWD,CACdo3E,mBACAE,mBACA7F,qBACA+F,4BAJc,O,6FAtITV,E,uGASGC,E,sGAeAtF,E,uGAcAuF,E,mGAqBAI,E,qGAWAE,E,qGAYAE,E,0mBC5EIK,EAAkB,CAC7B38E,GAAIs2C,IAAU9jC,OAAOymC,WACrBgnB,IAAK3pB,IAAU9jC,OAAOymC,WACtB2jC,cAAetmC,IAAU9jC,OAAOymC,WAChC4jC,SAAUvmC,IAAU9jC,OAAOymC,WAC3BgtB,QAAS3vB,IAAU9jC,OAAOymC,WAC1B6jC,MAAOxmC,IAAUC,MAAM,CACrB/5C,KAAM85C,IAAU9jC,OAAOymC,WACvBgnB,IAAK3pB,IAAU9jC,OAAOymC,aACrBA,WACH8jC,eAAgBzmC,IAAUC,MAAM,CAC9BymC,KAAM1mC,IAAU9jC,OAChBytD,IAAK3pB,IAAU9jC,SAEjBwzD,UAAW1vB,IAAUC,MAAM,CACzBnM,MAAOkM,IAAU9jC,OACjBk2B,YAAa4N,IAAU9jC,OACvByqE,OAAQ3mC,IAAU9jC,OAClBytD,IAAK3pB,IAAU9jC,SAEjB0zD,QAAS5vB,IAAUS,QACjBT,IAAUC,MAAM,CACd/5C,KAAM85C,IAAU9jC,OAAOymC,WACvBgnB,IAAK3pB,IAAU9jC,UAEjBymC,WACF7O,MAAOkM,IAAU9jC,OACjBk2B,YAAa4N,IAAU9jC,OACvB0qE,YAAa5mC,IAAU9jC,OACvBuzD,IAAKzvB,IAAUC,MAAM,CACnB0yB,QAAS3yB,IAAU9jC,OACnB02D,QAAS5yB,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU9jC,SACxD2qE,aAAc7mC,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU9jC,WAC5DymC,WACHmkC,SAAU9mC,IAAU0C,IACpB9gC,MAAOo+B,IAAUC,MAAM,CACrBovB,KAAMrvB,IAAUM,KAChBgvB,eAAgBtvB,IAAUM,KAC1BivB,UAAWvvB,IAAUM,KACrBkvB,gBAAiBxvB,IAAUM,KAC3BmvB,IAAKzvB,IAAUM,KACfuvB,cAAe7vB,IAAUM,KACzBwvB,aAAc9vB,IAAUM,KACxByvB,OAAQ/vB,IAAUM,KAClBd,OAAQQ,IAAUM,KAClB2vB,KAAMjwB,IAAUM,KAChB0vB,SAAUhwB,IAAUM,OACnBqC,WACHokC,eAAgB/mC,IAAUS,QACxBT,IAAUC,MAAM,CACd+mC,KAAMhnC,IAAUt7B,OAAOi+B,WACvB5zC,KAAMixC,IAAU9jC,OAAOymC,cAG3BskC,UAAWjnC,IAAU9jC,QAGVgrE,EAAsB,CACjCx9E,GAAI,uCACJigE,IAAK,qBACL2c,eAAe,IAAIzmE,MAAO+jB,cAC1B2iD,SAAU,kCACV5W,QACE,wIACF6W,MAAO,CACLtgF,KAAM,cACNyjE,IAAK,QAEP8c,eAAgB,CACdC,KAAM,oBACN/c,IAAK,2CAEP+F,UAAW,CACT57B,MAAO,4CACP1B,YACE,mIACFu0C,OAAQ,YACRhd,IACE,qKAEJiG,QAAS,CACP,CACE1pE,KAAM,aACNyjE,IAAK,YAEP,CACEzjE,KAAM,eAGV4tC,MAAO,GACP1B,YAAa,GACbw0C,YAAa,sBACbnX,IAAK,CACHkD,QAAS,SACTC,SAAS,EACTC,WAAW,GAEbiU,SAAU,GACVllE,MAAO,CACLytD,MAAM,EACNC,gBAAgB,EAChBC,WAAW,EACXC,iBAAiB,EACjBC,KAAK,EACLI,eAAe,EACfC,cAAc,EACdC,QAAQ,EACRvwB,QAAQ,EACRywB,MAAM,EACND,UAAU,GAEZ+W,eAAgB,CACd,CACEC,KAAM,EACNj4E,KAAM,+CAGVk4E,WAAW,IAAIpnE,MAAO+jB,gB,6FArHXyiD,E,8EAyDAa,E,kFA+DE,K,0MC/HA,gBACb,OAAO,WACL,OAAOrzE,K,sTCOEszE,EAAmB,SAAC,GAA+B,IAA7BC,EAA6B,EAA7BA,QAASC,EAAoB,EAApBA,cACpC54E,EAAY64E,uBAChB,SAACC,EAAOC,GACN,IAAMC,EAAkB,SAAAv6C,GACjBq6C,GAAOF,EAAc,CAAE7L,aAAa,IACzC,IAAMkM,EAASF,GAAaG,IAAWz6C,EAAM06C,cAAcC,gBAAiB36C,GAC5Em6C,EAAc,CACZ7L,aAAa,EACbF,YAAaoM,EAAO7zE,EACpB0nE,WAAYmM,EAAOnzE,EACnB8mE,YAAakM,KAGjB,MAAO,CACLO,YAAaL,EACbM,QAASN,EACTO,WAAY,kBAAMX,EAAc,CAAE7L,aAAa,KAC/CyM,OAAQ,kBAAMZ,EAAc,CAAE7L,aAAa,QAG/C,CAAC6L,IAGH,OAAOD,EAAU34E,EAAY,iBAAO,K,EAvBzB04E,E,wHAAAA,E,4GAFE,K,ygBCDTe,EAAuB,SAAC,GAQxB,IAPJrO,EAOI,EAPJA,MACA/O,EAMI,EANJA,SACAqd,EAKI,EALJA,gBACAx2C,EAII,EAJJA,MACAmC,EAGI,EAHJA,MACAs0C,EAEI,EAFJA,aACAC,EACI,EADJA,YAEA,EAA8BC,oBAAS,GAAvC,WAAOC,EAAP,KAAgBC,EAAhB,KAEAC,qBAAU,WACR,IAAIC,EAOJ,OANIH,GAAWF,EAAc,IAC3BK,EAAQhH,YAAW,WACjB8G,GAAW,GACXL,EAAgBI,KACfF,IAEE,kBAAM5G,aAAaiH,MACzB,CAACH,IAEJ,IAAMI,EAAmB,kCAAH,OACnBP,EAAyD,GAA1C,yCAGlB,OACE,mBAAKzwE,UAAU,yBAAyBw7D,MAAO,CAAExhC,UAC9CmC,GAAS,mBAAKn8B,UAAU,iCAAiCm8B,GAC1D,mBAAKn8B,UAAWgxE,GACb9O,EAAMztE,KAAI,gBAAG7F,EAAH,EAAGA,MAAOqiF,EAAV,EAAUA,QAAV,OACT,YAAC,IAAD,CACEl/E,GAAInD,EACJykE,KAAG,EACHF,SAAUvkE,IAAUukE,EACpB/sD,MAAM,OACNpO,IAAKpJ,EACLsiF,QAAS,WACHR,EAAc,GAAKvd,IAAavkE,EAClCiiF,EAAWjiF,GAEX4hF,EAAgB5hF,KAInBqiF,EACAL,IAAYhiF,GACX,mBAAKoR,UAAU,mCACb,YAAC,IAAD,CAAS6yC,KAAK,kB,EAhDxB09B,E,uDA0DNA,EAAqB92C,UAAY,CAC/ByoC,MAAO75B,IAAUS,QACfT,IAAUC,MAAM,CACd15C,MAAOy5C,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUt7B,SACxDkkE,QAAS5oC,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUt7B,YAE5Di+B,WACFmoB,SAAU9qB,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUt7B,SAASi+B,WACpEwlC,gBAAiBnoC,IAAU1iC,KAAKqlC,WAChChR,MAAOqO,IAAU9jC,OACjB43B,MAAOkM,IAAU9jC,OACjBksE,aAAcpoC,IAAUM,KACxB+nC,YAAaroC,IAAUt7B,QAGzBwjE,EAAqB7kB,aAAe,CAClC+kB,cAAc,EACdC,YAAa,K,UAGAH,EAAA,O,6FA9ETA,E,0zCCNAY,EAAgB,SAAApC,GAAI,OAAIA,EAAKprE,cAAclJ,MAAM,MAE1C22E,EAAmB,SAAAC,GAAW,OAAIA,EAAY1tE,cAAc9I,QAAQ,MAAO,KAE3Ey2E,EAAY,SAACC,EAAYF,GACpC,OAAOE,EAAWvI,MAAK,YAA+B,IAA5BiI,EAA4B,EAA5BA,QAASO,EAAmB,EAAnBA,aAC3BC,EAAiBL,EAAiBH,GAClCS,EAAsBF,EAAeA,EAAa/8E,KAAI,SAAAS,GAAC,OAAIk8E,EAAiBl8E,MAAM,GAClFy8E,EAAqBP,EAAiBC,GAC5C,OACEI,IAAmBE,GAAsBD,EAAoBv7C,SAASw7C,OAM/DC,EAAiB,SAAChjF,EAAO2iF,GACpC,IAAMM,EAAajjF,EAAM4L,OAAOmJ,cAC1BmuE,EAAcD,EAAWxhF,OACzB0hF,EAAkBF,EAAWp3E,MAAM,KAIzC,OAAIq3E,EADuB,EAElB,GAIUP,EAAW98E,KAAI,YAAgD,IAA7Cw8E,EAA6C,EAA7CA,QAAS3T,EAAoC,EAApCA,MAAO0U,EAA6B,EAA7BA,iBAAqBz6E,EAAQ,SAK1E06E,EAHW,CAAC3U,GAAJ,WAAc0U,IAGDv9E,KAAI,SAAAwG,GAE7B,IAAMi3E,EAASj3E,EAAEi0D,QAAO,SAACijB,EAAKlV,GAG5B,IAAMr5D,EAAQmuE,EAAgB/I,MAC5B,SAAAoJ,GAAc,OAAInV,EAAKt5D,cAAcxN,MAAM,EAAGi8E,EAAe/hF,UAAY+hF,KAE3E,oBACKD,GADL,CAEE,CAEEE,YAAazuE,EAAQA,EAAMvT,OAAS,EAEpCiiF,WAAYrV,EAAK5sE,OAEjBkiF,QAAS3uE,EAAQA,EAAMvT,OAAS4sE,EAAK5sE,OAAS,OAGjD,IAGGmiF,EAAmBN,EAAOhjB,QAAO,SAACijB,EAAD,UAA0BA,EAA1B,EAAQE,cAAqC,GAE9EI,EAAcP,EAAOhjB,QAAO,SAACijB,EAAD,UAAyBA,EAAzB,EAAQG,aAAmC,GAE7E,MAAO,CACLE,mBACAE,qBAAsBF,EAAmB,EAAIA,EAAmBC,EAAc,MAI5EE,EAAexlE,KAAKI,IAAL,MAAAJ,KAAI,IAAQ8kE,EAAUx9E,KAAI,SAAA4D,GAAC,OAAIA,EAAEm6E,sBAChDI,EAAyBzlE,KAAKI,IAAL,MAAAJ,KAAI,IAAQ8kE,EAAUx9E,KAAI,SAAA4D,GAAC,OAAIA,EAAEq6E,0BAEhE,YACEzB,WACG15E,GAFL,IAGEoqB,MAAOgxD,EACPE,QAASD,OAMVjsD,QAAO,SAAApvB,GAAC,OAAIA,EAAEoqB,OAxDU,GAwDmC,IAAdpqB,EAAEs7E,WAC/Cx+D,MAAK,SAACnf,EAAGC,GAAJ,OAAUA,EAAEwsB,MAAQzsB,EAAEysB,UAGnBmxD,EAAiB,SAACC,EAAUC,EAAaC,GAAxB,OAC5BF,EAASt+E,KAAI,SAAAy+E,GACX,IAAMC,EAAaH,EAAY78C,SAAS+8C,EAAKjC,SACvCmC,EAAeH,EAAc98C,SAAS+8C,EAAKtkF,OACjD,cACKskF,GADL,IAEE3f,UAAW4f,EACXhgB,SAAUigB,EACV9V,MAAO6T,EAAc+B,EAAKjC,SAC1Be,kBAAmBkB,EAAK1B,cAAgB,IAAI/8E,KAAI,SAAA4+E,GAAG,OAAIlC,EAAckC,YAIrEC,EAA+B,SACnCC,EADmC,GAGhC,IADDC,EACC,EADDA,WAAY93D,EACX,EADWA,OAAQ+3D,EACnB,EADmBA,QAASC,EAC5B,EAD4BA,WAEzBC,EAAiBH,EAAa,QAAU,gBACxCI,EAAa,GAAH,OAAMl4D,GAAN,OAAe+3D,EAAU,cAAgB,IACnDI,EAA0B,IAAfH,EAAmB,QAAUA,EAE9C,wBACEH,EAAuBljF,OAAS,EAAI,YAAc,SADpD,2BAEmBwjF,EAFnB,YAE+BF,EAF/B,YAEiDC,EAFjD,oBAKWE,EAAuB,SAACb,EAAeD,EAAah/E,GAC/D,IAAMu/E,EAAyBN,EAC5BtsD,QAAO,gBAAGsqD,EAAH,EAAGA,QAAH,OAAkB+B,EAAY78C,SAAS86C,MAC9Cx8E,KAAI,qBAAGw8E,WACJ8C,EAA6BR,EAAuBrkB,QACxD,SAACijB,EAAK6B,EAAM5jF,EAAG+X,GAAf,gBAA0BgqE,GAA1B,OAAgC/hF,EAAI,EAAKA,IAAM+X,EAAI9X,OAAS,EAAI,QAAU,KAAQ,IAAlF,OAAuF2jF,KACvF,IAGIC,EAA0BX,EAA6BC,EAAwBv/E,GAQrF,OANEu/E,EAAuBljF,OAAS,EAAhC,UACO0jF,EADP,YAEMR,EAAuBljF,OAAS,EAAI,KAAO,OAFjD,iDAG6C4jF,EAH7C,8BAII,M,EAKO,CAAE3C,YAAWH,gBAAeS,iBAAgBkB,mB,6FAhIrD3B,E,2FAEOC,E,8FAEAE,E,uFAYAM,E,4FAkEAkB,E,4FAaPQ,E,0GAaOQ,E,6TC5Gb,mBAGIp8D,EAAM,YACRpH,GAAQA,EAAKylC,SAAS,EAAG,EAAG,EAAG,GAC/B,CAACzlC,EAAMu9B,IAASv9B,EAAK6/B,QAAQ7/B,EAAKsP,UAAYiuB,GAC9C,CAACE,EAAOG,KAASA,EAAMH,GAASG,EAAIjpB,oBAAsB8oB,EAAM9oB,qBAAuB,KAAkB,IACzG3U,GAAQA,EAAKsP,UAAY,GAGZ,MACGlI,EAAIo2B,O,qZCJhBtoB,EAAO,CAAH,4FAKG0uD,EAAsB5tE,YAC/Bkf,EAD4B,+DAMnB2uD,EAAmB7tE,YAC5Bkf,EADyB,0CAKhB4uD,EAAoB,CAAH,iFAIjBC,EAAqB,CAAH,mFAIlBC,EAAoB,CAAH,kF,6FAxBxB9uD,E,oHAKO0uD,E,mIAMAC,E,gIAKAC,E,iIAIAC,E,kIAIAC,E,uQC7Bb,IAAIrhD,EAASxmC,OAAOwmC,OAEpB7+B,EAAOiD,QAAU47B,G,+iCCWXshD,EAAkB,SAAC,GAcnB,IAbJ7iF,EAaI,EAbJA,KACA8sC,EAYI,EAZJA,UACAE,EAWI,EAXJA,UACAsV,EAUI,EAVJA,MACAzV,EASI,EATJA,OACAE,EAQI,EARJA,OACA4D,EAOI,EAPJA,mBACAmyC,EAMI,EANJA,UACAC,EAKI,EALJA,UACOC,EAIH,EAJJ16C,MACQ26C,EAGJ,EAHJ16C,OACA92B,EAEI,EAFJA,YACAqoC,EACI,EADJA,QAEA,EAA0BopC,qBAAWl3B,KAA7B1jB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,OAEfsE,EAAO2W,WAAW,CAAC,EAAGw/B,GAAa16C,IACnCyE,EAAOyW,WAAW,CAACy/B,GAAc16C,EAAQ,IAEzC,IAAM46C,EAAYJ,GAAc,SAAC7E,GAAD,OAAWrxC,EAAOqxC,EAAMpxC,KAClDs2C,EACJN,GACC,SAAC5E,GAAD,OACCnxC,EAAO4D,EAAqBA,EAAmButC,EAAMlxC,IAAckxC,EAAMlxC,KAE7E,OACE,YAAC,IAAD,CACE8M,QAASA,EACT95C,KAAMA,EACNwK,EAAG,SAAC0zE,GAAD,OAAWA,GAASiF,EAAUjF,IACjChzE,EAAG,SAACgzE,GAAD,OAAWA,GAASkF,EAAUlF,IACjCzlC,OAAQ6J,EACR7wC,YAAaA,EACb+7D,cAAc,SACd6V,eAAe,W,EAnCfR,E,iCAyCN,IAAM/hB,EAAO,SAAC,GAAD,IAAG9gE,EAAH,EAAGA,KAAMmjF,EAAT,EAASA,UAAWC,EAApB,EAAoBA,UAAW9gC,EAA/B,EAA+BA,MAAO7wC,EAAtC,EAAsCA,YAAaqoC,EAAnD,EAAmDA,QAAnD,OACX,YAAC,IAAD,CACEA,QAASA,EACT95C,KAAMA,EACNwK,EAAG,SAAC0zE,GAAD,OAAWA,GAASiF,EAAUjF,IACjChzE,EAAG,SAACgzE,GAAD,OAAWA,GAASkF,EAAUlF,IACjCzlC,OAAQ6J,EACR7wC,YAAaA,EACb+7D,cAAc,SACd6V,eAAe,WAKbC,EAAQ,SAAC,GAcT,IAbJh7C,EAaI,EAbJA,MACAC,EAYI,EAZJA,OACAyR,EAWI,EAXJA,YACAh6C,EAUI,EAVJA,KACA6sC,EASI,EATJA,OACAC,EAQI,EARJA,UACAC,EAOI,EAPJA,OACA4D,EAMI,EANJA,mBACA1D,EAKI,EALJA,WACAx7B,EAII,EAJJA,YACAqoC,EAGI,EAHJA,QACA7L,EAEI,EAFJA,4BACAC,EACI,EADJA,4BAEArB,EAAO2W,WAAW,CAAC,EAAGlb,IACtByE,EAAOyW,WAAW,CAACjb,EAAQ,IAE3B,IAAM46C,EAAY,SAACjF,GAAD,OAAWrxC,EAAOqxC,EAAMpxC,KAEpCs2C,EAAY,SAACp2C,GAAD,OAAe,SAACkxC,GAAD,OAC/BnxC,EAAO4D,EAAqBA,EAAmButC,EAAMlxC,IAAckxC,EAAMlxC,MAE3E,OAAOgN,EAAYj3C,KAAI,SAAC8tC,GAAD,OACrB,YAAC,IAAD,CAAOvqC,IAAG,iBAAYuqC,IACnB5C,EAA8B,GAC7B,YAAC6yB,EAAD,CACEx4B,MAAOA,EACPC,OAAQA,EACRvoC,KAAMA,EAAKi1B,QAAO,SAACpvB,GAAD,OAAO2wC,YAAgB3wC,EAAEgrC,OAC3CsyC,UAAWA,EACXC,UAAWA,EAAUvyC,GACrByR,MAAOpU,EACPz8B,YAAaw8B,EACb6L,QAASA,IAGb,YAACgnB,EAAD,CACEx4B,MAAOA,EACPC,OAAQA,EACRvoC,KAAMA,EAAKi1B,QAAO,SAACpvB,GAAD,OAAO2wC,YAAgB3wC,EAAEgrC,OAC3CsyC,UAAWA,EACXC,UAAWA,EAAUvyC,GACrByR,MAAOrV,EAAW4D,GAClBp/B,YAAaA,EACbqoC,QAASA,SAMXypC,EAAgB1O,IAAM2O,KAC1BF,GACA,SAACG,EAAWC,GAAZ,OAA0BtiF,KAAK47C,UAAUymC,KAAeriF,KAAK47C,UAAU0mC,MAGnEC,EAAmB,SAAC,GASpB,IARJ3jF,EAQI,EARJA,KACOgjF,EAOH,EAPJ16C,MACQ26C,EAMJ,EANJ16C,OACA2R,EAKI,EALJA,sBACA/L,EAII,EAJJA,uBACAC,EAGI,EAHJA,uBACAH,EAEI,EAFJA,4BACG95B,EACC,OACJ,EAAyC+uE,qBAAWl3B,KAA5C1jB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,OAAQ2rC,EAAvB,EAAuBA,cAEjB0P,EAAkB,CACtBC,WAAYxT,YAAel8D,EAAM44B,QACjC+2C,aAAc3vE,EAAM44B,OAAO4V,SAC3BohC,YAAa5vE,EAAM44B,OAAOqP,QAC1B5L,WAAY6/B,YAAel8D,EAAM04B,QACjCm3C,aAAc7vE,EAAM04B,OAAO8V,SAC3BshC,YAAa9vE,EAAM04B,OAAOuP,SAG5B,OACE,YAAC,IAAD,KACE,YAACmnC,EAAD,KACMpvE,EADN,CAEEnU,KAAMA,EACNsoC,MAAO06C,GAAa16C,EACpBC,OAAQ06C,GAAc16C,GAElBq7C,EANN,CAOE31C,4BAA6BiM,EAAwB,EAAIjM,KAE3D,YAACs1C,EAAD,KACMpvE,EADN,CAEEnU,KAAMA,EACNsoC,MAAO06C,GAAa16C,EACpBC,OAAQ06C,GAAc16C,GAElBq7C,EANN,CAOEnyE,YAAa08B,EACblB,WAAYmB,EACZ4L,YAAaE,EAAwB,CAACg6B,GAAiB,GACvDjmC,4BAA6BA,O,EA1C/B01C,E,gDAgDNd,EAAgB96C,UAAY8R,IAC5BgpC,EAAgB7oB,aAAejsB,IAC/B41C,EAAiB57C,UAAYgS,IAC7B4pC,EAAiB3pB,aAAehsB,I,sGAlK1B60C,E,uHAyCA/hB,E,4GAcAwiB,E,6GAmDAC,E,qHAKAI,E,wHAsDS,K,wmCClLTO,EAAmB,SACvBC,GAKG,IAJHC,EAIG,uDAJgB,YACnBh0C,EAGG,uDAHa,IAChBi0C,EAEG,uDAFO,GACVC,EACG,uDADK,GAEFC,EAAuBJ,EAAsBphF,KAAI,SAAA8C,GAAC,YAAUA,MAE5D2+E,EAAgC,SAAhCA,EAAgCC,GAAc,OAClDA,EAAe7/E,SAAQ,SAAAs3C,GACrB,IAAMwoC,EAAYxoC,EAAGkoC,GACfO,EAASzoC,EAAG9L,GAElBq0C,EAAe7/E,SAAQ,SAAAggF,GACrB,IAAMC,EAAYD,EAAGR,GACfU,EAASF,EAAGx0C,GAIZ20C,EAAaJ,EAASG,EAItBE,EAAgBN,EAAYG,EAElC,GAAI3oC,IAAO0oC,GAAMnpE,KAAKC,IAAIspE,IAAkBX,EAAS,CACnD,IACMY,GADOF,EAAa,GAAK,EAAI,GACbT,EAEtBpoC,EAAGkoC,IAAqBM,EAAYO,EACpCL,EAAGR,IAAqBS,EAAYI,EAEpCT,EACEC,WAYV,OAFAD,EAA8BD,GAEvBA,GAGHW,EAAsB,SAACllF,EAAMg6C,EAAalN,EAAWE,EAAW+N,GA0BpE,OAxByBf,EAAYwjB,QAAO,SAACijB,EAAK0E,GAChD,IAAMC,EAAa,IAAIplF,GAAM2iB,MAAK,SAACnf,EAAGC,GAAJ,OAAUD,EAAEspC,GAAarpC,EAAEqpC,MAEvDu4C,EADoB,IAAID,GAAYpiC,UACPs0B,MAAK,SAAAzxE,GAAC,OAAI2wC,YAAgB3wC,EAAEs/E,OAEzDG,EAAyBF,EAAW9N,MACxC,SAAAzxE,GAAC,OAAI2wC,YAAgB3wC,EAAEs/E,KAAYt/E,EAAEs/E,GAAUpqC,KAGjD,cACK0lC,GADL,UAGG0E,EAAS,CACR,CACE36E,EAAG66E,EAASv4C,GACZ5hC,EAAGm6E,EAASF,GACZI,mBAAoBD,GAA0BA,EAAuBx4C,GACrEvB,MAAO45C,EACP7iC,MAAO6iC,QAIZ,M,6FAzECjB,E,sGAiDAgB,E,yGA8BS,K,wcC9EX1pB,EACAgqB,E,qFASJ,SAASvN,EAAK/6E,EAAOuoF,GACpB,IAAMC,EAAoB,CACzBtK,QAAS,SACTv+E,KAAM,WACNs+E,aAAc,WACdj+E,MAAO,KAGPylD,OAAQmb,SAAS6nB,SAASzzE,MAAM,sBAAwB,SAAW,MAE/DuzE,IACJC,EAAkB/iC,OAAS8iC,GAI5B,IAAIplF,GADJmlF,EAAQ,IAAIjL,IAAMmL,EAAkB7oF,KAAM6oF,IAC3B5J,OAMf,OAJKz7E,IACJA,EAAKnD,GAGC0oF,EAAQvlF,GAShB,SAASulF,EAAQvlF,GAShB,OARAm7D,EAASn7D,KAGRm7D,EAASd,eAGV8qB,EAAMzJ,MAAMvgB,GAELA,EAQR,SAASre,IACRqoC,EAAMroC,UAQP,SAAS98C,IACR,OAAOm7D,G,6FAnEJA,E,mHACAgqB,E,kHASKvN,E,iHA8BA2N,E,oHAiBAzoC,E,oHASA98C,E,6vCC9DHwlF,EAAiB,CAErBC,OAAQ,OACR,oBAAqB,OACrB,cAAe,OACf,iBAAkB,OAGlB,sBAAuB,KACvBC,YAAa,KACbC,QAAS,KACT,eAAgB,KAChBC,SAAU,KACV,kBAAmB,KACnBC,MAAO,KACP,YAAa,KACb,gBAAiB,KACjB,iBAAkB,KAClB,gBAAiB,KACjBC,OAAQ,KACR,eAAgB,IAChBC,QAAS,KACT,cAAe,KACfC,QAAS,KACTC,QAAS,KACTC,UAAW,KACXC,MAAO,KACP,aAAc,MAIVC,EAAmC,CACvC39D,GAAI,IACJ49D,GAAI,GACJC,GAAI,KACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GAEAC,EAA+B,CACnCC,GAAI,EACJC,GAAI,IAGAC,EAAe,CACnBC,oBAAqB,OACrBC,iBAAkB,KAClBC,kBAAmB,KACnBC,gBAAiB,KACjBC,oBAAqB,IAEjBC,EAAe,CACnB/2E,WAAY,EACZg3E,cAAe,MACfpxC,SAAU,EACVw0B,MAAO,EACP6C,WAAY,IAGRga,EAAkB,SAAA7c,GAAK,OAAKA,EAAQpvD,KAAK4mD,GAAM,KAE/CslB,EAA4B,SAAAja,GAChC,IAAMka,EAAYla,EAAW3kE,MAAM,KAAK,GAAGI,QAAQ,OAAQ,IAC3D,OAAO08E,EAAe+B,IAAcV,EAAaC,qBAG7CU,EAAgB,SAAAxK,GACpB,OAAO7vE,MAAMsF,QAAQuqE,GAAQA,EAAOA,EAAKzuE,WAAW7F,MAAM,gBAGtD++E,EAAqB,SAACC,EAAUC,EAAend,GACnD,IAAMod,EAAgBP,EAAgB7c,GACtC,OACEpvD,KAAKC,IAAID,KAAK4nD,IAAI4kB,GAAiBF,GAAYtsE,KAAKC,IAAID,KAAK6nD,IAAI2kB,GAAiBD,IAUzEE,EAAwB,SAACvpF,EAAQ03C,GAC5C,IAAM8xC,EAAYxpF,EAAOuT,MAAM,cAAc,GACvChV,EAAQyB,EAAOuT,MAAM,YAW3B,OATIu0E,EAAiCxrF,eAAektF,GACzCjrF,EAAQupF,EAAiC0B,GACzCpB,EAA6B9rF,eAAektF,IAElD9xC,EAAWn5C,EAAQm5C,EAAWn5C,EAAQsqF,EAAanxC,UACpD0wC,EAA6BoB,GAEtBjrF,GAKPkrF,EAAiB,SAACC,EAAYhrD,GAClC,IAAMirD,EAAY96E,MAAMsF,QAAQu1E,GAAcA,EAAWhrD,GAASgrD,EAC5Dve,EAAQv8C,IAAS,GAAI+6D,EAAWd,GACtC,OAAOjmD,IAAO,GAAIuoC,EAAO,CACvBye,kBAAmBze,EAAMye,mBAAqBZ,EAA0B7d,EAAM4D,YAC9E+Z,cAAeS,EAAsBpe,EAAM2d,cAAe3d,EAAMzzB,UAChEA,SAC4B,iBAAnByzB,EAAMzzB,SACTyzB,EAAMzzB,SACN6xC,EAAsBrzD,OAAOi1C,EAAMzzB,cAIvCmyC,EAAgC,SAACnL,EAAMvT,GAC3C,IAAKuT,EACH,OAAO,EAET,IAAMoL,EAASZ,EAAcxK,GAAMt6E,KAAI,SAAC8J,EAAMwwB,GAC5C,IAAM1uB,EAAM9B,EAAK+B,WAAWjQ,OAC5B,EAAuDypF,EAAete,EAAOzsC,GAC7E,OAAQ1uB,EADR,EAAQ0nC,SAAR,EAAkBkyC,kBAAlB,EAAqCd,cACyBhsE,KAAKI,IAAIlN,EAAM,EAAG,MAElF,OAAO8M,KAAKI,IAAL,MAAAJ,KAAI,EAAQgtE,KAGfC,EAAiC,SAACrL,EAAMvT,GAC5C,OAAKuT,EAGEwK,EAAcxK,GAAM7f,QAAO,SAACz8B,EAAOl0B,EAAMwwB,GAC9C,IAAMirD,EAAYF,EAAete,EAAOzsC,GAElCkL,EADe17B,EAAK+B,WAAWsD,MAAM,gBAEvCo2E,EAAUjyC,SAAW6wC,EAAaI,gBAClCgB,EAAUjyC,SACRsyC,EAAuB,IAAVtrD,EAAc,EAAIirD,EAAUjyC,SAAW6wC,EAAaK,oBACvE,OAAOxmD,EAAQunD,EAAU73E,YAAc83B,EAASogD,KAC/C,GAVM,GAyBEC,EAAsB,SAACvL,EAAMvT,GACxC,IAAMe,EAAQr9D,MAAMsF,QAAQg3D,GAASA,EAAM,IAAMA,EAAM,GAAGe,MAAQf,GAASA,EAAMe,MAC3EtiC,EAASmgD,EAA+BrL,EAAMvT,GAC9CxhC,EAAQkgD,EAA8BnL,EAAMvT,GAC5C+e,EAAkBhe,EAAQid,EAAmBx/C,EAAOC,EAAQsiC,GAASviC,EACrEwgD,EAAmBje,EAAQid,EAAmBv/C,EAAQD,EAAOuiC,GAAStiC,EAC5E,MAAO,CACLD,MAAOugD,EAAkB3B,EAAaE,iBACtC7+C,OAAQugD,EAAmB5B,EAAaG,qB,6FA/JtCxB,E,qHA+BAY,E,uIAQAM,E,mIAKAG,E,mHAOAM,E,mHAQAE,E,sHAEAC,E,gIAKAE,E,oHAIAC,E,yHAaOI,E,4HAgBPE,E,qHAaAI,E,oIAYAE,E,qIA2BOE,E,4pCC1JAhuC,EAAqB,EAAH,KAC1Bb,KAD0B,IAE7B9K,iBAAkB0H,IAAU9jC,OAC5Bq8B,iBAAkByH,IAAU9jC,OAC5Bm6B,UAAW2J,IAAUS,QAAQT,IAAU9jC,QACvC49B,SAAUkG,IAAUM,KACpB4D,YAAalE,IAAUj6B,MACvB+yB,iBAAkBkH,IAAUM,KAC5B3G,iBAAkBqG,IAAUM,KAC5B6D,KAAMnE,IAAUt7B,OAChB0/B,KAAMpE,IAAUt7B,OAChBm1B,WAAYmG,IAAUI,MAAM,CAAC,OAAQ,WACrCxG,WAAYoG,IAAUM,KACtBvG,gBAAiBiG,IAAUM,KAC3B+D,YAAarE,IAAU1iC,KACvBgnC,YAAatE,IAAU1iC,KACvBi4B,aAAcyK,IAAUM,KACxBgC,qBAAsBtC,IAAUlwC,OAChCgjC,SAAUkN,IAAU3O,UAAU,CAAC2O,IAAU1iC,KAAM0iC,IAAUM,OACzDzF,WAAYmF,IAAU9jC,OACtBqoC,iBAAkBvE,IAAUt7B,OAC5B8/B,gBAAiBxE,IAAUlwC,OAC3BinC,aAAciJ,IAAUM,KACxBI,aAAcV,IAAUlwC,OACxB4iC,iBAAkBsN,IAAU1iC,KAC5B28B,gBAAiB+F,IAAUM,KAC3B/N,WAAYyN,IAAUM,KACtB9N,WAAYwN,IAAUM,KACtBjO,iBAAkB2N,IAAUM,KAC5BlG,kBAAmB4F,IAAUS,QAAQT,IAAU9jC,QAC/Cm+B,iBAAkB2F,IAAU9jC,OAC5B86B,iBAAkBgJ,IAAUt7B,OAC5B+/B,kBAAmBzE,IAAUM,KAC7BoE,iBAAkB1E,IAAUj6B,MAC5B4+B,kBAAmB3E,IAAUj6B,MAC7Bu0B,eAAgB0F,IAAU9jC,OAC1Bq+B,yBAA0ByF,IAAU1iC,KACpCk9B,8BAA+BwF,IAAU1iC,KACzCg6B,4BAA6B0I,IAAUt7B,OACvCk4B,YAAaoD,IAAUt7B,OACvB+1B,sBAAuBuF,IAAU3O,UAAU,CAAC2O,IAAUj6B,MAAOi6B,IAAUM,SAG5D5G,EAAwB,EAAH,KAC7BhI,KAD6B,IAEhC4G,iBAAkB,SAClBC,iBAAkB,OAClBO,kBAAkB,EAClBa,kBAAkB,EAClBC,YAAY,EAEZvwC,KAAM,GACN8sC,UAAW,OACXE,UAAW,GACXwD,WAAY,OACZC,UAAU,EACVC,iBAAiB,EACjBxE,cAAc,EACdwB,cAAc,EACdiD,mBAAoB,SAAAjyC,GAAC,OAAIA,GACzBkyC,iBAAiB,EACjBvH,iBAAkB,gBAAGwH,EAAH,EAAGA,WAAYC,EAAf,EAAeA,OAAf,gBAA+BD,EAA/B,aAA8CC,IAEhE5H,YAAY,EACZC,YAAY,EACZH,kBAAkB,EAClB+H,kBAAmB,KACnBC,iBAAkB,UAClBrD,iBAAkB,EAElBsD,eAAgB,UAChBC,yBAA0B,iBAAM,WAChCC,8BAA+B,iBAAM,WACrCC,uBAAuB,IAGZ23C,EAA6B,CACxC5gD,KAAM,UACNzS,OAAQ,QACR2gB,SAAU,GACVoD,YAAa,UACbhoC,YAAa,EACbjH,EAAG,EACHU,EAAG,EACHqhE,GAAI,EACJE,GAAI,EACJuc,WAAW,EACXC,WAAY,K,6FAvFDruC,E,sGA2CAvK,E,yGAiCA04C,E,8GAcE,K,kNC9Ff;;;;;;EAMAv7E,MAAMsF,UAAUtF,MAAMsF,QAAQ,SAAS1V,GAAG,MAAM,mBAAmBrC,OAAOC,UAAU4T,SAAS1T,KAAKkC,KAAyD,EAAO,QAAI,0BAAF,EAA6F,WAAW,aAAa,IAAIuJ,EAAEvJ,EAAEoO,EAAE,oBAAoBotE,KAAKA,KAAK,oBAAoBn+E,OAAOA,YAAO,IAAS+Q,EAAEA,EAAE,GAAGhF,GAAGgF,EAAE5J,YAAY4J,EAAE09E,YAAYnjF,EAAES,GAAG,0BAA0BmD,KAAK6B,EAAEsyD,SAASE,QAAQx6D,GAAE,EAAG/B,EAAE,GAAG4J,EAAE,EAAEJ,EAAE,CAAC5J,MAAM,SAASjE,EAAEQ,GAAG,IAAIoI,GAAGpI,EAAEA,GAAG,IAAIurF,gBAAe,EAA0C,GAAvCp+E,EAAE/E,KAAKpI,EAAEwrF,sBAAsBpjF,EAAEA,EAAE,IAAOpI,EAAEurF,cAAcnjF,EAAEpI,EAAE6pC,YAAY18B,EAAEnN,EAAE6pC,YAAY7pC,EAAE6pC,UAAU7pC,EAAEyrF,QAAQp+E,EAAEq+E,kBAAkB,CAAC,IAAI5qF,EAAE,WAAW,IAAIuM,EAAEq+E,kBAAkB,OAAM,EAAG,IAAI9lF,GAAG,OAAOyH,EAAEs+E,YAAY,MAAM,IAAIjpF,MAAM,uIAAuI,IAAIlD,EAAE6N,EAAEs+E,aAAa5iF,EAAEvJ,KAAK,IAAIA,EAAEb,QAAQ,KAAK,IAAI,KAAK,aAAa,IAAIqB,EAAE,IAAI4N,EAAEg+E,OAAOpsF,GAAG,OAAOQ,EAAE6rF,UAAU7jF,EAAEhI,EAAEyC,GAAGgL,IAAI5J,EAAE7D,EAAEyC,IAAIzC,EAAhW,GAAqW,OAAOc,EAAEgrF,SAAS9rF,EAAEu+C,KAAKz9C,EAAEirF,UAAU/rF,EAAEgsF,MAAMlrF,EAAEmrF,aAAajsF,EAAEksF,SAASprF,EAAEqrF,UAAUnsF,EAAEuH,MAAMvH,EAAEu+C,KAAKpxC,EAAEnN,EAAEu+C,MAAMv+C,EAAEgsF,MAAM7+E,EAAEnN,EAAEgsF,OAAOhsF,EAAEksF,SAAS/+E,EAAEnN,EAAEksF,UAAUlsF,EAAEuH,MAAM4F,EAAEnN,EAAEuH,cAAcvH,EAAEyrF,YAAY3qF,EAAEwqF,YAAY,CAAClzE,MAAM5Y,EAAE+c,OAAOvc,EAAEosF,SAAStrF,EAAE2B,KAAK,IAAImG,EAAE,KAAyL,OAApLyE,EAAEg/E,kBAAkB,iBAAiB7sF,EAAEoJ,EAAE5I,EAAEssF,SAAS,IAAI1oF,EAAE5D,GAAG,IAAIshD,EAAEthD,IAAG,IAAKR,EAAE+sF,UAAUp/E,EAAE3N,EAAE0+E,OAAO/wE,EAAE3N,EAAEgtF,IAAI5jF,EAAE,IAAI+D,EAAE3M,IAAI4N,EAAE6+E,MAAMjtF,aAAaitF,MAAMjtF,aAAarC,UAAUyL,EAAE,IAAI3F,EAAEjD,IAAW4I,EAAE8jF,OAAOltF,IAAImtF,QAAQ,SAASntF,EAAEQ,GAAG,IAAIc,GAAE,EAAG6L,GAAE,EAAG3E,EAAE,IAAIsF,EAAE,OAAO1E,EAAE,IAAIR,GAAE,EAAkB,iBAAiBpI,IAAS,iBAAiBA,EAAEqP,WAAWhC,EAAEu/E,eAAev1D,QAAO,SAAS73B,GAAG,OAAO,IAAIQ,EAAEqP,UAAU1Q,QAAQa,MAAKuB,SAASiH,EAAEhI,EAAEqP,YAAY,kBAAkBrP,EAAE6sF,QAAQj9E,MAAMsF,QAAQlV,EAAE6sF,WAAW/rF,EAAEd,EAAE6sF,QAAQ,kBAAkB7sF,EAAE8sF,gBAAgB,iBAAiB9sF,EAAE8sF,iBAAiB1kF,EAAEpI,EAAE8sF,gBAAgB,iBAAiB9sF,EAAE+sF,UAAUz/E,EAAEtN,EAAE+sF,SAAS,iBAAiB/sF,EAAEgtF,YAAYpkF,EAAE5I,EAAEgtF,WAAW,kBAAkBhtF,EAAE8oE,SAASn8D,EAAE3M,EAAE8oE,SAAW,IAAI//D,EAAE,IAAIyZ,OAAOpV,EAAExE,GAAG,KAA2C,GAAtC,iBAAiBpJ,IAAIA,EAAEgE,KAAKC,MAAMjE,IAAOoQ,MAAMsF,QAAQ1V,GAAG,CAAC,IAAIA,EAAEuB,QAAQ6O,MAAMsF,QAAQ1V,EAAE,IAAI,OAAO2I,EAAE,KAAK3I,EAAE4I,GAAG,GAAG,iBAAiB5I,EAAE,GAAG,OAAO2I,EAAEvC,EAAEpG,EAAE,IAAIA,EAAE4I,QAAQ,GAAG,iBAAiB5I,EAAE,MAAM,iBAAiBA,EAAE4C,OAAO5C,EAAE4C,KAAKoB,KAAKC,MAAMjE,EAAE4C,OAAOwN,MAAMsF,QAAQ1V,EAAE4C,QAAQ5C,EAAEytF,SAASztF,EAAEytF,OAAOztF,EAAE0tF,MAAM1tF,EAAE0tF,KAAKD,QAAQztF,EAAEytF,SAASztF,EAAEytF,OAAOr9E,MAAMsF,QAAQ1V,EAAE4C,KAAK,IAAI5C,EAAEytF,OAAOrnF,EAAEpG,EAAE4C,KAAK,KAAKwN,MAAMsF,QAAQ1V,EAAE4C,KAAK,KAAK,iBAAiB5C,EAAE4C,KAAK,KAAK5C,EAAE4C,KAAK,CAAC5C,EAAE4C,QAAQ+F,EAAE3I,EAAEytF,QAAQ,GAAGztF,EAAE4C,MAAM,GAAGgG,GAAG,KAAK,oDAAoD,SAASxC,EAAEpG,GAAG,GAAG,iBAAiBA,EAAE,MAAM,GAAG,IAAIQ,EAAE,GAAG,IAAI,IAAIoI,KAAK5I,EAAEQ,EAAEpB,KAAKwJ,GAAG,OAAOpI,EAAE,SAASmI,EAAE3I,EAAEQ,EAAEoI,GAAG,IAAItH,EAAE,GAAG,iBAAiBtB,IAAIA,EAAEgE,KAAKC,MAAMjE,IAAI,iBAAiBQ,IAAIA,EAAEwD,KAAKC,MAAMzD,IAAI,IAAI4I,EAAEgH,MAAMsF,QAAQ1V,IAAI,EAAEA,EAAEuB,OAAOgI,GAAG6G,MAAMsF,QAAQlV,EAAE,IAAI,GAAG4I,GAAG+D,EAAE,CAAC,IAAI,IAAI/G,EAAE,EAAEA,EAAEpG,EAAEuB,OAAO6E,IAAI,EAAEA,IAAI9E,GAAGkH,GAAGlH,GAAGwK,EAAE9L,EAAEoG,GAAGA,GAAG,EAAE5F,EAAEe,SAASD,GAAGwM,GAAG,IAAI,IAAInF,EAAE,EAAEA,EAAEnI,EAAEe,OAAOoH,IAAI,CAAC,IAAItE,EAAE+E,EAAEpJ,EAAEuB,OAAOf,EAAEmI,GAAGpH,OAAO0M,GAAE,EAAGG,EAAEhF,EAAE,IAAIzL,OAAO4J,KAAK/G,EAAEmI,IAAIpH,OAAO,IAAIf,EAAEmI,GAAGpH,OAAO,GAAGqH,IAAIQ,IAAI6E,EAAE,WAAWrF,EAAE,KAAKpI,EAAEmI,GAAG9B,KAAK,IAAI6E,OAAO,IAAIlL,EAAEmI,GAAGpH,QAAQ,IAAIf,EAAEmI,GAAG,GAAGpH,QAAQ,WAAWqH,GAAGQ,EAAE,CAAC,IAAI,IAAIX,EAAE,GAAGjG,EAAE,EAAEA,EAAE6B,EAAE7B,IAAI,CAAC,IAAI4B,EAAEmF,EAAEvJ,EAAEwC,GAAGA,EAAEiG,EAAErJ,KAAKoB,EAAEmI,GAAGvE,IAAI6J,EAAE,KAAKxF,EAAE5B,KAAK,IAAI6E,OAAO,IAAIuC,EAAE,CAAC,IAAI,IAAIxK,EAAE,EAAEA,EAAEY,EAAEZ,IAAI,CAAC,EAAEA,IAAI2K,IAAI9M,GAAGkH,GAAG,IAAIs5C,EAAE14C,GAAGG,EAAEvJ,EAAEyD,GAAGA,EAAEnC,GAAGwK,EAAEtL,EAAEmI,GAAGm5C,GAAGr+C,GAAGkF,EAAEnI,EAAEe,OAAO,KAAKqH,GAAG,EAAEvE,IAAI+J,KAAK9M,GAAGwM,IAAI,OAAOxM,EAAE,SAASwK,EAAE9L,EAAEQ,GAAG,OAAG,MAAMR,EAAQ,GAAMA,EAAEgpC,cAAc5vB,KAAYpV,KAAK47C,UAAU5/C,GAAGqH,MAAM,EAAE,KAAIrH,EAAEA,EAAEwR,WAAWzF,QAAQxC,EAAEH,EAAEA,GAAS,kBAAkB9H,GAAGA,GAAG8O,MAAMsF,QAAQpU,IAAIA,EAAEd,IAAI,SAASR,EAAEQ,GAAG,IAAI,IAAIoI,EAAE,EAAEA,EAAEpI,EAAEe,OAAOqH,IAAI,IAAI,EAAE5I,EAAEb,QAAQqB,EAAEoI,IAAI,OAAM,EAAG,OAAM,EAA9E,CAAkF5I,EAAE6N,EAAEu/E,kBAAkB,EAAEptF,EAAEb,QAAQqJ,IAAI,MAAMxI,EAAEsO,OAAO,IAAI,MAAMtO,EAAEsO,OAAOtO,EAAEuB,OAAO,GAAY6H,EAAEpJ,EAAEoJ,EAAEpJ,MAAK,GAAG6N,EAAE8/E,WAAWl2D,OAAO+7C,aAAa,IAAI3lE,EAAE+/E,SAASn2D,OAAO+7C,aAAa,IAAI3lE,EAAEggF,gBAAgB,SAAShgF,EAAEu/E,eAAe,CAAC,KAAK,KAAK,IAAIv/E,EAAEggF,iBAAiBhgF,EAAEq+E,mBAAmB9iF,KAAKgF,EAAEg+E,OAAOv+E,EAAEs+E,YAAY,KAAKt+E,EAAEg/E,kBAAkB,EAAEh/E,EAAEigF,eAAe,SAASjgF,EAAEkgF,gBAAgB,QAAQlgF,EAAEmgF,iBAAiB,IAAIngF,EAAEogF,OAAOniF,EAAE+B,EAAEqgF,aAAatlF,EAAEiF,EAAEsgF,gBAAgB/pF,EAAEyJ,EAAEugF,aAAa3qF,EAAEoK,EAAEwgF,eAAevsC,EAAEj0C,EAAEygF,uBAAuBnhF,EAAEiB,EAAEmgF,OAAO,CAAC,IAAI9lF,EAAE2F,EAAEmgF,OAAO9lF,EAAE3J,GAAGmF,MAAM,SAAS0E,GAAG,IAAIC,EAAED,EAAEoU,QAAQ,GAAG1Y,EAAE,GAAG,OAAOtC,KAAKysF,MAAK,SAASxuF,GAAG,GAAK,UAAUyI,EAAE1G,MAAMsa,KAAK,WAAWukB,eAAe,SAASn4B,EAAE1G,MAAM0sF,KAAK,QAAQ55E,gBAAezG,EAAEsgF,aAAc3sF,KAAK4sF,OAAO,IAAI5sF,KAAK4sF,MAAMptF,OAAO,OAAM,EAAG,IAAI,IAAIf,EAAE,EAAEA,EAAEuB,KAAK4sF,MAAMptF,OAAOf,IAAI6D,EAAEjF,KAAK,CAACwvF,KAAK7sF,KAAK4sF,MAAMnuF,GAAGquF,UAAU9sF,KAAK+sF,eAAermF,EAAE8Q,OAAO,GAAG3Q,QAAO5I,IAAI+B,KAAK,SAAS/B,IAAI,GAAG,IAAIqE,EAAE9C,OAAO,CAAC,IAAMf,EAAEoI,EAAEtH,EAAE8H,EAAE/E,EAAE,GAAG,GAAGsJ,EAAEhF,EAAEuB,QAAQ,CAAC,IAAIX,EAAEZ,EAAEuB,OAAOd,EAAEwlF,KAAKxlF,EAAEylF,WAAW,GAAG,iBAAiBtlF,EAAE,CAAC,GAAG,UAAUA,EAAEwlF,OAAO,OAAsBvuF,EAAE4I,EAAEwlF,KAAKhmF,EAAEQ,EAAEylF,UAAUvtF,EAAEiI,EAAEylF,YAAYrhF,EAAEhF,EAAEZ,QAAQY,EAAEZ,MAAM,CAACtI,KAAzE,cAAiFe,EAAEoI,EAAEtH,IAAI,GAAG,SAASiI,EAAEwlF,OAAO,YAAY9gF,IAAI,iBAAiB1E,EAAEwT,SAAS3T,EAAE0lF,eAAermF,EAAE8Q,OAAOnQ,EAAE0lF,eAAevlF,EAAEwT,cAAc,GAAG,SAASxT,EAAE,YAAY0E,IAAI,IAAI7H,EAAEgD,EAAE0lF,eAAepC,SAAStjF,EAAE0lF,eAAepC,SAAS,SAAS1sF,GAAG2N,EAAEvH,IAAIA,EAAEpG,EAAEoJ,EAAEwlF,KAAKxlF,EAAEylF,WAAW5gF,KAAKJ,EAAE5J,MAAMmF,EAAEwlF,KAAKxlF,EAAE0lF,qBAAqBnhF,EAAEhF,EAAE+jF,WAAW/jF,EAAE+jF,WAAW,SAASz+E,IAAI5J,EAAExC,OAAO,EAAE,GAAG7B,MAAM,SAASwC,EAAExC,GAAG+B,KAAKktF,QAAQ,KAAKltF,KAAKmtF,WAAU,EAAGntF,KAAKotF,YAAW,EAAGptF,KAAKqtF,OAAO,KAAKrtF,KAAKstF,WAAW,EAAEttF,KAAKutF,aAAa,GAAGvtF,KAAKwtF,UAAU,EAAExtF,KAAKytF,OAAO,EAAEztF,KAAK0tF,WAAW,KAAK1tF,KAAK2tF,cAAa,EAAG3tF,KAAK4tF,iBAAiB,CAAC/sF,KAAK,GAAGgtF,OAAO,GAAGlC,KAAK,IAAI,SAAS1tF,GAAG,IAAIQ,EAAEoO,EAAE5O,GAAGQ,EAAEqvF,UAAU/pE,SAAStlB,EAAEqvF,WAAW7vF,EAAE++C,MAAM/+C,EAAEwsF,QAAQhsF,EAAEqvF,UAAU,MAAM9tF,KAAKktF,QAAQ,IAAIrmF,EAAEpI,IAAIuB,KAAKktF,QAAQa,SAAS/tF,MAAMirB,QAAQxsB,GAAG1C,KAAKiE,KAAK/B,GAAG+B,KAAKguF,WAAW,SAAS/vF,EAAEQ,GAAG,GAAGuB,KAAK2tF,cAAc/hF,EAAE5L,KAAKirB,QAAQgjE,kBAAkB,CAAC,IAAIpnF,EAAE7G,KAAKirB,QAAQgjE,iBAAiBhwF,QAAG,IAAS4I,IAAI5I,EAAE4I,GAAG7G,KAAK2tF,cAAa,EAAG,IAAIpuF,EAAES,KAAKutF,aAAatvF,EAAE+B,KAAKutF,aAAa,GAAG,IAAIlmF,EAAErH,KAAKktF,QAAQhrF,MAAM3C,EAAES,KAAKstF,YAAYttF,KAAKmtF,WAAW,IAAIntF,KAAKktF,QAAQgB,WAAWluF,KAAKktF,QAAQiB,UAAU,CAAC,IAAI3mF,EAAEH,EAAEskF,KAAKz4E,OAAOlT,KAAKmtF,YAAYntF,KAAKutF,aAAahuF,EAAE4K,UAAU3C,EAAExH,KAAKstF,YAAYttF,KAAKstF,WAAW9lF,GAAGH,GAAGA,EAAExG,OAAOb,KAAKwtF,WAAWnmF,EAAExG,KAAKrB,QAAQ,IAAI6E,EAAErE,KAAKmtF,WAAWntF,KAAKirB,QAAQmjE,SAASpuF,KAAKwtF,WAAWxtF,KAAKirB,QAAQmjE,QAAQ,GAAGxnF,EAAEyF,EAAE09E,YAAY,CAACsE,QAAQhnF,EAAEwjF,SAAS/+E,EAAEwiF,UAAUC,SAASlqF,SAAS,GAAGuH,EAAE5L,KAAKirB,QAAQw/D,SAAShsF,EAAE,CAAC,GAAGuB,KAAKirB,QAAQw/D,MAAMpjF,EAAErH,KAAKktF,SAASltF,KAAKktF,QAAQgB,UAAUluF,KAAKktF,QAAQiB,UAAU,OAAO9mF,OAAE,EAAOrH,KAAK4tF,sBAAiB,EAAO,OAAO5tF,KAAKirB,QAAQ+xB,MAAMh9C,KAAKirB,QAAQw/D,QAAQzqF,KAAK4tF,iBAAiB/sF,KAAKb,KAAK4tF,iBAAiB/sF,KAAKsD,OAAOkD,EAAExG,MAAMb,KAAK4tF,iBAAiBC,OAAO7tF,KAAK4tF,iBAAiBC,OAAO1pF,OAAOkD,EAAEwmF,QAAQ7tF,KAAK4tF,iBAAiBjC,KAAKtkF,EAAEskF,MAAM3rF,KAAKotF,aAAa/oF,IAAIuH,EAAE5L,KAAKirB,QAAQ0/D,WAAWtjF,GAAGA,EAAEskF,KAAKwC,UAAUnuF,KAAKirB,QAAQ0/D,SAAS3qF,KAAK4tF,iBAAiB5tF,KAAKqtF,QAAQrtF,KAAKotF,YAAW,GAAI/oF,GAAGgD,GAAGA,EAAEskF,KAAKuC,QAAQluF,KAAK0tF,aAAarmF,IAAIrH,KAAKwuF,WAAW,SAASvwF,GAAG2N,EAAE5L,KAAKirB,QAAQjlB,OAAOhG,KAAKirB,QAAQjlB,MAAM/H,GAAG2I,GAAG5G,KAAKirB,QAAQjlB,OAAOqG,EAAE09E,YAAY,CAACc,SAAS/+E,EAAEwiF,UAAUtoF,MAAM/H,EAAEswF,UAAS,KAAM,SAASlsF,EAAEpE,GAAG,IAAIsB,GAAGtB,EAAEA,GAAG,IAAI6vF,YAAY7vF,EAAE6vF,UAAUhiF,EAAEkgF,iBAAiBvrF,EAAE1E,KAAKiE,KAAK/B,GAAG+B,KAAK0tF,WAAWrmF,EAAE,WAAWrH,KAAKyuF,aAAazuF,KAAK0uF,gBAAgB,WAAW1uF,KAAKyuF,cAAczuF,KAAKmrF,OAAO,SAASltF,GAAG+B,KAAKqtF,OAAOpvF,EAAE+B,KAAK0tF,cAAc1tF,KAAKyuF,WAAW,WAAW,GAAGzuF,KAAKmtF,UAAUntF,KAAK0uF,mBAAmB,CAAC,GAAGnvF,EAAE,IAAIiC,eAAexB,KAAKirB,QAAQ0jE,kBAAkBpvF,EAAEovF,gBAAgB3uF,KAAKirB,QAAQ0jE,iBAAiBtnF,IAAI9H,EAAE06E,OAAO7vE,EAAEpK,KAAK0uF,aAAa1uF,MAAMT,EAAE26E,QAAQ9vE,EAAEpK,KAAK4uF,YAAY5uF,OAAOT,EAAEoC,KAAK,MAAM3B,KAAKqtF,QAAQhmF,GAAGrH,KAAKirB,QAAQ4jE,uBAAuB,CAAC,IAAI5wF,EAAE+B,KAAKirB,QAAQ4jE,uBAAuB,IAAI,IAAIpwF,KAAKR,EAAEsB,EAAEuvF,iBAAiBrwF,EAAER,EAAEQ,IAAI,GAAGuB,KAAKirB,QAAQ6iE,UAAU,CAAC,IAAIjnF,EAAE7G,KAAKytF,OAAOztF,KAAKirB,QAAQ6iE,UAAU,EAAEvuF,EAAEuvF,iBAAiB,QAAQ,SAAS9uF,KAAKytF,OAAO,IAAI5mF,GAAGtH,EAAEuvF,iBAAiB,gBAAgB,mBAAmB,IAAIvvF,EAAEsC,OAAO,MAAM5D,GAAG+B,KAAK4uF,YAAY3wF,EAAEs9E,SAASl0E,GAAG,IAAI9H,EAAEiB,OAAOR,KAAK4uF,cAAc5uF,KAAKytF,QAAQztF,KAAKirB,QAAQ6iE,YAAY9tF,KAAK0uF,aAAa,WAAW,IAAInvF,EAAEwC,aAAaxC,EAAEiB,OAAO,KAAK,KAAKjB,EAAEiB,OAAOR,KAAK4uF,eAAe5uF,KAAKmtF,WAAWntF,KAAKirB,QAAQ6iE,WAAW9tF,KAAKytF,OAAO,SAASxvF,GAAG,IAAIQ,EAAER,EAAE8wF,kBAAkB,iBAAiB,OAAG,OAAOtwF,GAAS,EAASslB,SAAStlB,EAAEke,OAAOle,EAAEuwF,YAAY,KAAK,IAAxH,CAA6HzvF,GAAGS,KAAKguF,WAAWzuF,EAAE4C,iBAAiBnC,KAAK4uF,YAAY,SAAS3wF,GAAG,IAAIQ,EAAEc,EAAE0vF,YAAYhxF,EAAE+B,KAAKwuF,WAAW,IAAIrtF,MAAM1C,KAAK,SAASiD,EAAEzD,GAAG,IAAIsB,EAAE8H,GAAGpJ,EAAEA,GAAG,IAAI6vF,YAAY7vF,EAAE6vF,UAAUhiF,EAAEigF,gBAAgBtrF,EAAE1E,KAAKiE,KAAK/B,GAAG,IAAIuJ,EAAE,oBAAoBmlF,WAAW3sF,KAAKmrF,OAAO,SAASltF,GAAG+B,KAAKqtF,OAAOpvF,EAAEoJ,EAAEpJ,EAAEqH,OAAOrH,EAAEixF,aAAajxF,EAAEkxF,SAAS3nF,IAAIjI,EAAE,IAAIotF,YAAY1S,OAAO7vE,EAAEpK,KAAK0uF,aAAa1uF,MAAMT,EAAE26E,QAAQ9vE,EAAEpK,KAAK4uF,YAAY5uF,OAAOT,EAAE,IAAI6vF,eAAepvF,KAAK0tF,cAAc1tF,KAAK0tF,WAAW,WAAW1tF,KAAKmtF,WAAWntF,KAAKirB,QAAQmjE,WAAWpuF,KAAKwtF,UAAUxtF,KAAKirB,QAAQmjE,UAAUpuF,KAAKyuF,cAAczuF,KAAKyuF,WAAW,WAAW,IAAIxwF,EAAE+B,KAAKqtF,OAAO,GAAGrtF,KAAKirB,QAAQ6iE,UAAU,CAAC,IAAIrvF,EAAE6d,KAAK2G,IAAIjjB,KAAKytF,OAAOztF,KAAKirB,QAAQ6iE,UAAU9tF,KAAKqtF,OAAOrrC,MAAM/jD,EAAEoJ,EAAEtL,KAAKkC,EAAE+B,KAAKytF,OAAOhvF,GAAG,IAAIoI,EAAEtH,EAAE8vF,WAAWpxF,EAAE+B,KAAKirB,QAAQqkE,UAAU9nF,GAAGxH,KAAK0uF,aAAa,CAAC1qD,OAAO,CAAC/gC,OAAO4D,MAAM7G,KAAK0uF,aAAa,SAASzwF,GAAG+B,KAAKytF,QAAQztF,KAAKirB,QAAQ6iE,UAAU9tF,KAAKmtF,WAAWntF,KAAKirB,QAAQ6iE,WAAW9tF,KAAKytF,QAAQztF,KAAKqtF,OAAOrrC,KAAKhiD,KAAKguF,WAAW/vF,EAAE+lC,OAAO/gC,SAASjD,KAAK4uF,YAAY,WAAW5uF,KAAKwuF,WAAWjvF,EAAEyG,QAAQ,SAAS+5C,EAAE9hD,GAAG,IAAI4I,EAAEpG,EAAE1E,KAAKiE,KAAK/B,EAAEA,GAAG,IAAI+B,KAAKmrF,OAAO,SAASltF,GAAG,OAAO4I,EAAE5I,EAAE+B,KAAK0tF,cAAc1tF,KAAK0tF,WAAW,WAAW,IAAI1tF,KAAKmtF,UAAU,CAAC,IAAIlvF,EAAE+B,KAAKirB,QAAQ6iE,UAAUrvF,EAAER,EAAE4I,EAAE8V,OAAO,EAAE1e,GAAG4I,EAAE,OAAOA,EAAE5I,EAAE4I,EAAE8V,OAAO1e,GAAG,GAAG+B,KAAKmtF,WAAWtmF,EAAE7G,KAAKguF,WAAWvvF,KAAK,SAAS2M,EAAEnN,GAAGwC,EAAE1E,KAAKiE,KAAK/B,EAAEA,GAAG,IAAI,IAAIQ,EAAE,GAAGoI,GAAE,EAAGtH,GAAE,EAAGS,KAAKuvF,MAAM,WAAW9uF,EAAE5E,UAAU0zF,MAAMjvF,MAAMN,KAAK8V,WAAW9V,KAAKqtF,OAAOkC,SAASvvF,KAAKwvF,OAAO,WAAW/uF,EAAE5E,UAAU2zF,OAAOlvF,MAAMN,KAAK8V,WAAW9V,KAAKqtF,OAAOmC,UAAUxvF,KAAKmrF,OAAO,SAASltF,GAAG+B,KAAKqtF,OAAOpvF,EAAE+B,KAAKqtF,OAAOpC,GAAG,OAAOjrF,KAAKyvF,aAAazvF,KAAKqtF,OAAOpC,GAAG,MAAMjrF,KAAK0vF,YAAY1vF,KAAKqtF,OAAOpC,GAAG,QAAQjrF,KAAK2vF,eAAe3vF,KAAK4vF,iBAAiB,WAAWrwF,GAAG,IAAId,EAAEe,SAASQ,KAAKmtF,WAAU,IAAKntF,KAAK0tF,WAAW,WAAW1tF,KAAK4vF,mBAAmBnxF,EAAEe,OAAOQ,KAAKguF,WAAWvvF,EAAEggC,SAAS53B,GAAE,GAAI7G,KAAKyvF,YAAYrlF,GAAE,SAASnM,GAAG,IAAIQ,EAAEpB,KAAK,iBAAiBY,EAAEA,EAAEA,EAAEwR,SAASzP,KAAKirB,QAAQqkE,WAAWzoF,IAAIA,GAAE,EAAG7G,KAAK4vF,mBAAmB5vF,KAAKguF,WAAWvvF,EAAEggC,UAAU,MAAMxgC,GAAG+B,KAAK2vF,aAAa1xF,MAAK+B,MAAMA,KAAK2vF,aAAavlF,GAAE,SAASnM,GAAG+B,KAAK6vF,iBAAiB7vF,KAAKwuF,WAAWvwF,KAAI+B,MAAMA,KAAK0vF,WAAWtlF,GAAE,WAAWpK,KAAK6vF,iBAAiBtwF,GAAE,EAAGS,KAAKyvF,YAAY,MAAKzvF,MAAMA,KAAK6vF,eAAezlF,GAAE,WAAWpK,KAAKqtF,OAAOjV,eAAe,OAAOp4E,KAAKyvF,aAAazvF,KAAKqtF,OAAOjV,eAAe,MAAMp4E,KAAK0vF,YAAY1vF,KAAKqtF,OAAOjV,eAAe,QAAQp4E,KAAK2vF,gBAAe3vF,MAAM,SAAS6G,EAAEuE,GAAG,IAAI/G,EAAEuC,EAAEtE,EAAE/C,EAAE,+CAA+C8H,EAAE,iNAAiN5I,EAAEuB,KAAK6G,EAAE,EAAEW,EAAE,EAAE0E,GAAE,EAAGjO,GAAE,EAAGoO,EAAE,GAAG3F,EAAE,CAAC7F,KAAK,GAAGgtF,OAAO,GAAGlC,KAAK,IAAI,GAAG//E,EAAER,EAAE4xC,MAAM,CAAC,IAAIv8C,EAAE2K,EAAE4xC,KAAK5xC,EAAE4xC,KAAK,SAAS/+C,GAAG,GAAGyI,EAAEzI,EAAEyD,IAAIW,QAAQ,CAAC,GAAGA,IAAI,IAAIqE,EAAE7F,KAAKrB,OAAO,OAAOqH,GAAG5I,EAAE4C,KAAKrB,OAAO4L,EAAEgjF,SAASvnF,EAAEuE,EAAEgjF,QAAQxnF,EAAEkpF,QAAQrvF,EAAEiG,EAAEjI,KAAK,SAASgI,EAAExI,GAAG,MAAM,WAAWmN,EAAEmgF,eAAe,KAAKttF,EAAE6G,KAAK,IAAI6E,OAAO,IAAI1L,EAAEuB,QAAQ,IAAIvB,EAAE,GAAGuB,OAAO,SAAS6C,IAAI,GAAGqE,GAAGpE,IAAIyJ,EAAE,YAAY,wBAAwB,6DAA6DD,EAAEmgF,iBAAiB,KAAK3pF,GAAE,GAAI8I,EAAEmgF,eAAe,IAAI,IAAIttF,EAAE,EAAEA,EAAEyI,EAAE7F,KAAKrB,OAAOvB,IAAIwI,EAAEC,EAAE7F,KAAK5C,KAAKyI,EAAE7F,KAAKf,OAAO7B,IAAI,GAAG,OAAOyD,KAAK,WAAW,GAAIgF,EAAJ,CAAa,IAAI,IAAIzI,EAAE,EAAEyD,KAAKzD,EAAEyI,EAAE7F,KAAKrB,OAAOvB,IAAI,IAAI,IAAIQ,EAAE,EAAEA,EAAEiI,EAAE7F,KAAK5C,GAAGuB,OAAOf,IAAI,CAAC,IAAIoI,EAAEH,EAAE7F,KAAK5C,GAAGQ,GAAG2M,EAAE2kF,cAAclpF,EAAEA,EAAE8C,QAAQ0C,EAAEhP,KAAKwJ,GAAGH,EAAE7F,KAAKf,OAAO,EAAE,IAA1K,GAAgL,WAAW,IAAI4G,IAAI0E,EAAEm8D,SAASn8D,EAAE4+E,gBAAgB5+E,EAAEk9B,UAAU,OAAO5hC,EAAE,IAAI,IAAIzI,EAAE,EAAEA,EAAEyI,EAAE7F,KAAKrB,OAAOvB,IAAI,CAAC,IAAIQ,EAAEoI,EAAEuE,EAAEm8D,OAAO,GAAG,GAAG,IAAI9oE,EAAE,EAAEA,EAAEiI,EAAE7F,KAAK5C,GAAGuB,OAAOf,IAAI,CAAC,IAAIc,EAAEd,EAAE4I,EAAEX,EAAE7F,KAAK5C,GAAGQ,GAAG2M,EAAEm8D,SAAShoE,EAAEd,GAAG4N,EAAE7M,OAAO,iBAAiB6M,EAAE5N,IAAI2M,EAAEk9B,YAAYjhC,EAAE+D,EAAEk9B,UAAUjhC,EAAE9H,IAAI8H,EAAE04C,EAAExgD,EAAE8H,GAAG,mBAAmB9H,GAAGsH,EAAEtH,GAAGsH,EAAEtH,IAAI,GAAGsH,EAAEtH,GAAGlC,KAAKgK,IAAIR,EAAEtH,GAAG8H,EAAEX,EAAE7F,KAAK5C,GAAG4I,EAAEuE,EAAEm8D,SAAS9oE,EAAE4N,EAAE7M,OAAOuM,EAAE,gBAAgB,gBAAgB,6BAA6BM,EAAE7M,OAAO,sBAAsBf,EAAE+I,EAAEvJ,GAAGQ,EAAE4N,EAAE7M,QAAQuM,EAAE,gBAAgB,eAAe,4BAA4BM,EAAE7M,OAAO,sBAAsBf,EAAE+I,EAAEvJ,IAAwC,OAApCmN,EAAEm8D,QAAQ7gE,EAAEilF,OAAOjlF,EAAEilF,KAAKD,OAAOr/E,GAAU7E,GAAGd,EAAE7F,KAAKrB,OAAOkH,EAA3nB,GAAgoB,SAAShF,IAAI,OAAO0J,EAAEm8D,QAAQ,IAAIl7D,EAAE7M,OAAO,SAASugD,EAAE9hD,EAAEQ,GAAG,OAAOoI,EAAE5I,EAAEmN,EAAE6+E,4BAAuB,IAAS7+E,EAAE4+E,cAAcnjF,KAAKuE,EAAE4+E,cAAcnjF,GAAGuE,EAAE6+E,sBAAsBpjF,KAAI,KAAMuE,EAAE4+E,cAAcnjF,IAAIuE,EAAE4+E,eAAe,SAASvrF,GAAG,SAASA,GAAG,UAAUA,GAAG,UAAUA,IAAIc,EAAEiL,KAAK/L,GAAGi0B,WAAWj0B,GAAG4I,EAAEmD,KAAK/L,GAAG,IAAI4Y,KAAK5Y,GAAG,KAAKA,EAAE,KAAKA,GAAGA,EAAE,IAAIoI,EAAE,SAASkF,EAAE9N,EAAEQ,EAAEoI,EAAEtH,GAAGmH,EAAEmnF,OAAOxwF,KAAK,CAAC2G,KAAK/F,EAAEugD,KAAK//C,EAAE88E,QAAQ10E,EAAEmpF,IAAIzwF,IAAIS,KAAKkC,MAAM,SAASjE,EAAEQ,EAAEoI,GAAG,IAAItH,EAAE6L,EAAEqgF,WAAW,IAAI,GAAGrgF,EAAEogF,UAAUpgF,EAAEogF,QAAQ,SAASvtF,EAAEQ,GAAGR,EAAEA,EAAE0e,OAAO,EAAE,SAAS,IAAI9V,EAAE,IAAIoa,OAAOpV,EAAEpN,GAAG,UAAUoN,EAAEpN,GAAG,MAAMc,GAAGtB,EAAEA,EAAE+L,QAAQnD,EAAE,KAAK+C,MAAM,MAAMvC,EAAEpJ,EAAE2L,MAAM,MAAMpC,EAAE,EAAEH,EAAE7H,QAAQ6H,EAAE,GAAG7H,OAAOD,EAAE,GAAGC,OAAO,GAAG,IAAID,EAAEC,QAAQgI,EAAE,MAAM,KAAK,IAAI,IAAInD,EAAE,EAAEuC,EAAE,EAAEA,EAAErH,EAAEC,OAAOoH,IAAI,OAAOrH,EAAEqH,GAAG,IAAIvC,IAAI,OAAOA,GAAG9E,EAAEC,OAAO,EAAE,OAAO,KAApR,CAA0RvB,EAAEsB,IAAI+C,GAAE,EAAG8I,EAAE0C,UAAUlC,EAAER,EAAE0C,aAAa1C,EAAE0C,UAAU1C,EAAE0C,UAAU7P,GAAGyI,EAAEilF,KAAK79E,UAAU1C,EAAE0C,eAAe,CAAC,IAAIzG,EAAE,SAASpJ,EAAEQ,EAAEoI,EAAEtH,GAAG,IAAI,IAAI8H,EAAEG,EAAEnD,EAAEuC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAIkF,EAAE8/E,WAAW9/E,EAAE+/E,UAAUvpF,EAAE,EAAEA,EAAEsE,EAAEpH,OAAO8C,IAAI,CAAC,IAAI4J,EAAEtF,EAAEtE,GAAG+J,EAAE,EAAE3F,EAAE,EAAEjG,EAAE,EAAE4D,OAAE,EAAO,IAAI,IAAIhC,EAAE,IAAI0H,EAAE,CAACy9D,SAASjoE,EAAEuO,UAAU5B,EAAEs/E,QAAQ/sF,EAAE2vF,QAAQ,KAAKlsF,MAAMjE,GAAGyD,EAAE,EAAEA,EAAEW,EAAExB,KAAKrB,OAAOkC,IAAI,GAAGmF,GAAGJ,EAAEpE,EAAExB,KAAKa,IAAIjB,QAAQ,CAAC,IAAIs/C,EAAE19C,EAAExB,KAAKa,GAAGlC,OAAOkH,GAAGq5C,OAAE,IAAS17C,EAAE,EAAE07C,IAAI1zC,GAAGiQ,KAAKC,IAAIwjC,EAAE17C,GAAGA,EAAE07C,GAAG17C,EAAE,EAAE,EAAEhC,EAAExB,KAAKrB,SAASkH,GAAGrE,EAAExB,KAAKrB,OAAOiB,SAAI,IAAS+G,GAAGA,EAAE6E,IAAI,KAAK3F,IAAIc,EAAE6E,EAAEhF,EAAE6E,GAAG,MAAM,CAAC+jF,cAAc7kF,EAAE0C,UAAUzG,GAAG6oF,cAAc7oF,GAAjc,CAAqcpJ,EAAEmN,EAAEogF,QAAQpgF,EAAEmgF,eAAengF,EAAEo8D,UAAUngE,EAAE4oF,WAAW7kF,EAAE0C,UAAUzG,EAAE6oF,eAAe5tF,GAAE,EAAG8I,EAAE0C,UAAUhC,EAAEmgF,kBAAkBvlF,EAAEilF,KAAK79E,UAAU1C,EAAE0C,UAAU,IAAItG,EAAEqF,EAAEzB,GAAG,OAAOA,EAAEgjF,SAAShjF,EAAEm8D,QAAQ//D,EAAE4mF,UAAU/pF,EAAEpG,EAAE2I,EAAE,IAAImD,EAAEvC,GAAGd,EAAEE,EAAE1E,MAAMmC,EAAE5F,EAAEoI,GAAGxE,IAAI6J,EAAE,CAACy/E,KAAK,CAACuC,QAAO,IAAKxnF,GAAG,CAACilF,KAAK,CAACuC,QAAO,KAAMluF,KAAKkuF,OAAO,WAAW,OAAOhiF,GAAGlM,KAAKuvF,MAAM,WAAWrjF,GAAE,EAAGtF,EAAEkpF,QAAQzrF,EAAEA,EAAEsY,OAAO/V,EAAEupF,iBAAiBnwF,KAAKwvF,OAAO,WAAWtjF,GAAE,EAAGzN,EAAEsvF,SAASC,WAAW3pF,GAAE,IAAKrE,KAAKmuF,QAAQ,WAAW,OAAOlwF,GAAG+B,KAAK8vF,MAAM,WAAW7xF,GAAE,EAAG2I,EAAEkpF,QAAQppF,EAAEilF,KAAKwC,SAAQ,EAAGviF,EAAER,EAAEu/E,WAAWv/E,EAAEu/E,SAASjkF,GAAGrC,EAAE,IAAI,SAASwH,EAAE5N,GAAG,OAAOA,EAAE+L,QAAQ,sBAAsB,QAAQ,SAASD,EAAE9L,GAAG,IAAIsN,EAAEkB,GAAGxO,EAAEA,GAAG,IAAI6P,UAAUzC,EAAEpN,EAAEutF,QAAQv+E,EAAEhP,EAAEupE,SAASr7D,EAAElO,EAAE++C,KAAK1xC,EAAErN,EAAEmwF,QAAQziF,EAAE1N,EAAEmyF,SAAS/lF,EAAEkB,OAAE,IAAStN,EAAEwtF,UAAU,IAAIxtF,EAAEwtF,UAAU,QAAG,IAASxtF,EAAEoyF,aAAahmF,EAAEpM,EAAEoyF,aAAa,iBAAiB5jF,IAAI,EAAEX,EAAEu/E,eAAejuF,QAAQqP,MAAMA,EAAE,KAAKQ,IAAIR,EAAE,KAAK,uCAAsC,IAAKQ,EAAEA,EAAE,KAAK,iBAAiBA,IAAI,EAAEnB,EAAEu/E,eAAejuF,QAAQ6P,MAAMA,GAAE,GAAI,OAAO5B,GAAG,OAAOA,GAAG,SAASA,IAAIA,EAAE,MAAM,IAAInB,EAAE,EAAED,GAAE,EAAGjK,KAAKkC,MAAM,SAAS3C,EAAEd,EAAEoI,GAAG,GAAG,iBAAiBtH,EAAE,KAAK,yBAAyB,IAAI8H,EAAE9H,EAAEC,OAAOvB,EAAEwO,EAAEjN,OAAOgI,EAAE6D,EAAE7L,OAAO6E,EAAE4I,EAAEzN,OAAOoH,EAAEgF,EAAEO,GAAG7J,EAAE,GAAG4J,EAAE,GAAGG,EAAE,GAAG3F,EAAEwD,EAAE,EAAE,IAAI3K,EAAE,OAAOyM,IAAI,GAAGL,IAAG,IAAKA,IAAI,IAAIpM,EAAEnC,QAAQmO,GAAG,CAAC,IAAI,IAAI9K,EAAElB,EAAEqK,MAAMyB,GAAGhJ,EAAE,EAAEA,EAAE5B,EAAEjB,OAAO6C,IAAI,CAAC,GAAGgK,EAAE5L,EAAE4B,GAAG6H,GAAGmC,EAAE7M,OAAO6C,IAAI5B,EAAEjB,OAAO,EAAE0K,GAAGmB,EAAE7L,YAAY,GAAGqH,EAAE,OAAOmF,IAAI,IAAIiB,GAAGZ,EAAEsQ,OAAO,EAAEtY,KAAK4I,EAAE,CAAC,GAAGrG,GAAG,GAAGtE,EAAE,GAAGwJ,EAAEO,EAAEzC,MAAM6C,IAAI3B,IAAIb,EAAE,OAAO+B,SAASF,EAAEO,EAAEzC,MAAM6C,IAAI,GAAGnB,GAAGA,GAAGjJ,EAAE,OAAOC,EAAEA,EAAEgD,MAAM,EAAEgG,GAAGU,GAAE,IAAK,OAAOA,IAAI,IAAI,IAAItK,EAAEq+C,EAAExgD,EAAEnC,QAAQqP,EAAEvC,GAAGkB,EAAE7L,EAAEnC,QAAQiO,EAAEnB,GAAGzD,EAAE,IAAIwa,OAAOpV,EAAExB,GAAGwB,EAAEN,GAAG,OAAO,GAAGhM,EAAE2K,KAAKqB,EAAE,GAAG0B,GAAG,IAAIZ,EAAE7M,QAAQD,EAAEod,OAAOzS,EAAE7F,KAAK4I,EAAE,CAAC,IAAI,IAAI7B,EAAE,OAAOY,IAAI9B,EAAEkB,EAAE5D,EAAE4D,EAAE7L,EAAEnC,QAAQiO,EAAEnB,GAAG61C,EAAExgD,EAAEnC,QAAQqP,EAAEvC,QAAQ,IAAI,IAAI61C,IAAIA,EAAE30C,IAAI,IAAIA,GAAGiB,EAAEhP,KAAKkC,EAAE4K,UAAUD,EAAE61C,IAAI71C,EAAE61C,EAAE9hD,EAAE8hD,EAAExgD,EAAEnC,QAAQqP,EAAEvC,OAAO,CAAC,IAAI,IAAIkB,EAAE,MAAM,GAAGiB,EAAEhP,KAAKkC,EAAE4K,UAAUD,EAAEkB,IAAIhB,EAAEgB,EAAE5D,GAAGZ,IAAIkE,IAAIb,GAAG,OAAO+B,IAAI,GAAGV,GAAGhJ,EAAE9C,QAAQ8L,EAAE,OAAOU,GAAE,QAAS,IAAItK,EAAEwI,EAAEA,MAAM,CAAC,IAAI,KAAKxI,EAAEnC,EAAEnC,QAAQmO,EAAE7J,EAAE,IAAI,OAAOmF,GAAGqF,EAAE7O,KAAK,CAAC2G,KAAK,SAASw6C,KAAK,gBAAgB+8B,QAAQ,4BAA4ByU,IAAI1tF,EAAE9C,OAAO0+B,MAAMh0B,IAAI2C,IAAI,GAAGnL,IAAI2F,EAAE,EAAE,OAAOwF,EAAEtN,EAAE4K,UAAUD,EAAExI,GAAGsI,QAAQvD,EAAE8E,IAAI,GAAGA,IAAIlB,GAAG9K,EAAEmC,EAAE,KAAK2I,GAAG,GAAGkB,IAAIlB,GAAG,IAAI3I,GAAGnC,EAAEmC,EAAE,KAAK2I,EAAE,CAAC,IAAI0B,EAAEzH,GAAG,IAAI8G,EAAE20C,EAAEzjC,KAAK2G,IAAI88B,EAAE30C,IAAI,GAAG7L,EAAEmC,EAAE,EAAEqK,KAAKU,EAAE,CAACJ,EAAEhP,KAAKkC,EAAE4K,UAAUD,EAAExI,GAAGsI,QAAQvD,EAAE8E,IAAIrB,EAAExI,EAAE,EAAEqK,EAAE9N,EAAE8hD,EAAExgD,EAAEnC,QAAQqP,EAAEvC,GAAGkB,EAAE7L,EAAEnC,QAAQiO,EAAEnB,GAAG,MAAM,IAAIH,EAAEzF,EAAE8G,GAAG,GAAG7L,EAAEod,OAAOjb,EAAE,EAAEqI,EAAEvC,KAAK6D,EAAE,CAAC,GAAGgB,EAAEhP,KAAKkC,EAAE4K,UAAUD,EAAExI,GAAGsI,QAAQvD,EAAE8E,IAAInB,EAAE1I,EAAE,EAAEqI,EAAEvC,GAAGu4C,EAAExgD,EAAEnC,QAAQqP,EAAEvC,GAAGtD,IAAIkE,IAAIb,GAAG,OAAO+B,IAAI,GAAGV,GAAGhJ,EAAE9C,QAAQ8L,EAAE,OAAOU,GAAE,GAAI,MAAME,EAAE7O,KAAK,CAAC2G,KAAK,SAASw6C,KAAK,gBAAgB+8B,QAAQ,8CAA8CyU,IAAI1tF,EAAE9C,OAAO0+B,MAAMh0B,IAAIxI,UAAUA,IAAI,OAAOmL,IAAI,SAASf,EAAE7N,GAAGqE,EAAEjF,KAAKY,GAAGyI,EAAEwD,EAAE,SAAS5F,EAAErG,GAAG,IAAIQ,EAAE,EAAE,IAAI,IAAIR,EAAE,CAAC,IAAI4I,EAAEtH,EAAE4K,UAAUzI,EAAE,EAAEzD,GAAG4I,GAAG,KAAKA,EAAE8C,SAASlL,EAAEoI,EAAErH,QAAQ,OAAOf,EAAE,SAASoO,EAAE5O,GAAG,OAAO4I,SAAI,IAAS5I,IAAIA,EAAEsB,EAAEod,OAAOzS,IAAImC,EAAEhP,KAAKY,GAAGiM,EAAE7C,EAAEyE,EAAEO,GAAGzF,GAAGkE,KAAKkB,IAAI,SAAS5B,EAAEnM,GAAGiM,EAAEjM,EAAE6N,EAAEO,GAAGA,EAAE,GAAGjB,EAAE7L,EAAEnC,QAAQiO,EAAEnB,GAAG,SAAS8B,EAAE/N,GAAG,MAAM,CAAC4C,KAAKyB,EAAEurF,OAAO3hF,EAAEy/E,KAAK,CAAC79E,UAAUrB,EAAE6jF,UAAUjlF,EAAE8iF,QAAQlkF,EAAEsmF,YAAYtyF,EAAEiV,OAAOxM,GAAGjI,GAAG,KAAK,SAASqM,IAAIqB,EAAEH,KAAK1J,EAAE,GAAG4J,EAAE,KAAKlM,KAAK8vF,MAAM,WAAW7lF,GAAE,GAAIjK,KAAKmwF,aAAa,WAAW,OAAOjmF,GAAG,SAASzD,EAAExI,GAAG,IAAIQ,EAAER,EAAE4C,KAAKgG,EAAEvE,EAAE7D,EAAEosF,UAAUtrF,GAAE,EAAG,GAAGd,EAAEuH,MAAMa,EAAE+jF,UAAUnsF,EAAEuH,MAAMvH,EAAEouF,WAAW,GAAGpuF,EAAE4vF,SAAS5vF,EAAE4vF,QAAQxtF,KAAK,CAAC,IAAIwG,EAAE,CAACyoF,MAAM,WAAWvwF,GAAE,EAAGwM,EAAEtN,EAAEosF,SAAS,CAAChqF,KAAK,GAAGgtF,OAAO,GAAGlC,KAAK,CAACwC,SAAQ,MAAOoB,MAAMjrF,EAAEkrF,OAAOlrF,GAAG,GAAGsH,EAAE/E,EAAE0jF,UAAU,CAAC,IAAI,IAAI/iF,EAAE,EAAEA,EAAE/I,EAAE4vF,QAAQxtF,KAAKrB,SAASqH,EAAE0jF,SAAS,CAAC1pF,KAAK,CAACpC,EAAE4vF,QAAQxtF,KAAK2G,IAAIqmF,OAAOpvF,EAAE4vF,QAAQR,OAAOlC,KAAKltF,EAAE4vF,QAAQ1C,MAAMtkF,IAAI9H,GAAGiI,YAAY/I,EAAE4vF,aAAaziF,EAAE/E,EAAE2jF,aAAa3jF,EAAE2jF,UAAU/rF,EAAE4vF,QAAQhnF,EAAE5I,EAAEouF,aAAapuF,EAAE4vF,SAAS5vF,EAAE8vF,WAAWhvF,GAAGwM,EAAEtN,EAAEosF,SAASpsF,EAAE4vF,SAAS,SAAStiF,EAAE9N,EAAEQ,GAAG,IAAIoI,EAAEvE,EAAErE,GAAG2N,EAAE/E,EAAE6jF,eAAe7jF,EAAE6jF,aAAajsF,GAAGoI,EAAE2pF,mBAAmBluF,EAAErE,GAAG,SAASqG,IAAI,KAAK,mBAAmB,SAASuI,EAAE5O,GAAG,GAAG,iBAAiBA,GAAG,OAAOA,EAAE,OAAOA,EAAE,IAAIQ,EAAE4P,MAAMsF,QAAQ1V,GAAG,GAAG,GAAG,IAAI,IAAI4I,KAAK5I,EAAEQ,EAAEoI,GAAGgG,EAAE5O,EAAE4I,IAAI,OAAOpI,EAAE,SAAS2L,EAAEnM,EAAEQ,GAAG,OAAO,WAAWR,EAAEqC,MAAM7B,EAAEqX,YAAY,SAASlK,EAAE3N,GAAG,MAAM,mBAAmBA,EAAE,OAAO2I,EAAEyF,EAAEi+E,UAAU,SAASrsF,GAAG,IAAIQ,EAAER,EAAE4C,KAAuD,QAAlD,IAASiL,EAAEwiF,WAAW7vF,IAAIqN,EAAEwiF,UAAU7vF,EAAEosF,UAAa,iBAAiBpsF,EAAEoY,MAAMxK,EAAE09E,YAAY,CAACc,SAAS/+E,EAAEwiF,UAAUD,QAAQviF,EAAE5J,MAAMzD,EAAEoY,MAAMpY,EAAEuc,QAAQuzE,UAAS,SAAU,GAAGliF,EAAE6+E,MAAMzsF,EAAEoY,iBAAiBq0E,MAAMzsF,EAAEoY,iBAAiBjb,OAAO,CAAC,IAAIiL,EAAEiF,EAAE5J,MAAMzD,EAAEoY,MAAMpY,EAAEuc,QAAQnU,GAAGwF,EAAE09E,YAAY,CAACc,SAAS/+E,EAAEwiF,UAAUD,QAAQxnF,EAAE0nF,UAAS,MAAOziF,EAAEq+E,oBAAoBlsF,EAAEwE,SAASguF,qBAAqB,UAAUjpF,EAAEvJ,EAAEuB,OAAOvB,EAAEA,EAAEuB,OAAO,GAAGoD,IAAI,GAAGH,SAAS09C,KAAK19C,SAASmiC,iBAAiB,oBAAmB,WAAWvgC,GAAE,KAAI,GAAIA,GAAE,IAAKhC,EAAExG,UAAUD,OAAOsL,OAAOzG,EAAE5E,YAAYorC,YAAY5kC,GAAGX,EAAE7F,UAAUD,OAAOsL,OAAOzG,EAAE5E,YAAYorC,YAAYvlC,GAAGq+C,EAAElkD,UAAUD,OAAOsL,OAAO64C,EAAElkD,YAAYorC,YAAY8Y,GAAG30C,EAAEvP,UAAUD,OAAOsL,OAAOzG,EAAE5E,YAAYorC,YAAY77B,EAAEU,IAA3ijB,gC,wxECgBzJ4kF,EAAY,SAACxsF,GACxB,IAAMysF,EAAUC,iBAAO,MA+BvB,OA7BA3Q,qBAAU,WACR,IAAK0Q,EAAQtjF,QAAS,CACpB,IAAMwjF,EAASpuF,SAASC,cAAc,OACtCmuF,EAAOC,UAAUr/D,IAAI,YACrBk/D,EAAQtjF,QAAUwjF,EAGpB,IAAME,EAAWtY,YAAUv0E,GACvBA,EACkB,iBAAXA,GACPzB,SAASuuF,cAAc9sF,IACvBzB,SAASC,cAAc,OAW3B,OAPKquF,EAASE,gBACZF,EAASD,UAAUr/D,IAAI,mBACvBhvB,SAAS09C,KAAKt3C,aAAakoF,EAAUtuF,SAAS09C,KAAK+wC,oBAGrDH,EAASjuF,YAAY6tF,EAAQtjF,SAEtB,WACLsjF,EAAQtjF,QAAQ+jE,SAEmB,IAA/B2f,EAASI,WAAW3xF,QAAcuxF,EAAS3f,YAEhD,CAACltE,IAEGysF,EAAQtjF,S,EAhCJqjF,E,gCAuCN,IAAM1mB,EAAS,SAAChvD,GAA2B,IAAnB4jE,IAAmB,yDAChDqB,qBAAU,WAER,2BAAC,gHAEOrB,EAFP,gCAG+BwS,IAAKtY,KAAK,CAClCuY,IAAK,CACHC,QAAS,KACTC,KAAMv2E,EAAOmvD,SAAW,SACxB3uC,KAAMxgB,EAAOovD,SAAW,gBAE1BC,UAAWrvD,EAAOqvD,UAClBmnB,UAAU,IAVjB,OAGWC,EAHX,OAamBpjF,MAAMgM,KAAK5X,SAAS2L,iBAAiB,8BAC7C3I,QAAQgsF,EAAYC,MAAMC,SAASvqF,KAAKqqF,EAAYC,QAd/D,uDAiBQE,EAAOC,eAAet0F,QAAQyI,MAAR,MAjB9B,wDAAD,KAoBC,CAACgV,EAAQ4jE,K,EAvBD5U,E,eA+BN,IAAMD,EAAwB,WACnC,QAAoC+V,mBAAS,WAA7C,GAAOhW,EAAP,KAAmBgoB,EAAnB,KAEMC,EAAenB,mBAEf5uF,EAAS,SAAC,GAAe,IAAbijC,EAAa,EAAbA,OAChB6sD,EAAc,CAAEhoB,WAAY7kC,KAkB9B,OAfAg7C,qBAAU,WACR,IAIE,OAHA3kF,OAAOspC,iBAAiB,sBAAuB5iC,GAC/C+vF,EAAa1kF,QAAUkqE,cAEhB,WACLU,YAA6B8Z,EAAa1kF,SAC1C/R,OAAOsiE,oBAAoB,sBAAuB57D,IAEpD,MAAO/D,GAEF2zF,EAAOC,eAAet0F,QAAQyI,MAAM/H,MAE1C,IAEI6rE,G,EAxBIC,E,uFA+BN,IAAMioB,EAAuB,SAACC,GACnC,IAAMC,EAAWtB,iBAAO,MAkBxB,OAjBA3Q,qBAAU,WACRiS,EAAS7kF,QAAU4kF,IAClB,CAACA,IACJhS,qBAAU,WACR,IAAMt7C,EAAW,SAAC,GAAwB,IAAtBwtD,EAAsB,EAAtBA,QAAsB,EAAbnuD,SACZvhC,SAAS09C,MAAQ+xC,EAAS7kF,QAAQ8kF,IAC/CD,EAAS7kF,QAAQ8kF,MAKrB,OADA1vF,SAASmiC,iBAAiB,UAAWD,GAC9B,WACLrpC,OAAOsiE,oBAAoB,UAAWj5B,MAEvC,IAGI/oC,OAAOgrC,QAAQqrD,GAAW5zB,QAC/B,SAACh6D,EAAD,gBAAKyH,EAAL,KAAQ/B,EAAR,mBACK1F,GADL,QAEGyH,GAAI,qBAAGsmF,WAA4BtmF,GAAK/B,UAE3C,K,EAxBSioF,E,wDA4BE,CACbtB,YACA1mB,SACAD,wBACAioB,yB,6FArIWtB,E,gHAuCA1mB,E,6GA+BAD,E,4HA+BAioB,E,qsBC3HAK,EAAqB,SAAC,GAAwD,IAAtD1P,EAAsD,EAAtDA,WAAY93D,EAA0C,EAA1CA,OAAQynE,EAAkC,EAAlCA,eACjDxP,GADmF,EAAlBX,YAChDQ,EAAa,aAAe,OAC7CI,EAAwB,WAAXl4D,EAAsB,uBAAyB,qBAE5D0nE,EAAWD,EAAej0B,QAC9B,SAACijB,EAAK6B,EAAM5jF,EAAG+X,GAAf,gBAA0BgqE,GAA1B,OAAgC/hF,EAAI,EAAKA,IAAM+X,EAAI9X,OAAS,EAAI,QAAU,KAAQ,IAAlF,OAAuF2jF,KACvF,IAEIqP,EAAkC,KAAbD,EAAA,aAAwBA,GAAa,GAEhE,gBAAUzP,EAAV,YAA4BC,EAA5B,qBAAmDyP,IAGxCC,EAAsB,SAAC,GAAwD,IAAtD9P,EAAsD,EAAtDA,WAAY93D,EAA0C,EAA1CA,OAAQ+3D,EAAkC,EAAlCA,QAASC,EAAyB,EAAzBA,WAAY6P,EAAa,EAAbA,OACvE5P,EAAiBH,EAAa,aAAe,mCAC7CgQ,EAAchQ,EAAa,QAAU,gBACrCI,EAAa,GAAH,OAAMl4D,GAAN,OAAe+3D,EAAU,cAAgB,IAEzD,gBAAUE,EAAV,YAA4BC,GAA5B,OACG2P,EAEG,GADA,uCAAkC7P,EAAlC,YAAgD8P,EAAhD,YAA+D5P,EAA/D,qBAKK6P,EAAqB,SAAC,GAA0B,IAAxBxzD,EAAwB,EAAxBA,OAAQyzD,EAAgB,EAAhBA,UAC3C,gBAAUzzD,EAAV,4BAAoCyzD,EAApC,0CAGWC,EAAoB,SAAC,GAAyD,IAAvDnQ,EAAuD,EAAvDA,WAAY93D,EAA2C,EAA3CA,OAAQ+3D,EAAmC,EAAnCA,QAASC,EAA0B,EAA1BA,WAAYkQ,EAAc,EAAdA,QACrEjQ,EAAiBH,EAAa,QAAU,gBACxCI,EAAa,GAAH,OAAMl4D,GAAN,OAAe+3D,EAAU,cAAgB,IAEzD,qCAA+BC,GAA/B,OACEkQ,EAAU,IAAM,GADlB,YAEIjQ,EAFJ,YAEsBC,EAFtB,oB,EAKa,CAAEsP,qBAAoBI,sBAAqBG,uB,6FAtC7CP,E,2FAaAI,E,4FAYAG,E,2FAIAE,E,2rBC1BAE,EAAsB,SACjCxiD,EACAyiD,EACAC,EACAnmD,GAQA,IANG,IADHomD,EACG,uDADgB,EAEf9rF,EAAI,EACJ+rF,EAAa,CAAC,GAIXA,EAAW/rF,IAAMmpC,GAAM,CAE5B,IAAM4M,EAAWg2C,EAAW/rF,GACtBg6D,EAAWjkB,EAAW61C,EAC5BG,EAAa,GAAH,WAAOA,GAAP,CAAmB/xB,IAE7Bh6D,IAME+rF,EAAW5zF,OAAS0zF,GAAaE,EAAW5zF,OAAS,GAAM,IAC7D4zF,EAAa,GAAH,WAAOA,GAAP,CAAmBA,EAAWA,EAAW5zF,OAAS,GAAKyzF,KAInE,IAAMI,EAAgBD,EAAWA,EAAW5zF,OAAS,GAUrD,OARI4zF,EAAW5zF,OAAS0zF,IACtBE,EAAaA,EAAWt9D,QAAO,SAACpvB,EAAGnH,GAAJ,OAAUA,EAAI4zF,GAAqB,MAGhEpmD,IACFqmD,EAAaA,EAAWt9D,QAAO,SAACpvB,EAAGnH,GAAJ,OAAgB,IAANA,GAAWA,IAAM6zF,EAAW5zF,OAAS,MAGzE,CAAE4zF,aAAYC,kBAGjBC,EAAqB,SAAAxlB,GAAK,OAC9BA,EAAMh4C,QAAO,SAACrW,EAAMlgB,EAAG+X,GAAV,OAAkBA,EAAIi8E,WAAU,SAAA7sF,GAAC,OAAIA,EAAE+S,YAAcgG,EAAKhG,eAAela,MAE3Ei0F,EAA0B,SAACjjD,EAAMC,EAAMs5B,GAA6B,IAAjB2pB,EAAiB,uDAAN,EAEnEC,EAAaC,IAAU12C,MAAM1M,EAAMC,GAEzC,GAAIkjD,EAAWl0F,QAAUi0F,EACvB,MAAO,CAAEG,YAAaN,EAAmB,CAAC/iD,GAAF,WAAWmjD,KAAcG,cAAe,SAGlF,IAAMC,EAAiBC,IAAS92C,MAAM1M,EAAMC,EAAM,GAElD,GAAIsjD,EAAet0F,QAAUi0F,EAC3B,MAAO,CACLG,YAAaN,EAAmB,CAAC/iD,GAAF,WAAWujD,KAC1CD,cAAe,aAInB,IAAMG,EAAYD,IAAS92C,MAAM1M,EAAMC,GAEvC,GAAIwjD,EAAUx0F,QAAUi0F,EACtB,MAAO,CACLG,YAAaN,EAAmB,CAAC/iD,GAAF,WAAWyjD,KAC1CH,cAAe,QAInB,IAAMI,EAAgBC,IAAQj3C,MAAM1M,EAAMC,EAAM,GAEhD,GAAIyjD,EAAcz0F,QAAUi0F,EAC1B,MAAO,CACLG,YAAaN,EAAmB,CAAC/iD,GAAF,WAAW0jD,KAC1CJ,cAAe,aAInB,IAAMM,EAAWD,IAAQj3C,MAAM1M,EAAMC,GACrC,MAAO,CACLojD,YAAaN,EAAmB,CAAC/iD,GAAF,WAAW4jD,KAC1CN,cAAe,QAINO,EAAwB,SACnCtmB,EACAv9B,EACAC,GAIG,IAHH6jD,EAGG,uDAHc,IACjBC,EAEG,uDAFW,GACdC,EACG,uDADe,EAEZC,EAA2BN,IAAQr3C,MAAMtM,EAAMC,GAC/CikD,EAA2BP,IAAQr3C,MAAMixB,EAAM,GAAIA,EAAM,IACzD4mB,EAA4BD,EAA2BD,EAGvDG,EAAmB7mB,EAAMtuE,OAAS,EAAI80F,EAEtCM,EAAcD,EAChB7mB,EAAMxoE,MAAM,GAAGwwB,QAAO,SAACr3B,EAAGy/B,GAAJ,OAAcA,EAAQq2D,GAAoB,KAChE,GAEEM,EAAgBH,EAA4BL,IAAmBM,EAErE,MAAO,CAACE,GAAiB/mB,EAAM,GAAGr0D,WAA3B,WAAyCm7E,EAAYhxF,KAAI,SAAAnF,GAAC,OAAIA,EAAEgb,eAAYqc,OACjFgR,UAISguD,EAA8B,SAAChnB,EAAOhE,EAAY+pB,EAAekB,GAC5E,IAAMC,EAAYC,IAASj2E,MAAM8uD,EAAM,IACjConB,EAAaD,IAASj2E,MAAM8uD,EAAMA,EAAMtuE,OAAS,IAIjD21F,GAF2BH,EAAUv7E,UAAcy7E,EAAWz7E,UAChDq0D,EAAMh4C,QAAO,SAAAr3B,GAAC,OAAKs2F,EAAiBzvD,SAAS7mC,EAAEgb,cACzB0+D,MAAK,SAAAid,GAAI,OAAIA,GAAQF,MAE/D,OAAO,SAACz2F,EAAGy/B,GAET,GAAI62D,EAAiBzvD,SAAS7mC,EAAEgb,WAC9B,MAAO,GAIT,GAAc,IAAVykB,EAEF,OAAOrR,YAAW,cAAXA,CAA0BpuB,GAInC,IAAI42F,EAAmB,SAWvB,MAVsB,UAAlBxB,IAEFwB,EAAmB,MAIjBF,GAAyB12F,EAAEgb,YAAc07E,EAAsB17E,YACjE47E,GAAoB,SAGfxoE,YAAWwoE,EAAXxoE,CAA6BpuB,M,6FAjJ3Bu0F,E,sFA0CPM,E,qFAGOE,E,0FA0CAY,E,wFA0BAU,E,8FAoCE,K,8MCxJf,mBAGI1jE,EAAS,aAAS,SAAS3R,GAC7BA,EAAKwU,QAAQxU,EAAOA,EAAKyoC,sBACxB,SAASzoC,EAAMu9B,GAChBv9B,EAAKwU,SAASxU,EAAOu9B,EAAO,QAC3B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAAS,OACtB,SAASz9B,GACV,OAAOA,EAAKsqC,mBAGC,MACM34B,EAAO6rB,O,05BCZtBq4C,EAAYt2C,IAAa,YAEzBu2C,EAA0B,SAAAC,GAC9B,OAAO,IACFA,EAEAn3B,QACC,SAACz6D,EAAD,OAAQy+E,EAAR,EAAQA,KAAMoT,EAAd,EAAcA,WAAYj3C,EAA1B,EAA0BA,KAASk3C,EAAnC,gBACE9xF,EAAI9F,IAAIukF,EAAM,CACZoT,aACAj3C,OACAm3C,WAAY,GAAF,WAAQ/xF,EAAI/F,IAAIwkF,IAASz+E,EAAI/F,IAAIwkF,GAAMsT,YAAe,IAAtD,CAA2DD,QAEzE,IAAI/d,MAGP7hD,QAAO,gBAAM0oB,EAAN,YAAMA,KAAN,OAAkBA,GAAiB,QAATA,KACjC56C,KAAI,2BAAEy+E,EAAF,YAAUoT,EAAV,EAAUA,WAAYj3C,EAAtB,EAAsBA,KAAMm3C,EAA5B,EAA4BA,WAA5B,MAA+C,CAClDtT,KAAMA,EAAKr4E,QAAQ,KAAM,KACzByrF,aACAj3C,KAAMA,EAAK1rC,cAEX6iF,WAAYA,EACT/xF,KAAI,gBAAG6b,EAAH,EAAGA,KAAH,4BAA6BA,KAAM61E,EAAU71E,QACjD+D,MAAK,SAACnf,EAAGC,GAAJ,OAAUD,EAAEob,KAAOnb,EAAEmb,a,EAIpB81E,EAAA,O,6FA5BTD,E,qFAEAC,E,4TCJN,+EAASxtD,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAMjS,SAAS8/E,EAAI3tD,GAC1B,IAAI94B,EAAY84B,EAAK94B,UACjBo5B,EAAWN,EAAKM,SAChBC,EAPN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAOxR2E,CAA8BV,EAAM,CAAC,YAAa,aAElE,OAAoB,IAAMvlC,cAAc,OAAQqlC,EAAS,CACvD9yB,IAAKszB,EACLp5B,UAAW,IAAG,WAAYA,IACzBq5B,M,8BCZL,IAAIipC,EAAe/7C,OAAO+7C,aAE1BluE,EAAOiD,QAAUirE,G,6BCFjB,IAAIokB,EAAqB,EAAQ,IAC7BC,EAAe,EAAQ,IAEvBC,EAAmB,CACrBC,SAIF,SAAkCn0C,EAASC,EAAIm0C,GAC7C,OAAOH,EAAaj0C,GAEpB,SAAyBrD,GACvB,OAAgB,OAATA,GAAiBq3C,EAAmBr3C,GAAQsD,EAAGtD,GAAQy3C,EAAIz3C,KAHtB,eAJ9C03C,SAAS,GAWX3yF,EAAOiD,QAAUuvF,G,6BChBjB,IAAII,EAAa,EAAQ,KAQzB5yF,EAAOiD,QANP,SAAoB4vF,EAAQpyF,GAC1B,IAAIqyF,EAAOD,EAAOA,EAAO52F,OAAS,GAClC,OAAK62F,GAAQA,EAAK,GAAGryF,OAASA,EACvBmyF,EAAWE,EAAK,GAAGC,YAAYD,EAAK,KADA,I,6BCJ7C,IAEIE,EAFa,EAAQ,GAEDC,CAAW,cAEnCjzF,EAAOiD,QAAU+vF,G,6BCJjBhzF,EAAOiD,QAAUiwF,EAEjB,IAAIC,EAAe,EAAQ,KAEvBC,EAAWD,EAAaC,SACxBC,EAAOF,EAAaE,KACpBC,EAAOH,EAAaG,KAMxB,SAASJ,EAAM98B,EAAMnvD,EAAMssF,EAASjzC,GACd,mBAATr5C,GAA0C,mBAAZssF,IACvCjzC,EAAUizC,EACVA,EAAUtsF,EACVA,EAAO,MAGTksF,EAAa/8B,EAAMnvD,GAEnB,SAAkB8D,EAAMnR,GACtB,IAAI+G,EAAS/G,EAAQA,EAAQqC,OAAS,GAClC0+B,EAAQh6B,EAASA,EAAO5G,SAASF,QAAQkR,GAAQ,KACrD,OAAOwoF,EAAQxoF,EAAM4vB,EAAOh6B,KALK2/C,GAXrC4yC,EAAME,SAAWA,EACjBF,EAAMG,KAAOA,EACbH,EAAMI,KAAOA,G,gBCZb,IAGIE,EAHY,EAAQ,IAGLC,CAAUp7F,OAAQ,UAErC2H,EAAOiD,QAAUuwF,G,gBCLjB,IAAIE,EAAa,EAAQ,KAGrBC,EAA0B,iBAARzd,MAAoBA,MAAQA,KAAK79E,SAAWA,QAAU69E,KAGxE0d,EAAOF,GAAcC,GAAYt7E,SAAS,cAATA,GAErCrY,EAAOiD,QAAU2wF,G,cCsBjB5zF,EAAOiD,QALP,SAAkBzI,GAChB,IAAIiG,SAAcjG,EAClB,OAAgB,MAATA,IAA0B,UAARiG,GAA4B,YAARA,K,gBC3B/C,IAAIozF,EAAK,EAAQ,KAoBjB7zF,EAAOiD,QAVP,SAAsB+W,EAAOpW,GAE3B,IADA,IAAI3H,EAAS+d,EAAM/d,OACZA,KACL,GAAI43F,EAAG75E,EAAM/d,GAAQ,GAAI2H,GACvB,OAAO3H,EAGX,OAAQ,I,gBCjBV,IAAI63F,EAAY,EAAQ,KAiBxB9zF,EAAOiD,QAPP,SAAoB5C,EAAKuD,GACvB,IAAItG,EAAO+C,EAAI0zF,SACf,OAAOD,EAAUlwF,GACbtG,EAAmB,iBAAPsG,EAAkB,SAAW,QACzCtG,EAAK+C,M,6BCdX,6D,6QCmBM2zF,EAAiB,CACrB5kD,MAAO02B,IACPz2B,OAAQ02B,IACRz2B,MAAO02B,IACP72B,IAAK,MAED8kD,EAAoB,CACxB7kD,MAAO82B,IACP72B,OAAQ82B,IACR72B,MAAO82B,IACPj3B,IAAK,MAGD+kD,EAAc,SAAC,GAkBf,IAjBJruD,EAiBI,EAjBJA,OACAC,EAgBI,EAhBJA,OACAiB,EAeI,EAfJA,SACAc,EAcI,EAdJA,SACAb,EAaI,EAbJA,iBACAC,EAYI,EAZJA,mBACAa,EAWI,EAXJA,qBACAZ,EAUI,EAVJA,iBACA8N,EASI,EATJA,qBACAjN,EAQI,EARJA,MACAZ,EAOI,EAPJA,cACAC,EAMI,EANJA,gBACAY,EAKI,EALJA,kBACAX,EAII,EAJJA,cACA6N,EAGI,EAHJA,kBACAz0C,EAEI,EAFJA,KACAmlC,EACI,EADJA,MAEA,OACE,YAAC,IAAD,KAEuB,kBAAbmB,GAA0BA,EAChC,oBACE70B,IACW,WAATzR,EACIyR,YACIyzD,IAFR,wBAG6B7/B,EAAOhB,KAHpC,MAG+CgB,EAAOhB,KAHtD,2BAKI4gC,IAENqM,UAAQ,aACRlsC,OAAO,IACPD,MAAM,OAGRmB,GAAY5nC,wBAAc4nC,GAIlB,UAATtmC,GACC,oBACEyR,IAAK0zD,IACLziE,EAAG,CAAC,QAAD,OACO0iC,EADP,cACmBD,EADnB,aAC6BC,GAD7B,2BAEmBD,EAFnB,iBAEiCA,EAFjC,WAQP,oBACE1zB,IAAKA,YAAF,aACYi1B,EADZ,MAEC0+B,IAFD,IAGCmuB,EAAevzF,GAHhB,IAICy0C,EAJD,wBAMH68B,UAAA,wBAA0BtxE,EAA1B,YAECsnC,IAAUC,EACPD,EAAM1hC,MAAM,KAAKhG,KAAI,SAAC8J,EAAMnO,GAAP,OACnB,qBACE+1E,UAAA,wBAA0BtxE,EAA1B,wBAA8CzE,GAC9C4H,IAAG,wBAAmBnD,EAAnB,wBAAuCzE,GAC1C8L,EAAGu/B,EAAcv/B,EACjBU,EAAG6+B,EAAc7+B,EAAIxM,EAAIorC,GAExBj9B,MAGL49B,GACAA,EAAM1hC,MAAM,KAAKhG,KAAI,SAAC8J,EAAMnO,GAAP,OACnB,qBACEm4F,wBAAyB,CAAEC,OAAQjqF,GACnC4nE,UAAA,wBAA0BtxE,EAA1B,wBAA8CzE,GAC9C4H,IAAG,wBAAmBnD,EAAnB,wBAAuCzE,GAC1C8L,EAAGu/B,EAAcv/B,EACjBU,EAAG6+B,EAAc7+B,EAAIxM,EAAIorC,QAMnC,oBACEl1B,IAAKA,YAAF,aACY80B,EADZ,MAECi/B,IAFD,IAGCguB,EAAkBxzF,GAHnB,IAICu0C,EAJD,wBAMH+8B,UAAA,wBAA0BtxE,EAA1B,eAEConC,IAAaC,EACVD,EAASxhC,MAAM,KAAKhG,KAAI,SAAC8J,EAAMnO,GAAP,OACtB,qBACE+1E,UAAA,wBAA0BtxE,EAA1B,2BAAiDzE,GACjD4H,IAAG,wBAAmBnD,EAAnB,2BAA0CzE,GAC7C8L,EAAGo/B,EAAiBp/B,EACpBU,EACEu/B,GAASA,EAAM1hC,MAAM,KAAKpK,OAAS,EAC/BirC,EAAiB1+B,GAChBu/B,EAAM1hC,MAAM,KAAKpK,OAAS,GAAKmrC,EAChCprC,EAAIirC,EACJC,EAAiB1+B,EAAIxM,EAAIirC,GAG9B98B,MAGL09B,GACAA,EAASxhC,MAAM,KAAKhG,KAAI,SAAC8J,EAAMnO,GAAP,OACtB,qBACEm4F,wBAAyB,CAAEC,OAAQjqF,GACnC4nE,UAAA,wBAA0BtxE,EAA1B,2BAAiDzE,GACjD4H,IAAG,wBAAmBnD,EAAnB,2BAA0CzE,GAC7C8L,EAAGo/B,EAAiBp/B,EACpBU,EACEu/B,GAASA,EAAM1hC,MAAM,KAAKpK,OAAS,EAC/BirC,EAAiB1+B,GAChBu/B,EAAM1hC,MAAM,KAAKpK,OAAS,GAAKmrC,EAChCprC,EAAIirC,EACJC,EAAiB1+B,EAAIxM,EAAIirC,UAS/CitD,EAAY7uD,UAAY0P,IACxBm/C,EAAY58B,aAAe1vB,I,UAEZssD,EAAA,O,6FApJTF,E,6HAMAC,E,gIAOAC,E,4oBCvBFpR,E,IACEuR,EAAuB,CAC5B3b,QAAS,OACTv+E,KAAM,UACNk+E,QAAS,MASV,SAASic,EAAWl8B,GACnB,IAAMj1D,EAAI,IAAI2Q,KACd3Q,EAAEutB,QAAQvtB,EAAE+S,UAAY4sE,EAAMrrE,OAAO4gE,SAErCyK,EAAMzJ,MAAM,CACX7+E,MAAO49D,EACPggB,OAAQj1E,EAAE+Q,YASZ,SAASqgF,IACR,IACIn8B,EADEn0D,EAAI6+E,EAAM1J,OAEZxgB,GAAQ,EAEZ,GAAI30D,EAAG,CACN,IAAMd,GAAI,IAAI2Q,MAAOI,UACTsM,SAASvc,EAAEm0E,OAAQ,KAGpBj1E,IACVi1D,EAAUn0D,EAAEzJ,OAad,OARK49D,IACJA,EAAUJ,cACVY,GAAQ,GAIT07B,EAAWl8B,GAEJ,CACNz6D,GAAIy6D,EACJQ,MAAOA,GAUT,SAAS2c,EAAK99D,GACT8oB,YAAG9oB,EAAQ,YACdA,EAAS,CAAEtd,KAAMsd,IAGd9D,YAAY8D,KACfA,EAAS,IAGV,IAAM3Y,EAAI+T,YAAMwhF,EAAsB58E,GAStC,MANkB,WAAd3Y,EAAE45E,SAAwBjhE,EAAOtd,OACpC2E,EAAE25E,aAAe35E,EAAE3E,MAGpB2oF,EAAQ,IAAIjL,IAAM/4E,EAAE3E,KAAM2E,GAEnBy1F,K,6FAlFJzR,E,qHACEuR,E,oIAYGC,E,0HAeAC,E,0HAoCAhf,E,+cC/DLn1E,E,qFAOJ,SAASo0F,IACR,OAAOjxD,QAAQkxD,UAAUC,YAU1B,SAASC,EAAYl7F,EAASqC,GAC7B,IAAM84F,EAAYn7F,EAAQm7F,UACpBC,GAAa,IAAI/gF,MAAOoC,UAAY0+E,EAEpCE,EAAYN,IAA0BO,YAAa,aAAbA,GAC3Ch9F,OAAOkG,gBAAkB,oBAAqB,IAAIlG,OAAOkG,eAAmB82F,YAAa,MAAbA,GAC3EA,YAAa,QAAbA,GACIC,EAAgBv7F,EAAQqC,SAExBm5F,EAAcC,YAAW,WAAaA,YAAW,UAAUC,QAAU,GACrEA,EAAStiF,YAAMoiF,EAAa,CACjCh2D,QAASi2D,YAAW,WACpBr5D,OAAQq5D,YAAW,UACnBJ,UAAWA,EAAU36F,OAwBtB,GArBI+6F,YAAW,UAAUjuF,KACxBkuF,EAAOC,SAAU,EAEjBD,EAAOC,SAAU,EAIlB37F,EAAUoZ,YAAM,CAAEsiF,OAAQA,GAAU17F,GAGhCo7F,EAAa,KAAQA,EAAa,UACrCp7F,EAAQk8B,KAAOl8B,EAAQk8B,MAAQ,GAC/Bl8B,EAAQk8B,KAAK9F,OAASglE,UAEhBp7F,EAAQqC,gBACRrC,EAAQgH,YACRhH,EAAQm7F,UAEft0D,YAAI,gBAAiB00D,GACrB10D,YAAI,UAAW7mC,GAEX6pC,YAAsB7pC,GAAU,CACnC,IAAM6/E,EAAe,mLAGrB56E,KAAK47C,UAAU1X,YAAoBnpC,QAAUsC,EAAW,GACxD,MAAM,IAAI6B,MAAM07E,GAGjB,IAAM+b,EAAkB32F,KAAK47C,UAAU7gD,GAEvCq7F,EAAU1N,UAAS,SAAU3kF,GACxB89B,YAAGy0D,EAAe,cACrBA,EAAcx8F,KAAKiB,GACnB6mC,YAAI,0BAGD79B,GAGHhJ,EAAQm7F,UAAYA,EACpBx0F,EAAM8tB,IAAIz0B,GAASs/E,OAEnBx3C,YAAU,UAAW,MAAO,CAC3B9+B,MAAOA,EAAMu1E,QACbhC,KAAM,CAAEh2E,OAAQ,iBAEPlE,GACVA,OAMF,IAAI8hE,EAAM,kCAENnkE,GAAWA,EAAQqhD,UAAYrhD,EAAQgwF,SAC1C7rB,GAAO,SAAJ,OAAankE,EAAQqhD,SAArB,YAAiCrhD,EAAQgwF,SAG7CqL,EAAUx2F,KAAKs/D,EAAKy3B,GASrB,SAASnnE,EAAIz0B,GACZA,EAAQm7F,WAAY,IAAI9gF,MAAOoC,UAC3Bs+E,IACHG,EAAYl7F,GAEZ2G,EAAM8tB,IAAIz0B,GAASs/E,OAEpBz4C,YAAI,eAAgBlgC,GAUrB,SAASk1F,IAA2C,IAAvCx5F,EAAuC,uDAA5B,aAGjBy5F,EAAan1F,EAAMo1F,MAEzB,GAAID,EAAWt5F,OAAS,IAAK,CAC5B,IAAMw5F,EAAS,GAEfF,EAAWrzF,SAAQ,SAAUi/B,GAC5B,IAAM0H,EAAQ,CAAC1H,EAAM2Z,SAAU3Z,EAAMsoD,QAAQloF,KAAK,KAE7ClJ,OAAOC,UAAUC,eAAeC,KAAKi9F,EAAQ5sD,KACjD4sD,EAAO5sD,GAAS,GAGjB4sD,EAAO5sD,IAAU,KAGlBzoC,EAAMqG,QAAQ,IAEdrG,EAAM8tB,IAAI,CACT4sB,SAAU,aACV2uC,OAAQ,YACRz/E,QAAS,CACR4zD,IAAK1+D,SAASw2F,IACdC,aAAcJ,EAAWt5F,OACzBw5F,OAAQA,EACR/c,QAASt4E,EAAMs4E,QAAQA,QAAQC,SAKlC,IAAM5sE,EAAO,WACZupF,IACAx5F,KAEK85F,EAAcx1F,EAAM86B,QAG1B,OAAK06D,EAKEjB,EAAYiB,EAAa7pF,GAJxBjQ,IAaT,SAASk9D,EAAUv/D,GAClBy0B,EAAIz0B,GACJ67F,IAQD,SAAS/f,IAWR,OAVAn1E,EAAQ,IAAIy1F,IAAM,YAGlB50D,YAASlpC,OAAQ,UAAU,WAC1Bu9F,OAIDA,IAEOl1F,G,6FAlMJA,E,kHAOKo0F,E,kIAWAG,E,wHAqFAzmE,E,gHAiBAonE,E,gHAqDAt8B,E,sHAUAuc,E,6eCtLT,SAASsgB,EAAO17F,GACf,GAAIwZ,YAAYxZ,GAAO,CACtB,IAAM49E,EAAgB,IAAIn6E,MAAM,0CAKhC,MAJA2jC,YAAU,UAAW,MAAO,CAC3B9+B,MAAOs1E,EAAcC,QACrBhC,KAAM,CAAEh2E,OAAQ,gBAEX+3E,EAsBP,OAdAt7E,KAAK2D,MAAQ,GAOb3D,KAAKi8E,QAAU,IAAIb,IAAM19E,GAGrBsC,KAAKi8E,QAAQU,SAChB38E,KAAK2D,MAAQ3D,KAAKi8E,QAAQU,QAGpB38E,KAQRo5F,EAAMv9F,UAAUk9F,IAAM,WACrB,GAA0B,IAAtB/4F,KAAK2D,MAAMnE,OACd,MAAO,GAKR,IAFA,IAAM6xE,EAAQ,GAEL9xE,EAAI,EAAGA,EAAIS,KAAK2D,MAAMnE,OAAQD,GAAQ,EAC9C8xE,EAAMh0E,KAAK2C,KAAK2D,MAAMpE,GAAGgF,MAG1B,OAAO8sE,GAQR+nB,EAAMv9F,UAAUw9F,MAAQ,WACvB,OAA0B,IAAtBr5F,KAAK2D,MAAMnE,OACP,KAGDQ,KAAK2D,MAAM,GAAGY,MAQtB60F,EAAMv9F,UAAUy9F,KAAO,WACtB,OAA0B,IAAtBt5F,KAAK2D,MAAMnE,OACP,KAGDQ,KAAK2D,MAAM2B,OAAO,GAAG,GAAGf,MAUhC60F,EAAMv9F,UAAU41B,IAAM,SAAUltB,GAG/B,IACIhF,EADEk6E,EAAOz5E,KAGb,SAASu5F,EAAMh1F,GACdk1E,EAAK91E,MAAMtG,KAAK,CACfm8F,YAAY,IAAIniF,MAAOI,UACvBlT,KAAMA,IAIR,GAAIu/B,YAAGv/B,EAAM,WAAaA,EAAK0iC,YAAYx3B,WAAWsD,MAAM,UAC3D,IAAKxT,EAAI,EAAGA,EAAIgF,EAAK/E,OAAQD,GAAQ,EACpCg6F,EAAMh1F,EAAKhF,SAGZg6F,EAAMh1F,GAGP,OAAOk1E,GAUR2f,EAAMv9F,UAAUmO,QAAU,SAAUqnE,GACnC,GAAIhjE,MAAMsF,QAAQ09D,GAIjB,OAHArxE,KAAK2D,MAAQ,GACb3D,KAAKyxB,IAAI4/C,GAAOiL,OAETt8E,KAGR,IAAMy5F,EAAa,IAAIt4F,MAAM,uCAK7B,MAJA2jC,YAAU,UAAW,MAAO,CAC3B9+B,MAAOyzF,EAAWle,QAClBhC,KAAM,CAAEh2E,OAAQ,gBAEXk2F,GAQPL,EAAMv9F,UAAU4iC,MAAQ,WACvB,GAA0B,IAAtBz+B,KAAK2D,MAAMnE,OACd,OAAO,KAGR,IAAM+E,EAAOvE,KAAK2D,MAAM86B,QAAQl6B,KAIhC,OAFAvE,KAAKs8E,OAEE/3E,GAQR60F,EAAMv9F,UAAUygF,KAAO,WAGtB,OAFAt8E,KAAKi8E,QAAQW,MAAM58E,KAAK2D,OAEjB3D,O,4FA5JCo5F,E,0/CCNHM,EAAyB,SAACC,EAAIC,EAAYnrF,GAC/C,IAAMorF,EAAWxrF,MAAMgM,KAAKs/E,EAAGvrF,iBAAiBK,IAC1Cu8D,EAAW6uB,EAAStG,WAAU,SAAAhvF,GAAI,OAAIA,IAASq1F,KACrD,IAAiB,IAAd5uB,EACH,MAAO,CACN6uB,SAAUA,EAASr6F,OACnBwrE,aAKI8uB,EAA6B,CAClC,WACA,YACA,KACA,OACA,OACA,QAGKC,EAA0B,SAAAt1D,GAE/B,IAF0C,EAEpCvO,EAAa,GAFuB,IAGnB4jE,GAHmB,IAG1C,2BAAmD,KAAxCvyF,EAAwC,QAC5CxJ,EAAQ0mC,EAAQl9B,IAAak9B,EAAQl2B,aAAahH,IAAak9B,EAAQu1D,aAAazyF,QAC5EjI,IAAVvB,IAEFm4B,EAAW3uB,GADS,kBAAVxJ,EACaA,EAEAioC,YAASjoC,KATO,8BAc1C,OAAOm4B,GAIF+jE,EAAkB,SAACC,EAAOllF,GAS/B,OANAklF,EACEpkE,QAAO,SAAAkzD,GAAS,OAAIA,EAAUtrF,KAAKqV,MAAM,uCACzCtN,SAAQ,SAAAujF,GACRh0E,EAAMg0E,EAAUtrF,MAAQsrF,EAAUjrF,SAG7BiX,GAIFmlF,EAAkB,SAACD,EAAOllF,EAAOolF,GAEtC,IAAMC,EAAc,GAkBpB,OAfID,GACHN,EAA2Br0F,SAAQ,SAAA/H,QACP,IAAhBsX,EAAMtX,IAAkC,OAATA,IACzC28F,EAAY38F,GAAQsX,EAAMtX,OAM7Bw8F,EACEpkE,QAAO,SAAAkzD,GAAS,OAAIA,EAAUtrF,KAAKqV,MAAM,gCACzCtN,SAAQ,SAAAujF,GACRqR,EAAYrR,EAAUtrF,KAAKsM,QAAQ,0BAA2B,KAAOg/E,EAAUjrF,SAG1Es8F,GAGD,SAASC,EAAUX,GAMzB,IALA,IAAM9I,EAASpuF,SACTm3F,EAAaD,EACblrF,EAAWmrF,EAAWrrF,aAAa,kBAAxB,2BAAgEqrF,EAAWrrF,aAAa,kBAAxF,MAAgHqrF,EAAWphB,SACtI+hB,EAAQ,GACRC,EAAgB,GACfb,GAAMA,IAAO9I,GAAQ,CAC3B,IAAM77E,EAAQ+kF,EAAwBJ,GAChCO,EAAQ7rF,MAAMgM,KAAKs/E,EAAGc,YACxBC,EAAeT,EAAgBC,EAAOllF,GAItC0lF,EAAa,oBAChBA,EAAe9+F,OAAOwmC,OACrBs4D,EACAhB,EAAuBC,EAAIC,EAAYnrF,KAIzC8rF,EAAMl9F,KAAKq9F,GAEX,IAAMC,EAAeR,EAAgBD,EAAOllF,EAAO2kF,IAAOC,GAE1D3zD,YAAkB00D,EAAcH,GAEhCb,EAAKA,EAAGpwF,WAET,MAAO,CAAEgxF,QAAOC,kB,6FAtGXd,E,6HAWAI,E,iIASAC,E,8HAkBAE,E,sHAaAE,E,sHAuBUG,E,+bC5EV1hB,EAAe,SAAfA,IACLgiB,IAAQ9hB,OACRr2E,SAASm7D,oBAAoB,qBAAsBgb,IAGpDn2E,SAASmiC,iBAAiB,qBAAsBg0C,G,UAEjCgiB,IAAA,O,6FAPThiB,E,g9BCOAiiB,EAAO,SAAC,GAAD,IAAGv9F,EAAH,EAAGA,SAAU6R,EAAb,EAAaA,UAAb,cACX7R,GAAY,mBAAK6R,UAAWF,IAAWE,EAAW,WAAY7R,IAEhEu9F,EAAKjyD,UAAY,CACftrC,SAAUk6C,IAAUlpC,KAAK6rC,WACzBhrC,UAAWqoC,IAAU9jC,QAGvBmnF,EAAKhgC,aAAe,CAClB1rD,UAAW,M,UAGE0rF,EAAA,O,6FAZTA,E,kiBCVAC,EAAU,SAACr7E,EAAM8S,GACrB,IAAMtvB,EAAS,IAAIoU,KAAKoI,GAExB,OADAxc,EAAOq8C,QAAQr8C,EAAO8rB,UAAYwD,GAC3BtvB,G,EAGM63F,EAAA,O,6FANTA,E,wRCAN,SAASC,EAAgBtnF,EAAKtM,EAAKpJ,GAAiK,OAApJoJ,KAAOsM,EAAO7X,OAAOoC,eAAeyV,EAAKtM,EAAK,CAAEpJ,MAAOA,EAAOH,YAAY,EAAMD,cAAc,EAAMmqC,UAAU,IAAkBr0B,EAAItM,GAAOpJ,EAAgB0V,EAA3M,kCAEA,IAAIi8D,EAAqB,WACvB,SAASA,EAAMznC,GACb,IAAI+yD,EAAS/yD,EAAK58B,EACdA,OAAe,IAAX2vF,EAAoB,EAAIA,EAC5BC,EAAShzD,EAAKl8B,EACdA,OAAe,IAAXkvF,EAAoB,EAAIA,EAEhCF,EAAgB/6F,KAAM,IAAK,GAE3B+6F,EAAgB/6F,KAAM,IAAK,GAE3BA,KAAKqL,EAAIA,EACTrL,KAAK+L,EAAIA,EAGX,IAAI3D,EAASsnE,EAAM7zE,UAanB,OAXAuM,EAAOrK,MAAQ,WACb,MAAO,CACLsN,EAAGrL,KAAKqL,EACRU,EAAG/L,KAAK+L,IAIZ3D,EAAO6yB,QAAU,WACf,MAAO,CAACj7B,KAAKqL,EAAGrL,KAAK+L,IAGhB2jE,EA5BgB,I,6BCFzB,sCAAIwrB,EAAY,IAAI7jF,KAAKA,KAAKiN,IAAI,KAAM,EAAG,EAAG,EAAG,EAAG,IAQrC,SAASshD,EAAW/4B,GAIjC,MAAkB,qBADLA,EAAM4M,WAAW,EAVd,iBAUH5M,CAAiCquD,K,6BCThD10F,EAAQQ,YAAa,EACrBR,EAAQ8gC,QASR,SAAoB6zD,EAAaC,GAE/B,IAAI,EAAIC,EAAY5iB,WAAW0iB,IAAgBC,EAC7C,OAAO,EAAIE,EAAmBh0D,SAAS6zD,EAAaC,GAItD,IAAI,EAAIC,EAAYE,SAASJ,GAAc,CACzC,IAAIz2D,EAAQy2D,EACR7sF,EAAOo2B,EAAMV,OACjB,GAAI11B,EAAM,OAAO,EAAIgtF,EAAmBh0D,SAASh5B,EAAMo2B,GAGzD,OAAO,MApBT,IAIgCjxB,EAJ5B6nF,GAI4B7nF,EAJgB,EAAQ,OAIHA,EAAIzM,WAAayM,EAAM,CAAE6zB,QAAS7zB,GAFnF4nF,EAAc,EAAQ,M,6BCPX,SAAS31B,EAAKliB,EAAQ5N,GAGnC,IAIIn3C,EAJA+8F,EAAK,EACLC,GAHJj4C,EAASA,EAAOl+C,SAGA9F,OAAS,EACrBk8F,EAAKl4C,EAAOg4C,GACZx5B,EAAKxe,EAAOi4C,GAUhB,OAPIz5B,EAAK05B,IACPj9F,EAAI+8F,EAAIA,EAAKC,EAAIA,EAAKh9F,EACtBA,EAAIi9F,EAAIA,EAAK15B,EAAIA,EAAKvjE,GAGxB+kD,EAAOg4C,GAAM5lD,EAAS52B,MAAM08E,GAC5Bl4C,EAAOi4C,GAAM7lD,EAAS72B,KAAKijD,GACpBxe,EAhBT,mC,qOCOA,SAASm4C,IACRrd,IAASxF,OACTr2E,SAASm7D,oBAAoB,qBAAsB+9B,GAKpDl5F,SAASmiC,iBAAiB,qBAAsB+2D,G,UASjCrd,IAAA,O,6FAhBNqd,E,6kBCMIC,EAAO,GAQb,SAAS/9F,EAAIH,GACnB,GAAIk+F,EAAKvD,UACR,OAAOuD,EAAKvD,UAEb,OAAQ36F,GACP,IAAK,MACJ,OAAOs8E,IAER,IAAK,aACJ,OAAOie,IAER,IAAK,QACJ,OAAO4D,IAER,QACC,S,6FAvBUD,E,6HAQG/9F,E,gdCnBVi+F,EAAO,8wBAcPC,EAAW,SAAC9xB,GACjB,IAAM9I,EAAM,uDAAH,OAA0Dh9B,mBAAmB8lC,IAEtF,OAAO+xB,MAAM76B,EAAK,CAAE86B,OAAQ,QAC1B79F,MAAK,SAAA89F,GAAQ,OAAIA,EAASC,UAC1B/9F,MAAK,YACL,OADsB,EAAfg+F,cAKJC,EAAwB,SAACpyB,GAW9B,IACMqyB,EAAqBryB,EACzBl3D,MAF6B,+CAGzBwpF,EAA2BD,GAAsBA,EAAmB98F,OACzE88F,EACExmE,QAAO,SAAC0mE,EAAWxxB,GAAZ,OAAyBsxB,EAAmBl/F,QAAQo/F,KAAexxB,KAC5E,GAED,QAAOuxB,EAAyB/8F,QAC/B+8F,EAAyBz3F,KAAK,KAI1B23F,EAAS,WACd,IAAMC,EAAU,IAAI9B,IAAQ,cAAe,CAC1C+B,KAAMb,EACNc,MAAO,iCACPC,SAAS,EACTC,QAAS,CACRxxD,MAAO,sCAMT,OAFAoxD,EAAQ/6F,OAED+6F,GAGFK,EAAa,SAAC9yB,GACnB,OAAO,IAAI5oE,SAAQ,SAACC,EAASC,GAC5B,IAAK0oE,EACJ,OAAO1oE,EAAO,IAAIJ,MAAM,uBAGzB,IAAM67F,EAAoBX,EAAsBpyB,GAEhD,GAAI+yB,EACH,OAAOz7F,EAAO,IAAIJ,MAAJ,sEAAyE67F,KAEvFjB,EAAS9xB,GACP7rE,MAAK,SAAA29F,GACL,OAAKA,EAGGz6F,EAAQ2oE,GAFR1oE,EAAO,IAAIJ,MAAM,wDAKzB87F,OAAM,WACN,IAAMC,EAAW,IAAI/7F,MAAM,yEAI3B,OAFA+7F,EAASx/F,KAAO,mBAET6D,EAAO27F,UAMbC,EAAmB,SAACz4D,GAGzB,OAFAA,EAAM04D,iBAEC,IAAI/7F,SAAQ,SAAAC,GAClB,IAAM+7F,EAAkB34D,EAAM44D,WAExBrzB,EADQozB,EAAgBrM,cAAc,SAClBjzF,MAAM4L,OAC1BkzE,EAAewgB,EAAgBrM,cAAc,iCAMnD,OAJAnU,EAAa0gB,UAAY,GACzBF,EAAgBvM,UAAU1f,OAAO,0BAG1B2rB,EAAW9yB,GAChB7rE,MAAK,SAAA6rE,GAAW,OAAI3oE,EAAQ2oE,MAC5BgzB,OAAM,SAAAj3F,GAIN,GAHA62E,EAAa0gB,UAAYv3F,EAAMu1E,QAC/B8hB,EAAgBvM,UAAUr/D,IAAI,0BAEX,qBAAfzrB,EAAMtI,KACT,MAAMsI,S,EAMI,CACdy2F,SACAM,aACAI,oBAHc,O,6FAvHTrB,E,kHAcAC,E,sHAUAM,E,mIAwBAI,E,oHAeAM,E,wHA8BAI,E,yXC9EN,SAASK,EAASrG,GAOhBn3F,KAAKy9F,YAAc,CAAC,GAAI,IAEpBtG,GACFn3F,KAAKm3F,KAAKA,GAKZn3F,KAAK09F,OAASF,EAAS3hG,UAAU6hG,OAAOt2F,KAAKpH,MAE7CA,KAAK29F,kBAAoB,GAgZ3B,SAASC,EAAWC,EAASp5D,GAC3B,OAAOo5D,EAAQ/qF,gBAAkB2xB,EAAQo5D,QAAQ/qF,cAYnD,SAASgrF,EAAYrvF,EAAUg2B,GAC7B,OAAIzkC,KAAK+9F,cAAgBziG,OAErBmpC,IAAYhiC,UACZgiC,IAAYhiC,SAAS69C,iBACrB7b,IAAYnpC,OAIT0E,KAAK+9F,cAAgBt5D,EAe9B,SAASu5D,EAAU98F,EAAIujC,GACrB,OAAOvjC,IAAOujC,EAAQvjC,GAtdxBtF,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAQ8gC,aAAU,EAwClBk2D,EAAS3hG,UAAUs7F,KAAO,SAAUA,GAClC,IACInyD,EADAy4D,EAAcz9F,KAAKy9F,YAGvB,GAAIz9F,KAAK+9F,YAAa,CACpB,IAAK/4D,KAAay4D,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,QAAQ,GAIjE,IAAK14D,KAAay4D,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,QAAQ,GAQnE,IAAKvG,IAASA,EAAKvyD,iBAKjB,OAJI5kC,KAAK+9F,oBACA/9F,KAAK+9F,YAGP/9F,KAYT,IAAKglC,KAFLhlC,KAAK+9F,YAAc5G,EAEDsG,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYn5D,iBAAiBI,EAAWhlC,KAAK09F,QAAQ,GAI9D,IAAK14D,KAAay4D,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYn5D,iBAAiBI,EAAWhlC,KAAK09F,QAAQ,GAI9D,OAAO19F,MAQTw9F,EAAS3hG,UAAUoiG,eAAiB,SAAUj5D,GAC5C,OAAsF,IAA/E,CAAC,OAAQ,QAAS,QAAS,OAAQ,SAAU,UAAU5nC,QAAQ4nC,IA6BxEw4D,EAAS3hG,UAAUovF,GAAK,SAAUjmD,EAAWv2B,EAAUuuD,EAASkhC,GAC9D,IAAI/G,EACAsG,EACA/pE,EACAyqE,EAEJ,IAAKn5D,EACH,MAAM,IAAIo5D,UAAU,uBAAyBp5D,GAiB/C,GAZwB,mBAAbv2B,IACTyvF,EAAalhC,EACbA,EAAUvuD,EACVA,EAAW,WAKMnP,IAAf4+F,IACFA,EAAal+F,KAAKi+F,eAAej5D,IAGZ,mBAAZg4B,EACT,MAAM,IAAIohC,UAAU,sCAqCtB,OAlCAjH,EAAOn3F,KAAK+9F,aACZN,EAAcz9F,KAAKy9F,YAAYS,EAAa,EAAI,IAE/Bl5D,KACXmyD,GACFA,EAAKvyD,iBAAiBI,EAAWhlC,KAAK09F,OAAQQ,GAGhDT,EAAYz4D,GAAa,IAGtBv2B,EAKM,YAAYjE,KAAKiE,IAC1B0vF,EAAe1vF,EACfilB,EAAUkqE,GACD,mBAAmBpzF,KAAKiE,IACjC0vF,EAAe1vF,EAASnJ,MAAM,GAC9BouB,EAAUsqE,IAEVG,EAAe1vF,EACfilB,EAAU2qE,QAAQxiG,UAAU+3B,UAZ5BuqE,EAAe,KAGfzqE,EAAUoqE,EAAY12F,KAAKpH,OAa7By9F,EAAYz4D,GAAW3nC,KAAK,CAC1BoR,SAAUA,EACVuuD,QAASA,EACTtpC,QAASA,EACTyqE,aAAcA,IAETn+F,MAcTw9F,EAAS3hG,UAAUyiG,IAAM,SAAUt5D,EAAWv2B,EAAUuuD,EAASkhC,GAC/D,IAAI3+F,EACAolC,EACA84D,EACAc,EACAC,EAWJ,GARwB,mBAAb/vF,IACTyvF,EAAalhC,EACbA,EAAUvuD,EACVA,EAAW,WAKMnP,IAAf4+F,EAGF,OAFAl+F,KAAKs+F,IAAIt5D,EAAWv2B,EAAUuuD,GAAS,GACvCh9D,KAAKs+F,IAAIt5D,EAAWv2B,EAAUuuD,GAAS,GAChCh9D,KAKT,GAFAy9F,EAAcz9F,KAAKy9F,YAAYS,EAAa,EAAI,IAE3Cl5D,EAAW,CACd,IAAKw5D,KAAmBf,EAClBA,EAAY3hG,eAAe0iG,IAC7Bx+F,KAAKs+F,IAAIE,EAAiB/vF,EAAUuuD,GAIxC,OAAOh9D,KAKT,KAFAu+F,EAAed,EAAYz4D,MAELu5D,EAAa/+F,OACjC,OAAOQ,KAKT,IAAKT,EAAIg/F,EAAa/+F,OAAS,EAAGD,GAAK,EAAGA,IACxColC,EAAW45D,EAAah/F,GAElBkP,GAAYA,IAAak2B,EAASl2B,UAAeuuD,GAAWA,IAAYr4B,EAASq4B,UACrFh9D,KAAK29F,kBAAkBtgG,KAAKsnC,GAE5B45D,EAAaz+F,OAAOP,EAAG,IAa3B,OARKg/F,EAAa/+F,gBACTi+F,EAAYz4D,GAEfhlC,KAAK+9F,aACP/9F,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,OAAQQ,IAI1Dl+F,MASTw9F,EAAS3hG,UAAU6hG,OAAS,SAAUh5D,GACpC,IAAInlC,EACAkB,EAEA02F,EAEAxyD,EAGAX,EANAhgC,EAAO0gC,EAAM1gC,KAKbu6F,EAAe,GAInB,IAA2B,IAAvB75D,EAAiB,qBAArB,CAmBA,OAZwB,KAHxBV,EAASU,EAAMV,QAGJu0C,WACTv0C,EAASA,EAAOz6B,YAIdy6B,EAAOy6D,0BACTz6D,EAASA,EAAOy6D,yBAGlBtH,EAAOn3F,KAAK+9F,YACJr5D,EAAMg6D,aAAeh6D,EAAMV,SAAWU,EAAM06C,cAAgB,EAAI,IAGtE,KAAK,EAEHmf,EAAev+F,KAAKy9F,YAAY,GAAGz5F,GACnC,MAEF,KAAK,EAEChE,KAAKy9F,YAAY,IAAMz9F,KAAKy9F,YAAY,GAAGz5F,KAC7Cu6F,EAAeA,EAAap6F,OAAOnE,KAAKy9F,YAAY,GAAGz5F,KAGrDhE,KAAKy9F,YAAY,IAAMz9F,KAAKy9F,YAAY,GAAGz5F,KAC7Cu6F,EAAeA,EAAap6F,OAAOnE,KAAKy9F,YAAY,GAAGz5F,KAGzD,MAEF,KAAK,EAEHu6F,EAAev+F,KAAKy9F,YAAY,GAAGz5F,GAIvC,IAmDIywB,EAnDAkqE,EAAS,GAQb,IAFAl+F,EAAI89F,EAAa/+F,OAEVwkC,GAAUvjC,GAAG,CAClB,IAAKlB,EAAI,EAAGA,EAAIkB,IACdkkC,EAAW45D,EAAah/F,IADPA,IAUbykC,EAAO65D,SAAW,CAAC,SAAU,QAAS,SAAU,YAAYzgG,QAAQ4mC,EAAO65D,QAAQ/qF,gBAAkB,GAAKkxB,EAAOg2D,aAAa,YAEhI2E,EAAS,GAOFh6D,EAASjR,QAAQ33B,KAAKioC,EAAQW,EAASw5D,aAAcn6D,IAC1D26D,EAAOthG,KAAK,CAACqnC,EAAOV,EAAQW,IASlC,GAAIX,IAAWmzD,EACb,MAOF,GAJA12F,EAAI89F,EAAa/+F,QAEjBwkC,EAASA,EAAOitD,eAAiBjtD,EAAOz6B,sBAElBq1F,aACpB,MAMJ,IAAKr/F,EAAI,EAAGA,EAAIo/F,EAAOn/F,OAAQD,IAE7B,KAAIS,KAAK29F,kBAAkBvgG,QAAQuhG,EAAOp/F,GAAG,KAAO,KAQnC,IAJNS,KAAK6+F,KAAKv+F,MAAMN,KAAM2+F,EAAOp/F,IAIhB,CACtBo/F,EAAOp/F,GAAG,GAAc,sBAAI,EAC5Bo/F,EAAOp/F,GAAG,GAAG69F,iBACb3oE,GAAM,EACN,MAIJ,OAAOA,IAYT+oE,EAAS3hG,UAAUgjG,KAAO,SAAUn6D,EAAOV,EAAQW,GACjD,OAAOA,EAASq4B,QAAQjhE,KAAKioC,EAAQU,EAAOV,IAiE9Cw5D,EAAS3hG,UAAUmiD,QAAU,WAC3Bh+C,KAAKs+F,MACLt+F,KAAKm3F,QAGP,IAAI2H,EAAWtB,EACfh3F,EAAQ8gC,QAAUw3D,EAClBv7F,EAAOiD,QAAUA,EAAQ8gC,S,6BC1ezB,qDAGA,SAAStiB,EAAQzlB,GACf,OAAO,aAAS,SAASkgB,GACvBA,EAAK6/B,QAAQ7/B,EAAKsP,WAAatP,EAAKkO,SAAW,EAAIpuB,GAAK,GACxDkgB,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAK6/B,QAAQ7/B,EAAKsP,UAAmB,EAAPiuB,MAC7B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAASG,EAAIjpB,oBAAsB8oB,EAAM9oB,qBAAuB,KAAkB,OAI7F,IAAI+wB,EAASngC,EAAQ,GACjBogC,EAASpgC,EAAQ,GACjBqgC,EAAUrgC,EAAQ,GAClBsgC,EAAYtgC,EAAQ,GACpBugC,EAAWvgC,EAAQ,GACnBwgC,EAASxgC,EAAQ,GACjBygC,EAAWzgC,EAAQ,GAETmgC,EAAOlI,MACPmI,EAAOnI,MACNoI,EAAQpI,MACNqI,EAAUrI,MACXsI,EAAStI,MACXuI,EAAOvI,MACLwI,EAASxI,O,6BC5BhC,YAEIp+B,EAAO,aAAS,SAASY,GAC3BA,EAAKsD,SAAS,EAAG,GACjBtD,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAK2E,YAAY3E,EAAK0E,cAAgB64B,MACrC,SAASE,EAAOG,GACjB,OAAOA,EAAIl5B,cAAgB+4B,EAAM/4B,iBAChC,SAAS1E,GACV,OAAOA,EAAK0E,iBAIdtF,EAAKy+B,MAAQ,SAASxxC,GACpB,OAAQsT,SAAStT,EAAIwQ,KAAK0C,MAAMlT,KAASA,EAAI,EAAY,aAAS,SAAS2T,GACzEA,EAAK2E,YAAY9H,KAAK0C,MAAMS,EAAK0E,cAAgBrY,GAAKA,GACtD2T,EAAKsD,SAAS,EAAG,GACjBtD,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAK2E,YAAY3E,EAAK0E,cAAgB64B,EAAOlxC,MALG,MASrC,MACI+S,EAAKo+B,O,+wDCZjB,SAAS8hD,EAAWl+F,EAAM+rB,GAC/B,IAAMoyE,EAAYj5C,YAAUn5B,GAE5B,OAAI/rB,EAAK,GAAG/E,eAAe,QAClB+E,EAAK+C,KAAI,SAAAq7F,GAAK,cAChBA,GADgB,IAEnBx/E,KAAMu/E,EAAUC,EAAMx/E,WAGnB5e,EAQF,SAASq+F,EAAer+F,EAAMs+F,GACnC,IAAMC,EAAUD,GAAkB,CAAC,OAAQ,QAAS,WAAY,YAAa,QACvEE,GAAkBhxF,MAAMsF,QAAQ9S,GAClCA,EAAKw9D,QAAO,SAACijB,EAAK6B,GAAN,kBAAmB7B,GAAnB,EAA2B1lF,OAAO4J,KAAK29E,OAAQ,IAC3DvnF,OAAO4J,KAAK3E,IACdi1B,QAAO,SAAApvB,GAAC,OAAK04F,EAAQ95D,SAAS5+B,MAChC,SAAW,IAAI8/D,IAAI64B,IAUd,SAASC,EAAY54F,EAAGwJ,EAASyrC,GACtC,IAAM4jD,EAAM74F,EAAE23D,QAAO,SAACijB,EAAK0O,GACzB,IAAMnlE,EAAS3a,EACZtM,KAAI,SAAAuD,GAAG,OAAI6oF,EAAI7oF,MACfvD,KAAI,SAAAW,GACH,OAAa,IAATA,GAAgBA,GAAiB,MAATA,EAGrBk7C,OAAOl7C,GAFLo3C,KAIP6jD,EAAYC,YAAO50E,GAQzB,OAPKy2D,EAAI5kE,KAIP4kE,EAAI5kE,IAAMJ,KAAKI,IAAI4kE,EAAI5kE,IAAK8iF,EAAU,IACtCle,EAAIr+D,IAAM3G,KAAK2G,IAAIq+D,EAAIr+D,IAAKu8E,EAAU,MAJtCle,EAAI5kE,IAAM8iF,EAAU,GACpBle,EAAIr+D,IAAMu8E,EAAU,IAKfle,IACN,IACH,MAAO,CAACie,EAAIt8E,IAAKs8E,EAAI7iF,M,6FArDPqiF,E,0GAiBAG,E,8GAgBAI,E,kOC3ChB,IAaI9jF,EAbAkkF,EAAW,EAAQ,KACnBC,EAAqB,EAAQ,KAC7BC,EAAO,EAAQ,KAMfC,EAAiB,kCAYrBt8F,EAAOiD,QAOP,SAAuBzI,EAAO+hG,GAa5B,SAASC,EAAoBC,EAAYC,EAAoBlkG,GAC3D,GAAIyf,IAlCQ,IAoCV,MADAA,EAAQ,EACF,IAAIra,MAAM,2BAA6BpF,GAG/C,GAAmB,KAAfikG,EACF,MAAM,IAAI7+F,MAAM8+F,EAAqB,QAAUlkG,EAAO,0CAKxD,IAAIqiB,EAwFR,SAA8B4hF,GAC5B,IAAIE,EAAc,GACdC,EAAuB,GACvBC,EAAY,qBACZxsE,EAAUwsE,EAAU3rF,KAAKurF,GAE7B,KAAOpsE,GACAA,GAAYA,EAAQ,MAIuC,IAA5DusE,EAAqB/iG,QAAQw2B,EAAQ,GAAG9gB,iBAC1CotF,EAAY7iG,KAAKu2B,EAAQ,IACzBusE,EAAqB9iG,KAAKu2B,EAAQ,GAAG9gB,gBAGvC8gB,EAAUwsE,EAAU3rF,KAAKurF,IAG3B,OAAOE,EA3GOG,CAFZL,EAsDF,SAAkCA,EAAYjkG,GAG5CikG,EAAaA,EAAWh2F,QAAQ,yBAA0B,IAC1D,IAEI4pB,EAFA0sE,EAAgB,GAChBC,EAAmBP,EAEvB,KAAQpsE,EAAUisE,EAAeprF,KAAK8rF,IAAoB,CACpD3sE,EAAQ,GAAGsK,MAAQ,IACrBoiE,GAAiBC,EAAiBp2F,UAAU,EAAGypB,EAAQ,GAAGsK,QAG5D,IAAIsiE,EAAed,EAAS,IAAK,IAAKa,EAAiBp2F,UAAU,CAAC,GAAG+zB,QACrE,GAA0B,KAAtBsiE,EAAargD,KACf,MAAM,IAAIh/C,MAAM,IAAM6+F,EAAa,0CAGrC,IAAIS,EAAYV,EAAmBS,EAAargD,KAAM,GAAIpkD,GAE1DukG,GAAiBE,EAAaE,IAAMD,EACpCF,EAAmBC,EAAaG,KAGlC,OAAOL,EAAgBC,EA7EVK,CAAyBZ,EAAYjkG,IAMlD,GAAIqiB,EAAM5e,OAAS,GAAKwgG,EAAW5iG,QAAQ,SAAW,EACpD,OAAO6iG,EAAqB,IAAMD,EAAa,IAGjD,IAAIhiF,EAAOI,EAAM,IAAM,GAEV,MAATJ,IAGFgiF,EAAaA,EAAWh2F,QAAQ,gBAAgB,SAAS62F,GACvD,MAA0C,IAAnCnuE,WAAWmuE,EAAQv7F,MAAM,GAAI,QAKxC,IACIrC,EADA69F,EAAad,EAAWh2F,QAAQ,IAAIiX,OAAOjD,EAAM,MAAO,IAG5D,IACE/a,EAAS28F,EAAKmB,KAAKD,GAErB,MAAO7iG,GACL,OAAOgiG,EAAqB,IAAMD,EAAa,IAiBjD,MAba,MAAThiF,IACF/a,GAAU,MAKRg9F,EAAmBzgG,QAAmB,MAATwe,KAC/B/a,EAASqZ,KAAK6W,MAAMlwB,EAAS68F,GAAoBA,GAInD78F,GAAU+a,EAqCZ,OAtGAxC,EAAQ,EACRskF,EAAmBxjF,KAAKG,IAAI,QAAyBnd,IAArBwgG,EAAiC,EAAIA,GAGrE/hG,EAAQA,EAAMiM,QAAQ,OAAQ,KAkGvB21F,EAAmB5hG,EAAO,0BAA2BgiG,K,iVC9HjDnlB,EAAiB,CAAH,2FAIdomB,EAA0BvrF,YACnCmlE,EADgC,mRAsBvBqmB,EAAwBxrF,YACjCmlE,EAD8B,2YAkCrBsmB,EAAwBzrF,YACjCmlE,EAD8B,0S,6FA5DrBA,E,wHAIAomB,E,iIAsBAC,E,+HAkCAC,E,yWCnEE,ICAA,gECAA,gECAA,2E,6BCAf,sGAKe,SAASC,EAAmBl5D,GACzC,IAAIC,EAAWD,EAAKE,IAChBA,OAAmB,IAAbD,EAAsB,EAAIA,EAChCE,EAAYH,EAAKI,KACjBA,OAAqB,IAAdD,EAAuB,EAAIA,EAClCg5D,EAAcn5D,EAAKo5D,OACnBA,OAAyB,IAAhBD,EAAyB,GAAKA,EACvCryB,EAAc9mC,EAAKqR,OACnBA,OAAyB,IAAhBy1B,EAAyB,QAAUA,EAC5CC,EAAmB/mC,EAAK31B,YACxBA,OAAmC,IAArB08D,EAA8B,EAAIA,EAChD7/D,EAAY84B,EAAK94B,UACjBi9B,EAAQnE,EAAKmE,MACbk1D,EAAmBr5D,EAAKs5D,YACxBA,OAAmC,IAArBD,EAA8B,SAAWA,EACvDE,EAAev5D,EAAKw5D,QACpBA,OAA2B,IAAjBD,EAA0B,EAAIA,EACxCE,EAAez5D,EAAK05D,QACpBA,OAA2B,IAAjBD,EAA0B,EAAIA,EACxCE,EAAY35D,EAAK25D,UACjBC,EAAqB55D,EAAK65D,cAC1BA,OAAuC,IAAvBD,EAAgC,GAAKA,EACrDE,EAAmB95D,EAAK+5D,YACxBA,OAAmC,IAArBD,EAA8B,QAAUA,EACtDE,EAAwBh6D,EAAKuG,iBAC7BA,OAA6C,IAA1ByzD,EAAmC,EAAIA,EAC1DC,EAAuBj6D,EAAKk6D,gBAC5BA,OAA2C,IAAzBD,EAAkC,SAAWA,EAC/DE,EAAWf,EAAOA,EAAO7hG,OAAS,GACtC,OAAoB,IAAMkD,cAAc,IAAO,CAC7CyM,UAAW,kCACXg5B,IAAKA,EACLE,KAAMA,GACQ,IAAM3lC,cAAc,IAAU,CAC5CyM,UAAW,IAAG,4BAA6BA,GAC3CtO,KAAMwgG,EACNh2F,EAAG,SAAW3J,GACZ,OAAOA,EAAE2J,GAEXU,EAAG,SAAWrK,GACZ,OAAOA,EAAEqK,GAEXutC,OAAQA,EACRhnC,YAAaA,IACX85B,GAASg2D,GAAyB,IAAM1/F,cAAc,OAAQ,CAChE2I,EAAG+2F,EAAS/2F,EACZU,EAAGq2F,EAASr2F,EACZqhE,GAAIq0B,EACJn0B,GAAIq0B,EACJzqD,SAAU4qD,EACV94D,KAAM44D,GAAatoD,EACnBA,OAAQ0oD,EACR1vF,YAAak8B,EACb8P,WAAYijD,EACZc,WAAYF,GACX/1D,IAEL+0D,EAAmBv4D,UAAY,CAC7BT,IAAK,IAAIjsB,OACTmsB,KAAM,IAAInsB,OACVmlF,OAAQ,IAAI9jF,MACZ+7B,OAAQ,IAAI5lC,OACZpB,YAAa,IAAI4J,OACjB/M,UAAW,IAAIuE,OACf04B,MAAO,IAAI14B,OACX6tF,YAAa,IAAI3pD,MAAM,CAAC,QAAS,SAAU,QAC3C6pD,QAAS,IAAIvlF,OACbylF,QAAS,IAAIzlF,OACb0lF,UAAW,IAAIluF,OACfouF,cAAe,IAAI5lF,OACnB8lF,YAAa,IAAItuF,OACjB86B,iBAAkB,IAAItyB,OACtBimF,gBAAiB,IAAIzuF,S,mGC7EnB4uF,EAAKhmF,KAAK4mD,GACVq/B,EAAM,EAAID,EAEVE,EAAaD,EADH,KAGd,SAASE,IACPziG,KAAK0iG,IAAM1iG,KAAK2iG,IAChB3iG,KAAK4iG,IAAM5iG,KAAK6iG,IAAM,KACtB7iG,KAAK+/C,EAAI,GAGX,SAAS,IACP,OAAO,IAAI0iD,EAGbA,EAAK5mG,UAAY,EAAKA,UAAY,CAChCorC,YAAaw7D,EACbK,OAAQ,SAASz3F,EAAGU,GAClB/L,KAAK+/C,GAAK,KAAO//C,KAAK0iG,IAAM1iG,KAAK4iG,KAAOv3F,GAAK,KAAOrL,KAAK2iG,IAAM3iG,KAAK6iG,KAAO92F,IAE7Eg3F,UAAW,WACQ,OAAb/iG,KAAK4iG,MACP5iG,KAAK4iG,IAAM5iG,KAAK0iG,IAAK1iG,KAAK6iG,IAAM7iG,KAAK2iG,IACrC3iG,KAAK+/C,GAAK,MAGdijD,OAAQ,SAAS33F,EAAGU,GAClB/L,KAAK+/C,GAAK,KAAO//C,KAAK4iG,KAAOv3F,GAAK,KAAOrL,KAAK6iG,KAAO92F,IAEvDk3F,iBAAkB,SAASjhC,EAAIC,EAAI52D,EAAGU,GACpC/L,KAAK+/C,GAAK,MAAQiiB,EAAM,MAAQC,EAAM,KAAOjiE,KAAK4iG,KAAOv3F,GAAK,KAAOrL,KAAK6iG,KAAO92F,IAEnFm3F,cAAe,SAASlhC,EAAIC,EAAIC,EAAIC,EAAI92D,EAAGU,GACzC/L,KAAK+/C,GAAK,MAAQiiB,EAAM,MAAQC,EAAM,MAAQC,EAAM,MAAQC,EAAM,KAAOniE,KAAK4iG,KAAOv3F,GAAK,KAAOrL,KAAK6iG,KAAO92F,IAE/Go3F,MAAO,SAASnhC,EAAIC,EAAIC,EAAIC,EAAIt7D,GAC9Bm7D,GAAMA,EAAIC,GAAMA,EAAIC,GAAMA,EAAIC,GAAMA,EAAIt7D,GAAKA,EAC7C,IAAI60F,EAAK17F,KAAK4iG,IACVQ,EAAKpjG,KAAK6iG,IACVQ,EAAMnhC,EAAKF,EACXshC,EAAMnhC,EAAKF,EACXshC,EAAM7H,EAAK15B,EACXwhC,EAAMJ,EAAKnhC,EACXwhC,EAAQF,EAAMA,EAAMC,EAAMA,EAG9B,GAAI38F,EAAI,EAAG,MAAM,IAAI1F,MAAM,oBAAsB0F,GAGjD,GAAiB,OAAb7G,KAAK4iG,IACP5iG,KAAK+/C,GAAK,KAAO//C,KAAK4iG,IAAM5gC,GAAM,KAAOhiE,KAAK6iG,IAAM5gC,QAIjD,GAAMwhC,EApDD,KAyDL,GAAMnnF,KAAKC,IAAIinF,EAAMH,EAAMC,EAAMC,GAzD5B,MAyDgD18F,EAKrD,CACH,IAAI68F,EAAMxhC,EAAKw5B,EACXiI,EAAMxhC,EAAKihC,EACXQ,EAAQP,EAAMA,EAAMC,EAAMA,EAC1BO,EAAQH,EAAMA,EAAMC,EAAMA,EAC1BG,EAAMxnF,KAAK0nD,KAAK4/B,GAChBG,EAAMznF,KAAK0nD,KAAKy/B,GAChBhjG,EAAIoG,EAAIyV,KAAKm6C,KAAK6rC,EAAKhmF,KAAK0nF,MAAMJ,EAAQH,EAAQI,IAAU,EAAIC,EAAMC,KAAS,GAC/EE,EAAMxjG,EAAIsjG,EACVG,EAAMzjG,EAAIqjG,EAGVxnF,KAAKC,IAAI0nF,EAAM,GA1EX,OA2ENjkG,KAAK+/C,GAAK,KAAOiiB,EAAKiiC,EAAMV,GAAO,KAAOthC,EAAKgiC,EAAMT,IAGvDxjG,KAAK+/C,GAAK,IAAMl5C,EAAI,IAAMA,EAAI,WAAa28F,EAAME,EAAMH,EAAMI,GAAQ,KAAO3jG,KAAK4iG,IAAM5gC,EAAKkiC,EAAMb,GAAO,KAAOrjG,KAAK6iG,IAAM5gC,EAAKiiC,EAAMZ,QApBtItjG,KAAK+/C,GAAK,KAAO//C,KAAK4iG,IAAM5gC,GAAM,KAAOhiE,KAAK6iG,IAAM5gC,UAuBxDkiC,IAAK,SAAS94F,EAAGU,EAAGlF,EAAGu9F,EAAIC,EAAIC,GAC7Bj5F,GAAKA,EAAGU,GAAKA,EAAWu4F,IAAQA,EAChC,IAAIl3B,GADYvmE,GAAKA,GACRyV,KAAK4nD,IAAIkgC,GAClB92B,EAAKzmE,EAAIyV,KAAK6nD,IAAIigC,GAClB1I,EAAKrwF,EAAI+hE,EACTg2B,EAAKr3F,EAAIuhE,EACTi3B,EAAK,EAAID,EACT53F,EAAK43F,EAAMF,EAAKC,EAAKA,EAAKD,EAG9B,GAAIv9F,EAAI,EAAG,MAAM,IAAI1F,MAAM,oBAAsB0F,GAGhC,OAAb7G,KAAK4iG,IACP5iG,KAAK+/C,GAAK,IAAM27C,EAAK,IAAM0H,GAIpB9mF,KAAKC,IAAIvc,KAAK4iG,IAAMlH,GAnGnB,MAmGoCp/E,KAAKC,IAAIvc,KAAK6iG,IAAMO,GAnGxD,QAoGRpjG,KAAK+/C,GAAK,IAAM27C,EAAK,IAAM0H,GAIxBv8F,IAGD6F,EAAK,IAAGA,EAAKA,EAAK61F,EAAMA,GAGxB71F,EAAK81F,EACPxiG,KAAK+/C,GAAK,IAAMl5C,EAAI,IAAMA,EAAI,QAAU09F,EAAK,KAAOl5F,EAAI+hE,GAAM,KAAOrhE,EAAIuhE,GAAM,IAAMzmE,EAAI,IAAMA,EAAI,QAAU09F,EAAK,KAAOvkG,KAAK4iG,IAAMlH,GAAM,KAAO17F,KAAK6iG,IAAMO,GAIrJ12F,EAnHC,OAoHR1M,KAAK+/C,GAAK,IAAMl5C,EAAI,IAAMA,EAAI,SAAW6F,GAAM41F,GAAO,IAAMiC,EAAK,KAAOvkG,KAAK4iG,IAAMv3F,EAAIxE,EAAIyV,KAAK4nD,IAAImgC,IAAO,KAAOrkG,KAAK6iG,IAAM92F,EAAIlF,EAAIyV,KAAK6nD,IAAIkgC,OAGlJG,KAAM,SAASn5F,EAAGU,EAAG3B,EAAG9H,GACtBtC,KAAK+/C,GAAK,KAAO//C,KAAK0iG,IAAM1iG,KAAK4iG,KAAOv3F,GAAK,KAAOrL,KAAK2iG,IAAM3iG,KAAK6iG,KAAO92F,GAAK,MAAQ3B,EAAK,MAAQ9H,EAAK,KAAQ8H,EAAK,KAEzHqF,SAAU,WACR,OAAOzP,KAAK+/C,IAID,QCjIA,cACb,OAAO,WACL,OAAO10C,ICFMiR,KAAKC,IACHD,KAAKynD,MACPznD,KAAK4nD,IACL5nD,KAAKI,IACLJ,KAAK2G,IACL3G,KAAK6nD,IACJ7nD,KAAK0nD,KAGP1nD,KAAK4mD,GCTrB,SAASuhC,EAAOl3F,GACdvN,KAAK0kG,SAAWn3F,EAGlBk3F,EAAO5oG,UAAY,CACjB8oG,UAAW,WACT3kG,KAAK4kG,MAAQ,GAEfC,QAAS,WACP7kG,KAAK4kG,MAAQ7qF,KAEf+qF,UAAW,WACT9kG,KAAK+kG,OAAS,GAEhBC,QAAS,YACHhlG,KAAK4kG,OAAyB,IAAf5kG,KAAK4kG,OAA+B,IAAhB5kG,KAAK+kG,SAAe/kG,KAAK0kG,SAAS3B,YACzE/iG,KAAK4kG,MAAQ,EAAI5kG,KAAK4kG,OAExB3F,MAAO,SAAS5zF,EAAGU,GAEjB,OADAV,GAAKA,EAAGU,GAAKA,EACL/L,KAAK+kG,QACX,KAAK,EAAG/kG,KAAK+kG,OAAS,EAAG/kG,KAAK4kG,MAAQ5kG,KAAK0kG,SAAS1B,OAAO33F,EAAGU,GAAK/L,KAAK0kG,SAAS5B,OAAOz3F,EAAGU,GAAI,MAC/F,KAAK,EAAG/L,KAAK+kG,OAAS,EACtB,QAAS/kG,KAAK0kG,SAAS1B,OAAO33F,EAAGU,MAKxB,kBACb,OAAO,IAAI04F,EAAOl3F,IC7Bb,SAAS,EAAE7L,GAChB,OAAOA,EAAE,GAGJ,SAAS,EAAEA,GAChB,OAAOA,EAAE,GCAI,iBACb,IAAI2J,EAAI,EACJU,EAAI,EACJ4uC,EAAUuI,GAAS,GACnB31C,EAAU,KACV03F,EAAQ,EACRxnF,EAAS,KAEb,SAAS/P,EAAK7M,GACZ,IAAItB,EAEAmH,EAEAw+F,EAHA79F,EAAIxG,EAAKrB,OAET2lG,GAAW,EAKf,IAFe,MAAX53F,IAAiBkQ,EAASwnF,EAAMC,EAAS,MAExC3lG,EAAI,EAAGA,GAAK8H,IAAK9H,IACdA,EAAI8H,GAAKszC,EAAQj0C,EAAI7F,EAAKtB,GAAIA,EAAGsB,MAAWskG,KAC5CA,GAAYA,GAAU1nF,EAAOqnF,YAC5BrnF,EAAOunF,WAEVG,GAAU1nF,EAAOwhF,OAAO5zF,EAAE3E,EAAGnH,EAAGsB,IAAQkL,EAAErF,EAAGnH,EAAGsB,IAGtD,GAAIqkG,EAAQ,OAAOznF,EAAS,KAAMynF,EAAS,IAAM,KAuBnD,OApBAx3F,EAAKrC,EAAI,SAAS00C,GAChB,OAAOjqC,UAAUtW,QAAU6L,EAAiB,mBAAN00C,EAAmBA,EAAImD,GAAUnD,GAAIryC,GAAQrC,GAGrFqC,EAAK3B,EAAI,SAASg0C,GAChB,OAAOjqC,UAAUtW,QAAUuM,EAAiB,mBAANg0C,EAAmBA,EAAImD,GAAUnD,GAAIryC,GAAQ3B,GAGrF2B,EAAKitC,QAAU,SAASoF,GACtB,OAAOjqC,UAAUtW,QAAUm7C,EAAuB,mBAANoF,EAAmBA,EAAImD,IAAWnD,GAAIryC,GAAQitC,GAG5FjtC,EAAKu3F,MAAQ,SAASllD,GACpB,OAAOjqC,UAAUtW,QAAUylG,EAAQllD,EAAc,MAAXxyC,IAAoBkQ,EAASwnF,EAAM13F,IAAWG,GAAQu3F,GAG9Fv3F,EAAKH,QAAU,SAASwyC,GACtB,OAAOjqC,UAAUtW,QAAe,MAALugD,EAAYxyC,EAAUkQ,EAAS,KAAOA,EAASwnF,EAAM13F,EAAUwyC,GAAIryC,GAAQH,GAGjGG,GCnDsB03F,EAAY,GAE3C,SAASC,EAAOJ,GACdjlG,KAAKslG,OAASL,EAqBD,SAASG,EAAYH,GAElC,SAASM,EAAOh4F,GACd,OAAO,IAAI83F,EAAOJ,EAAM13F,IAK1B,OAFAg4F,EAAOD,OAASL,EAETM,EA1BTF,EAAOxpG,UAAY,CACjB8oG,UAAW,WACT3kG,KAAKslG,OAAOX,aAEdE,QAAS,WACP7kG,KAAKslG,OAAOT,WAEdC,UAAW,WACT9kG,KAAKslG,OAAOR,aAEdE,QAAS,WACPhlG,KAAKslG,OAAON,WAEd/F,MAAO,SAAS56F,EAAGwC,GACjB7G,KAAKslG,OAAOrG,MAAMp4F,EAAIyV,KAAK6nD,IAAI9/D,GAAIwC,GAAKyV,KAAK4nD,IAAI7/D,MCtBlCgK,MAAMxS,UAAUyJ,MCgBpB,IChBA,gBACb,IAAO+B,EAAI2+E,EAAOxmF,QAAU,EAC5B,IAAK,IAAW8D,EAAGkiG,EAA2Bn+F,EAArC9H,EAAI,EAAUkmG,EAAKzf,EAAOx0E,EAAM,IAAQ/K,EAAIg/F,EAAGjmG,OAAQD,EAAI8H,IAAK9H,EAEvE,IADAimG,EAAKC,EAAIA,EAAKzf,EAAOx0E,EAAMjS,IACtB+D,EAAI,EAAGA,EAAImD,IAAKnD,EACnBmiG,EAAGniG,GAAG,IAAMmiG,EAAGniG,GAAG,GAAKiW,MAAMisF,EAAGliG,GAAG,IAAMkiG,EAAGliG,GAAG,GAAKkiG,EAAGliG,GAAG,ICLjD,cAEb,IADA,IAAI+D,EAAI2+E,EAAOxmF,OAAQoH,EAAI,IAAIyH,MAAMhH,KAC5BA,GAAK,GAAGT,EAAES,GAAKA,EACxB,OAAOT,GCCM,SAAS8+F,EAA0B5wF,EAAM/W,GACvB+W,EAAK/W,GCHvB,kBACb,IAAI4nG,EAAO3f,EAAOpiF,IAAI,GACtB,OAAO,EAAKoiF,GAAQxiE,MAAK,SAASnf,EAAGC,GAAK,OAAOqhG,EAAKthG,GAAKshG,EAAKrhG,OAG3D,SAAS,EAAI0hF,GAElB,IADA,IAAsCj8E,EAAlCvC,EAAI,EAAGjI,GAAK,EAAG8H,EAAI2+E,EAAOxmF,SACrBD,EAAI8H,IAAO0C,GAAKi8E,EAAOzmF,GAAG,MAAIiI,GAAKuC,GAC5C,OAAOvC,ECHT,SAASo+F,EAAK5f,GAEZ,IADA,IAAsC6f,EAAlCtmG,GAAK,EAAG+D,EAAI,EAAG+D,EAAI2+E,EAAOxmF,OAAYsmG,GAAM/jD,MACvCxiD,EAAI8H,IAAQw+F,GAAM7f,EAAOzmF,GAAG,IAAMumG,IAAIA,EAAKD,EAAIviG,EAAI/D,GAC5D,OAAO+D,ECPM,ICFJyiG,EAAe,CACxBC,UAAW,EACXC,WCDa,YACb,OAAOD,EAAUhgB,GAAQniC,WDCzBqiD,UDDa,YACb,IACI3mG,EACA+D,EAFA+D,EAAI2+E,EAAOxmF,OAGXmmG,EAAO3f,EAAOpiF,IAAI,GAClB4N,EDNS,YACb,IAAI20F,EAAQngB,EAAOpiF,IAAIgiG,GACvB,OAAO,EAAK5f,GAAQxiE,MAAK,SAASnf,EAAGC,GAAK,OAAO6hG,EAAM9hG,GAAK8hG,EAAM7hG,MCItD8hG,CAAWpgB,GACnB79C,EAAM,EACNqB,EAAS,EACT68D,EAAO,GACPC,EAAU,GAEd,IAAK/mG,EAAI,EAAGA,EAAI8H,IAAK9H,EACnB+D,EAAIkO,EAAMjS,GACN4oC,EAAMqB,GACRrB,GAAOw9D,EAAKriG,GACZ+iG,EAAKhpG,KAAKiG,KAEVkmC,GAAUm8D,EAAKriG,GACfgjG,EAAQjpG,KAAKiG,IAIjB,OAAOgjG,EAAQziD,UAAU1/C,OAAOkiG,ICpBhCE,KAAM,EACN1iD,QEJa,YACb,OAAO,EAAKmiC,GAAQniC,YFKSjoD,OAAO4J,KAAKugG,GGN5B,ICDJS,EAAgB,CACzBC,ODAa,cACb,IAAOp/F,EAAI2+E,EAAOxmF,QAAU,EAA5B,CACA,IAAK,IAAID,EAAG8H,EAAgC0E,EAA7BzI,EAAI,EAAGmD,EAAIu/E,EAAO,GAAGxmF,OAAW8D,EAAImD,IAAKnD,EAAG,CACzD,IAAKyI,EAAIxM,EAAI,EAAGA,EAAI8H,IAAK9H,EAAGwM,GAAKi6E,EAAOzmF,GAAG+D,GAAG,IAAM,EACpD,GAAIyI,EAAG,IAAKxM,EAAI,EAAGA,EAAI8H,IAAK9H,EAAGymF,EAAOzmF,GAAG+D,GAAG,IAAMyI,EAEpDw6F,EAAKvgB,EAAQx0E,KCLbk1F,UCHa,cACb,IAAOr/F,EAAI2+E,EAAOxmF,QAAU,EAC5B,IAAK,IAAID,EAAUmH,EAAG4mE,EAAIq5B,EAAIC,EAAIv/F,EAAtB/D,EAAI,EAAqBmD,EAAIu/E,EAAOx0E,EAAM,IAAIhS,OAAQ8D,EAAImD,IAAKnD,EACzE,IAAKqjG,EAAKC,EAAK,EAAGrnG,EAAI,EAAGA,EAAI8H,IAAK9H,GAC3B+tE,GAAM5mE,EAAIs/E,EAAOx0E,EAAMjS,IAAI+D,IAAI,GAAKoD,EAAE,IAAM,GAC/CA,EAAE,GAAKigG,EAAIjgG,EAAE,GAAKigG,GAAMr5B,GACfA,EAAK,GACd5mE,EAAE,GAAKkgG,EAAIlgG,EAAE,GAAKkgG,GAAMt5B,IAExB5mE,EAAE,GAAK,EAAGA,EAAE,GAAK4mE,IDLvBi5B,KAAM,EACNM,WEHa,cACb,IAAOx/F,EAAI2+E,EAAOxmF,QAAU,EAA5B,CACA,IAAK,IAAkC6H,EAA9B/D,EAAI,EAAGkiG,EAAKxf,EAAOx0E,EAAM,IAAQ/K,EAAI++F,EAAGhmG,OAAQ8D,EAAImD,IAAKnD,EAAG,CACnE,IAAK,IAAI/D,EAAI,EAAGwM,EAAI,EAAGxM,EAAI8H,IAAK9H,EAAGwM,GAAKi6E,EAAOzmF,GAAG+D,GAAG,IAAM,EAC3DkiG,EAAGliG,GAAG,IAAMkiG,EAAGliG,GAAG,IAAMyI,EAAI,EAE9Bw6F,EAAKvgB,EAAQx0E,KFFbs1F,OGJa,cACb,IAAOz/F,EAAI2+E,EAAOxmF,QAAU,IAASiH,GAAK++F,EAAKxf,EAAOx0E,EAAM,KAAKhS,QAAU,EAA3E,CACA,IAAK,IAAkBgmG,EAAI/+F,EAAGY,EAArB0E,EAAI,EAAGzI,EAAI,EAAaA,EAAImD,IAAKnD,EAAG,CAC3C,IAAK,IAAI/D,EAAI,EAAGkmG,EAAK,EAAGsB,EAAK,EAAGxnG,EAAI8H,IAAK9H,EAAG,CAK1C,IAJA,IAAIynG,EAAKhhB,EAAOx0E,EAAMjS,IAClB0nG,EAAOD,EAAG1jG,GAAG,IAAM,EAEnB4jG,GAAMD,GADCD,EAAG1jG,EAAI,GAAG,IAAM,IACF,EAChBwI,EAAI,EAAGA,EAAIvM,IAAKuM,EAAG,CAC1B,IAAIq7F,EAAKnhB,EAAOx0E,EAAM1F,IAGtBo7F,IAFWC,EAAG7jG,GAAG,IAAM,IACZ6jG,EAAG7jG,EAAI,GAAG,IAAM,GAG7BmiG,GAAMwB,EAAMF,GAAMG,EAAKD,EAEzBzB,EAAGliG,EAAI,GAAG,IAAMkiG,EAAGliG,EAAI,GAAG,GAAKyI,EAC3B05F,IAAI15F,GAAKg7F,EAAKtB,GAEpBD,EAAGliG,EAAI,GAAG,IAAMkiG,EAAGliG,EAAI,GAAG,GAAKyI,EAC/Bw6F,EAAKvgB,EAAQx0E,MHdiB5V,OAAO4J,KAAKghG,GIR5C,SAASz+D,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAOjS,SAASsxF,EAASn/D,GAC/B,IAAI3qC,EAAW2qC,EAAK3qC,SAChB+pG,EAAYp/D,EAAKpnC,KACjBA,OAAqB,IAAdwmG,EAAuB,GAAKA,EACnCh8F,EAAI48B,EAAK58B,EACTU,EAAIk8B,EAAKl8B,EACT+1D,EAAY75B,EAAKe,KACjBA,OAAqB,IAAd84B,EAAuB,cAAgBA,EAC9C3yD,EAAY84B,EAAK94B,UACjB81F,EAAQh9D,EAAKg9D,MACb18D,EAAWN,EAAKM,SAChB++D,EAAer/D,EAAK0S,QACpBA,OAA2B,IAAjB2sD,EAA0B,WACtC,OAAO,GACLA,EACA9+D,EApBN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAoBxR2E,CAA8BV,EAAM,CAAC,WAAY,OAAQ,IAAK,IAAK,OAAQ,YAAa,QAAS,WAAY,YAEzHvB,ECsBC,SAAc6gE,GACnB,IAAIC,OAAmB,IAAXD,EAAoB,GAAKA,EACjCl8F,EAAIm8F,EAAMn8F,EACVU,EAAIy7F,EAAMz7F,EACV4uC,EAAU6sD,EAAM7sD,QAChBsqD,EAAQuC,EAAMvC,MAEdv+D,EAAO,IAKX,OAJIr7B,GAAGq6F,EAA0Bh/D,EAAKr7B,EAAGA,GACrCU,GAAG25F,EAA0Bh/D,EAAK36B,EAAGA,GACrC4uC,GAASjU,EAAKiU,QAAQA,GACtBsqD,GAAOv+D,EAAKu+D,MAAMA,GACfv+D,EDlCI,CAAK,CACdr7B,EAAGA,EACHU,EAAGA,EACH4uC,QAASA,EACTsqD,MAAOA,IAGT,OAAI3nG,EAA8B,IAAMoF,cAAc,IAAM4sE,SAAU,KAAMhyE,EAAS,CACnFopC,KAAMA,KAEY,IAAMhkC,cAAc,OAAQqlC,EAAS,CACvD9yB,IAAKszB,EACLp5B,UAAW,IAAG,gBAAiBA,GAC/BzI,EAAGggC,EAAK7lC,IAAS,GACjBmoC,KAAMA,EAGNqlC,cAAe,SACd7lC,M,2EExCE,MAAMi/D,EAAW3gG,OAAO,Y,YCApB4gG,EAAqB,OAAArhC,EAAA,GAAc,SAAU,QAAS,UAAW,WAC7D,SAASshC,EAAmB3sF,GACzC,OAAO0sF,EDAM,SAASvqF,IACtB,IAAI+gB,EAAQ,IAAIy5C,IACZn0B,EAAS,GACTvG,EAAQ,GACR+G,EAAUyjD,EAEd,SAAS56D,EAAMnmC,GACb,IAAIS,EAAMT,EAAI,GAAInH,EAAI2+B,EAAMrgC,IAAIsJ,GAChC,IAAK5H,EAAG,CACN,GAAIykD,IAAYyjD,EAAU,OAAOzjD,EACjC9lB,EAAMpgC,IAAIqJ,EAAK5H,EAAIikD,EAAOnmD,KAAKqJ,IAEjC,OAAOu2C,GAAO19C,EAAI,GAAK09C,EAAMz9C,QA4B/B,OAzBAqtC,EAAM2W,OAAS,SAASzD,GACtB,IAAKjqC,UAAUtW,OAAQ,OAAOgkD,EAAOl+C,QACrCk+C,EAAS,GAAItlB,EAAQ,IAAIy5C,IACzB,IAAK,MAAM55E,KAASgiD,EAAG,CACrB,MAAM54C,EAAMpJ,EAAQ,GAChBmgC,EAAMyI,IAAIx/B,IACd+2B,EAAMpgC,IAAIqJ,EAAKq8C,EAAOnmD,KAAKU,IAE7B,OAAO8uC,GAGTA,EAAMoQ,MAAQ,SAAS8C,GACrB,OAAOjqC,UAAUtW,QAAUy9C,EAAQ5uC,MAAMgM,KAAK0lC,GAAIlT,GAASoQ,EAAM33C,SAGnEunC,EAAMmX,QAAU,SAASjE,GACvB,OAAOjqC,UAAUtW,QAAUwkD,EAAUjE,EAAGlT,GAASmX,GAGnDnX,EAAM5I,KAAO,WACX,OAAO9mB,EAAQqmC,EAAQvG,GAAO+G,QAAQA,IAGxC80B,EAAA,EAAUx4E,MAAMusC,EAAO/2B,WAEhB+2B,ECxCmB,GAAgB7xB,K;;;;;ECI5C,IAAI0jC,EAAwB9iD,OAAO8iD,sBAC/B5iD,EAAiBF,OAAOC,UAAUC,eAClC8rG,EAAmBhsG,OAAOC,UAAU+iD,qBAExC,SAAS1jB,EAAS3gB,GACjB,GAAIA,QACH,MAAM,IAAI6jF,UAAU,yDAGrB,OAAOxiG,OAAO2e,GA+CfhX,EAAOiD,QA5CP,WACC,IACC,IAAK5K,OAAOwmC,OACX,OAAO,EAMR,IAAIylE,EAAQ,IAAInyE,OAAO,OAEvB,GADAmyE,EAAM,GAAK,KACkC,MAAzCjsG,OAAOqb,oBAAoB4wF,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACHvoG,EAAI,EAAGA,EAAI,GAAIA,IACvBuoG,EAAM,IAAMpyE,OAAO+7C,aAAalyE,IAAMA,EAKvC,GAAwB,eAHX3D,OAAOqb,oBAAoB6wF,GAAOlkG,KAAI,SAAUyD,GAC5D,OAAOygG,EAAMzgG,MAEHvC,KAAK,IACf,OAAO,EAIR,IAAIijG,EAAQ,GAIZ,MAHA,uBAAuBn+F,MAAM,IAAInE,SAAQ,SAAUuiG,GAClDD,EAAMC,GAAUA,KAGf,yBADEpsG,OAAO4J,KAAK5J,OAAOwmC,OAAO,GAAI2lE,IAAQjjG,KAAK,IAM9C,MAAOxG,GAER,OAAO,GAIQ2pG,GAAoBrsG,OAAOwmC,OAAS,SAAU4B,EAAQ5E,GAKtE,IAJA,IAAI/kB,EAEA8+C,EADA/+C,EAAK8gB,EAAS8I,GAGTx8B,EAAI,EAAGA,EAAIsO,UAAUtW,OAAQgI,IAAK,CAG1C,IAAK,IAAIL,KAFTkT,EAAOze,OAAOka,UAAUtO,IAGnB1L,EAAeC,KAAKse,EAAMlT,KAC7BiT,EAAGjT,GAAOkT,EAAKlT,IAIjB,GAAIu3C,EAAuB,CAC1Bya,EAAUza,EAAsBrkC,GAChC,IAAK,IAAI9a,EAAI,EAAGA,EAAI45D,EAAQ35D,OAAQD,IAC/BqoG,EAAiB7rG,KAAKse,EAAM8+C,EAAQ55D,MACvC6a,EAAG++C,EAAQ55D,IAAM8a,EAAK8+C,EAAQ55D,MAMlC,OAAO6a,I,cCxFR,IAAIhP,EAGJA,EAAI,WACH,OAAOpL,KADJ,GAIJ,IAECoL,EAAIA,GAAK,IAAIwQ,SAAS,cAAb,GACR,MAAO3d,GAEc,iBAAX3C,SAAqB8P,EAAI9P,QAOrCiI,EAAOiD,QAAU4E,G,cCnBjB7H,EAAOiD,QAIP,WAGI,IAFA,IAAIw9B,EAAS,GAEJzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CACvC,IAAI6/B,EAAStpB,UAAUvW,GAEvB,IAAK,IAAI4H,KAAOi4B,EACRtjC,EAAeC,KAAKqjC,EAAQj4B,KAC5B68B,EAAO78B,GAAOi4B,EAAOj4B,IAKjC,OAAO68B,GAfX,IAAIloC,EAAiBF,OAAOC,UAAUC,gB,6BCetCyH,EAAOiD,QAfP,SAA6BzI,GAC3B,OACEA,EACGiM,QAAQ,cAAe,KACvBA,QAAQ,SAAU,IAMlB8I,cACA+rB,gB,6BCHPt7B,EAAOiD,QARP,SAAkBzI,GAChB,OAAOA,QACH,GACA,WAAYA,EACZA,EACA,CAACA,K,6BCLP,IAAImqG,EAAgB,EAAQ,IAW5B3kG,EAAOiD,QATP,SAAqBD,EAAM8qE,GACzB,OAAI9qE,EAAK/G,QACP0oG,EAAc3hG,EAAMA,EAAK/G,OAAQ,EAAG6xE,GAC7B9qE,GAGF8qE,I,6BCST9tE,EAAOiD,QAjBP,SAAoB2hG,EAAY/R,EAAQ7oF,GAKtC,IAJA,IAEIjM,EAFA8mG,EAAS,GACTlqE,GAAS,IAGJA,EAAQiqE,EAAW3oG,SAC1B8B,EAAU6mG,EAAWjqE,GAAOmqE,aAEbD,EAAOhrG,QAAQkE,GAAW,IACvC80F,EAAS90F,EAAQ80F,EAAQ7oF,GACzB66F,EAAO/qG,KAAKiE,IAIhB,OAAO80F,I,6BCdT,IAEIkS,EAFa,EAAQ,GAER9R,CAAW,YAE5BjzF,EAAOiD,QAAU8hG,G,6BCJjB,IAAIC,EAA4B,EAAQ,IACpCC,EAAc,EAAQ,KACtBN,EAAgB,EAAQ,IACxBO,EAAsB,EAAQ,KAC9BJ,EAAa,EAAQ,KACrBK,EAAU,EAAQ,IAClBC,EAAqB,EAAQ,KAC7BC,EAAe,EAAQ,KACvBC,EAAe,EAAQ,KACvBC,EAAoB,EAAQ,KAE5BC,EAAW,CACbrrG,KAAM,WACNs4F,SAiIF,SAA0Bn0C,EAASC,EAAIm0C,GACrC,IAEI+S,EACAruD,EAHA8+B,EAAOz5E,KACPk+B,EAAQu7C,EAAK2c,OAAO52F,OAIxB,KAAO0+B,KACL,IACkC,eAA/Bu7C,EAAK2c,OAAOl4D,GAAO,GAAGl6B,MACU,cAA/By1E,EAAK2c,OAAOl4D,GAAO,GAAGl6B,QACvBy1E,EAAK2c,OAAOl4D,GAAO,GAAG+qE,UACvB,CACAD,EAAavvB,EAAK2c,OAAOl4D,GAAO,GAChC,MAIJ,OAEA,SAAesgB,GACb,IAAKwqD,EACH,OAAO/S,EAAIz3C,GAGb,OAAIwqD,EAAWE,UAAkBxJ,EAASlhD,IAC1C7D,EACE8+B,EAAK0vB,OAAOxuD,QAAQv9C,QAClBqrG,EACEhvB,EAAK2vB,eAAe,CAClBlsD,MAAO8rD,EAAW3rD,IAClBA,IAAKo8B,EAAK/qD,WAGX,EACPmzB,EAAQI,MAAM,YACdJ,EAAQI,MAAM,eACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,eACbN,EAAQM,KAAK,YACNknD,IAGT,SAASA,EAAc7qD,GAErB,OAAa,KAATA,EACKqD,EAAQynD,QACbC,EACAznD,EACAnH,EAAUmH,EAAK49C,EAHV79C,CAILrD,GAGS,KAATA,EACKqD,EAAQynD,QACbE,EACA1nD,EACAnH,EACIkH,EAAQynD,QAAQG,EAA6B3nD,EAAI49C,GACjDA,EALC79C,CAMLrD,GAGG7D,EAAUmH,EAAGtD,GAAQkhD,EAASlhD,GAGvC,SAASkhD,EAASlhD,GAEhB,OADAwqD,EAAWC,WAAY,EAChBhT,EAAIz3C,KAnMbkrD,UAoCF,SAA2BtT,EAAQ7oF,GACjC,IAEIo8F,EACAv9D,EACA8xC,EACAjhE,EACAtb,EACAioG,EACAC,EARA3rE,EAAQk4D,EAAO52F,OACf4zB,EAAS,EASb,KAAO8K,KAGL,GAFAjhB,EAAQm5E,EAAOl4D,GAAO,GAElBv8B,EAAM,CAER,GACiB,SAAfsb,EAAMjZ,MACU,cAAfiZ,EAAMjZ,MAAwBiZ,EAAMisF,UAErC,MAIuB,UAArB9S,EAAOl4D,GAAO,IAAiC,cAAfjhB,EAAMjZ,OACxCiZ,EAAMisF,WAAY,QAEf,GAAIU,GACT,GACuB,UAArBxT,EAAOl4D,GAAO,KACE,eAAfjhB,EAAMjZ,MAAwC,cAAfiZ,EAAMjZ,QACrCiZ,EAAMgsF,YAEPtnG,EAAOu8B,EAEY,cAAfjhB,EAAMjZ,MAAsB,CAC9BovB,EAAS,EACT,WAGoB,aAAfnW,EAAMjZ,OACf4lG,EAAQ1rE,GAgDZ,OA5CAyrE,EAAQ,CACN3lG,KAA+B,cAAzBoyF,EAAOz0F,GAAM,GAAGqC,KAAuB,OAAS,QACtDk5C,MAAOwrD,EAAQtS,EAAOz0F,GAAM,GAAGu7C,OAC/BG,IAAKqrD,EAAQtS,EAAOA,EAAO52F,OAAS,GAAG,GAAG69C,MAE5CjR,EAAQ,CACNpoC,KAAM,QACNk5C,MAAOwrD,EAAQtS,EAAOz0F,GAAM,GAAGu7C,OAC/BG,IAAKqrD,EAAQtS,EAAOwT,GAAO,GAAGvsD,MAEhC6gC,EAAO,CACLl6E,KAAM,YACNk5C,MAAOwrD,EAAQtS,EAAOz0F,EAAOyxB,EAAS,GAAG,GAAGiqB,KAC5CA,IAAKqrD,EAAQtS,EAAOwT,EAAQ,GAAG,GAAG1sD,QAOpC2sD,EAAQrB,EALRqB,EAAQ,CACN,CAAC,QAASF,EAAOp8F,GACjB,CAAC,QAAS6+B,EAAO7+B,IAGQ6oF,EAAO9wF,MAAM3D,EAAO,EAAGA,EAAOyxB,EAAS,IAElEy2E,EAAQrB,EAAYqB,EAAO,CAAC,CAAC,QAAS3rB,EAAM3wE,KAE5Cs8F,EAAQrB,EACNqB,EACAxB,EACE96F,EAAQ47F,OAAOhB,WAAW2B,WAAWC,KACrC3T,EAAO9wF,MAAM3D,EAAOyxB,EAAS,EAAGw2E,EAAQ,GACxCr8F,IAIJs8F,EAAQrB,EAAYqB,EAAO,CACzB,CAAC,OAAQ3rB,EAAM3wE,GACf6oF,EAAOwT,EAAQ,GACfxT,EAAOwT,EAAQ,GACf,CAAC,OAAQx9D,EAAO7+B,KAGlBs8F,EAAQrB,EAAYqB,EAAOzT,EAAO9wF,MAAMskG,EAAQ,IAEhDC,EAAQrB,EAAYqB,EAAO,CAAC,CAAC,OAAQF,EAAOp8F,KAC5C26F,EAAc9R,EAAQz0F,EAAMy0F,EAAO52F,OAAQqqG,GACpCzT,GA5HPiS,WAYF,SAA4BjS,GAC1B,IACIn5E,EADAihB,GAAS,EAGb,OAASA,EAAQk4D,EAAO52F,SACtByd,EAAQm5E,EAAOl4D,GAAO,IAGb8rE,OACS,eAAf/sF,EAAMjZ,MACU,cAAfiZ,EAAMjZ,MACS,aAAfiZ,EAAMjZ,OAGRoyF,EAAOt2F,OAAOo+B,EAAQ,EAAkB,eAAfjhB,EAAMjZ,KAAwB,EAAI,GAC3DiZ,EAAMjZ,KAAO,OACbk6B,KAIJ,OAAOk4D,IA9BLmT,EAAoB,CACtBvT,SAmMF,SAA0Bn0C,EAASC,EAAIm0C,GACrC,OAEA,SAAez3C,GAKb,OAJAqD,EAAQI,MAAM,YACdJ,EAAQI,MAAM,kBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,kBACN2mD,EAAkBjnD,EAASlgD,IAGpC,SAASA,EAAK68C,GACZ,OAAa,KAATA,EACKnB,EAAImB,GAGNmqD,EACL9mD,EACAooD,EACAhU,EACA,sBACA,6BACA,mCACA,yBACA,4BACA,EATK0S,CAULnqD,GAGJ,SAASyrD,EAAiBzrD,GACxB,OAAO+pD,EAA0B/pD,GAC7BsqD,EAAkBjnD,EAASqoD,EAA3BpB,CAAoCtqD,GACpCnB,EAAImB,GAGV,SAAS0rD,EAAQ1rD,GACf,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,EACzBqqD,EACLhnD,EACAinD,EAAkBjnD,EAASxE,GAC3B44C,EACA,gBACA,sBACA,sBANK4S,CAOLrqD,GAGGnB,EAAImB,GAGb,SAASnB,EAAImB,GACX,OAAa,KAATA,GACFqD,EAAQI,MAAM,kBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,kBACbN,EAAQM,KAAK,YACNL,GAGFm0C,EAAIz3C,MA5PXgrD,EAAyB,CAC3BxT,SA+PF,SAA+Bn0C,EAASC,EAAIm0C,GAC1C,IAAIxc,EAAOz5E,KACX,OAEA,SAAew+C,GACb,OAAOoqD,EAAa7sG,KAClB09E,EACA53B,EACAsoD,EACAlU,EACA,YACA,kBACA,kBAPK2S,CAQLpqD,IAGJ,SAAS2rD,EAAW3rD,GAClB,OAAOi7B,EAAK0vB,OAAOxuD,QAAQv9C,QACzBqrG,EACEhvB,EAAK2vB,eAAe3vB,EAAK2c,OAAO3c,EAAK2c,OAAO52F,OAAS,GAAG,IAAI8F,MAAM,GAAI,KAEtE,EACA2wF,EAAIz3C,GACJsD,EAAGtD,MApRPirD,EAA8B,CAChCzT,SAuRF,SAAoCn0C,EAASC,EAAIm0C,GAC/C,OAEA,SAAez3C,GAKb,OAJAqD,EAAQI,MAAM,aACdJ,EAAQI,MAAM,mBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,mBACNxgD,GAGT,SAASA,EAAK68C,GACZ,OAAa,KAATA,GACFqD,EAAQI,MAAM,mBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,mBACbN,EAAQM,KAAK,aACNL,GAGFm0C,EAAIz3C,MAIfj7C,EAAOiD,QAAUuiG,G,6BClUjB,SAASqB,EAAQ32F,GAAmV,OAAtO22F,EAArD,mBAAXtjG,QAAoD,iBAApBA,OAAOujG,SAAmC,SAAiB52F,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX3M,QAAyB2M,EAAIwzB,cAAgBngC,QAAU2M,IAAQ3M,OAAOjL,UAAY,gBAAkB4X,IAAyBA,GALnX7X,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAiB,QAIjB,SAAwB85D,EAAMC,GAC5B,IAAI/6D,EAAOsQ,UAAUtW,OAAS,QAAsBF,IAAjBwW,UAAU,GAAmBA,UAAU,GAAK,GAE/E,GAAIwqD,IAASC,EACX,OAAO,EAGT,IAAI+pC,EAAQ1uG,OAAO4J,KAAK86D,GACpBiqC,EAAQ3uG,OAAO4J,KAAK+6D,GAExB,GAAI+pC,EAAM9qG,SAAW+qG,EAAM/qG,OACzB,OAAO,EAGT,IACID,EAAGiQ,EADHg7F,EAAU,GAGd,IAAKjrG,EAAI,EAAGiQ,EAAMhK,EAAKhG,OAAQD,EAAIiQ,EAAKjQ,IACtCirG,EAAQhlG,EAAKjG,KAAM,EAGrB,IAAKA,EAAI,EAAGiQ,EAAM86F,EAAM9qG,OAAQD,EAAIiQ,EAAKjQ,IAAK,CAC5C,IAAI4H,EAAMmjG,EAAM/qG,GACZkrG,EAASnqC,EAAKn5D,GACdujG,EAASnqC,EAAKp5D,GAElB,GAAIsjG,IAAWC,EAAf,CAIA,IAAKF,EAAQrjG,IAAmB,OAAXsjG,GAA8B,OAAXC,GAAuC,WAApBN,EAAQK,IAA4C,WAApBL,EAAQM,GACjG,OAAO,EAGT,IAAIC,EAAa/uG,OAAO4J,KAAKilG,GACzBG,EAAahvG,OAAO4J,KAAKklG,GAE7B,GAAIC,EAAWnrG,SAAWorG,EAAWprG,OACnC,OAAO,EAGT,IAAK,IAAI6H,EAAI,EAAG7H,EAASmrG,EAAWnrG,OAAQ6H,EAAI7H,EAAQ6H,IAAK,CAC3D,IAAIwjG,EAAYF,EAAWtjG,GAE3B,GAAIojG,EAAOI,KAAeH,EAAOG,GAC/B,OAAO,IAKb,OAAO,I,65BC7CHC,EAAa,SAAC,GAAuB,IAArB9mG,EAAqB,EAArBA,KAASgR,EAAY,OACnC+1F,EAAY/mG,EAAK8O,cAEvB,OAAQi4F,GACN,IAAK,QACH,OAAO,YAAC,IAAD,GAAY/mG,KAAMA,GAAUgR,IACrC,IAAK,SACH,OAAO,YAAC,IAAD,GAAahR,KAAM+mG,GAAe/1F,IAC3C,IAAK,QACH,OAAO,YAAC,IAAD,GAAYhR,KAAMA,GAAUgR,IACrC,IAAK,MACL,QACE,OAAO,YAAC,IAAD,GAAOhR,KAAM+mG,GAAe/1F,MAKzC81F,EAAWliE,UAAYmP,IACvB+yD,EAAWjwC,aAAepxB,I,UAEXqhE,EAAA,O,6FApBTA,E,mXCZNtkG,EAAQQ,YAAa,EACrBR,EAAQiyE,UAQR,SAAmBuyB,GACjB,QAASA,GAAQA,aAAgB3M,SARnC73F,EAAQykG,aAYR,SAAsBD,GACpB,QAASA,IAASA,aAAgBE,YAAc,oBAAqBF,IAZvExkG,EAAQ2kG,gBAgBR,SAAyBH,GACvB,QAASA,GAAQ,mBAAoBA,GAhBvCxkG,EAAQ4kG,qBAmBR,SAA8BJ,GAC5B,QAASA,GAAQ,iBAAkBA,GAnBrCxkG,EAAQ6kG,aAuBR,SAAsB3mE,GACpB,QAASA,GAAS,mBAAoBA,GAvBxCl+B,EAAQ8kG,aA2BR,SAAsB5mE,GACpB,QAASA,GAAS,YAAaA,GA3BjCl+B,EAAQ+0F,QA+BR,SAAiB72D,GACf,QAASA,IAAUA,aAAiB6mE,OAAS,gBAAiB7mE,GAASA,EAAM8mE,uBAAuBD,S,+iECjCzFrtD,EAAY,SAAC,GAAoC,IAAlC5gD,EAAkC,EAAlCA,SAAUmuG,EAAwB,EAAxBA,QAAYz2F,EAAY,OAC5D,SAAey2F,IACb,IAAK,SACL,IAAK,SACH,OACE,qBAAKC,sBAAqBD,GAAaz2F,GACpC1X,GAMT,OACE,qBACEouG,sBAAqB9vG,OAAOgrC,QAAQ6kE,GACjC7nG,KAAI,yBAAEkmE,EAAF,KAAc9nB,EAAd,qBAA2B8nB,EAAWjrC,eAAtC,OAAsDmjB,MAC1Dl9C,KAAK,MACJkQ,GAEH1X,IAKP4gD,EAAU+rB,YAAc,aAExB/rB,EAAUtV,UAAY,CACpBtrC,SAAUk6C,IAAUlpC,KAAK6rC,WACzBsxD,QAASj0D,IAAU3O,UAAU,CAC3B2O,IAAU9jC,OACV8jC,IAAUt7B,OACVs7B,IAAUC,MAAM,CACdnQ,QAASkQ,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SAC1DlM,EAAGgwC,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACpDjN,EAAG+wC,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACpDjT,EAAG+2C,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACpDi4F,GAAIn0D,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACrDnI,EAAGisC,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACpD7H,EAAG2rC,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACpDrJ,EAAGmtC,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SACpDk4F,GAAIp0D,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,cAK3DwqC,EAAU2c,aAAe,CACvB4wC,QAAS,c,UAGIvtD,G,6FAjDFA,E,utCCCAD,EAAU,SAAC,GAAD,IAAG4+C,EAAH,EAAGA,QAASv/F,EAAZ,EAAYA,SAAa0X,EAAzB,cACrB,qBAAK7F,UAAW8G,IAAW,aAAc4mF,GAAW,wBAA4B7nF,GAC7E1X,IAIL2gD,EAAQgsB,YAAc,WAEtBhsB,EAAQrV,UAAY,CAClBi0D,QAASrlD,IAAUM,KACnBx6C,SAAUk6C,IAAUlpC,KAAK6rC,YAG3B8D,EAAQ4c,aAAe,CACrBgiC,SAAS,G,UAGI5+C,G,6FAjBFA,E,ouCCAAE,EAAgB,SAAC,GAAD,IAAG0tD,EAAH,EAAGA,MAAOC,EAAV,EAAUA,OAAQxuG,EAAlB,EAAkBA,SAAU6R,EAA5B,EAA4BA,UAAc6F,EAA1C,cAC3B,qBACE7F,UAAW8G,IACT9G,EACA,mBACA08F,GAAS,2BACTC,GAAU,6BAER92F,GAEH1X,IAIL6gD,EAAc8rB,YAAc,iBAE5B9rB,EAAcvV,UAAY,CACxBijE,MAAOr0D,IAAUM,KACjBg0D,OAAQt0D,IAAUM,KAClBx6C,SAAUk6C,IAAUlpC,KAAK6rC,YAG3BgE,EAAc0c,aAAe,CAC3BgxC,OAAO,EACPC,QAAQ,G,UAGK3tD,G,6FA3BFA,E,+lBCJb,SAAS67B,IACR,IAAMA,EAAM,IAAI1+E,OAAOkG,eAEvB,MAAO,CACN9D,KAAM,MACNmE,KAAM,SAAUs/D,EAAKtgE,GACpBm5E,EAAIr4E,KAAK,OAAQw/D,GAAK,GACtB6Y,EAAI2U,iBAAkB,EACtB3U,EAAI8U,iBAAiB,eAAgB,oBACrC9U,EAAIn4E,KAAKhB,IAEV8pF,SAAU,SAAUtrF,GACnB26E,EAAIE,QAAU,WACb76E,EAASW,OAEVg6E,EAAIC,OAAS,WACRD,EAAIx5E,QAAU,KAAOw5E,EAAIx5E,OAAS,IACrCnB,IAEAA,EAAS,uBAAyB26E,EAAIx5E,Y,4FAnBlCw5E,E,seCAT,SAASie,IACR,IAAI8T,EACAC,EACEtqG,EAAI,IAAIL,SAAQ,SAACC,EAASC,GAC/BwqG,EAAWzqG,EACX0qG,EAAWzqG,KAEZ,MAAO,CACN7D,KAAM,aACNmE,KAAM,SAAUs/D,EAAKtgE,GAChBm3F,UAAUC,WAAW92B,EAAKtgE,GAC7BkrG,IAEAC,EAAS,IAAI7qG,MAAM,gCAAkCN,EAAK4O,cAI5Dk7E,SAAU,SAAUtrF,GACfA,GACHqC,EAAEtD,KAAKiB,EAAUA,M,4FAnBZ44F,E,4fCET,SAAS4D,IACR,IAAMA,EAAQ,IAAIoQ,MAAM,EAAE,GAE1B,MAAO,CACNvuG,KAAM,QACNmE,KAAM,SAAUs/D,EAAKtgE,GACpBsgE,EAAMA,EAAIn3D,QAAQ,kCAAmC,mCACrD6xF,EAAMj5F,IAAMu+D,GAAOA,EAAI/jE,QAAQ,MAAQ,EAAI,IAAM,KAAO,QAAU8mC,YAAOrjC,IAE1E8pF,SAAU,SAAUtrF,GACfw8F,EAAMj3D,kBACTi3D,EAAMj3D,iBAAiB,QAASvlC,GAChCw8F,EAAMj3D,iBAAiB,QAAQ,kBAAMvlC,SAErCw8F,EAAMh3D,YAAY,UAAWxlC,GAC7Bw8F,EAAMh3D,YAAY,UAAU,kBAAMxlC,W,4FAf7Bw8F,E,+8CC0BHqQ,GAAyC,cAAxBlU,UAAUmU,UAE3BC,GAAoB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OACxDC,GAAoB,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAE7DC,GAAM,SAAA/+F,GACV,MAA0CuyE,mBAAS,MAAnD,WAAOhC,EAAP,KAAsByuB,EAAtB,KACA,EAAwBzsB,mBAAS,MAAjC,WAAOj/E,EAAP,KAAa2rG,EAAb,KAEMC,EAAU7b,mBAGhB,EAA0B8b,YAAwB,CAChDC,MAAO,CAAE3oG,KAAM+5D,IAAYz2B,QAAS8kE,GAAmBQ,UAAW,GAClEC,cAAe,CACb7oG,KAAM+5D,IACNz2B,QAAS+kE,GACTO,UAAW,GAEb/hF,OAAQ,CAAE7mB,KAAM85D,IAAax2B,QAAS,SAAUnkC,QAAS,CAAC,SAAU,UACpEmuC,SAAU,CAAEttC,KAAMg6D,IAAc12B,SAAS,GACzCs7C,QAAS,CAAE5+E,KAAMg6D,IAAc12B,SAAS,GACxCq7C,WAAY,CAAE3+E,KAAMg6D,IAAc12B,SAAS,GAC3CwlE,UAAW,CAAE9oG,KAAM85D,IAAax2B,QAAS,cACzCylE,SAAU,CACR/oG,KAAM85D,IACNx2B,QAAS,QACTnkC,QAAS,CAAC,QAAS,iBACnB6pG,qBAAqB,KAhBzB,WAAOttC,EAAP,KAAcutC,EAAd,KAqBAhtB,qBAAU,WAER,cAAC,gCAAA57E,EAAA,6DACO6oG,EAAQ,GACRC,EAAK,GAFZ,SAKO9rG,QAAQ03F,IACZr5B,EAAMitC,MAAM/oG,IAAZ,+BAAgB,WAAMwpG,GAAN,iBAAA/oG,EAAA,sEACsB23F,MAAM,yGAAD,OAEpCkQ,GAAsC,OAArB3+F,EAAQ8/F,WAFW,sBAGzBD,EAAQvuE,cAHiB,aAKtCzgC,MAAK,SAAAsI,GAAC,OAAIA,EAAEw3E,UACZ9/E,MAAK,SAAAsI,GAAC,OAAI4mG,IAAKprG,MAAMwE,EAAG,CAAE6gE,QAAQ,EAAMyiB,eAAe,EAAMuB,gBAAgB,OAPlE,gBACAgiB,EADA,EACN1sG,KAQR2sG,EAAcA,GAAeD,EAAY,GAAGE,aAC5CP,EAAM7vG,KAAKk4F,YAAwBgY,GAAa,IAVlC,2CAAhB,wDANH,uBAoBOlsG,QAAQ03F,IACZr5B,EAAMmtC,cAAcjpG,IAApB,+BAAwB,WAAM8pG,GAAN,iBAAArpG,EAAA,sEACY23F,MAAM,yGAAD,OAElCkQ,GAAsC,OAArB3+F,EAAQ8/F,WAFS,qBAGxBK,EAAS/wF,OAAO,GAAGkiB,cAHK,aAKpCzgC,MAAK,SAAAsI,GAAC,OAAIA,EAAEw3E,UACZ9/E,MAAK,SAAAsI,GAAC,OAAI4mG,IAAKprG,MAAMwE,EAAG,CAAE6gE,QAAQ,EAAMyiB,eAAe,EAAMuB,gBAAgB,OAP1D,gBACRoiB,EADQ,EACd9sG,KAORssG,EAAG9vG,KAAKk4F,YAAwBoY,GAAW,IARrB,2CAAxB,wDArBH,OAiCCnB,EAAQ,CACNU,QACAC,OAEFZ,EAAiBiB,GArClB,0CAAD,KAuCC,CAACjgG,IAEJ0yE,qBAAU,WAER,cAAC,oCAAA57E,EAAA,0DACKxD,IAAQA,EAAKqsG,OAASrsG,EAAKqsG,MAAM1tG,SAAWkgE,EAAMitC,MAAMntG,OAD7D,iCAEqCw8F,MAAM,yGAAD,OAElCkQ,GAAsC,OAArB3+F,EAAQ8/F,WAFS,kCAKpCjvG,MAAK,SAAAsI,GAAC,OAAIA,EAAEw3E,UACZ9/E,MAAK,SAAAsI,GAAC,OAAI4mG,IAAKprG,MAAMwE,EAAG,CAAE6gE,QAAQ,EAAMyiB,eAAe,EAAMuB,gBAAgB,OARnF,uBAEiBqiB,EAFjB,EAEW/sG,KAFX,SASkCm7F,MAAM,yGAAD,OAE/BkQ,GAAsC,OAArB3+F,EAAQ8/F,WAFM,mCAKjCjvG,MAAK,SAAAsI,GAAC,OAAIA,EAAEw3E,UACZ9/E,MAAK,SAAAsI,GAAC,OAAI4mG,IAAKprG,MAAMwE,EAAG,CAAE6gE,QAAQ,EAAMyiB,eAAe,EAAMuB,gBAAgB,OAfnF,gBASiBsiB,EATjB,EASWhtG,KAOFitG,EAAW,CACfZ,MAAO3X,YAAwBqY,GAC/BT,GAAI5X,YAAwBsY,IAE9BrB,EAAQsB,GApBX,2CAAD,KAuBC,CAACvgG,EAAS1M,IAGb,IA0BMktG,EA1BAC,EAAclvB,uBAClB,WAAsB,2BAAlBmvB,EAAkB,yBAAlBA,EAAkB,gBACpB,IAAMC,EAC6B,IAAjCC,YAAcF,GAAuB,CAACA,GAAiBA,EAAc,GACjEG,EAAaF,EAAmB7vC,QACpC,SAACijB,EAAD,kBAAOn6E,EAAP,KAAYpJ,EAAZ,qBAA6BujF,GAA7B,UAAmCn6E,EAAMpJ,MACzC,IAEFkvG,EAAS,GAAD,MAAMvtC,GAAU0uC,MAE1B,CAACnB,EAAUvtC,IAIXitC,EASEjtC,EATFitC,MACAE,EAQEntC,EARFmtC,cACAhiF,EAOE60C,EAPF70C,OACA+3D,EAMEljB,EANFkjB,QACAtxC,GAKEouB,EALFpuB,SACAqxC,GAIEjjB,EAJFijB,WAEA0rB,IAEE3uC,EAHFgzB,OAGEhzB,EAFF2uC,UACAvB,GACEptC,EADFotC,UAGIjqB,IACAkrB,EAAgB,EACL,UAAXljF,IACFkjF,EAAgB,IAEdnrB,IAAYD,KACdorB,EAAgB,KAEdnrB,GAAWD,KACborB,EAAgB,KAEbnrB,GAAWD,KACdorB,EAAgB,KAEXA,GAIHO,GAAsB,IAAIj3F,KAAK,KAAM,EAAG,GACxCk3F,GAAoB,IAAIl3F,KACxBm3F,GAAkBvvD,YAAqB6tD,IAE7C7sB,qBAAU,WAEJuuB,GAAkBF,IACpBN,EAAY,YAAajvD,YAAwBuvD,KAE/CE,GAAkBD,IACpBP,EAAY,YAAajvD,YAAwBwvD,OAElD,CAACzB,KAEJ,IAAM2B,GAAa,SAAAvtG,GAAE,OACnBuB,SAASooE,eAAe3pE,IAAOuB,SAASooE,eAAe3pE,GAAIwtG,kBAuB7D,OApBAzuB,qBAAU,WACR,GAAIp/E,GAAQwtG,GACV,OAAQ3uC,EAAMqtC,UACZ,IAAK,QACH0B,GAAW,SACX,MACF,IAAK,gBACHA,GAAW,MACX,MACF,QACE,IACEhsG,SAASuuF,cAActxB,EAAMqtC,UAAU2B,iBACvC,MAAOzwG,GACPV,QAAQyI,MAAM/H,OAKrB,CAAC4C,EAAMwtG,GAAU3uC,EAAMqtC,WAGxB,YAAC,IAAD,OAAYx/F,EAAZ,CAAqBuwE,cAAeA,IAClC,YAAC,IAAD,CAAc6wB,aAAclC,EAASrjE,OAAQ,CAAE9B,QAAS,GAAI/7B,EAAG,GAAIM,EAAG,GAAIxB,EAAG,GAAIuhG,GAAI,KACnF,YAAC,IAAD,OACMr+F,EAAQqhG,iBADd,CAEEC,YAAY,2CAGhB,oBAAM1nG,IAAI,OAAOiuE,KAAK,OAAOngE,IAAKw3F,GAChC,uBAASt9F,UAAU,UAAU2/F,WAAS,EAACC,SAAS,6BAC9C,YAAC,IAAD,CAAe5/F,UAAU,gBACvB,YAAC,IAAD,KACE,YAAC,IAAD,CAAWs8F,QAAQ,4BACjB,YAAC,IAAD,OAAuBl+F,EAAvB,CAAgCuwE,cAAeA,QAIrD,mBAAK3uE,UAAU,2CAA2C6/F,SAAS,eACjE,YAAC,IAAD,KACE,YAAC,IAAD,KACE,YAAC,IAAD,CAAWvD,QAAQ,4BACjB,mBAAKt8F,UAAU,wBACb,YAAC,IAAD,CAAQqzD,KAAG,EAAC6d,QAAS,kBAAMouB,GAAW,WAAtC,aAGA,YAAC,IAAD,CAAQjsC,KAAG,EAAC6d,QAAS,kBAAMouB,GAAW,QAAtC,cAIF,YAAC,IAAD,CAAervE,OAAQ6vE,MACvB,YAAC,IAAD,CAAW3jE,MAAM,kBACf,YAAC,IAAD,CACElM,OAAQ8vE,IACR11C,UAAW,CACT29B,KAAM,gBAAG75F,EAAH,EAAGA,SAAH,OAAkB,kBAAI6R,UAAU,qBAAqB7R,IAC3D6xG,UAAW,gBAAG7xG,EAAH,EAAGA,SAAH,OACT,kBAAI6R,UAAU,0BAA0B7R,UAQpD,uBAAS4D,GAAG,SACV,YAAC,IAAD,MACIgrG,IAAkBrrG,EAClB,YAAC,IAAD,CACEA,KAAMA,EACNuuG,cAAc,QACdhwE,OAAO,kMACPkS,SAAUA,GACVqxC,WAAYA,GACZ93D,OAAQA,EACR8hF,MAAOA,EACP/pB,QAASA,EACTC,WAAYA,GACZ6P,QAAM,EACNjU,UAAWX,EACXkwB,YAAaA,EACbM,oBAAqBA,GACrBC,kBAAmBA,GACnBzB,UAAW0B,KAGb,YAAC,IAAMl/B,SAAP,KACE,YAAC,IAAD,CAAWm8B,QAAQ,4BACjB,mBAAKt8F,UAAU,qBACb,YAAC,IAAD,CAAS6yC,KAAK,eAQ1B,YAAC,IAAD,KACE,YAAC,IAAD,CAAWypD,QAAQ,4BACjB,YAAC,IAAD,CAAUngE,MAAM,WACd,YAAC,IAAD,CACElM,OAAO,yHACPm6B,gBAAiB,CAAC,aAClBU,kBAAgB,IAElB,YAAC,IAAD,CACE76B,OAAO,6IACPm6B,gBAAiB,CAAC,aAClBU,kBAAgB,IAElB,YAAC,IAAD,CACE76B,OAAO,kJACPm6B,gBAAiB,CAAC,aAClBU,kBAAgB,MAKtB,YAAC,IAAD,CAAWwxC,QAAQ,4BACjB,YAAC,IAAD,CAAersE,OAAQiwE,QAI3B,uBAASnuG,GAAG,MACV,YAAC,IAAD,MACIgrG,IAAkBrrG,EAClB,YAAC,IAAD,CACEA,KAAMA,EACNuuG,cAAc,KACdhwE,OAAO,yBACPkS,SAAUA,GACVqxC,WAAYA,GACZ93D,OAAQA,EACR8hF,MAAOE,EACPjqB,QAASA,EACTC,WAAYA,GACZ6P,QAAM,EACNjU,UAAWX,EACXkwB,YAAaA,EACbM,oBAAqBA,GACrBC,kBAAmBA,GACnBzB,UAAW0B,KAGb,YAAC,IAAMl/B,SAAP,KACE,YAAC,IAAD,CAAWm8B,QAAQ,4BACjB,mBAAKt8F,UAAU,qBACb,YAAC,IAAD,CAAS6yC,KAAK,eAQ1B,YAAC,IAAD,KACE,YAAC,IAAD,CAAWypD,QAAQ,4BACjB,YAAC,IAAD,CAAersE,OAAQkwE,OAGzB,YAAC,IAAD,CAAW7D,QAAQ,4BACjB,YAAC,IAAD,CAAWngE,MAAM,WACf,YAAC,IAAD,CAAelM,OAAQmwE,MACvB,YAAC,IAAD,CAAenwE,OAAQowE,MACvB,YAAC,IAAD,CAAepwE,OAAQqwE,OAGzB,uBAAStgG,UAAU,WACjB,YAAC,IAAD,CAAeiwB,OAAO,6SACtB,YAAC,IAAD,CAAeA,OAAO,6HACtB,YAAC,IAAD,CAAeA,OAAO,iGACtB,YAAC,IAAD,CAAeA,OAAO,2DAGxB,YAAC,IAAD,KACE2+C,SAAUxwE,EAAQwwE,UADpB,MAEWxwE,SAMnB,YAAC,IAAD,U,GArVJ++F,G,mPAOsBI,QAqV5BJ,GAAI1jE,UAAJ,MACKi1C,KAGLyuB,GAAIzxC,aAAJ,MACK6jB,K,aAGUzhF,cAAIqvG,IAAJ,Q,+FAzWTJ,G,kEAEAE,G,qEACAC,G,qEAEAC,G,+cCpCAoD,EAAa,CAClBC,QAAS,wGACTC,SAAU,+CACVC,SAAU,2IACVC,UAAW,gFACXC,SAAU,kEACVC,KAAM,UACNC,kBAAmB,WAGdC,EAAsB,CAC3BP,QAAS,kDACTC,SAAU,mDACVC,SAAU,mDACVC,UAAW,oDACXC,SAAU,mDACVC,KAAM,0BACNC,kBAAmB,2EAiCpB,SAASE,EAAMtf,EAAQ71E,GACtB,IAAMo1F,EAASpwG,KACTqwG,EAAc,GAWpB,SAASC,EAAoBC,GAA4C,IAAjC1vG,EAAiC,uDAA1B,GAAIkkC,EAAsB,uDAAV,SAC9DqrE,EAAOvf,OAAO3rD,cAAc,IAAIC,YAAYJ,EAAY,IAAMwrE,EAAW,CACxEtrE,OAAQpkC,EACRukC,SAAS,KAWX,SAASorE,EAAYvzC,GACpB,IAAMwzC,EAAWxzC,EAAGj5B,OAAO0sE,QAAQ,sBAEnC,GAAIN,EAAOvf,OAAO8f,SAASF,IAAaA,EAASzf,cAAc,WAAY,CAC1E/zB,EAAGmgC,iBACHngC,EAAG2zC,kBAEH,IAAMzvC,EAAMsvC,EAASzf,cAAc,WAAW6f,KACxCC,EAAgBV,EAAOvf,OAAOkgB,QAAQC,gBAAkB,GAE9DV,EAAoB,QAAS,CAC5BjyD,SAAU,QACV2uC,OAAQ,QACRikB,OAAQR,EAASxlC,YAAYthE,OAAOmJ,cACpC6rD,SAAUmyC,GACR,aAcL,SAAqB3vC,GAChBA,IACCkvC,EAAYlvC,KAASkvC,EAAYlvC,GAAK+vC,OACzCb,EAAYlvC,GAAKgwC,SAEjBd,EAAYlvC,GAAO7lE,OAAOqG,KAAKw/D,EAAK,GAAI,wBACxCkvC,EAAYlvC,GAAKiwC,OAAS,MAG3Bd,EAAoB,OAAQ,CAC3Be,MAAOjB,EACPpjB,OAAQ,SACR7rB,IAAKA,KAxBNmwC,CAAYnwC,IAoCd,SAASowC,EAAkBC,GAC1B,IAAIC,EAAc/B,EAAW8B,GAM7B,OALAC,EAAcA,EAAYznG,QAAQ,UAAWm6B,mBAAmBnpB,EAAOmmD,MACrEn3D,QAAQ,YAAam6B,mBAAmBnpB,EAAOswB,QAC/CthC,QAAQ,iBAAkBm6B,mBAAmBnpB,EAAO02F,aACpD1nG,QAAQ,cAAem6B,mBAAmBnpB,EAAOmsD,UACjDn9D,QAAQ,6BAA8Bm6B,mBAAmBnpB,EAAO22F,yBAuBnE,SAAS58F,IAiCT,IACOi7F,KAAOvtG,SAASC,cAAc,MAC/BmuG,KAAO71F,EAAOmmD,IACnBnmD,EAAOmmD,IAAM6uC,EAAKrwC,SAAW,KAAOqwC,EAAKpwC,KAAOowC,EAAKnwC,SAAWmwC,EAAKnxC,OAASmxC,EAAK4B,KAhCnF,IADA,IAfoCJ,EAe9BK,EAAYpvG,SAASC,cAAc,MAChCnD,EAAI,EAAGA,EAAIyb,EAAO82F,MAAMtyG,OAAQD,IAAK,CAC7C,IAAMwyG,EAAYtvG,SAASC,cAAc,MACnCsvG,EAAcvvG,SAASC,cAAc,QACrCuvG,EAAWxvG,SAASC,cAAc,KAExCqvG,EAAUjhB,UAAUr/D,IAAI,kBAAxB,2BAA+DzW,EAAO82F,MAAMvyG,KAE5EyyG,EAAYlhB,UAAUr/D,IAAI,iBAC1BugF,EAAYzU,WAxBuBiU,EAwBgBx2F,EAAO82F,MAAMvyG,QAvB7D2yG,EAAmBhC,EAAoBsB,GACPxnG,QAAQ,YAAagR,EAAOswB,QAwB/D2mE,EAASnhB,UAAUr/D,IAAI,gBAAvB,yBAA0DzW,EAAO82F,MAAMvyG,KACvE0yG,EAASpB,KAAOU,EAAkBv2F,EAAO82F,MAAMvyG,IAC/C0yG,EAASxpG,aAAa,SAAU,UAChCwpG,EAASxpG,aAAa,MAAO,YAE7BwpG,EAASnvG,YAAYkvG,GACrBD,EAAUjvG,YAAYmvG,GACtBJ,EAAU/uG,YAAYivG,GAEvB3B,EAAOvf,OAAO/tF,YAAY+uG,IAwB3B,WACMhhB,EAEQA,aAAkBl8E,cAC9Bk8E,EAASpuF,SAASuuF,cAAcH,IAFhCA,EAASpuF,SAAS09C,KAKnB,IAAMgyD,EAAe,IAAIC,IAAYvhB,GACrCshB,EAAalnB,GAAG,QAASulB,GACzB3f,EAAOpoF,aAAa,mBAAoB,IAExC2nG,EAAOiC,gBAAkBF,EACzB/B,EAAOvf,OAASA,EAEe,IAA3BA,EAAOvzF,SAASkC,SACdwb,KACJA,EAAS,IACF82F,MAAQjhB,EAAOmJ,aAAa,sBAClCnJ,EAAOtiF,aAAa,sBAAsB3E,MAAM,KAAO,GACxDoR,EAAOmmD,IAAM0vB,EAAOtiF,aAAa,qBAAuB,GACxDyM,EAAOswB,MAAQulD,EAAOtiF,aAAa,uBAAyB,GAC5DyM,EAAO02F,WAAa7gB,EAAOtiF,aAAa,4BAA8B,GACtEyM,EAAOmsD,QAAU0pB,EAAOtiF,aAAa,yBAA2B,GAChEyM,EAAO22F,uBAAyB9gB,EAAOtiF,aAAa,wCAA0C,IAE/FwG,KAGDu7F,EAAoB,QAAS,CAC5Be,MAAOjB,IAITt3B,GAQDq3B,EAAMt0G,UAAUmiD,QAAU,WACzBh+C,KAAKqyG,gBAAgBr0D,UAErB,IAAK,IAAIz+C,EAAI,EAAGA,EAAIS,KAAK6wF,OAAOvzF,SAAUiC,IACzCS,KAAK6wF,OAAOrnF,YAAYxJ,KAAK6wF,OAAOvzF,SAASiC,IAG9CS,KAAK6wF,OAAOyhB,gBAAgB,oBAC5BtyG,KAAK6wF,YAASvxF,GASf6wG,EAAMr3B,KAAO,WAAkC,IAAxB+X,EAAwB,uDAAfpuF,SAAS09C,KAIxC,OAHM0wC,aAAkBl8E,cACvBk8E,EAASpuF,SAASuuF,cAAcH,IAE7BA,aAAkBl8E,aAAek8E,EAAOj9D,QAAQ,8BAC5C,IAAIu8E,EAAMtf,GAEXxiF,MAAMgM,KAAKw2E,EAAOziF,iBAAiB,+BAA+B,SAAAyiF,GAAM,OAAI,IAAIsf,EAAMtf,O,UAG/Esf,EAAA,O,6FAlRTT,E,wGAUAQ,E,iHAwCGC,E,w1CC9CHoC,O,WAEL,gBAAaC,GAAU,6BACjBA,EAE0B,iBAAbA,IACjBA,EAAW/vG,SAASuuF,cAAcwhB,IAFlCA,EAAW/vG,SAASuuF,cAAc,iCAK/BwhB,EAASxY,aAAa,uBAI1Bh6F,KAAKwyG,SAAWA,EAEhB3zC,0CAAOia,KAAK94E,KAAKwyG,UACjBC,wCAAK35B,KAAK94E,KAAKwyG,UACfE,0CAAO55B,KAAK94E,KAAKwyG,UACjBG,0CAAO75B,KAAK94E,KAAKwyG,UACjBI,0CAAO95B,KAAK94E,KAAKwyG,UAEjBxyG,KAAKwyG,SAASF,gBAAgB,wBAC9BtyG,KAAKwyG,SAAS/pG,aAAa,oBAAqB,K,yKAGjD,SAAaooF,GAOZ,OANKA,IACJA,EAASpuF,SAAS09C,MAEb0wC,aAAkBl8E,cACvBk8E,EAASpuF,SAASuuF,cAAcH,IAE7B,eAAermF,KAAKqmF,EAAOtiF,aAAa,qBACpC,IAAIgkG,OAAO1hB,GAGZ,GAAGjtF,IAAI7H,KAAK80F,EAAOziF,iBAAiB,kCAAkC,SAAAurF,GAC5E,IAAKA,EAAGK,aAAa,qBACpB,OAAO,IAAIuY,OAAO5Y,MAEjB7jE,QAAO,SAACyxC,GACV,YAAkBjoE,IAAXioE,S,mBAMKgrC,O,2BAAA,+B,qIA/CTA,O,gzECDN,SAASM,mBAAoB50G,GAEV,KAAdA,EAAEk0F,SACLnyF,KAAK8yG,OAAO70G,G,IAIR46E,O,WAEL,gBAAYk6B,EAAU/3F,GAKrB,GAL6B,6BACxB69D,OAAOm6B,WACXn6B,OAAOm6B,SAAW,IAAIr7B,KAGlBo7B,IAEQA,aAAoBp+F,cAChCo+F,EAAWtwG,SAASuuF,cAAc+hB,KAG/BA,EAAS/Y,aAAa,sBAA1B,CAuBA,GAnBKh/E,IACJA,EAAS,GAET3M,MAAMxS,UAAU4J,QAAQ1J,KAAKg3G,EAAStY,YAAY,SAAC/N,GAClD,GAA2C,IAAvCA,EAAKhvF,KAAKN,QAAQ,iBAAwB,CAE7C,IAAM+J,EAAMulF,EAAKhvF,KAAKsM,QAAQ,iBAAkB,IAChD,IAGCgR,EAAO7T,GAAOlF,KAAKC,MAAMwqF,EAAK3uF,MAAMiM,QAAQ,MAAO,MAClD,MAAO/L,GACR+c,EAAO7T,GAAOulF,EAAK3uF,YAOnBid,EAAO3b,UAAuC,iBAApB2b,EAAO3b,SAAuB,CAE3D,GAAuC,mBAA5B/D,OAAO0f,EAAO3b,UACxB,MAAM,IAAI8B,MAAJ,4CAA+C6Z,EAAO3b,SAAtD,OAEPW,KAAKX,SAAW/D,OAAO0f,EAAO3b,UAO/B,GAJI2b,EAAO3b,UAAuC,mBAApB2b,EAAO3b,WACpCW,KAAKX,SAAW2b,EAAO3b,UAGpB2b,EAAO3b,WAAaW,KAAKX,SAC5B,MAAM,IAAI8B,MAAJ,uDAIPnB,KAAK+yG,SAAWA,EAEe,MAA3B/yG,KAAK+yG,SAASv6B,WACjBx4E,KAAK+yG,SAAStqG,aAAa,OAAQ,UACnCzI,KAAK+yG,SAASnuE,iBAAiB,UAAWiuE,mBAAmBzrG,KAAKpH,OAMlEA,KAAK+yG,SAAStqG,aAAa,YAAa,UAGzCzI,KAAK8yG,OAAS9yG,KAAK8yG,OAAO1rG,KAAKpH,MAC/BA,KAAK+yG,SAASnuE,iBAAiB,QAAS5kC,KAAK8yG,QAE7C9yG,KAAK+yG,SAAStqG,aAAa,oBAAqB,QAEhDzI,KAAKizG,SAAWj4F,EAAOgpB,OACjBhkC,KAAKizG,oBAAoBt+F,cAC9B3U,KAAKizG,SAAWxwG,SAASuuF,cAAchxF,KAAKizG,gBAGF3zG,IAAvCu5E,OAAOm6B,SAASn1G,IAAImC,KAAKizG,WAC5BjzG,KAAKgkC,OAAS,IAAI60C,OAAOq6B,OAAOlzG,MAChC64E,OAAOm6B,SAASl1G,IAAIkC,KAAKizG,SAAUjzG,KAAKgkC,SAExChkC,KAAKgkC,OAAS60C,OAAOm6B,SAASn1G,IAAImC,KAAKizG,UAGxCjzG,KAAKgkC,OAAOmvE,UAAUnzG,MACtBA,KAAKgkC,OAAO4lE,S,8CAGb,WACC5pG,KAAK+yG,SAAStqG,aAAa,gBAAiB,U,mBAG7C,WACCzI,KAAK+yG,SAAStqG,aAAa,gBAAiB,W,oBAI7C,SAAOxK,GAQN,GANA+B,KAAKgkC,OAAO8uE,SAET70G,GACFA,EAAEm/F,iBAGCp9F,KAAKX,SAAS,CACjB,IAAM+zG,EAAYpzG,KAAKgkC,OAAOqvE,SAAW,OAAS,QAClDrzG,KAAKX,SAAS+zG,EAAWn1G,M,qBAI3B,WACgC,MAA3B+B,KAAK+yG,SAASv6B,UACjBx4E,KAAK+yG,SAASn1C,oBAAoB,UAAWi1C,oBAE9C7yG,KAAK+yG,SAASn1C,oBAAoB,QAAS59D,KAAK8yG,QAChD9yG,KAAK+yG,SAAST,gBAAgB,iBAC9BtyG,KAAK+yG,SAAST,gBAAgB,QAC9BtyG,KAAK+yG,SAAST,gBAAgB,qBAE9BtyG,KAAKgkC,OAAOsvE,aAAatzG,MAEzBA,KAAKgkC,YAAS1kC,EACdU,KAAK+yG,cAAWzzG,EAChBU,KAAKX,cAAWC,I,6IAGjB,SAAYq6F,EAAI3+E,GACV2+E,EAEQA,aAAchlF,cAC1BglF,EAAKl3F,SAASuuF,cAAc2I,IAF5BA,EAAKl3F,SAAS09C,KAIf,IANuB,EAOjBozD,EAAU,GAPO,6BAML5Z,EAAGvrF,iBAAiB,kCANf,IAQvB,2BAAkC,KAAvB2kG,EAAuB,QAC5BA,EAAS/Y,aAAa,sBAC1BuZ,EAAQl2G,KAAK,IAAIw7E,OAAOk6B,EAAU/3F,KAVb,8BAavB,OAAOu4F,M,UAIT16B,OAAOq6B,OAASA,0C,aACDr6B,O,2BAAA,+B,qIAvJNg6B,mB,+HAOHh6B,O,yrBCDA26B,EAAY9uE,IAAMo0C,KAClB26B,EAAWC,IAAK56B,KAchB15C,EAAS,aAUf,SAASu0E,EAAaC,GACrB,IAAI54F,EAASnd,YAAI,WAAa,GAE9Bmd,EAAS5E,YAAM4E,EAAQ44F,GACvB91G,YAAI,SAAUkd,GAEVA,EAAO6gD,MAAQ7gD,EAAO6gD,KAAKg4C,SAC9BptB,YAAQzrE,EAAO6gD,KAAKg4C,SAStB,SAAS71D,IACRsgC,EAASmT,aAAc,EAEvBqiB,YAAe,UACfA,YAAe,aAOhB,SAASrkG,IACR,MAAO,0BAiCR,SAASqpE,IAAkB,IAAb99D,EAAa,uDAAJ,GACtB,GAAIsjE,EAASmT,YACZ,OAAOnT,EAGR,IAAMy1B,EAAuBjtE,QAC5BktE,KASD,GANID,IACH/4F,EAASi5F,EAAqBj5F,IAKI,IAA/Bpf,OAAO4J,KAAKwV,GAAQxb,QAAgBwb,EAAOisB,cAAgBrrC,OAC9D,OAAO,KAGRkC,YAAI,UAjGW,SAkGfA,YAAI,SAAUshC,GAEdthC,YAAI,aAAa,GAEjB,IAAMwoF,EAAetrE,EAASA,EAAOsrE,aAAe,GAepD,OAZA4tB,YAAS,GAAI5tB,GACbqtB,EAAa34F,GAGbm5F,YAAYn5F,EAAO2gD,SAGnBy4C,cAEAZ,IACAC,IACAn1B,EAASmT,aAAc,EAChBnT,EASR,SAAS01B,IACR,OAAOvxG,SAASuuF,cAAc,kCAY/B,SAASijB,EAAqB9wG,GAC7B,IACIkxG,EADEC,EAAWN,IAEjB,IAAIM,EAGH,OAAO,EAFPD,EAA0BC,EAASrpC,aAAeqpC,EAAS/W,WAAa+W,EAASz6B,UAKlF,IACC,IAAM06B,EAAqBtyG,KAAKC,MAAMmyG,GACtCz4G,OAAOwmC,OAAOj/B,EAASoxG,GACtB,MAAMt2G,GACP,IAAMu2G,EAAc,IAAIrzG,MAAM,oFAAsFlD,EAAEs9E,QAAU,KAKhI,MAJAz2C,YAAU,UAAW,MAAO,CAC3B9+B,MAAOwuG,EAAYj5B,QACnBhC,KAAM,CAAEh2E,OAAQ,gBAEXixG,EAGP,OAAOrxG,EAGR,I,IAAMm7E,EAAW,CAMhBmT,aAAa,EACbjvD,QA1Ke,QA2KfmxE,eACAv0E,SACA4e,UACAvuC,WACAqpE,OACA27B,UACA/vE,UACAgvE,SACAgB,SACAl5C,UAAWm5C,IAAKn5C,W,EAGF8iB,EAAA,O,6FA/LTk1B,E,qHACAC,E,oHAOU,Q,mHAOVr0E,E,kHAUGu0E,E,wHAgBA31D,E,mHAWAvuC,E,oHAkCAqpE,E,gHAgDAk7B,E,uIAaAC,E,gIAwBH31B,E,imBCzKAs2B,EAAqB,WAC1B,MAAO,CACNv2D,SAAU,QACV2uC,OAAQ,UACRz/E,QAAS,KAiBX,SAASm3B,EAAMmwE,EAAex1G,GAC7B,GAAIykC,YAAG+wE,EAAc5vE,OAAOoZ,WAAava,YAAG+wE,EAAc5vE,OAAO+nD,QAAS,CAMzE,MAJAloD,YAAU,UAAW,MAAO,CAC3B9+B,MAF4B,oCAG5BuzE,KAAM,CAAEh2E,OAAQ,gBAHY,oCAQ9B,IAAMyX,EAAS5E,YA9BR,CACNioC,SAAU,QACV2uC,OAAQ,UACRz/E,QAAS,IA2BiC,CAC1C8wC,SAAUw2D,EAAc5vE,OAAOoZ,SAC/B2uC,OAAQ6nB,EAAc5vE,OAAO+nD,OAC7Bz/E,QAASsnG,EAAc5vE,gBAGjBjqB,EAAOzN,QAAQ8wC,gBACfrjC,EAAOzN,QAAQy/E,OAEtB,IAAM8nB,EAAiBC,EAAsBF,GACzCC,IACH95F,EAAOzN,QAAQynG,eAAiBF,EAAevmG,aAAa,oBAC5DyM,EAAOzN,QAAQ0nG,aAAej6F,EAAOzN,QAAQ0nG,cAAgBC,EAAeJ,IAG7EH,IAAKl5C,MAAMzgD,EAAQ3b,GASpB,SAAS01G,EAAsBrwE,GAG9B,IAAMD,EAAUC,EAAMV,QAAUU,EAAM44D,WAEtC,GAAI74D,GAAWA,EAAQl2B,aAAa,oBACnC,OAAOk2B,EAWT,SAASywE,EAAezwE,GACvB,IAAMiC,EAAOyuE,EAAgB1wE,GAE7B,QAAoB,IAATiC,EAAX,CAKA,IAAM42D,EAAa52D,EAAK,GAMlB0uE,EAAgB,SAAyB3wE,GAC9C,IAAM4wE,EAAY5wE,EAAQwsD,cAC1B,GAAIokB,EAAW,CACd,IAAK,IAAI91G,EAAI,EAAGA,EAAI81G,EAAUlkB,WAAW3xF,OAAQD,IAChD,GAAI81G,EAAUlkB,WAAW5xF,KAAO+9F,EAC/B,OAAO/9F,EAGT,OAAQ,EAER,OAAO,EAVa,CAYpB+9F,GAqBF,OAAOgY,EAlBsB5uE,EAAK6uE,aAAY,SAASC,EAAS7b,GAC/D,IAAKA,EAAGnhB,SACP,OAAOg9B,EAAU,MAAQ7b,EAAG1yD,YAAYvpC,KAAO,KAGhD,IAAM86E,EAAWmhB,EAAGnhB,SAAS1lE,cAG7B,OAA8B,IAA1B0lE,EAASp7E,QAAQ,KACbo4G,EAAU,IAAMh9B,EAAW,IAI5Bg9B,EAAU,IAAMh9B,EAAU,SAAWmhB,EAAGz4F,IAAM,IAAM,OACzD,IAIyC,iBAAmBk0G,IAYhE,SAASD,EAAgB1wE,GAGxB,IAFA,IAAMiC,EAAO,GAENjC,GACNiC,EAAKrpC,KAAKonC,GACVA,EAAUA,EAAQwsD,cAGnB,OAAOvqD,EAwBR,SAAS4uE,EAAc/lG,GAMtB,IALA,IAGIzD,EAHArL,EAAI8O,EAAI/P,OACR8C,EAAI,EAAI7B,EACRlB,EAAI,EAGDkB,GAAK,GAMXqL,EAAmB,YAAV,OALTA,EAAwB,IAApByD,EAAIpG,WAAW5J,IACK,IAAtBgQ,EAAIpG,aAAa5J,KAAc,GACT,IAAtBgQ,EAAIpG,aAAa5J,KAAc,IACT,IAAtBgQ,EAAIpG,aAAa5J,KAAc,OAEc,YAAZuM,IAAM,IAAmB,QAAW,IAIvExJ,EAAmB,YAAV,MAAJA,KAA0C,YAAZA,IAAM,IAAmB,QAAW,KAFvEwJ,EAAmB,YAAV,OADTA,GAAKA,IAAM,OACoC,YAAZA,IAAM,IAAmB,QAAW,KAIvErL,GAAK,IACHlB,EAGH,OAAQkB,GACP,KAAK,EACJ6B,IAA8B,IAAxBiN,EAAIpG,WAAW5J,EAAI,KAAc,GACvC,MACD,KAAK,EACJ+C,IAA8B,IAAxBiN,EAAIpG,WAAW5J,EAAI,KAAc,EACvC,MACD,KAAK,EAEJ+C,EAAmB,YAAV,OADTA,GAAyB,IAApBiN,EAAIpG,WAAW5J,OAC2B,YAAZ+C,IAAM,IAAmB,QAAW,IAUzE,OAHAA,EAAmB,YAAV,OADTA,GAAKA,IAAM,OACoC,YAAZA,IAAM,IAAmB,QAAW,KACvEA,GAAKA,IAAM,MAEE,EAGd,I,IAAMw2E,EAAO,WACZt0C,YAASlpC,OAAQ,kBAAmBopC,IAErCA,EAAMo0C,KAAOA,G,6FAlNP87B,E,mIAqBGlwE,E,sHAkCAqwE,E,sIAiBAG,E,+HA2DAC,E,gIAgCAG,E,8HA4CHx8B,E,ifCxNN28B,YAAW,gCAAgC,GAO3C,IAAMC,EAAoB,WACzB,MAAO,CACNr3D,SAAU,OACV2uC,OAAQ,OACRz/E,QAAS,CACR4zD,IAAK1+D,SAASw2F,IACd0c,SAAUlzG,SAASkzG,YAYtB,SAASjC,EAAK14F,EAAQ3b,GACrB2b,EAAS5E,YAAMs/F,IAAqB,CACnCnoG,QAASyN,IAUNy9E,YAAW,iCACdkc,IAAKr5C,YAENm6C,YAAW,gCAAgC,GAKvCG,EAAsC56F,GACrCy9E,YAAW,UAAUjuF,MAExBjN,QAAQC,KAAK,+FAGdm3G,IAAKl5C,MAAMzgD,EAAQ3b,GAEnBkmC,eAIF,IAAIswE,EAAsC,GAS1C,SAASD,EAAsC56F,GAC9C,IAAM86F,EAA0B7zG,KAAKC,MAAMD,KAAK47C,UAAU7iC,IAI1D,cAHO86F,EAAwBvoG,QAAQrM,UAChC40G,EAAwBvoG,QAAQquD,UAEnC50B,YAAY6uE,EAAqCC,KAGpDD,EAAsCC,GAC/B,GAWT,SAASnxE,EAAS1mC,GACjBy1G,EAAKz1G,EAAEgnC,QAGR,I,IAAM6zC,EAAO,WACZt0C,YAASlpC,OAAQ,iBAAkBqpC,IAEpC+uE,EAAK56B,KAAOA,G,6FAtFN48B,E,qIAkBGhC,E,wHAgCLmC,E,uJASKD,E,yJAoBAjxE,E,4HAIHm0C,E,okCC3FAi9B,S,WACL,kBAAallB,EAAQhf,GAAM,+BAC1B7xE,KAAKmD,QAAUvH,OAAOwmC,OAAO,GAAI,GAAIyvC,GAAQkkC,SAASC,kBAAkBnlB,IACxE,IAAMolB,EAA2D,SAAjDplB,EAAOtiF,aAAa,yBAcpC,GAbKvO,KAAKmD,QAAQ+yG,WAEjB34G,QAAQyI,MAAM,qNAEVhG,KAAKmD,QAAQgzG,YAEjB54G,QAAQyI,MAAM,sNAEVhG,KAAKmD,QAAQmoC,OAEjB/tC,QAAQyI,MAAM,iNAGXiwG,EAAS,CACZ,IAAMp5D,EAAQ,IAAIu5D,yCAAMvlB,EAAQ7wF,KAAKmD,SAGrC,OAFA05C,EAAMw5D,cAECx5D,EAEP,IAAMsuC,EAAS,IAAImrB,0CAAOzlB,EAAQ7wF,KAAKmD,SAGvC,OAFAgoF,EAAOrS,OAEAqS,E,+KAIT,SAAiBjqF,GAChB,OAAOk1G,yCAAMG,WAAWr1G,K,+BAUzB,SAA0B2vF,GACzB,OAAMA,aAAkBl8E,YAGjB/Y,OAAO4J,KAAKqrF,EAAOkgB,SAAS1yC,QAAO,SAACl7D,EAASgE,GAGnD,GAAY,eAARA,EACH,OAAOhE,EAIR,IAAMqzG,EAAWrvG,EAAI6C,QAAQ,wBAAwB,SAACvD,EAAG2xD,EAAIC,GAAR,OAAeD,EAAGtlD,cAAgBulD,KACjFt6D,EAAQ8yF,EAAOkgB,QAAQ5pG,GAG7B,IACChE,EAAQqzG,GAAYv0G,KAAKC,MAAMnE,EAAMiM,QAAQ,MAAO,MACnD,MAAOhE,GACR7C,EAAQqzG,GAAYz4G,EAGrB,OAAOoF,IACL,IArBK,K,kBA+BT,SAAa0tF,EAAQhf,GAOpB,OANKgf,IACJA,EAASpuF,SAAS09C,MAEb0wC,aAAkBl8E,cACvBk8E,EAASpuF,SAASuuF,cAAcH,IAE7BA,aAAkBl8E,aAAek8E,EAAOj9D,QAAQ,iCAC5C,IAAImiF,SAASllB,EAAQhf,GAEtBxjE,MAAMgM,KAAKw2E,EAAOziF,iBAAiB,oCAAoC,SAAAyiF,GAAM,OAAI,IAAIklB,SAASllB,EAAQhf,U,qBAIhGkkC,S,2BAAA,+B,qIAxFTA,S,oiFCAAU,SAAW,GAEXC,aAAe,SAAU7kC,GAK9B,IAJIA,EAAK8kC,SAAa9kC,EAAK8kC,mBAAmBhiG,cAC7Ck9D,EAAK8kC,QAAUl0G,SAASuuF,cAAcnf,EAAK8kC,UAGxC9kC,EAAKirB,WAAajrB,EAAKirB,QAAQxxD,QAAUumC,EAAKirB,QAAQxxD,MAAM3hC,QAC/D,MAAM,IAAIxI,MACT,2EAYF,QAP0B,IAAf0wE,EAAK+kC,QACf/kC,EAAK+kC,OAAQ,QAEY,IAAf/kC,EAAKglC,QACfhlC,EAAKglC,OAAQ,GAGVhlC,EAAKgrB,SAAWhrB,EAAKirB,SAAWjrB,EAAKirB,QAAQga,OAChD,MAAM,IAAI31G,MACT,mEAIF,OAAO0wE,GAGFklC,sBAAwB,SAAUJ,GACvC,IAAI9kC,EAAO,GAYX,OAVI8kC,aAAmBhiG,cACtBtG,MAAMxS,UAAU4J,QAAQ1J,KAAK46G,EAAQlc,YAAY,SAAU/N,GAC1D,GAA4C,IAAxCA,EAAKhvF,KAAKN,QAAQ,kBAAyB,CAE9C,IAAM+J,EAAMulF,EAAKhvF,KAAKsM,QAAQ,kBAAmB,IACjD6nE,EAAOrV,yCAAM2d,eAAehzE,EAAKulF,EAAK3uF,MAAO8zE,OAG/CA,EAAK8kC,QAAUA,GAET9kC,GAGFmlC,oBAAsB,SAAU91G,EAAI+7D,GACzCA,EAAG2zC,kBACH,IAAMlU,EAAU+Z,SAASv1G,GACrBw7F,KACqB,IAApBA,EAAQua,QACXva,EAAQkN,QAERlN,EAAQ/6F,SAKLu1G,UAAY,SAAUzyE,GAC3B,OAAOqC,QAAQrC,EAAQ0yE,eAGlBC,UAAY,SAAU1yE,GAC3B,IACM2yE,EAA2B,GAAG/xG,MAClCvJ,KACAiE,KAAKs3G,QAAQlpG,iBACZ,6EAGD0nB,QAAO,SAAA2O,GACP,IAAM8yE,EAAiBL,UAAUzyE,GAI3B+yE,EACL/yE,EAAQgzE,QAAU,GAAGnyG,MAAMvJ,KAAK0oC,EAAQgzE,QAAQ9gG,MAAK,SAAAlW,GAAC,OAAIy2G,UAAUz2G,MAE/Di3G,EACY,UAAjBjzE,EAAQzgC,OAAwC,IAApBygC,EAAQkzE,QACrC,OACElzE,EAAQi+B,WACRg1C,IACAH,GAAkBC,MAItB,GAAIH,EAAyB73G,QAxBV,IAwBoBklC,EAAMytD,QAAwB,CACpE,IAAMylB,EACLP,EAAyBA,EAAyB73G,OAAS,GAExDklC,EAAMV,SAAW4zE,GACpBP,EAAyB,GAAGlG,QAC5BzsE,EAAM04D,kBACI14D,EAAMmzE,UAAYnzE,EAAMV,SAAWqzE,EAAyB,KAEtEO,EAAYzG,QACZzsE,EAAM04D,oBAQHxC,Q,WAwBL,iBAAY15F,EAAI2wE,GACf,GADqB,8BACjB4kC,SAASv1G,GACZ,MAAM,IAAIC,MAAJ,6BACiBD,EADjB,qGAKPg8D,2DAASQ,SAAS,UAClB19D,KAAKi3G,SAAU,EACfj3G,KAAKkB,GAAKA,EAEV,IACClB,KAAK6xE,KAAO6kC,aAAa7kC,GACxB,MAAO5zE,GAIR,MAHA+B,KAAK8kC,UAAU,MAAO,UAAW,CAChC9+B,MAAO/H,IAEFA,EAGP,IAAK+B,KAAK6xE,KAAM,CACf,IAAMimC,EAAa,IAAI32G,MACtB,yDAKD,MAHAnB,KAAK8kC,UAAU,MAAO,UAAW,CAChC9+B,MAAO8xG,IAEFA,EAEH93G,KAAK6xE,KAAK8kC,SACb32G,KAAK6xE,KAAK8kC,QAAQ/xE,iBACjB,QACAoyE,oBAAoB5vG,KAAKpH,KAAK6xE,KAAK8kC,QAASz1G,IAC5C,GAEDlB,KAAKuN,QAAU9K,SAAS09C,MAEpB19C,SAASuuF,cAAchxF,KAAK6xE,KAAKkmC,YACpC/3G,KAAKuN,QAAU9K,SAASuuF,cAAchxF,KAAK6xE,KAAKkmC,YAEhD/3G,KAAKuN,QAAU9K,SAAS09C,KAI1BngD,KAAKg4G,UAAY,CAChBC,IAAK,IAAIza,qDACT0a,KAAM,IAAI1a,qDACVjwF,QAAS,IAAIiwF,sDAIdiZ,SAASv1G,GAAMlB,K,+CAGhB,WA+BC,IA7BIA,KAAK6xE,KAAK+kC,OAAS52G,KAAK6xE,KAAKsmC,cAChCn4G,KAAKo4G,iBAAmB31G,SAAS69C,gBAAgBqqB,MAAMtyD,SACvD5V,SAAS69C,gBAAgBqqB,MAAMtyD,SAAW,UAKvC/c,OAAOkkE,QAAQM,WAAa9/D,KAAK6xE,KAAKsmC,aAEzC78G,OAAOkkE,QAAQM,UAAf,uCACgB9/D,KAAKkB,IAAO,cAC3B5F,OAAOqjE,SAASkyC,MAGjB7wG,KAAKq4G,gBAAkB,WAErB/8G,OAAOkkE,QAAQE,OACfpkE,OAAOkkE,QAAQE,MAAf,oBAAkC1/D,KAAKkB,MAEvClB,KAAK4pG,SAELxiG,KAAKpH,MACP1E,OAAOspC,iBAAiB,WAAY5kC,KAAKq4G,kBAGtCr4G,KAAK6xE,KAAK8kC,SACb32G,KAAK6xE,KAAK8kC,QAAQluG,aAAa,eAAgB,QAG3CzI,KAAKwN,QAYTxN,KAAKs4G,WAZa,CAClB,IAAM5b,EAAU18F,KAChBA,KAAKu4G,aAAY,SAAU5b,GAE1B,GADAD,EAAQ7qB,KAAK8qB,KAAOA,GACfD,EAAQ7qB,KAAK8qB,KACjB,MAAM,IAAIx7F,MACT,kGAGFu7F,EAAQ3nF,e,yBAOX,SAAY1V,IACNW,KAAK6xE,KAAK8qB,MAAQ38F,KAAK6xE,KAAKjvE,IAC5B,mBAAmB4H,KAAKxK,KAAK6xE,KAAKjvE,KACrC45D,yCAAMud,mBAAmB/5E,KAAK6xE,KAAKjvE,KAAK,SAAU+5F,GACjDt9F,EAASs9F,MAGVngC,yCAAMod,uBACLn3E,SAASuuF,cAAchxF,KAAK6xE,KAAKjvE,MACjC,SAAU+5F,GACTt9F,EAASs9F,MAKZt9F,EAASW,KAAK6xE,KAAK8qB,Q,oBAIrB,WACC,IAAM6b,EAAY/1G,SAASC,cAAc,OAKzC,GAJA81G,EAAUrpG,UAAY,YACtBqpG,EAAU1nB,UAAUr/D,IAAI,cAAgBzxB,KAAKkB,GAAG8I,QAAQ,IAAK,MAGzDhK,KAAK6xE,KAAK+qB,MACb,IAAI,OACH,EAAA4b,EAAU1nB,WAAUr/D,IAApB,2BAA2BzxB,KAAK6xE,KAAK+qB,MAAMhzF,MAAM,OAChD,MAAO5D,GAERzI,QAAQC,KAAR,qCAA2CwC,KAAK6xE,KAAK+qB,QAcvD,GAVI58F,KAAK6xE,KAAKsmC,YACbK,EAAU1nB,UAAUr/D,IAAI,0BAGzB+mF,EAAU/vG,aAAa,OAAQ,UAC3BzI,KAAK6xE,KAAK4mC,SACbD,EAAU7tC,MAAM/4D,OAAS5R,KAAK6xE,KAAK4mC,QAEpCz4G,KAAKs3G,QAAUkB,EAEXx4G,KAAK6xE,KAAKirB,QAAS,CACtB,IAAMA,EAAUr6F,SAASC,cAAc,UACjCg2G,EAAY14G,KAAK6xE,KAAKirB,QAAQxxD,MAClCx4B,cAEA9I,QAAQ,cAAe,KAEvBA,QAAQ,UAAW,KASrB,GARA8yF,EAAQhM,UAAUr/D,IAAI,sBACtBqrE,EAAQr0F,aAAa,KAAMiwG,GAC3BF,EAAU/vG,aAAa,kBAAmBiwG,GAEtC14G,KAAK6xE,KAAKirB,QAAQga,QACrBha,EAAQhM,UAAUr/D,IAAI,+BAGlBzxB,KAAK6xE,KAAK8mC,eAAgB,CAC9B,IAAM1H,EAASxuG,SAASC,cAAc,UACtCuuG,EAAO9hG,UAAY,mBACnB8hG,EAAOxoG,aAAa,aAAc,SAClCwoG,EAAOxoG,aAAa,QAAS,SAExBzI,KAAK6xE,KAAK+mC,SACd3H,EAAOxoG,aAAa,WAAY,KAEjCq0F,EAAQh6F,YAAYmuG,GAGrB,IAAM3lE,EAAQ7oC,SAASC,cAAc,QACrC4oC,EAAM7iC,aAAa,OAAQ,WAC3B6iC,EAAMn8B,UAAY,mBAEbnP,KAAK6xE,KAAKirB,QAAQ+b,oBACtBvtE,EAAMuuC,UAAY75E,KAAK6xE,KAAKirB,QAAQxxD,OAGrCwxD,EAAQh6F,YAAYwoC,GACpBktE,EAAU11G,YAAYg6F,GAGvB,GAAI98F,KAAK6xE,KAAKinC,QAAS,CACtB,IAAM7H,EAASxuG,SAASC,cAAc,KACtCuuG,EAAO9hG,UAAY,mBACnB8hG,EAAOxoG,aAAa,OAAQ,UAC5BwoG,EAAOxoG,aAAa,OAAQ,SAC5BwoG,EAAOxoG,aAAa,aAAc,SAClCwoG,EAAOxoG,aAAa,QAAS,SACxBzI,KAAK6xE,KAAK+mC,SACd3H,EAAOxoG,aAAa,WAAY,KAGjC+vG,EAAU11G,YAAYmuG,GACtBuH,EAAU1nB,UAAUr/D,IAAI,sBAGzB,IAAMjkB,EAAU/K,SAASC,cAAc,WACvC8K,EAAQ2B,UAAY,qBACpBqpG,EAAU11G,YAAY0K,GAEtBxN,KAAKwN,QAAUA,EAEXxN,KAAK6xE,KAAKgrB,SACb2b,EAAU1nB,UAAUr/D,IAAI,sBAGzBzxB,KAAKs4G,S,wBAGN,WAEC71G,SAASmiC,iBAAiB,UAAWwyE,UAAUhwG,KAAKpH,S,kBAQrD,WACC,GAAIA,KAAK6xE,KAAK+kC,MAAO,CACpB52G,KAAKs3G,QAAQxmB,UAAUr/D,IAAI,oBAC3B,IAAMsnF,EAASt2G,SAASC,cAAc,OACtCq2G,EAAO5pG,UAAY,mBACnBnP,KAAK+4G,OAASA,EAEV/4G,KAAK6xE,KAAK4mC,SACbM,EAAOpuC,MAAM/4D,OAAS5R,KAAK6xE,KAAK4mC,OAAS,GAG1Ch2G,SAAS09C,KAAKr9C,YAAYi2G,GAG3B/4G,KAAKg4G,UAAUC,IAAI9gB,KAAK10F,SAAS09C,MACjCngD,KAAKg4G,UAAUE,KAAK/gB,KAAKn3F,KAAKs3G,SAC9Bt3G,KAAKg4G,UAAUzqG,QAAQ4pF,KAAKn3F,KAAKuN,SAEjCvN,KAAKg5G,aAAeh5G,KAAK4pG,MAAMxiG,KAAKpH,MAG/BA,KAAK6xE,KAAKonC,SACdj5G,KAAKk5G,sBAAwBl5G,KAAKm5G,eAAe/xG,KAAKpH,MACtDA,KAAKg4G,UAAUC,IAAIhtB,GAClB,mBACA,OACAjrF,KAAKk5G,uBAGNl5G,KAAKo5G,0BAA4Bp5G,KAAKq5G,mBAAmBjyG,KAAKpH,MAC9DA,KAAKg4G,UAAUC,IAAIhtB,GAAG,QAASjrF,KAAKo5G,4BAGjCp5G,KAAK6xE,KAAKglC,QACb72G,KAAKs5G,uBAAyBt5G,KAAKu5G,gBAAgBnyG,KAAKpH,MACxDA,KAAKg4G,UAAUzqG,QAAQ09E,GAAG,qBAAsBjrF,KAAKs5G,wBAErDt5G,KAAK8kC,UAAU,eAGZ9kC,KAAK6xE,KAAKirB,SAAW98F,KAAK6xE,KAAKinC,SAAW94G,KAAK6xE,KAAK2nC,eACvDx5G,KAAKg4G,UAAUE,KAAKjtB,GAAG,QAAS,oBAAqBjrF,KAAKg5G,cAC1Dh5G,KAAKg4G,UAAUE,KAAKjtB,GACnB,WACA,oBACAjrF,KAAKg5G,eAIPh5G,KAAKy5G,4BAA8Bz5G,KAAK05G,qBAAqBtyG,KAAKpH,MAClEA,KAAKg4G,UAAUC,IAAIhtB,GAAG,QAAS,OAAQjrF,KAAKy5G,6BAC5Cz5G,KAAKg4G,UAAUC,IAAIhtB,GAAG,WAAY,OAAQjrF,KAAKy5G,6BAE/Cz5G,KAAKuN,QAAQzK,YAAY9C,KAAKs3G,SAGzBt3G,KAAK6xE,KAAK+mC,UACd54G,KAAKs3G,QAAQ7uG,aAAa,WAAY,KACtCzI,KAAKs3G,QAAQ3sC,MAAMgvC,QAAU,GAM9Br+G,OAAOs+G,sBACN,WACM55G,KAAKwN,QAAQqsE,YACa,iBAAnB75E,KAAK6xE,KAAK8qB,KACpB38F,KAAKwN,QAAQqsE,UAAY75E,KAAK6xE,KAAK8qB,KAEnC38F,KAAKwN,QAAQ1K,YAAY9C,KAAK6xE,KAAK8qB,OAIrC38F,KAAKmpC,MAAQnpC,KAAKygD,WAClBzgD,KAAKopC,OAASppC,KAAKogD,YAGdpgD,KAAK6xE,KAAKonC,QACdj5G,KAAK65G,UAEN75G,KAAKi3G,SAAU,EACfj3G,KAAKs3G,QAAQnG,QAQbnxG,KAAK8kC,UAAU,QAAS,WAAY,CACnCg1E,SAAU95G,OAIXA,KAAK8kC,UAAU,QAAS,YAAa,CACpCuZ,SAAU,UACV2uC,OAAQ,OACR+sB,WAAY/5G,KAAKkB,KAGlBlB,KAAKg6G,cACJ5yG,KAAKpH,S,mBAIT,WAmDC,OAlDAA,KAAKg4G,UAAUC,IAAIj6D,UACnBh+C,KAAKg4G,UAAUE,KAAKl6D,UACpBh+C,KAAKg4G,UAAUzqG,QAAQywC,WAGnBh+C,KAAK6xE,KAAK+kC,OAAS52G,KAAK6xE,KAAKsmC,cAChC11G,SAAS69C,gBAAgBqqB,MAAMtyD,SAAWrY,KAAKo4G,kBAI5Cp4G,KAAK6xE,KAAKsmC,YACb78G,OAAOsiE,oBAAoB,WAAY59D,KAAKq4G,iBAK5C/8G,OAAOkkE,QAAQM,WACfxkE,OAAOkkE,QAAQE,OACkC,eAAjDpkE,OAAOkkE,QAAQE,MAAf,oBAAkC1/D,KAAKkB,MAEvC5F,OAAOkkE,QAAQy6C,OAGhB/8C,2DAASS,gBAAgB,UAEzB39D,KAAK8kC,UAAU,WACf9kC,KAAK8kC,UAAU,QAAS,YAAa,CACpCuZ,SAAU,UACV2uC,OAAQ,QACR+sB,WAAY/5G,KAAKkB,KAGlBlB,KAAKuN,QAAQ/D,YAAYxJ,KAAKs3G,SAC1Bt3G,KAAK6xE,KAAK+kC,OACb52G,KAAK+4G,OAAOxvG,WAAWC,YAAYxJ,KAAK+4G,QAIrC/4G,KAAK6xE,KAAK8kC,UACb32G,KAAK6xE,KAAK8kC,QAAQxF,QAClBnxG,KAAK6xE,KAAK8kC,QAAQluG,aAAa,eAAgB,UAEhDhG,SAASm7D,oBAAoB,UAAWw5C,WAExCp3G,KAAKi3G,SAAU,EAEXj3G,KAAK6xE,KAAKglC,OACb72G,KAAK8kC,UAAU,eAGT,I,kCAGR,SAAqBm4B,GAElBj9D,KAAKs3G,QAAQ3G,SAAS1zC,EAAGj5B,SACzBhkC,KAAK6xE,KAAK+kC,QACX52G,KAAK6xE,KAAK8kC,SACT32G,KAAK6xE,KAAK8kC,QAAQhG,SAAS1zC,EAAGj5B,SAE/BhkC,KAAK4pG,U,gCAIP,SAAmB3sC,GACbj9D,KAAK6xE,KAAK8mC,gBAAiC,KAAf17C,EAAGk1B,SACnCnyF,KAAK4pG,U,6BAIP,SAAgB3sC,GACVA,EAAGh4B,QAAUg4B,EAAGh4B,OAAO00D,KAAO35F,MAClCA,KAAK4pG,U,4BAIP,SAAe3sC,GACTj9D,KAAKs3G,QAAQ3G,SAAS1zC,EAAGj5B,SAC7BhkC,KAAKk6G,oB,uBAIP,SAAUl1E,EAAWD,EAAWE,GAC/BF,EAAYA,GAAa,WAEzB,IACMf,EAD6B,cAAdgB,GAA2C,eAAdA,EACpBhlC,KAAKuN,QAAUvN,KAAKs3G,SAAW70G,SAAS09C,KAEtElb,EAASA,GAAU,GAED,cAAdF,IACHE,EAAO00D,GAAK35F,MAGbgkC,EAAOkB,cACN,IAAIC,YAAYJ,EAAY,IAAMC,EAAW,CAC5CC,OAAQA,EACRG,SAAS,O,qBAKZ,SAAQ+0E,EAAWn4D,GAElB,IAAKm4D,IAAcn4D,EAGlB,OAFAhiD,KAAKo6G,OAAO,QAASl9C,2DAAStc,UAAUzX,YACxCnpC,KAAKo6G,OAAO,SAAUl9C,2DAAStc,UAAUxX,SAKtC+wE,GAAcn4D,EAKlBhiD,KAAKo6G,OAAOD,EAAWn4D,GAJtBhiD,KAAKo6G,OAAOD,EAAWj9C,2DAAStc,UAAT,a,oBAOzB,SAAOu5D,EAAWn4D,GACjB,GAAkB,UAAdm4D,GAAuC,WAAdA,EAC5B,MAAM,IAAIh5G,MAAJ,yDAC6Cg5G,EAD7C,qCAKP,GAAI5gG,MAAMyoC,GACT,MAAM,IAAI7gD,MAAJ,mDACuC6gD,EADvC,4BAKP,IAAMq4D,EAAqB,UAAdF,EAAwB,OAAS,MAQ9C,GAJAn6G,KAAKmpC,MAAQnpC,KAAKygD,WAClBzgD,KAAKopC,OAASppC,KAAKogD,YAGf4B,GAAQhiD,KAAKm6G,IAIhB,GAHAn6G,KAAKs3G,QAAQxmB,UAAUr/D,IAAI,mBAAqB0oF,GAChDn6G,KAAKs3G,QAAQ3sC,MAAM0vC,GAAQ,IAC3Br6G,KAAKs3G,QAAQ3sC,MAAM,SAAWnO,yCAAMmd,WAAW0gC,IAAS,EACtC,WAAdF,EAAwB,CAI3B,IAAMG,EACLt6G,KAAKs3G,QAAQH,aAAen3G,KAAKs3G,QAAQ/2D,aAC1CvgD,KAAKwN,QAAQm9D,MAAMvhC,OAClBppC,KAAKs3G,QAAQH,cACZn3G,KAAK6xE,KAAKirB,QACR98F,KAAKs3G,QAAQtmB,cAAc,UAAUmmB,aACrC,GACHmD,EACA,UAGgB,WAAdH,IAEHn6G,KAAKwN,QAAQm9D,MAAMvhC,OAAS,MAE7BppC,KAAKs3G,QAAQxmB,UAAU1f,OAAO,mBAAqB+oC,GACnDn6G,KAAKs3G,QAAQ3sC,MAAM,SAAWnO,yCAAMmd,WAAW0gC,KAC5Cr6G,KAAKs3G,QAAQ,SAAW96C,yCAAMmd,WAAWwgC,IAAc,EAAK,KAM/Dn6G,KAAKs3G,QAAQ3sC,MAAM0vC,GAAQ,Q,6BAI7B,WACCr6G,KAAK65G,Y,mBAGN,SAAMM,GACL,OAAOn6G,KAAKs3G,QAAQxmB,UAAU6f,SAAS,mBAAqBwJ,K,qBAG7D,YACsB,IAAjBn6G,KAAKi3G,SACRj3G,KAAK4pG,QAEF5pG,KAAK6xE,KAAK8kC,SACb32G,KAAK6xE,KAAK8kC,QAAQ/4C,oBAAoB,QAASo5C,4BAEzCP,SAASz2G,KAAKkB,M,uBAGtB,WACC,IAAMo5G,EAAet6G,KAAKs3G,QAAQH,aAAen3G,KAAKs3G,QAAQ/2D,aAC9D,OACCvgD,KAAKwN,QAAQszC,cACZ9gD,KAAK6xE,KAAKirB,QACR98F,KAAKs3G,QAAQtmB,cAAc,UAAUmmB,aACrC,GACHmD,I,sBAIF,WACC,IAAMC,EAAcv6G,KAAKs3G,QAAQkD,YAAcx6G,KAAKs3G,QAAQ52D,YAC5D,OAAO1gD,KAAKwN,QAAQuzC,YAAcw5D,I,6IAGnC,SAAY5gB,GACNA,IACJA,EAAKl3F,SAAS09C,MAETw5C,aAAchlF,cACnBglF,EAAKl3F,SAASuuF,cAAc2I,IAI7B,IAFA,IAAM8gB,EAAW9gB,EAAGvrF,iBAAiB,sBAC/BssG,EAAgB,GACbj8G,EAAI,EAAGA,EAAIg8G,EAASj7G,OAAQf,IAE/Bg4G,SAASgE,EAASh8G,GAAG8P,aAAa,uBACtCmsG,EAAcr9G,KACb,IAAIu9F,QACH6f,EAASh8G,GAAG8P,aAAa,qBACzBwoG,sBAAsB0D,EAASh8G,MAMnC,OAAOi8G,I,qBAGR,WACoB9+G,OAAO4J,KAAKixG,UACpBhxG,SAAQ,SAAUvE,GAC5Bu1G,SAASv1G,GAAI88C,e,yBAIf,WACC,OAAOy4D,a,oBAIM7b,Q,2BAAA,+B,qIAhsBT6b,S,uHAEAC,a,2HA4BAK,sB,oIAgBAC,oB,kIAYAE,U,wHAIAE,U,wHA2CAxc,Q,6mCC5GAwb,M,WAOL,eAAauE,GAAoB,IAAX9oC,EAAW,uDAAJ,GAAI,4BAChC7xE,KAAK26G,QAAUA,EACf36G,KAAKk2G,UAAYrkC,EAAKqkC,UACtBl2G,KAAK46G,sBAAwB9zE,QAAQ+qC,EAAK+oC,uB,oDAS3C,WAAe,WAKd,IAJI56G,KAAK26G,SAAa36G,KAAK26G,mBAAmBhmG,cAC7C3U,KAAK26G,QAAUl4G,SAASuuF,cAAchxF,KAAK26G,WAGvC36G,KAAK26G,QACT,MAAM,IAAIx5G,MAAM,iCAGjB,OAAOi1G,MAAMG,WAAWv2G,KAAKk2G,UAAWl2G,KAAK46G,uBAC3Cx8G,MAAK,SAACy+C,GACN,EAAK89D,QAAQ1vC,YAAcpuB,EAE3B,IAAMg+D,EAAazE,MAAM0E,cAAcj+D,GACvC,EAAK89D,QAAQlyG,aAAa,aAAcoyG,Q,sJAU3C,SAAsBh+D,GACrB,OAAc,IAAVA,EACI,0DAEP,oBAAoBA,EAApB,oD,wBAIF,SAAmB37C,EAAI65G,GACtB,IAAM55C,EAAM,kDAA2CjgE,IAAQ65G,EAAa,aAAe,IAE3F,OAAO/e,MAAM76B,GACX/iE,MAAK,SAAAmZ,GAAG,OAAIA,EAAI4kF,UAChB/9F,MAAK,SAAA+9F,GAAI,OAAIA,EAAK6e,gBAClB/d,OAAM,SAAAj3F,GACN,MAAM,IAAI7E,MAAJ,6CAAgD6E,EAAMu1E,iB,kBAKjD66B,M,2BAAA,+B,qIA/DTA,M,yvCCIA6E,wBAA0B,CAAC,UAAW,KAAM,KAE5CC,O,WAEL,gBAAaC,GAAU,wCACjBA,EAE0B,iBAAbA,IACjBA,EAAW14G,SAASuuF,cAAcmqB,IAFlCA,EAAW14G,SAASuuF,cAAc,iCAKnChxF,KAAKm7G,SAAWA,EAEhB99B,mDAAO,SAAAvT,GACN,IAAMsxC,EAAiBF,OAAOE,eAAetxC,GAE7C,OAAIsxC,IAAmB,EAAKC,SACpB,EAAKC,SAGRF,GAAkB,EAAKC,SACpB,EAAKr9D,eADb,KAKDh+C,KAAKm7G,SAAS7I,gBAAgB,wBAC9BtyG,KAAKm7G,SAAS1yG,aAAa,oBAAqB,I,+CAGjD,WAAS,WACRzI,KAAKq7G,SAAW,GAEhB,IAAME,EAAYv7G,KAAKm7G,SAAS/sG,iBAAiB,mBAEjDC,MAAMxS,UAAU4J,QAAQ1J,KAAKw/G,GAAW,SAAAxI,GACvC,IAAM/uE,EAASvhC,SAASooE,eAAekoC,EAASxkG,aAAa,kBAC7DwkG,EAAStqG,aAAa,OAAQ,UAC9BsqG,EAAStqG,aAAa,WAAY,KAClC,EAAK4yG,SAASh+G,KAAK,IAAIw7E,yDAAOk6B,EAAU,CAAE/uE,iB,qBAI5C,WACChkC,KAAKq7G,SAAS51G,SAAQ,SAAAqtG,GAAM,OAAIA,EAAO90D,aACvCh+C,KAAKq7G,SAAW,O,6JAGjB,WACC,OAAOJ,0B,4BAGR,SAAsBnxC,GACrB,OAAwD,IAAjDmxC,wBAAwB79G,QAAQ0sE,K,kBAGxC,SAAa+mB,GACPA,EAEwB,iBAAXA,IACjBA,EAASpuF,SAASuuF,cAAcH,IAFhCA,EAASpuF,SAAS09C,KAKnB,IAAMg7D,EAAWtqB,EAAOG,cAAc,iCAEtC,GAAImqB,EACH,OAAO,IAAID,OAAOC,O,mBAKND,O,2BAAA,+B,qIAtETD,wB,oIAEAC,O,4vDCKAM,EAAe,SAAC,GAAkB,IAAhBC,EAAgB,EAAhBA,UACtB,OAAOA,EAAUp9C,QAAO,SAACh6D,EAAG3G,EAAM6B,GAEhC,IAAM8zB,EAAkB,IAAN9zB,EAAU,GAAKA,IAAMk8G,EAAUj8G,OAAS,EAAI,QAAU,KAClEk8G,EAASh+G,EAAKyjE,IAClB,YAAC,WAAD,CAAUh6D,IAAG,iBAAYzJ,EAAKA,OAC5B,iBAAGmzG,KAAMnzG,EAAKyjE,IAAKhyD,UAAU,iCAC1BzR,EAAKA,MAEPA,EAAKihE,UAAL,cAAwBjhE,EAAKihE,WAGhC,YAAC,WAAD,CAAUx3D,IAAG,iBAAYzJ,EAAKA,OAC5B,wBAAOA,EAAKA,MACXA,EAAKihE,UAAL,cAAwBjhE,EAAKihE,WAGlC,OAAOt6D,EAAEF,OAAOkvB,EAAWqoF,KAC1B,KAGCC,EAAcC,sBAAW,WAAW3mG,GAAQ,IAAhBwK,EAAgB,EAAhBA,KAMhC,IALe,IAAIo8F,KAAKC,eAAe,KAAM,CAC3Ct8F,MAAO,OACPqH,IAAK,UACLhI,KAAM,YAE8Bk9F,cAAc,IAAI1kG,KAAKoI,IAA7D,GAAOD,EAAP,KAAgBqH,EAAhB,KAAuBhI,EAAvB,KACMm9F,EAAgB,GAAH,OAAMx8F,EAAMzhB,MAAZ,YAAqB8oB,EAAI9oB,MAAzB,YAAkC8gB,EAAK9gB,OAC1D,OACE,YAAC,WAAD,KACG,IACD,oBACEkX,IAAKA,EACL+hE,mBAAiB,SACjB7nE,UAAU,iDACV47C,SAAUtrC,EACVw8F,0BAAwB,GAEvBD,OAMHE,EAAU,SAAC,GAAuC,IAArCxwG,EAAqC,EAArCA,OAAQyf,EAA6B,EAA7BA,MAAO1L,EAAsB,EAAtBA,KAAM08F,EAAgB,EAAhBA,UAChCC,EAAYxrB,mBACZyrB,EAAWzrB,mBAcjB,GAZA3Q,qBAAU,W,OACJo8B,EAAShvG,SAAY+uG,EAAU/uG,U,EAEnC,yBAAC,6FACC,IACEgvG,EAAShvG,QAAU,IAAIivG,IAAMF,EAAU/uG,SACvC,MAAOpP,GACPV,QAAQyI,MAAM/H,GAJjB,0C,qLASEktB,IAAU1L,EAAM,OAAO,KAE5B,IAAMg8F,EAAYptG,MAAMsF,QAAQwX,GAASA,EAAQ,CAAC,CAAEztB,KAAMytB,IAE1D,OACE,mBAAKhc,UAAU,WACZzD,GAAU,GAAJ,OAAOA,EAAP,KACNywG,GAAa18F,GAAQ,YAACk8F,EAAD,CAAa1mG,IAAKmnG,EAAW38F,KAAMA,IACxD08F,GAAa,OACbhxF,GAAS,YAACqwF,EAAD,CAAcC,UAAWA,KACjCU,GAAa18F,GAAQ,YAACk8F,EAAD,CAAa1mG,IAAKmnG,EAAW38F,KAAMA,M,EA1B1Dy8F,E,oDA+BNA,EAAQtzE,UAAY,CAClBl9B,OAAQ8rC,IAAU9jC,OAClByX,MAAO69C,IACPvpD,KAAM+3B,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUM,OACvDqkE,UAAW3kE,IAAUM,MAGvBokE,EAAQrhD,aAAe,CACrB1vC,MAAO,WACPzf,OAAQ,GACR+T,MAAM,EACN08F,WAAW,GAGbD,EAAQjyC,YAAc,W,UAEPiyC,EAAA,O,6FA5FTV,E,oHAqBAG,E,mHAwBAO,E,g6ECtDAK,gBAAkB,SACpB3mE,SAEJ,SAAS4mE,oBAAoBC,GAE5Bl/G,QAAQC,KAAR,6BAAmCi/G,EAAnC,sJ,IAQKH,M,WAEL,eAAYzrB,GAAQ,4BAEdA,GAEJtzF,QAAQC,KAAK,gIAKVqzF,GAAYA,aAAkBl8E,aAEjCpX,QAAQC,KAAK,iLAMTqzF,EAEQA,aAAkBl8E,cAC9Bk8E,EAASpuF,SAASuuF,cAAcH,IAFhCA,EAASpuF,SAAS09C,KAK6B,WAA5C0wC,EAAOtiF,aAAa,oBACvBvO,KAAK25F,GAAK9I,EAEV7wF,KAAK25F,GAAK9I,EAAOG,cAAc,gCAG5BhxF,KAAK25F,KACRl3F,SAAS09C,KAAKvb,iBAAiB23E,gBAAiBv8G,MAEhDA,KAAKgC,SACLhC,KAAK25F,GAAGlxF,aAAa,iBAAkB,KAGpCzI,KAAK25F,KAAO/jD,WACfA,SAAW8mE,aAAY,WACtBj6G,SAAS09C,KAAKjb,cAAc,IAAIC,YAAYo3E,oBAC1C,M,oDAKL,SAAYt+G,GACPA,EAAE+F,OAASu4G,iBACdv8G,KAAKgC,W,oBASP,WACC,IAAM23F,EAAK35F,KAAK25F,GAKV5uC,EAAW4uC,EAAGprF,aAAa,YAC7BkR,EAAOsrC,EAAWrV,uEAAava,OAAO4vB,GAAY,KAKtD,GAJKtrC,GAAgC,KAAxBzf,KAAK25F,GAAG1uB,cACpBxrD,EAAO,IAAIpI,MAGPoI,EAAL,CAQA,IApBQ,EAoBJk9F,EAAWhjB,EAAGvrF,iBAAiB,0CApB3B,6BAqBRuuG,EAAWA,EAASn9G,OAASm9G,EAAW,CAAChjB,IArBjC,IAwBR,2BAAgC,KAArBijB,EAAqB,QAC/B58G,KAAK68G,eAAeD,EAASn9F,IAzBtB,8BA+BJk6E,EAAG1uB,aACN0uB,EAAGlxF,aAAa,QAASitC,uEAAa/9B,OAAO8H,EAAM,aACnDk6E,EAAG2Y,gBAAgB,gBAEnB3Y,EAAGlxF,aAAa,eAAe,M,qBAUjC,WACChG,SAAS09C,KAAKyd,oBAAoB2+C,gBAAiBv8G,MACnDA,KAAK25F,GAAK,O,4BAoCX,SAAeijB,EAASn9F,GAGvB,IAGIq9F,EAHEnlG,EAASilG,EAAQruG,aAAa,uBACnCvO,KAAK25F,GAAGprF,aAAa,sBAIP,kCAAXoJ,EACHmlG,EAAgBpnE,uEAAaC,4BAA4Bl2B,GACpC,cAAX9H,EACVmlG,EAAgBpnE,uEAAa/9B,OAAO8H,EAAM,QACrB,2BAAX9H,EACVmlG,EAAgBpnE,uEAAaO,QAAQx2B,EAAM,CAAEsjB,MAAO,EAAI2S,uEAAaJ,UAAUrlB,OAC1D,4BAAXtY,EACVmlG,EAAgBpnE,uEAAaO,QAAQx2B,EAAM,CAAEsjB,MAAO,GAAK2S,uEAAaJ,UAAUrlB,OAC3D,yBAAXtY,GAEVpa,QAAQC,KAAK,kJACbs/G,EAAgBpnE,uEAAaO,QAAQx2B,IAChB,uCAAX9H,GAEVpa,QAAQC,KAAK,qJACbs/G,EAAgBpnE,uEAAaO,QAAQx2B,EAAM,CAAEsjB,MAAO,EAAI2S,uEAAaJ,UAAUrlB,QAE/E6sF,EADqB,wBAAXnlG,EACM+9B,uEAAaS,iBAAiB12B,GACzB,OAAX9H,EACM+9B,uEAAa/9B,OAAO8H,EAAM9H,GAE1B+9B,uEAAaU,OAAO32B,GAKmB,IAA9Bm9F,EAAQzrB,WAAW3xF,QAC5Co9G,EAAQG,YACwB,IAAhCH,EAAQG,WAAWxkC,SAGnBqkC,EAAQG,WAAWC,UAAYF,EAE/BF,EAAQ/iC,UAAYijC,I,6IApEtB,SAAanjB,GASZ,GARKA,IACJA,EAAKl3F,SAAS09C,MAETw5C,aAAchlF,cACnBglF,EAAKl3F,SAASuuF,cAAc2I,IAIzB,aAAanvF,KAAKmvF,EAAGprF,aAAa,qBACrC,OAAO,IAAI+tG,MAAM3iB,GAIlB,IAAMsjB,EAAUtjB,EAAGvrF,iBAAiB,gCACpC,MAAO,GAAGxK,IAAI7H,KAAKkhH,GAAS,SAAUtjB,GACrC,OAAO,IAAI2iB,MAAM3iB,Q,oBA4DnB,WAEC,OADA6iB,oBAAoB,UACb9mE,uEAAava,OAAb,MAAAua,uEAAuB5/B,a,oBAO/B,WAEC,OADA0mG,oBAAoB,UACb9mE,uEAAa/9B,OAAb,MAAA+9B,uEAAuB5/B,a,+BAO/B,WAEC,OADA0mG,oBAAoB,qBACb9mE,uEAAaG,kBAAb,MAAAH,uEAAkC5/B,a,oBAO1C,WAEC,OADA0mG,oBAAoB,UACb9mE,uEAAaU,OAAb,MAAAV,uEAAuB5/B,a,0BAO/B,WAEC,OADA0mG,oBAAoB,gBACb9mE,uEAAaY,aAAb,MAAAZ,uEAA6B5/B,a,yBAOrC,WAEC,OADA0mG,oBAAoB,eACb9mE,uEAAaa,YAAb,MAAAb,uEAA4B5/B,a,qBAOpC,WAEC,OADA0mG,oBAAoB,WACb9mE,uEAAaI,QAAb,MAAAJ,uEAAwB5/B,a,yBAOhC,WAEC,OADA0mG,oBAAoB,eACb9mE,uEAAaK,YAAb,MAAAL,uEAA4B5/B,a,qBAOpC,WAEC,OADA0mG,oBAAoB,WACb9mE,uEAAaO,QAAb,MAAAP,uEAAwB5/B,a,yCAOhC,WAEC,OADA0mG,oBAAoB,+BACb9mE,uEAAaC,4BAAb,MAAAD,uEAA4C5/B,a,8BAOpD,WAEC,OADA0mG,oBAAoB,oBACb9mE,uEAAaS,iBAAb,MAAAT,uEAAiC5/B,e,kBAK3BwmG,M,2BAAA,+B,qIA3STC,gB,wHACF3mE,S,iHAEK4mE,oB,4HAUHF,M,6nBCNAY,EAAY,SAAC,GAAwB,IAAtB5/G,EAAsB,EAAtBA,SAAUguC,EAAY,EAAZA,MAC7B,OACE,YAAC,IAAD,CAAMn8B,UAAU,gBACbm8B,GAAS,kBAAIn8B,UAAU,uBAAuBm8B,GAC9ChuC,I,EAKQ4/G,EAAA,O,6FATTA,E,6gBCLAC,EAAY,oBAAO7hH,OAEnBulD,EAAoB,SAAC,GAA2B,IAAzBpc,EAAyB,EAAzBA,QAAS24E,EAAgB,EAAhBA,UACpC,IAAKD,EAAW,MAAO,CAAE9xG,EAAG,EAAGU,EAAG,GAElC,IACMi/D,GADSvmC,EAAUA,EAAQp3B,QAAU5K,SAAS09C,MAC5Bq6B,wBAExB,OAAO4iC,EACH,CAAE/xG,EAAG/P,OAAO2lD,QAASl1C,EAAGzQ,OAAO6lD,SAC/B,CAAE91C,EAAG2/D,EAAS3iC,KAAMt8B,EAAGi/D,EAAS7iC,MAGhCk1E,EAAoB,SAACC,EAAQC,EAAM94E,EAAS24E,EAAWrkC,GAC3D,IAAM/N,EAAW4lB,iBAAO/vC,EAAkB,CAAEu8D,eAExCI,EAAkB,KAEhBC,EAAW,WACf,IAAMC,EAAU78D,EAAkB,CAAEpc,UAAS24E,cAC7CE,EAAO,CAAEK,QAAS3yC,EAAS39D,QAASqwG,YACpC1yC,EAAS39D,QAAUqwG,EACnBF,EAAkB,MAGpBI,2BAAgB,WACd,IAAMC,EAAe,WACf9kC,EACsB,OAApBykC,IACFA,EAAkBtkC,WAAWukC,EAAU1kC,IAGzC0kC,KAMJ,OAFAniH,OAAOspC,iBAAiB,SAAUi5E,GAE3B,kBAAMviH,OAAOsiE,oBAAoB,SAAUigD,MACjDN,I,EA1BCF,E,iDA6BSA,EAAA,O,6FA1CTF,E,uFAEAt8D,E,+FAWAw8D,E,8oCCbA3Q,EAA0B,SAAAoR,GAE9B,IAAMC,EAAcniH,OAAOgrC,QAAQk3E,GAEhCz/C,QAAO,SAAC2/C,EAAD,kBAAa5+C,EAAb,KAA0Bp7D,EAA1B,KAA0BA,KAA1B,cAA4Cg6G,GAA5C,UAAwD5+C,EAAYp7D,MAAS,IAGjFi6G,EAAyBriH,OAAOgrC,QAAQk3E,GAC3ChoF,QAAO,+BAAMk3E,uBACbppG,KAAI,kCAGP,EAA0Bu8D,YAAe49C,GAAzC,WAAO3/C,EAAP,KAAc8/C,EAAd,KACM7P,EAAW8P,mBAAQ,kBAAMviH,OAAOivB,OAAOuzC,GAAOznD,MAAK,SAAAjQ,GAAC,OAAIA,OAAI,IAG5D0nB,EAAWxyB,OAAOgrC,QAAQk3E,GAAQz/C,QACtC,SAAC2/C,EAAD,GAAiF,eAApE5+C,EAAoE,YAA9Cg/C,EAA8C,EAAvD92E,QAAuBnkC,EAAgC,EAAhCA,QAASa,EAAuB,EAAvBA,KAAM4oG,EAAiB,EAAjBA,UAExDyR,EAAkC,mBAAZl7G,EAAyBA,EAAQi7D,GAASj7D,EAChEm7G,EAAkBlgD,EAAMgB,GACxBm/C,EAAsBF,EACxBA,EAAa/4E,SAASg5E,GAEpBA,EAEAF,OACkB9+G,IAApBg/G,EAEAA,EAEAF,EAEEI,EACJx6G,IAAS+5D,KAAc6uC,EACnB2R,EAAoBj5G,MAAM,EAAGsnG,GAC7B2R,EACN,cACKP,GADL,UAEG5+C,EAAYo/C,MAGjB,IAIF,EAA0B1+B,mBAAS,EAAD,KAAM1xD,GAAN,IAAgBigF,cAAlD,WAAO3uC,EAAP,KAAcutC,EAAd,KAcA,OAXAhtB,qBAAU,WACR,IAAMw+B,EAAgB7iH,OAAOgrC,QAAQ84B,GAClC5pC,QACC,gBAAEspC,EAAF,mBAAkB6+C,EAAuB34E,SAAS85B,IAA4B,aAAdA,KAEjEf,QAAO,SAACijB,EAAD,kBAAOn6E,EAAP,KAAYpJ,EAAZ,mBAA6BujF,GAA7B,UAAmCn6E,EAAMpJ,MAAU,IAE7DmgH,EAASO,EAAe,WACxBC,YAAe,iCAAkC,SAAUD,KAC1D,CAACR,EAAwBC,EAAUx+C,IAE/B,CAACA,EAAOutC,I,EA5DXP,E,+IAYsBvsC,Q,UAmDbusC,EAAA,O,6FA/DTA,E,2zBCgCAiS,EAAa,CACjB,CACEt8B,KAAM,MACNjvD,OAAQ,EACRjwB,QAAS,CAAEy/E,SAAS,EAAO/3D,OAAQ,SAAU83D,YAAY,IAE3D,CACEN,KAAM,OACNjvD,OAAQ,EACRjwB,QAAS,CAAEy/E,SAAS,EAAO/3D,OAAQ,SAAU83D,YAAY,IAE3D,CACEN,KAAM,OACNjvD,OAAQ,EACRjwB,QAAS,CAAEy/E,SAAS,EAAO/3D,OAAQ,SAAU83D,YAAY,KAIvDi8B,EAAsB,SAAC,GAgBvB,IAfEC,EAeF,EAfJh+G,KACAuuG,EAcI,EAdJA,cACAhwE,EAaI,EAbJA,OACAkS,EAYI,EAZJA,SACAqxC,EAWI,EAXJA,WACA93D,EAUI,EAVJA,OACA8hF,EASI,EATJA,MACA/pB,EAQI,EARJA,QACAC,EAOI,EAPJA,WACA6P,EAMI,EANJA,OACAjU,EAKI,EALJA,UACAuvB,EAII,EAJJA,YACAM,EAGI,EAHJA,oBACAC,EAEI,EAFJA,kBACAzB,EACI,EADJA,UAEoBxoG,EAAMy/E,qBAAWna,KAA7BE,WACFA,GAAexlE,GAAKA,EAAEwlE,YAAe,WAAWh3D,cAChDigF,EAAU,CAAC,UAAW,KAAKztD,SAASwkC,GAE1C,EAA8CgW,mBAAS,CACrDpgB,MAAO,UACP6b,QAAS,2CAFX,WAAOujC,EAAP,KAAwBC,EAAxB,KAIA,EAA4Cj/B,oBAAS,GAArD,WAAOk/B,EAAP,KAAuBC,GAAvB,KACMp+G,GAAOg+G,EAAQzP,GAEf8P,GAAoBf,mBACxB,kBACEt9G,GAAK+C,KAAI,gBAAGy+E,EAAH,EAAGA,KAAH,MAAqB,CAC5BtkF,MADO,EAASygD,KAEhB4hC,QAASiC,EACTr+E,KAAM,UACN28E,aAAcw+B,YAA2B98B,SAE7C,CAACxhF,KAIGu+G,GAAiBzS,EACpB/oG,KAAI,SAAAS,GAAC,MAAK,CACTtG,MAAOsG,EACP+7E,QAASi/B,YAAkBh7G,EAAG66G,QAE/BppF,QAAO,qBAAGsqD,WAEb,GAQI+9B,mBACF,kBACEmB,YACEz+G,GACA,CAAEgqB,SAAQ+3D,UAASD,aAAY+P,SAAQ7P,aAAY8pB,QAAOqS,iBAAgBlS,aAC1E6R,GACA,KAEJ,CAAC99G,GAAMgqB,EAAQ+3D,EAASD,EAAY+P,EAAQssB,EAAgBn8B,EAAY8pB,EAAOG,IAfzEyS,GADR,GACE1+G,KACAshF,GAFF,GAEEA,YACAq9B,GAHF,GAGEA,mBACAC,GAJF,GAIEA,UAEAC,IANF,GAKEC,UALF,GAMED,WACAE,GAPF,GAOEA,gCAaIttB,GAAiB8sB,GACpBx7G,KAAI,qBAAGw8E,WACPtqD,QAAO,SAAAusD,GAAI,OAAIF,GAAY78C,SAAS+8C,MACjCw9B,GAAsBvtB,IAA4C,IAA1BA,GAAe9yF,OAG7DygF,qBAAU,WACJ4/B,IAAqBZ,IAAkB,KAC1C,CAACY,KAKJ,IAqDYnvC,GACAovC,GAgBRC,GACAC,GAEAxvE,GAzEEyvE,GAAa3jG,KAAKG,IAAI,GAAIH,KAAK0C,MAAM1C,KAAK4jG,MAAMV,MAEhD7jE,GAAOrK,EAET2uE,GAEFt9B,EACE+P,EACE9P,EACE,EAEA,EAGFC,EAEF,EAGEs9B,GAAyB7uE,EAAW,EAAI,IACxC8uE,GACJ9uE,GAAYsxC,EAERtmE,KAAK4jG,MAAM,EAAID,IACfI,YAAiCZ,GAAWU,IAG5CG,GAAuB39B,IAAeC,EAAU,EAAIw9B,GAAgB,EAEpE1kE,GAAcyiE,mBAAQ,WAC1B,IAAMoC,EAAwBjkG,KAAKG,IAAI,GAAK2jG,IACtCI,EAAuBlvE,EACzBmvE,YAGE79B,EAAU,CAAC29B,GAAyB,CAAC,EAAGA,GACxCd,IACA,GAEA,SAACriE,EAAU/1C,GAAX,OAA4B,GAAX+1C,KAEnB,KAGJ,OAAIojE,IAAyBA,EAAqBl7E,SAASqW,IAClD,cAAI6kE,GAAJ,CAA0B7kE,KAAMn4B,MAAK,SAACnf,EAAGC,GAAJ,OAAUD,EAAIC,KAErDk8G,IACN,CAAC59B,EAAStxC,EAAUmuE,GAAW9jE,KAE5BC,GAAOtK,GAGDo/B,GAAqBh1B,GAAY5lB,QAAO,SAAApvB,GAAC,OAAIA,GAAKi1C,MAClDmkE,GAAWpvC,GAAmBA,GAAmBlxE,OAAS,GACzD8c,KAAKI,IAAIojG,GAAUL,KAE5BA,GAEE5jE,GACJ+mC,GAAWhnC,GAAOukE,GAGd,SAAAO,GAAS,OAAmB,IAAdA,EAAkB,EAAIA,EAAU7+E,QAAQu+E,KACtD9uE,EAEA,SAAAovE,GAAS,OAAKA,EAAY,EAAIA,EAAUC,YAAY,GAAKD,EAAUh2C,kBACnE,KAKAn6B,GAAOmiD,EAASoa,EAAY,KAElC,GAAKpa,EAeE,CACLliD,GAAOkvE,GACP,IAAMkB,GAA2BptB,YAAwBjjD,GAAMC,IAC/DuvE,GAAca,GAAyBhtB,YACvCosB,GAAiBY,GAAyB/sB,kBAnB/B,CACX,IAEMZ,GAAY,CAAE3rD,QAAS,GAAI9/B,EAAG,GAAIf,EAAG,GAAIhG,EAAG,GAAIkrG,GAAI,IAAK7hC,GAE/D,GAA2EkpB,YACzE0sB,GACAzsB,GANgB,IAQhB,EAPuB,GAWzB8sB,GARA,GAAQ3sB,WASR5iD,GATA,GAA0C6iD,cAiB5C,IAAMwtB,GAAoBnuB,EACtB0B,YACE2rB,GACAxvE,GACAC,GAEA,CAAElJ,QAAS,GAAK9/B,EAAG,GAAKf,EAAG,IAAMhG,EAAG,IAAMkrG,GAAI,KAAO7hC,GAErD,CAAExiC,QAAS,EAAG9/B,EAAG,EAAGf,EAAG,GAAIhG,EAAG,GAAIkrG,GAAI,IAAK7hC,IAE7C,GAGEhuB,GAAc42C,EAChBoC,YAA4BirB,GAAaj2C,EAAYk2C,GAAgBa,IACrE,KAGEC,GAAazuB,YAAmB,CACpC1P,aACA93D,SACAynE,kBACAnQ,iBAEI4+B,GAActuB,YAAoB,CACtC9P,aACA93D,SACA+3D,UACA8P,SACA7P,YAAaA,IAETm+B,GAAYluB,YAAkB,CAClCnQ,aACA93D,SACA+3D,UACAC,YAAaA,EACbkQ,YAEIF,GAAYouB,IAAOxiC,GACtByiC,GAAG,iBACHvpG,OAAO,oBACJwpG,GAAa/hF,EACfwzD,YAAmB,CACjBxzD,OAAQ,iDAAF,OAAmDA,GACzDyzD,eAEF,GAGEuuB,GAAuC,UAAlBhS,EAA4B,QAAU,gBAI3DiS,GACJ,YAAC,IAAM/xC,SAAP,eAC4B,UAAlB8/B,EAA4B,eAAiB,QADvD,aAC0E,IACxE,oBAAMzkC,MAAO,CAAEt5D,WAAY,MAA3B,aAFF,eAKIiwG,GAAyB,gBAAH,OACR,UAAlBlS,EAA4B,eAAiB,QADnB,SAGtBmS,GAA0B,qBAAH,OACT,UAAlBnS,EAA4B,kBAAoB,SADrB,aAiJvBoS,GACJ,mBAAKryG,UAAU,mBACb,YAAC,IAAD,CACEjO,GAAIkuG,EAEJ9jE,MAAOw1E,GACP11E,SAAU21E,GACV3hF,OAAQ+hF,GACRp3E,YAAU,EACVC,YAAU,EAEVX,OAAQ,CACNlB,IAAK,GACLE,KAAM,EACNkB,MAAOmpD,EAAUK,EAAU,GAAK,GAAM,EACtCvpD,OAAQkpD,EAAS,GAAK,IAExB+uB,WAAW,EACXrwE,YAAY,EACZG,iBAAe,EACfnI,OAAQ,CAAC,IAAK,IAAK,MAAM9D,SAASwkC,GAAc,IAAM,IAEtDjpE,KAAM0+G,GACN3tE,kBAAmB0gD,GAEnBjhD,WAAYqhD,EAAS,OAAS,SAC9B/kD,UAAU,OACVE,UACEgyE,GAGI19B,GAGF68B,EACE1sB,GACA,GAEN32C,KAAMA,GACNC,KAAMA,GACNtL,kBAAgB,EAChBa,kBAAgB,EAChBG,SAAUA,EACVoK,YAAapK,EAAWoK,GAAY5lB,QAAO,SAAApvB,GAAC,OAAIA,GAAKi1C,MAAQ,KAC7D1J,uBAAwBX,GAAY,CAACqK,IACrCE,YAAaA,GAGbrK,mBAAoBF,EAAW,SAAA5qC,GAAC,OAAKA,EAAIi1C,GAAOA,GAAOj1C,GAAK,KAC5Dq5G,YAAaA,GACbxvE,KAAMA,GACNC,KAAMA,GACN6B,YAAaqgD,GAAUsuB,GACvBllE,YAAaA,GACbC,iBAAkB,EAClBjC,qBAAsBA,IAEtBvL,cAAY,EACZkD,iBAAe,EACfvH,iBArFmB,SAAC,GAAmC,IAGvD4yE,EAHsBprE,EAAiC,EAAjCA,WAAYgwE,EAAqB,EAArBA,OAAQ/vE,EAAa,EAAbA,OACxCgwE,EAAa3iE,IAAc,UAGjC,GAAI0zC,EACFoqB,EAAgB6E,EAAWD,OACtB,CACL,IAAME,EAAoBhC,GAAgC/hH,IAAI6zC,GAE9DorE,EAAgB6E,EADIE,YAAcD,EAAmBF,IAIvD,IAAMxzC,EAAiB4zC,YAAsBnwE,EAAQ2uE,GAAsB3kE,IAE3E,OACE,mBAAKxsC,UAAU,mBACZuiC,EACD,uBACA,oBAAMviC,UAAU,0BAA0B++D,GAH5C,WAIOyU,EAAa,GAAK,QAJzB,OAIkC93D,GAJlC,OAI2C+3D,EAAU,YAAc,IACjE,uBACA,oBAAMzzE,UAAU,yBAAyB2tG,KAiEzC5kE,aAAc,CACZ6pE,gBAAiB,UACjBz4E,QAAS,gBACT04E,aAAc,EACdC,UAAW,mCAEbhmE,mBAAoB+iE,GAAkBa,GACtC3jE,iBAAkB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC1EC,kBAAmB,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WAC3ErN,4BAA6B,EAC7BozE,eAAa,KAEbnvB,GACA,mBAAK5jF,UAAU,gCACb,YAAC,IAAD,CACEjO,GAAG,8BACHg9E,KAAI,UAAK8gC,EAAiB,OAAS,OAA/B,uBACgB,UAAlB5P,EAA4B,kBAAoB,UAElDuI,QAASqH,EACT3+B,QAAS,kBAAM4+B,IAAmBD,QAO5C,OACE,YAAC,WAAD,KACE,YAAC,IAAD,CAAWvT,QAAQ,kBACjB,mBAAKt8F,UAAU,4CACb,mBAAKA,UAAU,iDACb,YAAC,IAAD,CACEm8B,MAAO+1E,GACPn/B,SAAUg9B,GACVlR,YA5PgB,SAAAmU,GAAgB,OAC1CnU,EAAY,CAAC,CAACoT,GAAoBe,MA6PxB//B,cAAeg9B,GACfj9B,YAAaA,GACbh/E,QAAS,CAAE0nB,SAAQ+3D,UAASD,aAAYE,cACxCy+B,uBAAwBA,GACxBC,wBAAyBA,MAG7B,YAAC,IAAD,CACErgH,GAAIkuG,EACJgT,YAtPU,SAAC,GAAD,IAAGt4C,EAAH,EAAGA,WAAH,OAClB,YAAC,IAAMwF,SAAP,KACE,mBAAKngE,UAAU,uBACb,YAAC,IAAD,CACEkiE,MAAO,CACL,CAAEtzE,MAAO,SAAUqiF,QAAS,UAC5B,CAAEriF,MAAO,QAASqiF,QAAS,UAE7B9d,SAAUz3C,EACV80D,gBAAiB,SAAA90D,GAAM,OAAImjF,EAAY,SAAUnjF,IACjDse,MAAsB,MAAf2gC,EAAqB,QAAU,WAIzC,CAAC,IAAK,IAAK,MAAMxkC,SAASwkC,IACzB,mBAAK36D,UAAU,uBACb,YAAC,IAAD,CACEkiE,MAAO,CACL,CAAEtzE,MAAO,MAAOqiF,QAAS,OACzB,CAAEriF,MAAO,aAAcqiF,QAAS,eAElC9d,SAAUqgB,EAAa,aAAe,MACtChD,gBAAiB,SAAAgD,GAAU,OAAIqrB,EAAY,aAA6B,eAAfrrB,IACzD/C,aAA6B,MAAf9V,EACd3gC,MAAsB,MAAf2gC,EAAqB,QAAU,aA+NtCu4C,kBAxNgB,SAAC,GAAD,IAAGv4C,EAAH,EAAGA,WAAYw4C,EAAf,EAAeA,oBAAf,OACxB,YAAC,IAAMhzC,SAAP,KACE,mBAAKngE,UAAU,sBACZ4jF,GACC,mBAAK5jF,UAAU,2BACb,mBAAKA,UAAU,iCAAf,eAAwD0b,EAAxD,QACA,YAAC,IAAD,CACEwmD,MAAO,CACL,CAAEtzE,MAAO,MAAOqiF,QAAS,OACzB,CAAEriF,MAAO,aAAcqiF,QAAS,eAElC9d,SAAUqgB,EAAa,aAAe,MACtChD,gBAAiB,SAAAgD,GAAU,OAAIqrB,EAAY,aAA6B,eAAfrrB,OAK/D,mBAAKxzE,UAAU,4BACb,mBAAKA,UAAU,2BACb,mBAAKA,UAAU,iCAAf,eAAwD0b,EAAxD,QACA,YAAC,IAAD,CACEwmD,MAAO,CACL,CAAEtzE,MAAO,WAAYqiF,QAAS,YAC9B,CACEriF,MAAO,MACPqiF,QAAS,gBAGb9d,SAAUsgB,EAAU,WAAa,MACjCjD,gBAAiB,SAAAiD,GAAO,OAAIorB,EAAY,UAAuB,aAAZprB,IACnDhD,cAAc,EACdz2C,MAAsB,MAAf2gC,EAAqB,QAAU,WAI1C,mBAAK36D,UAAU,2BACb,mBAAKA,UAAU,iCAAf,0BACA,YAAC,IAAD,CACEkiE,MAAO,CACL,CAAEtzE,MAAO,SAAUqiF,QAAS,UAC5B,CAAEriF,MAAO,YAAaqiF,QAAS,gBAEjC9d,SAAUhxB,EAAW,YAAc,SACnCquC,gBAAiB,SAAAruC,GAAQ,OAAI08D,EAAY,WAAyB,cAAb18D,IACrDsuC,cAAc,EACdz2C,MAAsB,MAAf2gC,EAAqB,QAAU,QACtC+V,YAAa,MAIjB,mBAAK1wE,UAAU,2BACb,YAAC,IAAD,CACEwwC,QAAS2uD,EACT1uD,QAAS2uD,EACTgU,kBAAmBzV,EACnB0V,gBAAiB,SAAAtlE,GAAK,OAAI8wD,EAAY,YAAa9wD,IACnDulE,gBAAiB3jE,IACjB4jE,iBAAkB7jE,IAClB8jE,aAAa,EACbC,UAAU,oBACV58G,MAAO84G,EACP+D,SAAU9D,EACV+D,gBAAiBR,KAIpBvvB,GACC,mBAAK5jF,UAAU,2BACb,YAAC,IAAD,CACEjO,GAAG,8BACHg9E,KAAI,UAAK8gC,EAAiB,OAAS,OAA/B,uBACgB,UAAlB5P,EAA4B,kBAAoB,UAElDuI,QAASqH,EACT3+B,QAAS,kBAAM4+B,IAAmBD,WA+ItC+D,gCAA8B,MAIpC,YAAC,IAAD,CAAWtX,QAAQ,MACjB,uBAASt8F,UAAU,gBAAgBjO,GAAE,gBAAWkuG,IAC9C,sBAAQjgG,UAAU,gBAChB,mBAAKA,UAAU,wBACZ2xG,GAAWl3G,MAAM,KAAKhG,KAAI,SAAA8J,GAAI,OAC7B,mBAAKvG,IAAKuG,GAAOA,OAGrB,mBAAKyB,UAAU,yBACZ4xG,GAAYn3G,MAAM,KAAKhG,KAAI,SAAA8J,GAAI,OAC9B,mBAAKvG,IAAKuG,GAAOA,QAItB8zG,GACD,sBAAQryG,UAAU,gBAChB,mBAAKA,UAAU,wBACZgyG,GAAWv3G,MAAM,KAAKhG,KAAI,SAAA8J,GAAI,OAC7B,mBAAKvG,IAAKuG,GAAOA,OAGrB,mBAAKyB,UAAU,qBAAqBvM,IAAKogH,W,EApgB/CpE,E,wcA4gBNA,EAAoBh2E,UAAY,CAC9B/nC,KAAM22C,IAAUlwC,OAChB8nG,cAAe53D,IAAU9jC,OACzB0rB,OAAQoY,IAAU9jC,OAAOymC,WACzB7I,SAAUkG,IAAUM,KAAKqC,WACzBwoC,WAAYnrC,IAAUM,KAAKqC,WAC3BtvB,OAAQ2sB,IAAUI,MAAM,CAAC,SAAU,UAAUuC,WAC7CwyD,MAAOn1D,IAAUS,QAAQT,IAAU9jC,QAAQymC,WAC3CyoC,QAASprC,IAAUM,KAAKqC,WACxB0oC,WAAYrrC,IAAUt7B,OAAOi+B,WAC7Bu4C,OAAQl7C,IAAUM,KAAKqC,WACvB2yD,UAAWt1D,IAAUyrE,WAAW5rG,MAChConE,UAAWjnC,IAAU9jC,OAAOymC,WAC5B6zD,YAAax2D,IAAU1iC,KAAKqlC,YAG9BykE,EAAoB/jD,aAAe,CACjCh6D,KAAM,GACNuuG,cAAe,S,UAGFwP,EAAA,O,6FAnjBTD,E,gGAkBAC,E,muECjCOsE,EAAa,WAOf,6DAAP,GANFhiH,EAMS,EANTA,GACAoqC,EAKS,EALTA,MAKS,IAJT63E,qBAIS,aAHTC,yBAGS,aAFTC,qBAES,MAFO5gH,SAAS09C,KAEhB,EADTmjE,EACS,EADTA,gBAEA,EAAkCxjC,oBAAS,GAA3C,SAAOyjC,EAAP,KAAkBC,EAAlB,KACA,EAA8B1jC,mBAAS,MAAvC,SAAO4c,EAAP,KAAgB+mB,EAAhB,KAEAxjC,qBAAU,WAER,IAAKyc,EAAS,CACZ,IAAMgnB,EAAW,IAAI9oB,IAAQ15F,EAAZ,GAGfy7F,KAAM,IACNG,QAAS,CACPxxD,MAAQ83E,IAAsB93E,EAAS,UAAcA,EACrDutE,kBAAmBuK,EACnBtM,OAAQqM,IAEPG,IAOLD,EAAcz+E,iBAAiB,uBAAuB,WACpD4+E,GAAa,MAGfC,EAAWC,MAEZ,CAACP,EAAejiH,EAAImiH,EAAeC,EAAiB5mB,EAASpxD,EAAO83E,IAEvE,IAAMO,EAAc,WACbjnB,IAGLA,EAAQ/6F,OACR6hH,GAAa,KAGTI,EAAc,WAGlBJ,GAAa,GAER9mB,GAGDA,EAAQua,SAASva,EAAQkN,SAGzBia,EAA2B,eAAH,OAAkB3iH,EAAlB,wBAE9B,MAAO,CACLqiH,YACAI,cACAC,cACAlnB,UACAmnB,6B,EAhESX,E,+LAAAA,E,qhBChBPY,EAAkB,SAAC,GAYnB,IAXJnkE,EAWI,EAXJA,QACAC,EAUI,EAVJA,QACAmkE,EASI,EATJA,aACAC,EAQI,EARJA,aACAvB,EAOI,EAPJA,gBAEAwB,GAKI,EANJvB,iBAMI,EALJuB,UACAC,EAII,EAJJA,gBACAC,EAGI,EAHJA,iBACAC,EAEI,EAFJA,oBACAC,EACI,EADJA,UAEMC,EAAqBtlE,IAAcyjE,GACnC8B,EAAkBvlE,IAAayjE,GAerC,OAbAxiC,qBAAU,WAEJgkC,GAAsC,SAA1BA,EAAS52G,QAAQrJ,MAC/BogH,GAAoB,KAErB,IAEHnkC,qBAAU,WACJgkC,IACFA,EAAS52G,QAAQtP,MAAQumH,EAAmBP,MAE7C,CAACA,IAGF,mBAAK50G,UAAS,2BAAuBg1G,EAAoD,GAAjC,iCACrDA,EACC,qBACEngH,KAAK,OACLtG,KAAM2mH,EACNpvG,IAAKgvG,EACLhhG,IAAKqhG,EAAmB3kE,GACxBjjC,IAAK4nG,EAAmB1kE,GACxB4kE,SAAU,SAAA9/E,GACRu/E,EAAS52G,QAAQtP,MAAQ2mC,EAAMV,OAAOjmC,MACtCmmH,EAAgBK,EAAgBN,EAAS52G,QAAQtP,WAIrD,YAAC0mH,EAAD,CACE9kE,QAASA,EACTC,QAASA,EACTmkE,aAAcC,EACdE,gBAAiBA,M,EAhDrBJ,E,4BAuDN,I,IAAMY,EAA2B,SAAC,GAAD,IAAGC,EAAH,EAAGA,YAAapyF,EAAhB,EAAgBA,KAAMiyF,EAAtB,EAAsBA,SAAtB,OAC/B,qBAAOr1G,UAAU,iBACf,oBAAMA,UAAU,uCACd,sBAAQzR,KAAK,oBAAoB8mH,SAAUA,EAAUzmH,MAAO4mH,GACzDpyF,EAAK3uB,KAAI,SAAA7F,GAAK,OACb,sBAAQoJ,IAAKpJ,EAAOA,MAAOA,GACxBA,UAQP6mH,EAA6B,SAAC,GAAD,IAAGC,EAAH,EAAGA,cAAe/iG,EAAlB,EAAkBA,OAAQ0iG,EAA1B,EAA0BA,SAA1B,OACjC,qBAAOr1G,UAAU,iBACf,oBAAMA,UAAU,uCACd,sBAAQzR,KAAK,sBAAsB8mH,SAAUA,EAAUzmH,MAAO8mH,GAC3D/iG,EAAOle,KAAI,SAAC4b,EAAO0e,GAAR,OACV,sBAAQ/2B,IAAKqY,EAAOzhB,MAAOwhD,IAAWniD,QAAQoiB,IAC3CA,UAQPslG,EAA4B,SAAC,GAAD,IAAGC,EAAH,EAAGA,aAAc7yF,EAAjB,EAAiBA,MAAOsyF,EAAxB,EAAwBA,SAAxB,OAChC,qBAAOr1G,UAAU,iBACf,oBAAMA,UAAU,uCACd,sBACEzR,KAAK,sBACL8mH,SAAUA,EACVzmH,MAAOgnH,EACPriD,SAA2B,IAAjBxwC,EAAM1yB,QAEf0yB,EAAMtuB,KAAI,SAAAib,GAAI,OACb,sBAAQ1X,IAAK0X,EAAM9gB,MAAO8gB,GACvBA,UAQP4lG,EAAgC,SAAC,GAAwD,IAAtD9kE,EAAsD,EAAtDA,QAASC,EAA6C,EAA7CA,QAASmkE,EAAoC,EAApCA,aAAcG,EAAsB,EAAtBA,gBACvE,EAAuElkE,YACrE+jE,GADWY,EAAb,EAAQ99F,IAAyBg+F,EAAjC,EAA0BrlG,MAA4BulG,EAAtD,EAAgDlmG,KAGhD,EAAoEmhC,YAAgBL,GAAvEqlE,EAAb,EAAQn+F,IAAwBo+F,EAAhC,EAAyBzlG,MAA2B0lG,EAApD,EAA8CrmG,KAC9C,EAAoEmhC,YAAgBJ,GAAvEulE,EAAb,EAAQt+F,IAAwBu+F,EAAhC,EAAyB5lG,MAA2B6lG,EAApD,EAA8CxmG,KAExCymG,EAAY5lE,YAAaC,EAASC,GAGlC2lE,EAAsB/lE,YAAeukE,EAAaj1F,WAAYi1F,EAAa5/F,eAG3EqhG,EADoB,IAAIn3G,MAAMk3G,GAAqB//G,QAAQ5B,KAAI,SAAAijB,GAAG,OAAIA,EAAM,KAC9BiP,QAAO,SAAAjP,GAGzD,OAAIg+F,IAAkBO,GAAgBL,IAAiBM,EAC9Cx+F,GAAOs+F,EAIZN,IAAkBI,GAAgBF,IAAiBG,GAC9Cr+F,GAAOm+F,KAMZljG,EAASy9B,IAAWzpB,QAAO,SAACrvB,EAAGg/G,GAGnC,OAAIV,IAAiBM,GAAeN,IAAiBG,EAC5CO,GAAcL,GAAgBK,GAAcR,EAEjDF,IAAiBM,EACZI,GAAcL,EAEnBL,IAAiBG,GACZ,SAAAO,GAAU,OAAIR,MAKzB,OACE,YAAC,IAAM31C,SAAP,KACE,YAACo1C,EAAD,CACEC,YAAaA,EACbpyF,KAAMizF,EACNhB,SAAU,SAAA9/E,GACR,IAAMohB,EAAU,IAAIzuC,KAAK0sG,EAAatqG,WACtCqsC,EAAQxG,QAAQ5a,EAAMV,OAAOjmC,OAC7BmmH,EAAgBp+D,MAGpB,YAAC8+D,EAAD,CACEC,cAAeA,EACf/iG,OAAQA,EACR0iG,SAAU,SAAA9/E,GACR,IAAMghF,EAAgBhhF,EAAMV,OAAOjmC,MAC/B+nD,EAAU,IAAIzuC,KAAK0sG,EAAatqG,WAepC,GAdAqsC,EAAQ/iC,SAAS2iG,GAKfjmE,OAAOimE,KAAmBN,GAC1BL,IAAiBM,GACjBv/D,EAAQ/2B,UAAYo2F,IAEpBr/D,EAAU,IAAIzuC,KAAK0tG,EAAcW,EAAeP,IAK9Cr/D,EAAQh3B,WAAWrf,aAAei2G,EAAe,CACnD,IAAMhmG,EAAc8/B,YAAekmE,EAAeX,GAClDj/D,EAAU,IAAIzuC,KAAK0tG,EAAcW,EAAehmG,GAGlDwkG,EAAgBp+D,MAGpB,YAACg/D,EAAD,CACEC,aAAcA,EACd7yF,MAAOozF,EACPd,SAAU,SAAA9/E,GACR,IAAMohB,EAAU,IAAIzuC,KAAK0sG,EAAatqG,WACtCqsC,EAAQ1hC,YAAYsgB,EAAMV,OAAOjmC,OACjCmmH,EAAgBp+D,Q,EAOXg+D,EAAA,O,6FArMTA,E,iGAuDAY,E,0GAcAE,E,4GAcAE,E,2GAmBAL,E,wmBCtGA5rC,EAAS,SAAC,GAAgD,IAA9C33E,EAA8C,EAA9CA,GAAIy2G,EAA0C,EAA1CA,QAASz5B,EAAiC,EAAjCA,KAAM2B,EAA2B,EAA3BA,YAAaQ,EAAc,EAAdA,QAChD,EAA8BP,oBAAS,GAAvC,WAAOC,EAAP,KAAgBC,EAAhB,KAaA,OAXAC,qBAAU,WACR,IAAIC,EAOJ,OANIH,IACFG,EAAQhH,YAAW,WACjB8G,GAAW,GACXK,MACCR,IAEE,kBAAM5G,aAAaiH,MACzB,CAACH,IAGF,mBACE5wE,UAAU,eACVkxE,QAAS,WACPL,GAAW,KAGb,mBAAK7wE,UAAU,gBAAgB+uE,GAC9B6B,EACC,mBAAK5wE,UAAU,kBACb,YAAC,IAAD,CAAS6yC,KAAK,WAGhB,qBAAO7yC,UAAU,iBACf,oBAAMA,UAAU,6DACd,yBACE,qBACEnL,KAAK,WACLtG,KAAMwD,EACNy2G,QAASA,EACTt3B,QAAS,SAAApiF,GAAC,OAAIA,EAAE2yG,mBAChB4T,SAAU,SAAAvmH,GAAC,OAAIA,EAAE2yG,qBAEnB,oBAAMzhG,UAAU,8B,EArCxB0pE,E,uDA8CNA,EAAOjwC,UAAY,CACjBs1C,KAAM1mC,IAAU9jC,OAChBikG,QAASngE,IAAUM,KAAKqC,WACxBkmC,QAAS7oC,IAAU1iC,KAAKqlC,WACxB0lC,YAAaroC,IAAUt7B,QAGzB28D,EAAOhe,aAAe,CACpBglB,YAAa,K,UAGAhH,EAAA,O,6FAzDTA,E,iSCLN,YAEIr5D,EAAQ,aAAS,SAASC,GAC5BA,EAAK6/B,QAAQ,GACb7/B,EAAKylC,SAAS,EAAG,EAAG,EAAG,MACtB,SAASzlC,EAAMu9B,GAChBv9B,EAAKsD,SAAStD,EAAKqP,WAAakuB,MAC/B,SAASE,EAAOG,GACjB,OAAOA,EAAIvuB,WAAaouB,EAAMpuB,WAAyD,IAA3CuuB,EAAIl5B,cAAgB+4B,EAAM/4B,kBACrE,SAAS1E,GACV,OAAOA,EAAKqP,cAGC,MACKtP,EAAMy9B,O,6RCDpB0oE,EAAa,SAAC,GAAoE,IAAlEr5E,EAAkE,EAAlEA,WAAYC,EAAsD,EAAtDA,gBAAiBC,EAAqC,EAArCA,kBAAmBN,EAAkB,EAAlBA,YAG3D05E,EAGLp5E,EAHFjD,MAEMs8E,EACJr5E,EADFnE,KAMF,OACE,YAAC,IAAD,CAAO5yB,IAAKA,KACV,wBACE,sBACEvU,GAAG,sBACHm0E,QAAQ,UACRywC,KAAK,IACLC,KAAK,IACLC,YAAY,cACZC,YAAY,IACZC,aAAa,IACbC,OAAO,QAEP,oBAAMz/G,EAAE,0BAGX4lC,EAAW1oC,KAAI,YAA8C,IAA3C7F,EAA2C,EAA3CA,MAAO66C,EAAoC,EAApCA,WAAY1jB,EAAwB,EAAxBA,UAAW11B,EAAa,EAAbA,OAC/C,OACE,YAAC,IAAD,CACE2H,IAAG,4BAAuBpJ,GAC1BuqC,UAAS,oBAA6B,UAAdpT,EAAwB2wF,GAAeD,EAAtD,aACS,QAAhB15E,GAvBO,MAsBA,MAIT,YAAC,IAAD,CACE7xB,KAAM,IAAIq1D,IAAM,CAAErkE,EAAGkhC,EAAgBqM,GAAa7sC,EAAG,IACrDqO,GACE,IAAIs1D,IAAM,CACRrkE,EACgB,UAAd6pB,EACIqX,EAAgBqM,GAAcp5C,EAC9B+sC,EAAgBqM,GAAcp5C,EACpCuM,EAAG,IAGPq6G,UAAU,8BAEZ,wBACE,qBACEj/G,IAAG,eAAUpJ,GACbsN,EAAGkhC,EAAgBqM,GACnB7sC,EAAmB,QAAhBmgC,GA7CK,GACM,GA6CdoS,WAA0B,UAAdppB,EAAwB,QAAU,OAE7Cn3B,UAUjB4nH,EAAW/8E,UAAY+P,IACvBgtE,EAAW9qD,aAAexuB,I,UAEXs5E,EAAA,O,6FApETA,E,o0CCROU,EAAc,SAAC,GAatB,IAZJl9E,EAYI,EAZJA,MACAC,EAWI,EAXJA,OACAsE,EAUI,EAVJA,OACAE,EASI,EATJA,OACAD,EAQI,EARJA,UACAE,EAOI,EAPJA,UAEAhtC,GAKI,EANJ2wC,mBAMI,EALJ3wC,MACAylH,EAII,EAJJA,cACA5yE,EAGI,EAHJA,wBACAU,EAEI,EAFJA,YACAL,EACI,EADJA,MAGMwyE,EAAepI,mBACnB,kBAAMt9G,EAAKi1B,QAAO,SAACpvB,GAAD,OAAO2wC,YAAgB3wC,EAAEinC,KAAe0J,YAAgB3wC,EAAEmnC,SAC5E,CAAChtC,EAAM8sC,EAAWE,IAId24E,EAAWrI,mBACf,kBACEsI,IAASpsG,KACPksG,EAAazwF,QAAO,SAACpvB,GAAD,OAAO2wC,YAAgB3wC,EAAEinC,KAAe0J,YAAgB3wC,EAAEmnC,QAC9E,SAACnnC,GAAD,OAAOgnC,EAAOhnC,EAAEinC,OAChB,SAACjnC,GAAD,OAAOknC,EAAOlnC,EAAEmnC,SAGpB,CAAChtC,EAAMsoC,EAAOC,EAAQsE,EAAQC,EAAWC,EAAQC,IAI7C64E,EAAavI,mBAAQ,kBAAMpqE,GAASyyE,EAASzxG,WAAU,CAACg/B,EAAOyyE,IAyFrE,MAAO,CAAEG,YAtFW7nC,uBAClB,SAACp6C,EAAD,GAAkC,IAe5BkiF,EACAC,EAhBI1+E,EAAwB,EAAxBA,IAAKE,EAAmB,EAAnBA,KAAMe,EAAa,EAAbA,OAEb61D,EAAQ9f,IAAWz6C,IAAU,CAAEr5B,EAAG,EAAGU,EAAG,GAEvC+6G,EAAW7nB,EAAM5zF,EAAIg9B,EAAjB0+E,EAAuB9nB,EAAMlzF,EAAIo8B,EAEtC6+E,EAAaR,EAASruC,KAAK2uC,EAAIC,GAE/BE,EAAYV,EAAaS,GAEzBE,EAAgB5qG,KAAK6qG,MACzBL,EAAKp5E,EAAOu5E,EAAUt5E,IACtBo5E,EAAKn5E,EAAOq5E,EAAUp5E,KAOxB,IAAKuG,GAAe8yE,GAAiB9yE,EAAa,CAChD,IACEgzE,EAKEH,EALFG,cACWC,EAITJ,EAJFK,UACA51E,EAGEu1E,EAHFv1E,WACa61E,EAEXN,EAFDp5E,GACY25E,EACXP,EADDt5E,GAGHi5E,OAEoBtnH,IAAlB8nH,EACIA,EAEE,CACE55G,QAAS65G,EACTpxC,cAAe9tC,EAAMyF,EAAO25E,GAE5BrxC,WAAY/tC,EAAMiB,EAClBvoC,KAAM,CAAEkL,EAAGw7G,EAAOl8G,EAAGm8G,EAAO91E,eAG9B,CAAEA,cACJ,CACElkC,QAAS65G,GAGjBR,EACEnzE,GACAA,EAAwB,CACtB7yC,KAAMomH,EACNv5E,OAAQ,SAACriC,GAAD,OAAOg9B,EAAOqF,EAAOriC,IAC7BuiC,OAAQ,SAAC7hC,GAAD,OAAOo8B,EAAMyF,EAAO7hC,OAWlCuzE,EANwBgnC,EACtBvyE,EAAQ,EAAH,KAAQ6yE,GAAR,IAA2B3xC,WAAY,CAAE6xC,KAAIC,QAASH,EAC3DC,GAFMvnC,aAMI56C,KAEd,CACEqP,EACAyyE,EACAD,EACAnyE,EACAkyE,EACA5yE,EACAhG,EACAC,EACAC,EACAC,IAWkB2xC,WANHV,uBAAY,YAG7BU,EAFuB8mC,IAAf9mC,gBAGP,CAAC8mC,IAE8BI,e,EA1HvBL,E,0NAAAA,E,yHA6HE,K,yPClIf,kCACA,IAAIoB,EAAK,2EAEM,SAASC,EAAgBl7D,GACtC,KAAMz5C,EAAQ00G,EAAGhzG,KAAK+3C,IAAa,MAAM,IAAIrrD,MAAM,mBAAqBqrD,GACxE,IAAIz5C,EACJ,OAAO,IAAI40G,EAAgB,CACzB3+E,KAAMj2B,EAAM,GACZmzD,MAAOnzD,EAAM,GACbwgB,KAAMxgB,EAAM,GACZ60G,OAAQ70G,EAAM,GACdkwC,KAAMlwC,EAAM,GACZo2B,MAAOp2B,EAAM,GACb80G,MAAO90G,EAAM,GACb+0G,UAAW/0G,EAAM,IAAMA,EAAM,GAAGzN,MAAM,GACtCqE,KAAMoJ,EAAM,GACZ/O,KAAM+O,EAAM,MAMT,SAAS40G,EAAgBn7D,GAC9BxsD,KAAKgpC,UAA0B1pC,IAAnBktD,EAAUxjB,KAAqB,IAAMwjB,EAAUxjB,KAAO,GAClEhpC,KAAKkmE,WAA4B5mE,IAApBktD,EAAU0Z,MAAsB,IAAM1Z,EAAU0Z,MAAQ,GACrElmE,KAAKuzB,UAA0Bj0B,IAAnBktD,EAAUj5B,KAAqB,IAAMi5B,EAAUj5B,KAAO,GAClEvzB,KAAK4nH,YAA8BtoH,IAArBktD,EAAUo7D,OAAuB,GAAKp7D,EAAUo7D,OAAS,GACvE5nH,KAAKijD,OAASuJ,EAAUvJ,KACxBjjD,KAAKmpC,WAA4B7pC,IAApBktD,EAAUrjB,WAAsB7pC,GAAaktD,EAAUrjB,MACpEnpC,KAAK6nH,QAAUr7D,EAAUq7D,MACzB7nH,KAAK8nH,eAAoCxoH,IAAxBktD,EAAUs7D,eAA0BxoH,GAAaktD,EAAUs7D,UAC5E9nH,KAAK2J,OAAS6iD,EAAU7iD,KACxB3J,KAAKgE,UAA0B1E,IAAnBktD,EAAUxoD,KAAqB,GAAKwoD,EAAUxoD,KAAO,GAZnE0jH,EAAgB7rH,UAAY8rH,EAAgB9rH,UAe5C8rH,EAAgB9rH,UAAU4T,SAAW,WACnC,OAAOzP,KAAKgpC,KACNhpC,KAAKkmE,MACLlmE,KAAKuzB,KACLvzB,KAAK4nH,QACJ5nH,KAAKijD,KAAO,IAAM,UACH3jD,IAAfU,KAAKmpC,MAAsB,GAAK7sB,KAAKI,IAAI,EAAgB,EAAb1c,KAAKmpC,SACjDnpC,KAAK6nH,MAAQ,IAAM,UACAvoH,IAAnBU,KAAK8nH,UAA0B,GAAK,IAAMxrG,KAAKI,IAAI,EAAoB,EAAjB1c,KAAK8nH,aAC3D9nH,KAAK2J,KAAO,IAAM,IACnB3J,KAAKgE,O,oOC7CP+jH,EAAwB,CACtB,QAAW,UACX,UAAa,UACb,OAAU,UACV,oBAAqB,UACrB,iBAAkB,UAClB,qBAAsB,UACtB,MAAS,UACT,gBAAiB,W,EAGVA,EAAA,O,6FAXTA,E,2fCGS,SAAStuE,EAAWyD,EAAOC,EAAMN,EAAO2P,GACrD,IACIs7D,EADA9qE,EAAO,YAASE,EAAOC,EAAMN,GAGjC,QADA2P,EAAY,OAAAk7D,EAAA,GAA6B,MAAbl7D,EAAoB,KAAOA,IACrCxoD,MAChB,IAAK,IACH,IAAIjG,EAAQue,KAAKI,IAAIJ,KAAKC,IAAI2gC,GAAQ5gC,KAAKC,IAAI4gC,IAE/C,OAD2B,MAAvBqP,EAAUs7D,WAAsBvuG,MAAMuuG,ECRjC,cACb,OAAOxrG,KAAKI,IAAI,EAAgE,EAA7DJ,KAAKI,KAAK,EAAGJ,KAAK2G,IAAI,EAAG3G,KAAK0C,MAAM,OAAAmnD,EAAA,GAASpoE,GAAS,KAAW,OAAAooE,EAAA,GAAS7pD,KAAKC,IAAIygC,KDO5CgrE,CAAgBhrE,EAAMj/C,MAASyuD,EAAUs7D,UAAYA,GACpG,YAAat7D,EAAWzuD,GAEjC,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACwB,MAAvByuD,EAAUs7D,WAAsBvuG,MAAMuuG,EEhBjC,cAEb,OADA9qE,EAAO1gC,KAAKC,IAAIygC,GAAOtgC,EAAMJ,KAAKC,IAAIG,GAAOsgC,EACtC1gC,KAAKI,IAAI,EAAG,OAAAypD,EAAA,GAASzpD,GAAO,OAAAypD,EAAA,GAASnpB,IAAS,EFcKirE,CAAejrE,EAAM1gC,KAAKI,IAAIJ,KAAKC,IAAI2gC,GAAQ5gC,KAAKC,IAAI4gC,QAAUqP,EAAUs7D,UAAYA,GAAgC,MAAnBt7D,EAAUxoD,OACrK,MAEF,IAAK,IACL,IAAK,IACwB,MAAvBwoD,EAAUs7D,WAAsBvuG,MAAMuuG,EGrBjC,YACb,OAAOxrG,KAAKI,IAAI,GAAI,OAAAypD,EAAA,GAAS7pD,KAAKC,IAAIygC,KHoBoBkrE,CAAelrE,MAAQwP,EAAUs7D,UAAYA,EAAuC,GAAP,MAAnBt7D,EAAUxoD,OAI9H,OAAO,YAAOwoD,GItBT,SAAS27D,EAAUt7E,GACxB,IAAI2W,EAAS3W,EAAM2W,OAkDnB,OAhDA3W,EAAMihC,MAAQ,SAASjxB,GACrB,IAAIn2C,EAAI88C,IACR,OAAO,OAAAsqB,EAAA,GAAMpnE,EAAE,GAAIA,EAAEA,EAAElH,OAAS,GAAa,MAATq9C,EAAgB,GAAKA,IAG3DhQ,EAAM4M,WAAa,SAASoD,EAAO2P,GACjC,IAAI9lD,EAAI88C,IACR,OAAO/J,EAAW/yC,EAAE,GAAIA,EAAEA,EAAElH,OAAS,GAAa,MAATq9C,EAAgB,GAAKA,EAAO2P,IAGvE3f,EAAM64B,KAAO,SAAS7oB,GACP,MAATA,IAAeA,EAAQ,IAE3B,IAKIurE,EACAprE,EANAt2C,EAAI88C,IACJg4C,EAAK,EACLC,EAAK/0F,EAAElH,OAAS,EAChB09C,EAAQx2C,EAAE80F,GACVr+C,EAAOz2C,EAAE+0F,GAGT4sB,EAAU,GAOd,IALIlrE,EAAOD,IACTF,EAAOE,EAAOA,EAAQC,EAAMA,EAAOH,EACnCA,EAAOw+C,EAAIA,EAAKC,EAAIA,EAAKz+C,GAGpBqrE,KAAY,GAAG,CAEpB,IADArrE,EAAO,YAAcE,EAAOC,EAAMN,MACrBurE,EAGX,OAFA1hH,EAAE80F,GAAMt+C,EACRx2C,EAAE+0F,GAAMt+C,EACDqG,EAAO98C,GACT,GAAIs2C,EAAO,EAChBE,EAAQ5gC,KAAK0C,MAAMk+B,EAAQF,GAAQA,EACnCG,EAAO7gC,KAAKyC,KAAKo+B,EAAOH,GAAQA,MAC3B,MAAIA,EAAO,GAIhB,MAHAE,EAAQ5gC,KAAKyC,KAAKm+B,EAAQF,GAAQA,EAClCG,EAAO7gC,KAAK0C,MAAMm+B,EAAOH,GAAQA,EAInCorE,EAAUprE,EAGZ,OAAOnQ,GAGFA,EAGM,SAAS0Q,IACtB,IAAI1Q,EAAQ,OAAAyX,EAAA,KAQZ,OANAzX,EAAM5I,KAAO,WACX,OAAO,YAAK4I,EAAO0Q,MAGrBu7B,EAAA,EAAUx4E,MAAMusC,EAAO/2B,WAEhBqyG,EAAUt7E,K,yCCpEZ,SAASy7E,EAAM7rE,EAAI8rE,EAAIC,EAAIC,EAAIC,GACpC,IAAItlD,EAAK3mB,EAAKA,EAAIksE,EAAKvlD,EAAK3mB,EAC5B,QAAS,EAAI,EAAIA,EAAK,EAAI2mB,EAAKulD,GAAMJ,GAC9B,EAAI,EAAInlD,EAAK,EAAIulD,GAAMH,GACvB,EAAI,EAAI/rE,EAAK,EAAI2mB,EAAK,EAAIulD,GAAMF,EACjCE,EAAKD,GAAM,EAGJ,I,QCHA,kBACb,IAAIvlE,EAAQ,YAAMp3C,GAElB,SAASq3C,EAAIlG,EAAOG,GAClB,IAAIx2C,EAAIs8C,GAAOjG,EAAQ,YAASA,IAAQr2C,GAAIw2C,EAAM,YAASA,IAAMx2C,GAC7DuE,EAAI+3C,EAAMjG,EAAM9xC,EAAGiyC,EAAIjyC,GACvB9G,EAAI6+C,EAAMjG,EAAM54C,EAAG+4C,EAAI/4C,GACvBiN,EAAU,YAAQ2rC,EAAM3rC,QAAS8rC,EAAI9rC,SACzC,OAAO,SAAS9S,GAKd,OAJAy+C,EAAMr2C,EAAIA,EAAEpI,GACZy+C,EAAM9xC,EAAIA,EAAE3M,GACZy+C,EAAM54C,EAAIA,EAAE7F,GACZy+C,EAAM3rC,QAAUA,EAAQ9S,GACjBy+C,EAAQ,IAMnB,OAFAkG,EAAI3F,MAAQmrE,EAELxlE,EAnBM,CAoBZ,GAEH,SAASylE,EAAUC,GACjB,OAAO,SAASC,GACd,IAIIxpH,EAAG4jD,EAJH97C,EAAI0hH,EAAOvpH,OACXqH,EAAI,IAAIwH,MAAMhH,GACd+D,EAAI,IAAIiD,MAAMhH,GACd/C,EAAI,IAAI+J,MAAMhH,GAElB,IAAK9H,EAAI,EAAGA,EAAI8H,IAAK9H,EACnB4jD,EAAQ,YAAS4lE,EAAOxpH,IACxBsH,EAAEtH,GAAK4jD,EAAMt8C,GAAK,EAClBuE,EAAE7L,GAAK4jD,EAAM/3C,GAAK,EAClB9G,EAAE/E,GAAK4jD,EAAM7+C,GAAK,EAMpB,OAJAuC,EAAIiiH,EAAOjiH,GACXuE,EAAI09G,EAAO19G,GACX9G,EAAIwkH,EAAOxkH,GACX6+C,EAAM5xC,QAAU,EACT,SAAS9S,GAId,OAHA0kD,EAAMt8C,EAAIA,EAAEpI,GACZ0kD,EAAM/3C,EAAIA,EAAE3M,GACZ0kD,EAAM7+C,EAAIA,EAAE7F,GACL0kD,EAAQ,KAKC0lE,GD7CP,YACb,IAAIxhH,EAAIwjB,EAAOrrB,OAAS,EACxB,OAAO,SAASf,GACd,IAAIc,EAAId,GAAK,EAAKA,EAAI,EAAKA,GAAK,GAAKA,EAAI,EAAG4I,EAAI,GAAKiV,KAAK0C,MAAMvgB,EAAI4I,GAChEmhH,EAAK39F,EAAOtrB,GACZkpH,EAAK59F,EAAOtrB,EAAI,GAChBgpH,EAAKhpH,EAAI,EAAIsrB,EAAOtrB,EAAI,GAAK,EAAIipH,EAAKC,EACtCC,EAAKnpH,EAAI8H,EAAI,EAAIwjB,EAAOtrB,EAAI,GAAK,EAAIkpH,EAAKD,EAC9C,OAAOF,GAAO7pH,EAAIc,EAAI8H,GAAKA,EAAGkhH,EAAIC,EAAIC,EAAIC,OCsClBG,GCpDb,YACb,IAAIxhH,EAAIwjB,EAAOrrB,OACf,OAAO,SAASf,GACd,IAAIc,EAAI+c,KAAK0C,QAAQvgB,GAAK,GAAK,IAAMA,EAAIA,GAAK4I,GAC1CkhH,EAAK19F,GAAQtrB,EAAI8H,EAAI,GAAKA,GAC1BmhH,EAAK39F,EAAOtrB,EAAI8H,GAChBohH,EAAK59F,GAAQtrB,EAAI,GAAK8H,GACtBqhH,EAAK79F,GAAQtrB,EAAI,GAAK8H,GAC1B,OAAOihH,GAAO7pH,EAAIc,EAAI8H,GAAKA,EAAGkhH,EAAIC,EAAIC,EAAIC,Q,6BCV9C,uDAEWM,EAAoB,YAAc,SAAU,QAAS,UAAW,QAAS,cAAe,OAAQ,QAAS,QACrG,SAASC,EAAkBjuG,GACxC,OAAOguG,EAAkB,cAAehuG,K,qBCJ1C,IAAIkuG,EAAmB,EAAQ,KAW/B3lH,EAAOiD,QATP,SAAqCI,EAAGuiH,GACtC,GAAKviH,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAOsiH,EAAiBtiH,EAAGuiH,GACtD,IAAI9hH,EAAIzL,OAAOC,UAAU4T,SAAS1T,KAAK6K,GAAGtB,MAAM,GAAI,GAEpD,MADU,WAAN+B,GAAkBT,EAAEqgC,cAAa5/B,EAAIT,EAAEqgC,YAAYvpC,MAC7C,QAAN2J,GAAqB,QAANA,EAAoBgH,MAAMgM,KAAKzT,GACxC,cAANS,GAAqB,2CAA2CmD,KAAKnD,GAAW6hH,EAAiBtiH,EAAGuiH,QAAxG,IAIF5lH,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,cCFxEzD,EAAOiD,QAVP,SAA2B8Q,EAAK9H,IACnB,MAAPA,GAAeA,EAAM8H,EAAI9X,UAAQgQ,EAAM8H,EAAI9X,QAE/C,IAAK,IAAID,EAAI,EAAG+qB,EAAO,IAAIjc,MAAMmB,GAAMjQ,EAAIiQ,EAAKjQ,IAC9C+qB,EAAK/qB,GAAK+X,EAAI/X,GAGhB,OAAO+qB,GAIT/mB,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,sQCApE3E,EAAI,EAGF+mH,EAAiB9sG,KAAKG,IADf,GADK,GAIZ2pC,EAAM,SAAard,EAAKiZ,GAC7B,IAAMx6C,EAAI,YAAcuhC,EACxB,OAAOvhC,EAAEmV,OAAOnV,EAAEhI,OAAOwiD,IAGpBqnE,EAAc,WACnB,OAAOjjE,GAAK9pC,KAAKq5D,SAChByzC,GAAkB,GACjB35G,SAXU,IADK,IAeZ65G,EAAc,WAGnB,OAFAjnH,EAAIA,EAAI+mH,EAAiB/mH,EAAI,IAC7BA,EACW,GAGNknH,EAAM,WAIX,IAKM12B,GAAY,IAAIx7E,MAAOoC,UAAUhK,SA7B3B,IAmCN+5G,EAAcD,EAAIC,cAGlB7zC,EAAS0zC,IAAgBA,IAK/B,MAnBe,IAmBCx2B,EAFAzsC,EAAIkjE,IAAc75G,SAzCtB,IADK,GA4CqB+5G,EAAc7zC,GAGrD4zC,EAAIE,KAAO,WACV,IAAMhqG,GAAO,IAAIpI,MAAOoC,UAAUhK,SAAS,IAErCkjC,EAAQ42E,EAAIC,cAAclkH,MAAM,EAAE,GACvCikH,EAAIC,cAAclkH,OAAO,GAEpBqwE,EAAS0zC,IAAc/jH,OAAO,GAE9BokH,EAAUJ,IAAc75G,SAAS,IAAInK,OAAO,GAElD,OAAOma,EAAKna,OAAO,GAClBokH,EAAU/2E,EAAQgjC,GAGpB4zC,EAAII,YAAc,WAEjB,IAAM96G,EAAS,WACd,IAAIguC,EAAQ,EAEZ,IAAK,IAAMt9C,KAAKjE,OACfuhD,IAGD,OAAOA,EAPO,GAWf,OADA0sE,EAAII,YAAc,kBAAM96G,GACjBA,GAGR06G,EAAIC,YAAc,WACjB,OAAOpjE,GAAK4xC,UAAU4xB,UAAUpqH,OAC/Bw4F,UAAUmU,UAAU3sG,QAAQiQ,SAAS,IACrC85G,EAAII,cAAcl6G,SAAS,IAAK,K,6FAjF9BpN,E,2GACc,E,mHACL,G,8GACP+mH,E,wHAEAhjE,E,6GAKAijE,E,qHAMAC,E,qHAMAC,E;;;;;;;AC1BNhmH,EAAOiD,QAAU,SAAmBiN,GAClC,OAAc,MAAPA,GAAkC,MAAnBA,EAAIwzB,aACY,mBAA7BxzB,EAAIwzB,YAAY4iF,UAA2Bp2G,EAAIwzB,YAAY4iF,SAASp2G,K,6BCP/E,IAAIq2G,EAAM,GAAGhuH,eA6Bb,SAASmjG,EAAMA,GAKb,OAJKA,GAA0B,iBAAVA,IACnBA,EAAQ,IAGH/gE,EAAM+gE,EAAMvxF,MAAQ,IAAMwwB,EAAM+gE,EAAMtxF,QAG/C,SAASq9D,EAAS5iD,GAKhB,OAJKA,GAAsB,iBAARA,IACjBA,EAAM,IAGD62E,EAAM72E,EAAI80B,OAAS,IAAM+hD,EAAM72E,EAAIi1B,KAG5C,SAASnf,EAAMngC,GACb,OAAOA,GAA0B,iBAAVA,EAAqBA,EAAQ,EA5CtDwF,EAAOiD,QAEP,SAAmBzI,GAEjB,IAAKA,GAA0B,iBAAVA,EACnB,MAAO,GAIT,GAAI+rH,EAAI/tH,KAAKgC,EAAO,aAAe+rH,EAAI/tH,KAAKgC,EAAO,QACjD,OAAOitE,EAASjtE,EAAMitE,UAIxB,GAAI8+C,EAAI/tH,KAAKgC,EAAO,UAAY+rH,EAAI/tH,KAAKgC,EAAO,OAC9C,OAAOitE,EAASjtE,GAIlB,GAAI+rH,EAAI/tH,KAAKgC,EAAO,SAAW+rH,EAAI/tH,KAAKgC,EAAO,UAC7C,OAAOkhG,EAAMlhG,GAIf,MAAO,K,6BC1BT,IAAI+rH,EAAM,GAAGhuH,eAEbyH,EAAOiD,QAAUsjH,G,6BCWjBvmH,EAAOiD,QAXP,SAAoBujH,GAIlB,IAHA,IAAI7rF,GAAS,EACT8jB,EAAO,IAEF9jB,EAAQ6rF,EAAOvqH,QACtBwiD,GAAiC,iBAAlB+nE,EAAO7rF,GAAsB6rF,EAAO7rF,GAAO1+B,OAAS,EAGrE,OAAOwiD,I,6BCVT,IAAI5f,EAAS,EAAQ,IACjB8lE,EAAgB,EAAQ,IACxBQ,EAAU,EAAQ,IAkGtB,SAASshB,EAAW5zB,EAAQ6zB,GAkB1B,IAjBA,IASI9+B,EACA/tC,EACAlf,EACAgsF,EACA7sE,EACAyoC,EAdA7oE,EAAQm5E,EAAO6zB,GAAY,GAC3B18G,EAAU6oF,EAAO6zB,GAAY,GAC7BE,EAAgBF,EAAa,EAC7BG,EAAiB,GACjBC,EACFptG,EAAMqtG,YAAc/8G,EAAQ47F,OAAOlsF,EAAMstG,aAAattG,EAAMigC,OAC1DstE,EAAcH,EAAUj0B,OACxBq0B,EAAQ,GACRC,EAAO,GASJztG,GAAO,CAEZ,KAAOm5E,IAAS+zB,GAAe,KAAOltG,IAItCmtG,EAAe/sH,KAAK8sH,GAEfltG,EAAMqtG,aACTn/B,EAAS59E,EAAQ+oF,YAAYr5E,GAExBA,EAAM3N,MACT67E,EAAO9tF,KAAK,MAGV+/C,GACFitE,EAAUM,WAAW1tG,EAAMigC,OAGzBjgC,EAAM2tG,6BACRP,EAAUQ,oCAAqC,GAGjDR,EAAUztC,MAAMuO,GAEZluE,EAAM2tG,6BACRP,EAAUQ,wCAAqCvrH,IAInD89C,EAAWngC,EACXA,EAAQA,EAAM3N,KAOhB,IAHA2N,EAAQmgC,EACRlf,EAAQssF,EAAYhrH,OAEb0+B,KAGyB,UAA1BssF,EAAYtsF,GAAO,GACrBgsF,GAAU,EAGVA,GACAM,EAAYtsF,GAAO,GAAGl6B,OAASwmH,EAAYtsF,EAAQ,GAAG,GAAGl6B,MACzDwmH,EAAYtsF,GAAO,GAAGgf,MAAMxvC,OAAS88G,EAAYtsF,GAAO,GAAGmf,IAAI3vC,OAE/D+jB,EAAI+4F,EAAYllH,MAAM44B,EAAQ,EAAGmf,IAEjCpgC,EAAMqtG,WAAartG,EAAM3N,UAAOhQ,EAChC2d,EAAQA,EAAMmgC,SACdC,EAAMnf,EAAQ,GAWlB,IANAmsF,EAAUj0B,OAASn5E,EAAMqtG,WAAartG,EAAM3N,UAAOhQ,EAEnDmyB,EAAI+4F,EAAYllH,MAAM,EAAG+3C,IACzBnf,GAAS,EACT4nD,EAAS,IAEA5nD,EAAQusF,EAAMjrH,QACrBkrH,EAAK5kC,EAAS2kC,EAAMvsF,GAAO,IAAM4nD,EAAS2kC,EAAMvsF,GAAO,GACvD4nD,GAAU2kC,EAAMvsF,GAAO,GAAKusF,EAAMvsF,GAAO,GAAK,EAGhD,OAAOwsF,EAEP,SAASj5F,EAAInsB,GACX,IAAI43C,EAAQktE,EAAermH,MAC3B0mH,EAAMj5C,QAAQ,CAACt0B,EAAOA,EAAQ53C,EAAM9F,OAAS,IAC7C0oG,EAAc9R,EAAQl5C,EAAO,EAAG53C,IAIpC/B,EAAOiD,QAhMP,SAAqB4vF,GAWnB,IAVA,IAEI1xD,EACAomF,EACAC,EACAC,EACA15C,EACA25C,EACAC,EARAT,EAAQ,GACRvsF,GAAS,IASJA,EAAQk4D,EAAO52F,QAAQ,CAC9B,KAAO0+B,KAASusF,GACdvsF,EAAQusF,EAAMvsF,GAMhB,GAHAwG,EAAQ0xD,EAAOl4D,GAIbA,GACkB,cAAlBwG,EAAM,GAAG1gC,MACqB,mBAA9BoyF,EAAOl4D,EAAQ,GAAG,GAAGl6B,QAGrB+mH,EAAa,IADbE,EAAYvmF,EAAM,GAAG4lF,WAAWl0B,QAIP52F,QACW,oBAAlCyrH,EAAUF,GAAY,GAAG/mH,OAEzB+mH,GAAc,GAIdA,EAAaE,EAAUzrH,QACW,YAAlCyrH,EAAUF,GAAY,GAAG/mH,MAEzB,OAAS+mH,EAAaE,EAAUzrH,QACQ,YAAlCyrH,EAAUF,GAAY,GAAG/mH,MAIS,cAAlCinH,EAAUF,GAAY,GAAG/mH,OAC3BinH,EAAUF,GAAY,GAAGH,4BAA6B,EACtDG,KAMR,GAAiB,UAAbrmF,EAAM,GACJA,EAAM,GAAG6lF,cACXnoF,EAAOqoF,EAAOT,EAAW5zB,EAAQl4D,IACjCA,EAAQusF,EAAMvsF,GACdgtF,GAAO,QAGN,GAAIxmF,EAAM,GAAGymF,YAAczmF,EAAM,GAAG0mF,yBAA0B,CAIjE,IAHAL,EAAa7sF,EACb4sF,OAAYxrH,EAELyrH,MAIoB,gBAHzBC,EAAa50B,EAAO20B,IAGP,GAAG/mH,MACS,oBAAvBgnH,EAAW,GAAGhnH,OAEQ,UAAlBgnH,EAAW,KACTF,IACF10B,EAAO00B,GAAW,GAAG9mH,KAAO,mBAG9BgnH,EAAW,GAAGhnH,KAAO,aACrB8mH,EAAYC,GAOdD,IAEFpmF,EAAM,GAAG2Y,IAAMqrD,EAAQtS,EAAO00B,GAAW,GAAG5tE,QAE5Co0B,EAAa8kB,EAAO9wF,MAAMwlH,EAAW5sF,IAC1BszC,QAAQ9sC,GACnBwjE,EAAc9R,EAAQ00B,EAAW5sF,EAAQ4sF,EAAY,EAAGx5C,KAK9D,OAAQ45C,I,6BCjGVtvH,OAAOoC,eAAewI,EAAS,aAAc,CAACzI,OAAO,IAErD,IAAIqkC,EAAS,EAAQ,IACjBsmE,EAAU,EAAQ,IAElBxqB,EAAOmtC,EAAkB,QACzB33G,EAAS23G,EAAkB,UAC3Btf,EAAW,CACb1D,WAAYijB,KAGd,SAASD,EAAkBltF,GACzB,MAAO,CACL63D,SAMF,SAAwBn0C,GACtB,IAAI43B,EAAOz5E,KACPmoG,EAAanoG,KAAKmpG,OAAOhB,WAAWhqE,GACpC+/C,EAAOr8B,EAAQynD,QAAQnB,EAAYjrD,EAAOquE,GAC9C,OAAOruE,EAEP,SAASA,EAAMsB,GACb,OAAOgtE,EAAQhtE,GAAQ0/B,EAAK1/B,GAAQ+sE,EAAQ/sE,GAG9C,SAAS+sE,EAAQ/sE,GACf,GAAa,OAATA,EAOJ,OAFAqD,EAAQI,MAAM,QACdJ,EAAQK,QAAQ1D,GACT39C,EANLghD,EAAQK,QAAQ1D,GASpB,SAAS39C,EAAK29C,GACZ,OAAIgtE,EAAQhtE,IACVqD,EAAQM,KAAK,QACN+7B,EAAK1/B,KAGdqD,EAAQK,QAAQ1D,GACT39C,GAGT,SAAS2qH,EAAQhtE,GACf,IAAIj4C,EAAO4hG,EAAW3pD,GAClBtgB,GAAS,EAEb,GAAa,OAATsgB,EACF,OAAO,EAGT,GAAIj4C,EACF,OAAS23B,EAAQ33B,EAAK/G,QACpB,IACG+G,EAAK23B,GAAOkf,UACb72C,EAAK23B,GAAOkf,SAASrhD,KAAK09E,EAAMA,EAAKr8B,UAErC,OAAO,IAlDfirD,WAAYijB,EACA,SAAVntF,EAAmBstF,OAAyBnsH,IAyDlD,SAASgsH,EAAeI,GACtB,OAEA,SAAwBt1B,EAAQ7oF,GAC9B,IACI00C,EADA/jB,GAAS,EAIb,OAASA,GAASk4D,EAAO52F,aACTF,IAAV2iD,EACEm0C,EAAOl4D,IAAoC,SAA1Bk4D,EAAOl4D,GAAO,GAAGl6B,OACpCi+C,EAAQ/jB,EACRA,KAEQk4D,EAAOl4D,IAAoC,SAA1Bk4D,EAAOl4D,GAAO,GAAGl6B,OAExCk6B,IAAU+jB,EAAQ,IACpBm0C,EAAOn0C,GAAO,GAAG5E,IAAM+4C,EAAOl4D,EAAQ,GAAG,GAAGmf,IAC5C+4C,EAAOt2F,OAAOmiD,EAAQ,EAAG/jB,EAAQ+jB,EAAQ,GACzC/jB,EAAQ+jB,EAAQ,GAGlBA,OAAQ3iD,GAIZ,OAAOosH,EAAgBA,EAAct1B,EAAQ7oF,GAAW6oF,GAU5D,SAASq1B,EAAuBr1B,EAAQ7oF,GAWtC,IAVA,IACIw8G,EACAlpH,EACA4pF,EACAvsD,EACAytF,EACA3pE,EACA4pE,EACA3uG,EARAgtG,GAAc,IAUTA,GAAc7zB,EAAO52F,QAC5B,IACGyqH,IAAe7zB,EAAO52F,QACU,eAA/B42F,EAAO6zB,GAAY,GAAGjmH,OACW,SAAnCoyF,EAAO6zB,EAAa,GAAG,GAAGjmH,KAC1B,CAQA,IAPAnD,EAAOu1F,EAAO6zB,EAAa,GAAG,GAE9B/rF,GADA6rF,EAASx8G,EAAQ+oF,YAAYz1F,IACdrB,OACfmsH,GAAe,EACf3pE,EAAO,EACP4pE,OAAOtsH,EAEA4+B,KAGL,GAAqB,iBAFrBusD,EAAQs/B,EAAO7rF,IAEgB,CAG7B,IAFAytF,EAAclhC,EAAMjrF,OAEyB,KAAtCirF,EAAMthF,WAAWwiH,EAAc,IACpC3pE,IACA2pE,IAGF,GAAIA,EAAa,MACjBA,GAAe,OAEZ,IAAe,IAAXlhC,EACPmhC,GAAO,EACP5pE,SACK,IAAe,IAAXyoC,EACN,CAEHvsD,IACA,MAIA8jB,IACF/kC,EAAQ,CACNjZ,KACEimH,IAAe7zB,EAAO52F,QAAUosH,GAAQ5pE,EAAO,EAC3C,aACA,oBACN9E,MAAO,CACLxvC,KAAM7M,EAAKw8C,IAAI3vC,KACfC,OAAQ9M,EAAKw8C,IAAI1vC,OAASq0C,EAC1B5uB,OAAQvyB,EAAKw8C,IAAIjqB,OAAS4uB,EAC1B6pE,OAAQhrH,EAAKq8C,MAAM2uE,OAAS3tF,EAC5B4tF,aAAc5tF,EACVytF,EACA9qH,EAAKq8C,MAAM4uE,aAAeH,GAEhCtuE,IAAKqrD,EAAQ7nG,EAAKw8C,MAEpBx8C,EAAKw8C,IAAMqrD,EAAQzrF,EAAMigC,OAErBr8C,EAAKq8C,MAAM9pB,SAAWvyB,EAAKw8C,IAAIjqB,OACjCgP,EAAOvhC,EAAMoc,IAEbm5E,EAAOt2F,OACLmqH,EACA,EACA,CAAC,QAAShtG,EAAO1P,GACjB,CAAC,OAAQ0P,EAAO1P,IAElB08G,GAAc,IAIlBA,IAIJ,OAAO7zB,EAGT5vF,EAAQulG,SAAWA,EACnBvlG,EAAQkN,OAASA,EACjBlN,EAAQ03E,KAAOA,G,6BC7Lf36E,EAAOiD,QARP,SAAsBg4C,GACpB,OAGEA,EAAO,IAAe,MAATA,I,6BCHjB,IAAIm7C,EAIJp2F,EAAOiD,QAEP,SAAsBulH,GACpB,IACIC,EADAC,EAAS,IAAMF,EAAa,IAYhC,IATApyB,EAAKA,GAAMl3F,SAASC,cAAc,MAC/Bm3E,UAAYoyC,EATD,MAUdD,EAAOryB,EAAG1uB,aAOD9hE,WAAW6iH,EAAKxsH,OAAS,IAAmC,SAAfusH,EACpD,OAAO,EAIT,OAAOC,IAASC,GAAiBD,I,6BC1BnC,IAEIE,EAFa,EAAQ,GAER11B,CAAW,MAE5BjzF,EAAOiD,QAAU0lH,G,6BCJjB,IAAIC,EAAe,EAAQ,KACvB5jB,EAA4B,EAAQ,IACpC1S,EAAqB,EAAQ,IA8HjCtyF,EAAOiD,QA3HP,SACEq7C,EACAC,EACAm0C,EACAjyF,EACAooH,EACAC,EACAC,EACAC,EACA7vG,GAEA,IAAIqmB,EAAQrmB,GAAOqlC,IACfyqE,EAAU,EACd,OAEA,SAAehuE,GACb,GAAa,KAATA,EAMF,OALAqD,EAAQI,MAAMj+C,GACd69C,EAAQI,MAAMmqE,GACdvqE,EAAQI,MAAMoqE,GACdxqE,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAKkqE,GACNI,EAGT,GAAIN,EAAa3tE,IAAkB,KAATA,EACxB,OAAOy3C,EAAIz3C,GASb,OANAqD,EAAQI,MAAMj+C,GACd69C,EAAQI,MAAMqqE,GACdzqE,EAAQI,MAAMsqE,GACd1qE,EAAQI,MAAM,cAAe,CAC3BsoE,YAAa,WAERmC,EAAeluE,IAGxB,SAASiuE,EAA0BjuE,GACjC,OAAa,KAATA,GACFqD,EAAQI,MAAMoqE,GACdxqE,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAKkqE,GACbxqE,EAAQM,KAAKiqE,GACbvqE,EAAQM,KAAKn+C,GACN89C,IAGTD,EAAQI,MAAMsqE,GACd1qE,EAAQI,MAAM,cAAe,CAC3BsoE,YAAa,WAERoC,EAAoBnuE,IAG7B,SAASmuE,EAAoBnuE,GAC3B,OAAa,KAATA,GACFqD,EAAQM,KAAK,eACbN,EAAQM,KAAKoqE,GACNE,EAA0BjuE,IAGtB,OAATA,GAA0B,KAATA,GAAeq3C,EAAmBr3C,GAC9Cy3C,EAAIz3C,IAGbqD,EAAQK,QAAQ1D,GACA,KAATA,EAAcouE,EAA4BD,GAGnD,SAASC,EAA0BpuE,GACjC,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCqD,EAAQK,QAAQ1D,GACTmuE,GAGFA,EAAoBnuE,GAG7B,SAASkuE,EAAeluE,GACtB,OAAa,KAATA,IACIguE,EAAUzpF,EAAckzD,EAAIz3C,IAClCqD,EAAQK,QAAQ1D,GACTkuE,GAGI,KAATluE,EACGguE,KAQL3qE,EAAQK,QAAQ1D,GACTkuE,IARL7qE,EAAQM,KAAK,eACbN,EAAQM,KAAKoqE,GACb1qE,EAAQM,KAAKmqE,GACbzqE,EAAQM,KAAKn+C,GACN89C,EAAGtD,IAOD,OAATA,GAAiB+pD,EAA0B/pD,GACzCguE,EAAgBv2B,EAAIz3C,IACxBqD,EAAQM,KAAK,eACbN,EAAQM,KAAKoqE,GACb1qE,EAAQM,KAAKmqE,GACbzqE,EAAQM,KAAKn+C,GACN89C,EAAGtD,IAGR2tE,EAAa3tE,GAAcy3C,EAAIz3C,IACnCqD,EAAQK,QAAQ1D,GACA,KAATA,EAAcquE,EAAuBH,GAG9C,SAASG,EAAqBruE,GAC5B,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCqD,EAAQK,QAAQ1D,GACTkuE,GAGFA,EAAeluE,M,6BC5H1B,IAAIq3C,EAAqB,EAAQ,IAC7Bj0C,EAAgB,EAAQ,IAoF5Br+C,EAAOiD,QAjFP,SAAsBq7C,EAASC,EAAIm0C,EAAKjyF,EAAM8oH,EAAYP,GACxD,IAEI1rH,EAFA44E,EAAOz5E,KACPgiD,EAAO,EAEX,OAEA,SAAexD,GAMb,OALAqD,EAAQI,MAAMj+C,GACd69C,EAAQI,MAAM6qE,GACdjrE,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK2qE,GACbjrE,EAAQI,MAAMsqE,GACPf,GAGT,SAASA,EAAQhtE,GACf,OACW,OAATA,GACS,KAATA,GACU,KAATA,IAAgB39C,GAEP,KAAT29C,IAEEwD,GAED,2BAA4By3B,EAAK0vB,OAAOhB,YAC1CnmD,EAAO,IAEAi0C,EAAIz3C,GAGA,KAATA,GACFqD,EAAQM,KAAKoqE,GACb1qE,EAAQI,MAAM6qE,GACdjrE,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK2qE,GACbjrE,EAAQM,KAAKn+C,GACN89C,GAGL+zC,EAAmBr3C,IACrBqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACNqpE,IAGT3pE,EAAQI,MAAM,cAAe,CAC3BsoE,YAAa,WAERn+E,EAAMoS,IAGf,SAASpS,EAAMoS,GACb,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACAq3C,EAAmBr3C,IACnBwD,IAAS,KAETH,EAAQM,KAAK,eACNqpE,EAAQhtE,KAGjBqD,EAAQK,QAAQ1D,GAChB39C,EAAOA,IAAS+gD,EAAcpD,GACd,KAATA,EAAcuuE,EAAc3gF,GAGrC,SAAS2gF,EAAYvuE,GACnB,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCqD,EAAQK,QAAQ1D,GAChBwD,IACO5V,GAGFA,EAAMoS,M,6BCjFjB,IAAIq3C,EAAqB,EAAQ,IAC7Bj0C,EAAgB,EAAQ,IACxBk0C,EAAe,EAAQ,IA2B3BvyF,EAAOiD,QAzBP,SAA2Bq7C,EAASC,GAClC,IAAIkrE,EACJ,OAEA,SAAS9vE,EAAMsB,GACb,GAAIq3C,EAAmBr3C,GAKrB,OAJAqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACb6qE,GAAO,EACA9vE,EAGT,GAAI0E,EAAcpD,GAChB,OAAOs3C,EACLj0C,EACA3E,EACA8vE,EAAO,aAAe,aAHjBl3B,CAILt3C,GAGJ,OAAOsD,EAAGtD,M,6BCzBd,IAAIq3C,EAAqB,EAAQ,IAC7BC,EAAe,EAAQ,IAuE3BvyF,EAAOiD,QArEP,SAAsBq7C,EAASC,EAAIm0C,EAAKjyF,EAAM8oH,EAAYP,GACxD,IAAIU,EACJ,OAEA,SAAezuE,GAMb,OALAqD,EAAQI,MAAMj+C,GACd69C,EAAQI,MAAM6qE,GACdjrE,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK2qE,GACbG,EAAkB,KAATzuE,EAAc,GAAKA,EACrB0uE,GAGT,SAASA,EAAkB1uE,GACzB,OAAIA,IAASyuE,GACXprE,EAAQI,MAAM6qE,GACdjrE,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK2qE,GACbjrE,EAAQM,KAAKn+C,GACN89C,IAGTD,EAAQI,MAAMsqE,GACPY,EAAa3uE,IAGtB,SAAS2uE,EAAa3uE,GACpB,OAAIA,IAASyuE,GACXprE,EAAQM,KAAKoqE,GACNW,EAAkBD,IAGd,OAATzuE,EACKy3C,EAAIz3C,GAGTq3C,EAAmBr3C,IACrBqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACN2zC,EAAaj0C,EAASsrE,EAAc,gBAG7CtrE,EAAQI,MAAM,cAAe,CAC3BsoE,YAAa,WAERj/E,EAAMkT,IAGf,SAASlT,EAAMkT,GACb,OAAIA,IAASyuE,GAAmB,OAATzuE,GAAiBq3C,EAAmBr3C,IACzDqD,EAAQM,KAAK,eACNgrE,EAAa3uE,KAGtBqD,EAAQK,QAAQ1D,GACA,KAATA,EAAc4uE,EAAc9hF,GAGrC,SAAS8hF,EAAY5uE,GACnB,OAAIA,IAASyuE,GAAmB,KAATzuE,GACrBqD,EAAQK,QAAQ1D,GACTlT,GAGFA,EAAMkT,M,6BCpEjB,IAAIq3C,EAAqB,EAAQ,IAC7Bj0C,EAAgB,EAAQ,IACxBk0C,EAAe,EAAQ,IAEvBu3B,EAAgB,CAClB3vH,KAAM,gBACNs4F,SAGF,SAA+Bn0C,EAASC,EAAIm0C,GAC1C,IACIg3B,EADAjrE,EAAO,EAEX,OAEA,SAAexD,GAGb,OAFAqD,EAAQI,MAAM,iBACdgrE,EAASzuE,EACFgtE,EAAQhtE,IAGjB,SAASgtE,EAAQhtE,GACf,OAAIA,IAASyuE,GACXprE,EAAQI,MAAM,yBACPqrE,EAAS9uE,IAGdoD,EAAcpD,GACTs3C,EAAaj0C,EAAS2pE,EAAS,aAA/B11B,CAA6Ct3C,GAGlDwD,EAAO,GAAe,OAATxD,IAAkBq3C,EAAmBr3C,GAC7Cy3C,EAAIz3C,IAGbqD,EAAQM,KAAK,iBACNL,EAAGtD,IAGZ,SAAS8uE,EAAS9uE,GAChB,OAAIA,IAASyuE,GACXprE,EAAQK,QAAQ1D,GAChBwD,IACOsrE,IAGTzrE,EAAQM,KAAK,yBACNqpE,EAAQhtE,OAInBj7C,EAAOiD,QAAU6mH,G,cCpDjB9pH,EAAOiD,QAAU,SAASjD,GAoBzB,OAnBKA,EAAOkT,kBACXlT,EAAO8X,UAAY,aACnB9X,EAAOgqH,MAAQ,GAEVhqH,EAAOjG,WAAUiG,EAAOjG,SAAW,IACxC1B,OAAOoC,eAAeuF,EAAQ,SAAU,CACvC3F,YAAY,EACZC,IAAK,WACJ,OAAO0F,EAAO9C,KAGhB7E,OAAOoC,eAAeuF,EAAQ,KAAM,CACnC3F,YAAY,EACZC,IAAK,WACJ,OAAO0F,EAAOhE,KAGhBgE,EAAOkT,gBAAkB,GAEnBlT,I,iBCXA,SAAW09G,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,8FAA8FlY,MAClG,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,4DAA4Djc,MAClE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CqgB,cAAe,SACf/B,KAAM,SAAUrR,GACZ,MAAO,QAAQrM,KAAKqM,IAExBkC,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACDsY,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCniB,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNjiB,EAAG,mBACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,YACJrnB,EAAG,SACHsnB,GAAI,SACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,WACHke,GAAI,YACJhe,EAAG,UACHie,GAAI,WAERV,uBAAwB,kBACxBnM,QAAS,SAAUjB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhE6I,KAAM,CACFL,IAAK,EACLC,IAAK,KArEyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETC,EAAa,SAAU/mH,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVgnH,EAAU,CACN7mH,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJf,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJnE,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJoE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJmF,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRuiH,EAAY,SAAUpiH,GAClB,OAAO,SAAUgQ,EAAQ6d,EAAermB,EAAQurB,GAC5C,IAAI5yB,EAAI+hH,EAAWlyG,GACf3M,EAAM8+G,EAAQniH,GAAGkiH,EAAWlyG,IAIhC,OAHU,IAAN7P,IACAkD,EAAMA,EAAIwqB,EAAgB,EAAI,IAE3BxqB,EAAIvF,QAAQ,MAAOkS,KAGlC4F,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGCm/F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQA,EACRD,YAAaC,EACb+D,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,wCAAwChc,MAAM,KAC7D+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUrR,GACZ,MAAO,MAAQA,GAEnBkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,IAEA,KAGfvH,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNjiB,EAAG8mH,EAAU,KACb5kG,GAAI4kG,EAAU,KACd7nH,EAAG6nH,EAAU,KACb3kG,GAAI2kG,EAAU,KACdhsH,EAAGgsH,EAAU,KACb1kG,GAAI0kG,EAAU,KACd5nH,EAAG4nH,EAAU,KACbzkG,GAAIykG,EAAU,KACdziH,EAAGyiH,EAAU,KACbvkG,GAAIukG,EAAU,KACdviH,EAAGuiH,EAAU,KACbtkG,GAAIskG,EAAU,MAElB/9F,SAAU,SAAU7c,GAChB,OAAOA,EACF1J,QAAQ,iBAAiB,SAAU+I,GAChC,OAAOo7G,EAAUp7G,MAEpB/I,QAAQ,KAAM,MAEvB8vB,WAAY,SAAUpmB,GAClB,OAAOA,EACF1J,QAAQ,OAAO,SAAU+I,GACtB,OAAOy6G,EAAUz6G,MAEpB/I,QAAQ,KAAM,MAEvB+a,KAAM,CACFL,IAAK,EACLC,IAAK,MAzLyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIzB;IAAImN,EAAa,SAAU/mH,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVgnH,EAAU,CACN7mH,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJf,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJnE,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJoE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJmF,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRuiH,EAAY,SAAUpiH,GAClB,OAAO,SAAUgQ,EAAQ6d,EAAermB,EAAQurB,GAC5C,IAAI5yB,EAAI+hH,EAAWlyG,GACf3M,EAAM8+G,EAAQniH,GAAGkiH,EAAWlyG,IAIhC,OAHU,IAAN7P,IACAkD,EAAMA,EAAIwqB,EAAgB,EAAI,IAE3BxqB,EAAIvF,QAAQ,MAAOkS,KAGlC4F,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGGm/F,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQA,EACRD,YAAaC,EACb+D,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,wCAAwChc,MAAM,KAC7D+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUrR,GACZ,MAAO,MAAQA,GAEnBkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,IAEA,KAGfvH,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNjiB,EAAG8mH,EAAU,KACb5kG,GAAI4kG,EAAU,KACd7nH,EAAG6nH,EAAU,KACb3kG,GAAI2kG,EAAU,KACdhsH,EAAGgsH,EAAU,KACb1kG,GAAI0kG,EAAU,KACd5nH,EAAG4nH,EAAU,KACbzkG,GAAIykG,EAAU,KACdziH,EAAGyiH,EAAU,KACbvkG,GAAIukG,EAAU,KACdviH,EAAGuiH,EAAU,KACbtkG,GAAIskG,EAAU,MAElBx0F,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC+a,KAAM,CACFL,IAAK,EACLC,IAAK,KAtJyBgf,CAAQ,EAAQ,K,iBCDlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wEAAwElY,MAC5E,KAEJiY,YAAa,wEAAwEjY,MACjF,KAEJic,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,wCAAwChc,MAAM,KAC7D+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,OACHkiB,GAAI,WACJjjB,EAAG,QACHkjB,GAAI,WACJrnB,EAAG,OACHsnB,GAAI,WACJljB,EAAG,MACHmjB,GAAI,UACJhe,EAAG,MACHke,GAAI,UACJhe,EAAG,MACHie,GAAI,YAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,MApDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPE,EAAa,SAAU/mH,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVgnH,EAAU,CACN7mH,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJf,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJnE,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJoE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJmF,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRuiH,EAAY,SAAUpiH,GAClB,OAAO,SAAUgQ,EAAQ6d,EAAermB,EAAQurB,GAC5C,IAAI5yB,EAAI+hH,EAAWlyG,GACf3M,EAAM8+G,EAAQniH,GAAGkiH,EAAWlyG,IAIhC,OAHU,IAAN7P,IACAkD,EAAMA,EAAIwqB,EAAgB,EAAI,IAE3BxqB,EAAIvF,QAAQ,MAAOkS,KAGlC4F,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGGm/F,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQA,EACRD,YAAaC,EACb+D,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,wCAAwChc,MAAM,KAC7D+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUrR,GACZ,MAAO,MAAQA,GAEnBkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,IAEA,KAGfvH,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNjiB,EAAG8mH,EAAU,KACb5kG,GAAI4kG,EAAU,KACd7nH,EAAG6nH,EAAU,KACb3kG,GAAI2kG,EAAU,KACdhsH,EAAGgsH,EAAU,KACb1kG,GAAI0kG,EAAU,KACd5nH,EAAG4nH,EAAU,KACbzkG,GAAIykG,EAAU,KACdziH,EAAGyiH,EAAU,KACbvkG,GAAIukG,EAAU,KACdviH,EAAGuiH,EAAU,KACbtkG,GAAIskG,EAAU,MAElB/9F,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC8vB,WAAY,SAAUpmB,GAClB,OAAOA,EACF1J,QAAQ,OAAO,SAAU+I,GACtB,OAAOy6G,EAAUz6G,MAEpB/I,QAAQ,KAAM,MAEvB+a,KAAM,CACFL,IAAK,EACLC,IAAK,MAzKyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wEAAwElY,MAC5E,KAEJiY,YAAa,wEAAwEjY,MACjF,KAEJic,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,wCAAwChc,MAAM,KAC7D+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,OACHkiB,GAAI,WACJjjB,EAAG,QACHkjB,GAAI,WACJrnB,EAAG,OACHsnB,GAAI,WACJljB,EAAG,MACHmjB,GAAI,UACJhe,EAAG,MACHke,GAAI,UACJhe,EAAG,MACHie,GAAI,YAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KApDyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFlN,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,6EAA6ElY,MACjF,KAEJiY,YAAa,6EAA6EjY,MACtF,KAEJic,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,wCAAwChc,MAAM,KAC7D+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,MACf/B,KAAM,SAAUrR,GACZ,MAAO,MAAQA,GAEnBkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,IAEA,KAGfvH,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,OACHkiB,GAAI,WACJjjB,EAAG,QACHkjB,GAAI,WACJrnB,EAAG,OACHsnB,GAAI,WACJljB,EAAG,MACHmjB,GAAI,UACJhe,EAAG,MACHke,GAAI,UACJhe,EAAG,MACHie,GAAI,YAERuG,SAAU,SAAU7c,GAChB,OAAOA,EACF1J,QAAQ,iBAAiB,SAAU+I,GAChC,OAAOo7G,EAAUp7G,MAEpB/I,QAAQ,KAAM,MAEvB8vB,WAAY,SAAUpmB,GAClB,OAAOA,EACF1J,QAAQ,OAAO,SAAU+I,GACtB,OAAOy6G,EAAUz6G,MAEpB/I,QAAQ,KAAM,MAEvB+a,KAAM,CACFL,IAAK,EACLC,IAAK,KAtGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,yEAAyElY,MAC7E,KAEJiY,YAAa,yEAAyEjY,MAClF,KAEJic,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,wCAAwChc,MAAM,KAC7D+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,OACHkiB,GAAI,WACJjjB,EAAG,QACHkjB,GAAI,WACJrnB,EAAG,OACHsnB,GAAI,WACJljB,EAAG,MACHmjB,GAAI,UACJhe,EAAG,MACHke,GAAI,UACJhe,EAAG,MACHie,GAAI,YAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KApDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuN,EAAW,CACXf,EAAG,QACHI,EAAG,QACHG,EAAG,QACHS,GAAI,QACJC,GAAI,QACJhB,EAAG,OACHK,EAAG,OACHY,GAAI,OACJC,GAAI,OACJjB,EAAG,QACHC,EAAG,QACHiB,IAAK,QACLf,EAAG,OACHG,EAAG,QACHa,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SAGChO,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,+EAA+ElY,MACnF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,qEAAqEjc,MAC3E,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNjiB,EAAG,kBACHkiB,GAAI,YACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,QACJhe,EAAG,SACHie,GAAI,SAERC,cAAe,0BACf/B,KAAM,SAAUrR,GACZ,MAAO,mBAAmBrM,KAAKqM,IAEnCkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGf3G,uBAAwB,wCACxBnM,QAAS,SAAUjB,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI7X,EAAI6X,EAAS,GAGjB,OAAOA,GAAUsyG,EAASnqH,IAAMmqH,EAFvBtyG,EAAS,IAAO7X,IAEsBmqH,EADvCtyG,GAAU,IAAM,IAAM,QAGlC6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAnGyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAYzB;SAASiO,EAAuBhzG,EAAQ6d,EAAe5yB,GACnD,IATkB4hC,EACdomF,EAgBJ,MAAY,MAARhoH,EACO4yB,EAAgB,UAAY,UACpB,MAAR5yB,EACA4yB,EAAgB,UAAY,UAE5B7d,EAAS,KAtBF6sB,GAsB6B7sB,EArB3CizG,EAQS,CACTzlG,GAAIqQ,EAAgB,yBAA2B,yBAC/CpQ,GAAIoQ,EAAgB,yBAA2B,yBAC/CnQ,GAAImQ,EAAgB,yBAA2B,yBAC/ClQ,GAAI,iBACJE,GAAI,uBACJC,GAAI,kBAOgC7iB,GArBvByC,MAAM,KAChBm/B,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjComF,EAAM,GACNpmF,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEomF,EAAM,GACNA,EAAM,IAoBPlO,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJnK,OAAQ,uGAAuG/N,MAC3G,KAEJwlH,WAAY,qGAAqGxlH,MAC7G,MAGRiY,YAAa,0DAA0DjY,MACnE,KAEJic,SAAU,CACNlO,OAAQ,0DAA0D/N,MAC9D,KAEJwlH,WAAY,0DAA0DxlH,MAClE,KAEJ01B,SAAU,+CAEd1Z,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNjiB,EAAG,kBACHf,EAAGyoH,EACHvlG,GAAIulG,EACJ5sH,EAAG4sH,EACHtlG,GAAIslG,EACJxoH,EAAG,QACHmjB,GAAIqlG,EACJrjH,EAAG,QACHke,GAAImlG,EACJnjH,EAAG,MACHie,GAAIklG,GAERjlG,cAAe,yBACf/B,KAAM,SAAUrR,GACZ,MAAO,iBAAiBrM,KAAKqM,IAEjCkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGf3G,uBAAwB,mBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQjZ,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAzIyBgf,CAAQ,EAAQ,K,iBCClD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,oFAAoFlY,MACxF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,YACH8e,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNjiB,EAAG,kBACHkiB,GAAI,aACJjjB,EAAG,SACHkjB,GAAI,YACJrnB,EAAG,MACHsnB,GAAI,UACJljB,EAAG,MACHmjB,GAAI,UACJzf,EAAG,UACH0f,GAAI,aACJje,EAAG,QACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,aAERV,uBAAwB,8BACxBnM,QAAS,SAAUjB,GACf,IAAImzG,EAAYnzG,EAAS,GACrBozG,EAAcpzG,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhBozG,EACApzG,EAAS,MACTozG,EAAc,IAAMA,EAAc,GAClCpzG,EAAS,MACK,IAAdmzG,EACAnzG,EAAS,MACK,IAAdmzG,EACAnzG,EAAS,MACK,IAAdmzG,GAAiC,IAAdA,EACnBnzG,EAAS,MAETA,EAAS,OAGxB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KArFyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,8IAA8IlY,MAClJ,KAEJiY,YAAa,iDAAiDjY,MAAM,KACpEic,SAAU,+CAA+Cjc,MAAM,KAC/Dgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNjiB,EAAG,kBACHkiB,GAAI,aACJjjB,EAAG,eACHkjB,GAAI,YACJrnB,EAAG,aACHsnB,GAAI,UACJljB,EAAG,aACHmjB,GAAI,UACJhe,EAAG,aACHke,GAAI,UACJhe,EAAG,YACHie,GAAI,UAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAjDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,mEAAmEjY,MAC5E,KAEJic,SAAU,4DAA4Djc,MAClE,KAEJgc,cAAe,uCAAuChc,MAAM,KAC5D+b,YAAa,kCAAkC/b,MAAM,KACrDiU,eAAgB,CACZqL,GAAI,aACJD,IAAK,gBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVX,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNjiB,EAAG,eACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,WACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,SACJhe,EAAG,SACHie,GAAI,UAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAGzBkX,cAAe,2BACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAGO,QAAblX,GAAsBkX,GAAQ,GACjB,UAAblX,GAAwBkX,EAAO,GACnB,UAAblX,EAEOkX,EAAO,GAEPA,GAGflX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KApHyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFlN,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,mEAAmEjY,MAC5E,KAEJic,SAAU,4DAA4Djc,MAClE,KAEJgc,cAAe,uCAAuChc,MAAM,KAC5D+b,YAAa,kCAAkC/b,MAAM,KACrDiU,eAAgB,CACZqL,GAAI,aACJD,IAAK,gBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVX,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNjiB,EAAG,eACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,WACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,SACJhe,EAAG,SACHie,GAAI,UAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAIzBkX,cAAe,uCACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,QAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAblX,GAEa,SAAbA,EADAkX,EAGa,UAAblX,EACAkX,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAblX,GAEa,YAAbA,EADAkX,EAAO,QACX,GAKXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KA9HyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qJAAqJlY,MACzJ,KAEJiY,YAAa,iEAAiEjY,MAC1E,KAEJmY,iBAAkB,gBAClBwtG,kBAAkB,EAClB1pG,SAAU,gFAAgFjc,MACtF,KAEJgc,cAAe,oDAAoDhc,MAC/D,KAEJ+b,YAAa,6BAA6B/b,MAAM,KAChDiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,QACHkiB,GAAI,YACJjjB,EAAG,aACHkjB,GAAI,WACJrnB,EAAG,cACHsnB,GAAI,YACJljB,EAAG,WACHmjB,GAAI,UACJhe,EAAG,YACHke,GAAI,UACJhe,EAAG,UACHie,GAAI,SAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAGzBkX,cAAe,wCACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAGO,WAAblX,GAAyBkX,GAAQ,GACpB,YAAblX,GAA0BkX,EAAO,GACrB,YAAblX,EAEOkX,EAAO,GAEPA,GAGflX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KAxHyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;SAASuO,EAAyBtzG,EAAQ6d,EAAe5yB,GAMrD,OAAO+U,EAAS,IAoBpB,SAAkBgiE,EAAMhiE,GACpB,OAAe,IAAXA,EAKR,SAAsBgiE,GAClB,IAAIuxC,EAAgB,CAChBhpH,EAAG,IACHnC,EAAG,IACHoC,EAAG,KAEP,YAAsCpH,IAAlCmwH,EAAcvxC,EAAK3xE,OAAO,IACnB2xE,EAEJuxC,EAAcvxC,EAAK3xE,OAAO,IAAM2xE,EAAK/zE,UAAU,GAb3CulH,CAAaxxC,GAEjBA,EAxBeyxC,CALT,CACThmG,GAAI,WACJI,GAAI,MACJF,GAAI,UAE8B1iB,GAAM+U,GAsChD,IAAI+F,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJD,EAAc,6IAqBd4tG,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGC3O,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,gFAAgFlY,MACpF,KAEJiY,YAAa,mDAAmDjY,MAAM,KACtEic,SAAU,6CAA6Cjc,MAAM,KAC7Dgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,wBAAwB/b,MAAM,KAC3Cqc,cAAe2pG,EACfC,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJF,iBAAkBA,EAElB5tG,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAElBpE,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,SACNjiB,EAAG,wBACHkiB,GAAI,YACJjjB,EAAG,cACHkjB,GAAI6lG,EACJltH,EAAG,SACHsnB,GAAI,SACJljB,EAAG,YACHmjB,GAAI2lG,EACJ3jH,EAAG,SACHke,GAAIylG,EACJzjH,EAAG,WACHie,GApIR,SAAiC9N,GAC7B,OAWJ,SAASi0G,EAAWj0G,GAChB,OAAIA,EAAS,EACFi0G,EAAWj0G,EAAS,IAExBA,EAfCi0G,CAAWj0G,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxBoN,uBAAwB,kBACxBnM,QAAS,SAAUjB,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvC6I,KAAM,CACFL,IAAK,EACLC,IAAK,GAETsF,cAAe,YACf/B,KAAM,SAAUjL,GACZ,MAAiB,SAAVA,GAEXlE,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAO/P,EAAO,GAAK,OAAS,UAnKE0T,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;SAASmP,EAAUl0G,EAAQ6d,EAAe5yB,GACtC,IAAIlE,EAASiZ,EAAS,IACtB,OAAQ/U,GACJ,IAAK,KAQD,OANIlE,GADW,IAAXiZ,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,IACD,OAAO6d,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI92B,GADW,IAAXiZ,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,SAGlB,IAAK,IACD,OAAO6d,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI92B,GADW,IAAXiZ,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,OAGlB,IAAK,KAMD,OAJIjZ,GADW,IAAXiZ,EACU,MAEA,OAGlB,IAAK,KAQD,OANIjZ,GADW,IAAXiZ,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,KAQD,OANIjZ,GADW,IAAXiZ,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAMjB+kG,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,8DAA8DjY,MACvE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,4DAA4Djc,MAClE,KAEJgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBiC,QAAS,eACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,cACHkiB,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG,MACHmjB,GAAIumG,EACJvkH,EAAG,SACHke,GAAIqmG,EACJrkH,EAAG,SACHie,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAlJyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJstG,WAAY,oFAAoFxlH,MAC5F,KAEJ+N,OAAQ,qHAAqH/N,MACzH,KAEJ01B,SAAU,mBAEdzd,YAAa,8DAA8DjY,MACvE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,8DAA8Djc,MACpE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,mBACJknG,GAAI,aACJjnG,IAAK,gCACLknG,IAAK,mBACLjnG,KAAM,qCACNknG,KAAM,wBAEV7nG,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjB3oB,KAAK0nB,QAAgB,MAAQ,MAAQ,QAE9DkB,QAAS,WACL,MAAO,YAA+B,IAAjB5oB,KAAK0nB,QAAgB,MAAQ,MAAQ,QAE9DmB,SAAU,WACN,MAAO,YAA+B,IAAjB7oB,KAAK0nB,QAAgB,MAAQ,MAAQ,QAE9DoB,QAAS,WACL,MAAO,YAA+B,IAAjB9oB,KAAK0nB,QAAgB,MAAQ,MAAQ,QAE9DqB,SAAU,WACN,MACI,wBACkB,IAAjB/oB,KAAK0nB,QAAgB,MAAQ,MAC9B,QAGRsB,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,QACNjiB,EAAG,aACHkiB,GAAI,YACJjjB,EAAG,WACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJhe,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,qBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,IAAI1X,EACW,IAAXvB,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXiZ,GAA6B,MAAXA,IAClB1X,EAAS,KAENvB,EAASuB,GAEpBsH,KAAM,CACFL,IAAK,EACLC,IAAK,KA/FyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIn/F,EAAS,oFAAoFlY,MACzF,KAEJiY,EAAc,kDAAkDjY,MAAM,KACtEqY,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJD,EAAc,wJAElB,SAASwuG,EAAOnpH,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAAS+oH,EAAUl0G,EAAQ6d,EAAe5yB,EAAK83B,GAC3C,IAAIh8B,EAASiZ,EAAS,IACtB,OAAQ/U,GACJ,IAAK,IACD,OAAO4yB,GAAiBkF,EAAW,aAAe,gBACtD,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,UAAY,UAEvCjZ,EAAS,YAExB,IAAK,IACD,OAAO82B,EAAgB,SAAWkF,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,SAAW,SAEtCjZ,EAAS,WAExB,IAAK,IACD,OAAO82B,EAAgB,SAAWkF,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,SAAW,SAEtCjZ,EAAS,WAExB,IAAK,IACD,OAAO82B,GAAiBkF,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,MAAQ,OAEnCjZ,EAAS,MAExB,IAAK,IACD,OAAO82B,GAAiBkF,EAAW,QAAU,UACjD,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,SAAW,UAEtCjZ,EAAS,SAExB,IAAK,IACD,OAAO82B,GAAiBkF,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,OAAS,OAEpCjZ,EAAS,QAKvBg+G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQA,EACRD,YAAaA,EACbG,YAAaA,EACbD,iBAAkBC,EAGlB+tG,kBAAmB,uKACnBC,uBAAwB,sDACxB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAClB4D,SAAU,mDAAmDjc,MAAM,KACnEgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN5oB,EAAG,cAEPioB,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnBiC,QAAS,eACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG4oH,EACH1mG,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG0pH,EACHvmG,GAAIumG,EACJvkH,EAAGukH,EACHrmG,GAAIqmG,EACJrkH,EAAGqkH,EACHpmG,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAzKyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,gEAAgElY,MACpE,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,oEAAoEjc,MAC1E,KAEJgc,cAAe,6BAA6Bhc,MAAM,KAClD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVX,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SAAU/L,GAMd,OAAOA,GALK,UAAUhJ,KAAKgJ,GACrB,MACA,QAAQhJ,KAAKgJ,GACb,MACA,QAGVgM,KAAM,YACNjiB,EAAG,iBACHkiB,GAAI,aACJjjB,EAAG,YACHkjB,GAAI,WACJrnB,EAAG,YACHsnB,GAAI,WACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,WACHke,GAAI,UACJhe,EAAG,UACHie,GAAI,UAERV,uBAAwB,cACxBnM,QAAS,SACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA5DyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yFAAyFlY,MAC7F,KAEJiY,YAAa,qDAAqDjY,MAC9D,KAEJic,SAAU,+EAA+Ejc,MACrF,KAEJgc,cAAe,+BAA+Bhc,MAAM,KACpD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EAEpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNjiB,EAAG,mBACHkiB,GAAI,YACJjjB,EAAG,QACHkjB,GAAI,WACJrnB,EAAG,MACHsnB,GAAI,SACJljB,EAAG,UACHmjB,GAAI,aACJhe,EAAG,MACHke,GAAI,SACJhe,EAAG,WACHie,GAAI,cAERV,uBAAwB,mCAExBnM,QAAS,SAAUjB,GACf,IACIuB,EAAS,GAiCb,OAlCQvB,EAyBA,GAEAuB,EADM,KA1BNvB,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXuB,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBAvB,IAkCDA,EAASuB,GAEpBsH,KAAM,CACFL,IAAK,EACLC,IAAK,KA9FyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,sFAAsFlY,MAC1F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,qDAAqDjc,MAAM,KACrEgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,cACHkiB,GAAI,cACJjjB,EAAG,WACHkjB,GAAI,cACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJhe,EAAG,WACHke,GAAI,aACJhe,EAAG,QACHie,GAAI,SAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAnDyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTlR,EAAG,CAAC,cAAe,gBACnBnE,EAAG,CAAC,cAAe,gBACnBoE,EAAG,CAAC,UAAW,aACfmjB,GAAI,CAAC3N,EAAS,QAASA,EAAS,UAChC9R,EAAG,CAAC,aAAc,eAClByB,EAAG,CAAC,YAAa,eACjBke,GAAI,CAAC7N,EAAS,UAAWA,EAAS,YAClCnQ,EAAG,CAAC,WAAY,cAChBie,GAAI,CAAC9N,EAAS,SAAUA,EAAS,YAErC,OAAO6d,EAAgBpiB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAG/C85G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,6DAA6DjY,MACtE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,8DAA8Djc,MACpE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAGgqH,EACH9mG,GAAI,aACJrnB,EAAGmuH,EACH7mG,GAAI,aACJljB,EAAG+pH,EACH5mG,GAAI4mG,EACJrmH,EAAGqmH,EACH3mG,GAAI,YACJje,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA1EyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTlR,EAAG,CAAC,cAAe,gBACnBnE,EAAG,CAAC,cAAe,gBACnBoE,EAAG,CAAC,UAAW,aACfmjB,GAAI,CAAC3N,EAAS,QAASA,EAAS,UAChC9R,EAAG,CAAC,aAAc,eAClByB,EAAG,CAAC,YAAa,eACjBke,GAAI,CAAC7N,EAAS,UAAWA,EAAS,YAClCnQ,EAAG,CAAC,WAAY,cAChBie,GAAI,CAAC9N,EAAS,SAAUA,EAAS,YAErC,OAAO6d,EAAgBpiB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAG7C85G,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,6DAA6DjY,MACtE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,8DAA8Djc,MACpE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAGgqH,EACH9mG,GAAI,aACJrnB,EAAGmuH,EACH7mG,GAAI,aACJljB,EAAG+pH,EACH5mG,GAAI4mG,EACJrmH,EAAGqmH,EACH3mG,GAAI,YACJje,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA1EyBgf,CAAQ,EAAQ,K,iBCAlD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTlR,EAAG,CAAC,cAAe,gBACnBnE,EAAG,CAAC,cAAe,gBACnBoE,EAAG,CAAC,UAAW,aACfmjB,GAAI,CAAC3N,EAAS,QAASA,EAAS,UAChC9R,EAAG,CAAC,aAAc,eAClByB,EAAG,CAAC,YAAa,eACjBke,GAAI,CAAC7N,EAAS,UAAWA,EAAS,YAClCnQ,EAAG,CAAC,WAAY,cAChBie,GAAI,CAAC9N,EAAS,SAAUA,EAAS,YAErC,OAAO6d,EAAgBpiB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAG7C85G,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,6DAA6DjY,MACtE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,8DAA8Djc,MACpE,KAEJgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdQ,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAGgqH,EACH9mG,GAAI,aACJrnB,EAAGmuH,EACH7mG,GAAI,aACJljB,EAAG+pH,EACH5mG,GAAI4mG,EACJrmH,EAAGqmH,EACH3mG,GAAI,YACJje,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA1EyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIn/F,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJ+D,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGCo7F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQA,EACRD,YAAaC,EACb+D,SAAUA,EACVD,cAAeC,EACfF,YAAa,qCAAqC/b,MAAM,KACxDiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,WACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVY,cAAe,QACf/B,KAAM,SAAUrR,GACZ,MAAO,OAASA,GAEpBkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,KAEA,MAGfvH,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,cACRC,KAAM,YACNjiB,EAAG,iBACHkiB,GAAI,cACJjjB,EAAG,WACHkjB,GAAI,YACJrnB,EAAG,aACHsnB,GAAI,cACJljB,EAAG,WACHmjB,GAAI,YACJhe,EAAG,SACHke,GAAI,UACJhe,EAAG,WACHie,GAAI,aAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC8vB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC+a,KAAM,CACFL,IAAK,EACLC,IAAK,MAxFyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAWhBA;EAAOl2F,aAAa,KAAM,CAC/B2lG,mBAAoB,qHAAqH9mH,MACrI,KAEJ+mH,iBAAkB,qHAAqH/mH,MACnI,KAEJkY,OAAQ,SAAU8uG,EAAgBj5G,GAC9B,OAAKi5G,EAGiB,iBAAXj5G,GACP,IAAInN,KAAKmN,EAAOxN,UAAU,EAAGwN,EAAOva,QAAQ,UAGrC4C,KAAK6wH,kBAAkBD,EAAepxG,SAEtCxf,KAAK8wH,oBAAoBF,EAAepxG,SARxCxf,KAAK8wH,qBAWpBjvG,YAAa,oDAAoDjY,MAAM,KACvEic,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CmP,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACDsY,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhC9X,KAAM,SAAUrR,GACZ,MAAyC,OAAjCA,EAAQ,IAAI/D,cAAc,IAEtCmX,cAAe,gBACfpM,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV0nG,WAAY,CACRpoG,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MAAO,gCACX,QACI,MAAO,mCAGnBmC,SAAU,KAEdN,SAAU,SAAUvhB,EAAKqW,GACrB,IApEY3G,EAoER4G,EAASzd,KAAKgxH,YAAY7pH,GAC1BugB,EAAQlK,GAAOA,EAAIkK,QAIvB,OAzEY7Q,EAsEG4G,GApEM,oBAAb7B,UAA4B/E,aAAiB+E,UACX,sBAA1ChgB,OAAOC,UAAU4T,SAAS1T,KAAK8a,MAoE3B4G,EAASA,EAAOnd,MAAMkd,IAEnBC,EAAOzT,QAAQ,KAAM0d,EAAQ,IAAO,EAAI,MAAQ,SAE3D6B,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,oBACHkiB,GAAI,kBACJjjB,EAAG,YACHkjB,GAAI,WACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,WACHmjB,GAAI,WACJhe,EAAG,aACHke,GAAI,WACJhe,EAAG,cACHie,GAAI,aAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAtGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAlEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgBq/B,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAlEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAlEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgBq/B,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAlEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAlEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAlEyBgf,CAAQ,EAAQ,K,iBCMlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,6FAA6FlY,MACjG,KAEJiY,YAAa,oDAAoDjY,MAAM,KACvEic,SAAU,qDAAqDjc,MAAM,KACrEgc,cAAe,gCAAgChc,MAAM,KACrD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNknG,KAAM,uCAEVtmG,cAAe,cACf/B,KAAM,SAAUrR,GACZ,MAAyC,MAAlCA,EAAMtK,OAAO,GAAGuG,eAE3BiG,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACDsY,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCtX,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNjiB,EAAG,kBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,WACHmjB,GAAI,WACJhe,EAAG,aACHke,GAAI,aACJhe,EAAG,WACHie,GAAI,YAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA/DyBgf,CAAQ,EAAQ,K,iBCAlD,SAAWs9E,GAAU;kCAIzB;IAAIgQ,EAAiB,8DAA8DrnH,MAC3E,KAEJiY,EAAc,kDAAkDjY,MAAM,KACtEqY,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAETi/F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,2FAA2FlY,MAC/F,KAEJiY,YAAa,SAAUpb,EAAGkR,GACtB,OAAKlR,EAEM,QAAQ+D,KAAKmN,GACbkK,EAAYpb,EAAE+Y,SAEdyxG,EAAexqH,EAAE+Y,SAJjByxG,GAOfjvG,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBAAmB,+FACnBC,uBAAwB,0FACxB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAClB4D,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVX,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB3oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE3DkB,QAAS,WACL,MAAO,gBAAmC,IAAjB5oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE9DmB,SAAU,WACN,MAAO,cAAiC,IAAjB7oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DoB,QAAS,WACL,MAAO,cAAiC,IAAjB9oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DqB,SAAU,WACN,MACI,0BACkB,IAAjB/oB,KAAK0nB,QAAgB,IAAM,IAC5B,QAGRsB,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,gBACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJzf,EAAG,aACH0f,GAAI,aACJje,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,GAEThH,YAAa,mBAzGqBgmB,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;IAAIgQ,EAAiB,8DAA8DrnH,MAC3E,KAEJiY,EAAc,kDAAkDjY,MAAM,KACtEqY,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAEPi/F,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,2FAA2FlY,MAC/F,KAEJiY,YAAa,SAAUpb,EAAGkR,GACtB,OAAKlR,EAEM,QAAQ+D,KAAKmN,GACbkK,EAAYpb,EAAE+Y,SAEdyxG,EAAexqH,EAAE+Y,SAJjByxG,GAOfjvG,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBAAmB,+FACnBC,uBAAwB,0FACxB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAClB4D,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVX,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB3oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE3DkB,QAAS,WACL,MAAO,gBAAmC,IAAjB5oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE9DmB,SAAU,WACN,MAAO,cAAiC,IAAjB7oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DoB,QAAS,WACL,MAAO,cAAiC,IAAjB9oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DqB,SAAU,WACN,MACI,0BACkB,IAAjB/oB,KAAK0nB,QAAgB,IAAM,IAC5B,QAGRsB,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,gBACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJzf,EAAG,aACH0f,GAAI,aACJje,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAvGyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAIgQ,EAAiB,8DAA8DrnH,MAC3E,KAEJiY,EAAc,kDAAkDjY,MAAM,KACtEqY,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAEPi/F,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,2FAA2FlY,MAC/F,KAEJiY,YAAa,SAAUpb,EAAGkR,GACtB,OAAKlR,EAEM,QAAQ+D,KAAKmN,GACbkK,EAAYpb,EAAE+Y,SAEdyxG,EAAexqH,EAAE+Y,SAJjByxG,GAOfjvG,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBAAmB,+FACnBC,uBAAwB,0FACxB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAClB4D,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVX,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB3oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE3DkB,QAAS,WACL,MAAO,gBAAmC,IAAjB5oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE9DmB,SAAU,WACN,MAAO,cAAiC,IAAjB7oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DoB,QAAS,WACL,MAAO,cAAiC,IAAjB9oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DqB,SAAU,WACN,MACI,0BACkB,IAAjB/oB,KAAK0nB,QAAgB,IAAM,IAC5B,QAGRsB,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,gBACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJzf,EAAG,aACH0f,GAAI,aACJje,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,GAEThH,YAAa,mBAzGqBgmB,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAIgQ,EAAiB,8DAA8DrnH,MAC3E,KAEJiY,EAAc,kDAAkDjY,MAAM,KACtEqY,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,mLAEPi/F,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,2FAA2FlY,MAC/F,KAEJiY,YAAa,SAAUpb,EAAGkR,GACtB,OAAKlR,EAEM,QAAQ+D,KAAKmN,GACbkK,EAAYpb,EAAE+Y,SAEdyxG,EAAexqH,EAAE+Y,SAJjByxG,GAOfjvG,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBAAmB,+FACnBC,uBAAwB,0FACxB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAClB4D,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVX,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB3oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE3DkB,QAAS,WACL,MAAO,gBAAmC,IAAjB5oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE9DmB,SAAU,WACN,MAAO,cAAiC,IAAjB7oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DoB,QAAS,WACL,MAAO,cAAiC,IAAjB9oB,KAAK0nB,QAAgB,IAAM,IAAM,QAE5DqB,SAAU,WACN,MACI,0BACkB,IAAjB/oB,KAAK0nB,QAAgB,IAAM,IAC5B,QAGRsB,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,gBACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJzf,EAAG,aACH0f,GAAI,aACJje,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAvGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTnQ,EAAG,CAAC,eAAgB,cAAe,iBACnCkiB,GAAI,CAACxN,EAAS,UAAWA,EAAS,YAClCzV,EAAG,CAAC,aAAc,aAClBkjB,GAAI,CAACzN,EAAS,UAAWA,EAAS,YAClC5Z,EAAG,CAAC,YAAa,YAAa,YAC9BsnB,GAAI,CAAC1N,EAAS,SAAUA,EAAS,UACjCxV,EAAG,CAAC,YAAa,YACjBmF,EAAG,CAAC,UAAW,WAAY,WAC3Bke,GAAI,CAAC7N,EAAS,OAAQA,EAAS,SAC/BnQ,EAAG,CAAC,YAAa,QAAS,aAC1Bie,GAAI,CAAC9N,EAAS,SAAUA,EAAS,YAErC,OAAI6d,EACOpiB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAElD83B,EAAWtnB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAG1C85G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,6FAA6FlY,MACjG,KAEJiY,YAAa,6DAA6DjY,MACtE,KAEJic,SAAU,iEAAiEjc,MACvE,KAEJgc,cAAe,gBAAgBhc,MAAM,KACrC+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNjiB,EAAGipH,EACH/mG,GAAI+mG,EACJhqH,EAAGgqH,EACH9mG,GAAI8mG,EACJnuH,EAAGmuH,EACH7mG,GAAI6mG,EACJ/pH,EAAG+pH,EACH5mG,GAAI,WACJhe,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA3EyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,+FAA+FlY,MACnG,KAEJiY,YAAa,8DAA8DjY,MACvE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,sEAAsEjc,MAC5E,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN5oB,EAAG,WACH4vH,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEV7nG,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNjiB,EAAG,iBACHkiB,GAAI,aACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,WACHmjB,GAAI,UACJhe,EAAG,eACHke,GAAI,cACJhe,EAAG,WACHie,GAAI,WAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA7DyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,wEAAwElY,MAC5E,KAEJiY,YAAa,wEAAwEjY,MACjF,KAEJic,SAAU,qDAAoEjc,MAC1E,KAEJgc,cAAe,qDAAoEhc,MAC/E,KAEJ+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,wBACf/B,KAAM,SAAUrR,GACZ,MAAO,aAAarM,KAAKqM,IAE7BkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,aAEA,cAGfvH,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,YACHkiB,GAAI,WACJjjB,EAAG,WACHkjB,GAAI,WACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,SACJhe,EAAG,SACHie,GAAI,UAERuG,SAAU,SAAU7c,GAChB,OAAOA,EACF1J,QAAQ,UAAU,SAAU+I,GACzB,OAAOo7G,EAAUp7G,MAEpB/I,QAAQ,KAAM,MAEvB8vB,WAAY,SAAUpmB,GAClB,OAAOA,EACF1J,QAAQ,OAAO,SAAU+I,GACtB,OAAOy6G,EAAUz6G,MAEpB/I,QAAQ,KAAM,MAEvBsf,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,MA5GyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIiQ,EAAc,wEAAwEtnH,MAClF,KAEJunH,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASd,EAAUl0G,EAAQ6d,EAAe5yB,EAAK83B,GAC3C,IAAIh8B,EAAS,GACb,OAAQkE,GACJ,IAAK,IACD,OAAO83B,EAAW,oBAAsB,kBAC5C,IAAK,KACDh8B,EAASg8B,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACDh8B,EAASg8B,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDh8B,EAASg8B,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDh8B,EAASg8B,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACDh8B,EAASg8B,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDh8B,EAASg8B,EAAW,SAAW,SAIvC,OADAh8B,EAGJ,SAAsBiZ,EAAQ+iB,GAC1B,OAAO/iB,EAAS,GACV+iB,EACIkyF,EAAcj1G,GACdg1G,EAAYh1G,GAChBA,EARGk1G,CAAal1G,EAAQ+iB,GAAY,IAAMh8B,EAW3Cg+G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,2GAA2GlY,MAC/G,KAEJiY,YAAa,uEAAuEjY,MAChF,KAEJic,SAAU,qEAAqEjc,MAC3E,KAEJgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN5oB,EAAG,WACH4vH,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEV7nG,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNjiB,EAAG4oH,EACH1mG,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG0pH,EACHvmG,GAAIumG,EACJvkH,EAAGukH,EACHrmG,GAAIqmG,EACJrkH,EAAGqkH,EACHpmG,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAvHyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIfA;EAAOl2F,aAAa,MAAO,CACjCjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,wBAAwB/b,MAAM,KAC3CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,YACH8e,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVX,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,eACHkjB,GAAI,YACJrnB,EAAG,aACHsnB,GAAI,UACJljB,EAAG,aACHmjB,GAAI,UACJhe,EAAG,cACHke,GAAI,WACJhe,EAAG,aACHie,GAAI,WAERV,uBAAwB,UACxBnM,QAAS,SAAUjB,GACf,OAAOA,GAEX6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAvDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,4EAA4Ejc,MAClF,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,YACNjiB,EAAG,YACHkiB,GAAI,cACJjjB,EAAG,eACHkjB,GAAI,cACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,YACHmjB,GAAI,WACJhe,EAAG,cACHke,GAAI,aACJhe,EAAG,UACHie,GAAI,SAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KArDyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;IAEIj/F,EAAc,yKACdC,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGCg/F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,uFAAuFlY,MAC3F,KAEJiY,YAAa,iEAAiEjY,MAC1E,KAEJoY,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAClB4D,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,aACJrnB,EAAG,YACHsnB,GAAI,YACJljB,EAAG,UACHmjB,GAAI,WACJzf,EAAG,cACH0f,GAAI,cACJje,EAAG,UACHke,GAAI,UACJhe,EAAG,QACHie,GAAI,UAERV,uBAAwB,eACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOjZ,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnD6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAtGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,uFAAuFlY,MAC3F,KAEJiY,YAAa,iEAAiEjY,MAC1E,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,aACJrnB,EAAG,YACHsnB,GAAI,YACJljB,EAAG,UACHmjB,GAAI,WACJhe,EAAG,UACHke,GAAI,UACJhe,EAAG,QACHie,GAAI,UAERV,uBAAwB,gBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOjZ,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAlEjBynB,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,uFAAuFlY,MAC3F,KAEJiY,YAAa,iEAAiEjY,MAC1E,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,aACJrnB,EAAG,YACHsnB,GAAI,YACJljB,EAAG,UACHmjB,GAAI,WACJhe,EAAG,UACHke,GAAI,UACJhe,EAAG,QACHie,GAAI,UAERV,uBAAwB,gBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOjZ,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnD6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAvEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIoQ,EAAsB,6DAA6DznH,MAC/E,KAEJ0nH,EAAyB,kDAAkD1nH,MACvE,KAGCq3G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,iGAAiGlY,MACrG,KAEJiY,YAAa,SAAUpb,EAAGkR,GACtB,OAAKlR,EAEM,QAAQ+D,KAAKmN,GACb25G,EAAuB7qH,EAAE+Y,SAEzB6xG,EAAoB5qH,EAAE+Y,SAJtB6xG,GAOf9B,kBAAkB,EAClB1pG,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNjiB,EAAG,mBACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,UACHmjB,GAAI,WACJhe,EAAG,aACHke,GAAI,aACJhe,EAAG,WACHie,GAAI,cAERV,uBAAwB,kBACxBnM,QAAS,SAAUjB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhE6I,KAAM,CACFL,IAAK,EACLC,IAAK,KA3EyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCA4ChBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJD,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJ0tG,kBAAkB,EAClB1pG,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJD,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnED,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlD9H,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,OACRC,KAAM,YACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,UACHkjB,GAAI,aACJrnB,EAAG,iBACHsnB,GAAI,oBACJljB,EAAG,KACHmjB,GAAI,QACJhe,EAAG,KACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,aAERV,uBAAwB,mBACxBnM,QAAS,SAAUjB,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjE6I,KAAM,CACFL,IAAK,EACLC,IAAK,KA7FyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCA4ChBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJD,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJ0tG,kBAAkB,EAClB1pG,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJD,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DD,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnD9H,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACNjiB,EAAG,gBACHkiB,GAAI,YACJjjB,EAAG,UACHkjB,GAAI,gBACJrnB,EAAG,OACHsnB,GAAI,aACJljB,EAAG,QACHmjB,GAAI,WACJhe,EAAG,OACHke,GAAI,YACJhe,EAAG,WACHie,GAAI,eAERV,uBAAwB,mBACxBnM,QAAS,SAAUjB,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjE6I,KAAM,CACFL,IAAK,EACLC,IAAK,KA7FyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yFAAyFlY,MAC7F,KAEJiY,YAAa,8DAA8DjY,MACvE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,mDAAmDjc,MAAM,KACnEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVX,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjB3oB,KAAK0nB,QAAgB,KAAO,KAAO,QAE1DkB,QAAS,WACL,MAAO,UAA6B,IAAjB5oB,KAAK0nB,QAAgB,KAAO,KAAO,QAE1DmB,SAAU,WACN,MAAO,UAA6B,IAAjB7oB,KAAK0nB,QAAgB,KAAO,KAAO,QAE1DoB,QAAS,WACL,MAAO,UAA6B,IAAjB9oB,KAAK0nB,QAAgB,IAAM,KAAO,QAEzDqB,SAAU,WACN,MACI,qBAAwC,IAAjB/oB,KAAK0nB,QAAgB,KAAO,KAAO,QAGlEsB,SAAU,KAEdO,aAAc,CACVC,OAAQ,SAAUja,GACd,OAA0B,IAAtBA,EAAInS,QAAQ,MACL,IAAMmS,EAEV,MAAQA,GAEnBka,KAAM,SACNjiB,EAAG,eACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,YACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJhe,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAxEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTnQ,EAAG,CAAC,kBAAmB,cACvBkiB,GAAI,CAACxN,EAAS,aAAcA,EAAS,UACrCzV,EAAG,CAAC,aAAc,YAClBkjB,GAAI,CAACzN,EAAS,YAAaA,EAAS,WACpC5Z,EAAG,CAAC,WAAY,SAChBsnB,GAAI,CAAC1N,EAAS,UAAWA,EAAS,SAClCxV,EAAG,CAAC,YAAa,UACjBmjB,GAAI,CAAC3N,EAAS,WAAYA,EAAS,QACnCrQ,EAAG,CAAC,gBAAiB,aACrBke,GAAI,CAAC7N,EAAS,cAAeA,EAAS,WACtCnQ,EAAG,CAAC,aAAc,WAClBie,GAAI,CAAC9N,EAAS,YAAaA,EAAS,YAExC,OAAO+iB,EAAWtnB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAGrC85G,EAAOl2F,aAAa,WAAY,CAC1CjJ,OAAQ,CACJstG,WAAY,wFAAwFxlH,MAChG,KAEJ+N,OAAQ,mJAAmJ/N,MACvJ,KAEJ01B,SAAU,mBAEdzd,YAAa,4EAA4EjY,MACrF,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,qDAAqDjc,MAAM,KACrEgc,cAAe,4CAA4Chc,MAAM,KACjE+b,YAAa,wBAAwB/b,MAAM,KAC3C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,kBACJD,IAAK,qBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNknG,KAAM,oCAEV7nG,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNjiB,EAAGipH,EACH/mG,GAAI+mG,EACJhqH,EAAGgqH,EACH9mG,GAAI8mG,EACJnuH,EAAGmuH,EACH7mG,GAAI6mG,EACJ/pH,EAAG+pH,EACH5mG,GAAI4mG,EACJ5kH,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,eACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOjZ,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnB6I,KAAM,CACFL,IAAK,EACLC,IAAK,GAETsF,cAAe,4BACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,SAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAblX,EACAkX,EACa,YAAblX,EACAkX,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAzHmB0T,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTnQ,EAAG,CAAC,qBAAsB,iBAC1BkiB,GAAI,CAACxN,EAAS,cAAeA,EAAS,WACtCzV,EAAG,CAAC,aAAc,YAClBkjB,GAAI,CAACzN,EAAS,YAAaA,EAAS,WACpC5Z,EAAG,CAAC,YAAa,UACjBsnB,GAAI,CAAC1N,EAAS,WAAYA,EAAS,UACnCxV,EAAG,CAAC,YAAa,UACjBmjB,GAAI,CAAC3N,EAAS,WAAYA,EAAS,QACnCrQ,EAAG,CAAC,eAAgB,aACpBke,GAAI,CAAC7N,EAAS,cAAeA,EAAS,WACtCnQ,EAAG,CAAC,aAAc,YAClBie,GAAI,CAAC9N,EAAS,YAAaA,EAAS,YAExC,OAAO+iB,EAAWtnB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAGrC85G,EAAOl2F,aAAa,WAAY,CAC1CjJ,OAAQ,CACJstG,WAAY,4EAA4ExlH,MACpF,KAEJ+N,OAAQ,wIAAwI/N,MAC5I,KAEJ01B,SAAU,mBAEdzd,YAAa,4DAA4DjY,MACrE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,iBACJD,IAAK,oBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNknG,KAAM,mCAEV7nG,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNjiB,EAAGipH,EACH/mG,GAAI+mG,EACJhqH,EAAGgqH,EACH9mG,GAAI8mG,EACJnuH,EAAGmuH,EACH7mG,GAAI6mG,EACJ/pH,EAAG+pH,EACH5mG,GAAI4mG,EACJ5kH,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,cACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOjZ,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnB6I,KAAM,CACFL,IAAK,EACLC,IAAK,GAETsF,cAAe,+BACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,SAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAblX,EACAkX,EACa,aAAblX,EACAkX,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmB0T,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yFAAyFlY,MAC7F,KAEJiY,YAAa,yEAAyEjY,MAClF,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,mCAAmChc,MAAM,KACxD+b,YAAa,qBAAqB/b,MAAM,KACxCiU,eAAgB,CACZqL,GAAI,gBACJD,IAAK,mBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVX,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,WACHkiB,GAAI,WACJjjB,EAAG,WACHkjB,GAAI,WACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,UACJhe,EAAG,WACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,WAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAKzBkX,cAAe,qBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,QAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAblX,EACAkX,EACa,SAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KAvHyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,0EAA0ElY,MAC9E,KAEJiY,YAAa,4DAA4DjY,MACrE,KAEJic,SAAU,uCAAuCjc,MAAM,KACvDgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACN5oB,EAAG,WACH4vH,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEV7nG,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNjiB,EAAG,aACHkiB,GAAI,WACJjjB,EAAG,MACHkjB,GAAI,UACJrnB,EAAG,MACHsnB,GAAI,SAAU1N,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBxV,EAAG,MACHmjB,GAAI,SAAU3N,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBrQ,EAAG,OACHke,GAAI,SAAU7N,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpBnQ,EAAG,MACHie,GAAI,SAAU9N,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxB+N,cAAe,gEACf/B,KAAM,SAAUrR,GACZ,MAAO,8BAA8BrM,KAAKqM,IAE9CkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACP+P,EAAU,SAAW,eACrB/P,EAAO,GACP+P,EAAU,QAAU,eAEpB,UAzFmB2D,CAAQ,EAAQ,K,iBCClD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETlsG,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBCg/F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJnK,OAAQ,8EAA8E/N,MAClF,KAEJwlH,WAAY,0EAA0ExlH,MAClF,MAGRiY,YAAa,6DAA6DjY,MACtE,KAEJic,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,kCAAkChc,MAAM,KACvD+b,YAAa,qBAAqB/b,MAAM,KACxCiU,eAAgB,CACZqL,GAAI,aACJD,IAAK,gBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGVpH,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJluG,YAAa,+KAEbD,iBAAkB,+KAElBguG,kBAAmB,uIAEnBC,uBAAwB,sFAExBtnG,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNjiB,EAAG,cACHkiB,GAAI,WACJjjB,EAAG,UACHkjB,GAAI,UACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,WACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,WAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAKzBkX,cAAe,qBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,QAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAblX,EACAkX,EACa,UAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KAlKyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;SAASmP,EAAUl0G,EAAQ6d,EAAe5yB,GACtC,IAAIlE,EAASiZ,EAAS,IACtB,OAAQ/U,GACJ,IAAK,KAQD,OANIlE,GADW,IAAXiZ,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,IACD,OAAO6d,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI92B,GADW,IAAXiZ,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,SAGlB,IAAK,IACD,OAAO6d,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI92B,GADW,IAAXiZ,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,OAGlB,IAAK,KAMD,OAJIjZ,GADW,IAAXiZ,EACU,MAEA,OAGlB,IAAK,KAQD,OANIjZ,GADW,IAAXiZ,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,UAGlB,IAAK,KAQD,OANIjZ,GADW,IAAXiZ,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAMjB+kG,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJnK,OAAQ,oGAAoG/N,MACxG,KAEJwlH,WAAY,gGAAgGxlH,MACxG,MAGRiY,YAAa,+DAA+DjY,MACxE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,4DAA4Djc,MAClE,KAEJgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBiC,QAAS,eACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,cACHkiB,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG,MACHmjB,GAAIumG,EACJvkH,EAAG,SACHke,GAAIqmG,EACJrkH,EAAG,SACHie,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAxJyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAIsQ,EAAc,gEAAgE3nH,MAC9E,KAEJ,SAASwmH,EAAUl0G,EAAQ6d,EAAe5yB,EAAK83B,GAC3C,IAAI8J,EAAM7sB,EACV,OAAQ/U,GACJ,IAAK,IACD,OAAO83B,GAAYlF,EACb,mBACA,oBACV,IAAK,KACD,OAAOgP,GAAO9J,GAAYlF,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASkF,GAAYlF,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOgP,GAAO9J,GAAYlF,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASkF,GAAYlF,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOgP,GAAO9J,GAAYlF,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASkF,GAAYlF,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOgP,GAAO9J,GAAYlF,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASkF,GAAYlF,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOgP,GAAO9J,GAAYlF,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASkF,GAAYlF,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOgP,GAAO9J,GAAYlF,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAAShV,EAAKka,GACV,OACKA,EAAW,GAAK,WACjB,IACAsyF,EAAYvxH,KAAK6mB,OACjB,aAICo6F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,oGAAoGlY,MACxG,KAEJiY,YAAa,iEAAiEjY,MAC1E,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,gCAAgChc,MAAM,KACrD+b,YAAa,qBAAqB/b,MAAM,KACxCiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,cACH8e,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVY,cAAe,SACf/B,KAAM,SAAUrR,GACZ,MAAyC,MAAlCA,EAAMtK,OAAO,GAAGuG,eAE3BiG,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,IACW,IAAZsY,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCtX,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAO9D,EAAKhpB,KAAKiE,MAAM,IAE3B8oB,QAAS,oBACTC,SAAU,WACN,OAAOhE,EAAKhpB,KAAKiE,MAAM,IAE3BgpB,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,KACNjiB,EAAG4oH,EACH1mG,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG0pH,EACHvmG,GAAIumG,EACJvkH,EAAGukH,EACHrmG,GAAIqmG,EACJrkH,EAAGqkH,EACHpmG,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAnHyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,CACJnK,OAAQ,4GAA4G/N,MAChH,KAEJwlH,WAAY,gGAAgGxlH,MACxG,MAGRiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,gEAAgEjc,MACtE,KAEJgc,cAAe,+BAA+Bhc,MAAM,KACpD+b,YAAa,+BAA+B/b,MAAM,KAClDiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVX,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNjiB,EAAG,mBACHkiB,GAAI,cACJjjB,EAAG,OACHkjB,GAAI,UACJrnB,EAAG,MACHsnB,GAAI,SACJljB,EAAG,KACHmjB,GAAI,QACJhe,EAAG,OACHke,GAAI,UACJhe,EAAG,OACHie,GAAI,WAERC,cAAe,oCACf/B,KAAM,SAAUrR,GACZ,MAAO,uBAAuBrM,KAAKqM,IAEvCkC,SAAU,SAAUkX,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGf3G,uBAAwB,0BACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXjZ,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KA1FyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yFAAyFlY,MAC7F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,6CAA6Cjc,MAAM,KAC7Dgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,wBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,SAAblX,EACOkX,EACa,UAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAblX,GAAoC,UAAbA,EACvBkX,EAAO,QADX,GAIXlX,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfgB,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,eACNjiB,EAAG,iBACHkiB,GAAI,WACJjjB,EAAG,UACHkjB,GAAI,WACJrnB,EAAG,QACHsnB,GAAI,SACJljB,EAAG,SACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,YAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAzEyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;SAASuP,EAAOnpH,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAAS+oH,EAAUl0G,EAAQ6d,EAAe5yB,EAAK83B,GAC3C,IAAIh8B,EAASiZ,EAAS,IACtB,OAAQ/U,GACJ,IAAK,IACD,OAAO4yB,GAAiBkF,EAClB,mBACA,mBACV,IAAK,KACD,OAAIuxF,EAAOt0G,GAEHjZ,GACC82B,GAAiBkF,EAAW,WAAa,YAG3Ch8B,EAAS,UACpB,IAAK,IACD,OAAO82B,EAAgB,SAAW,SACtC,IAAK,KACD,OAAIy2F,EAAOt0G,GAEHjZ,GAAU82B,GAAiBkF,EAAW,UAAY,WAE/ClF,EACA92B,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAIutH,EAAOt0G,GAEHjZ,GACC82B,GAAiBkF,EACZ,gBACA,iBAGPh8B,EAAS,cACpB,IAAK,IACD,OAAI82B,EACO,QAEJkF,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAIuxF,EAAOt0G,GACH6d,EACO92B,EAAS,QAEbA,GAAUg8B,EAAW,OAAS,SAC9BlF,EACA92B,EAAS,QAEbA,GAAUg8B,EAAW,MAAQ,QACxC,IAAK,IACD,OAAIlF,EACO,UAEJkF,EAAW,QAAU,SAChC,IAAK,KACD,OAAIuxF,EAAOt0G,GACH6d,EACO92B,EAAS,UAEbA,GAAUg8B,EAAW,SAAW,WAChClF,EACA92B,EAAS,UAEbA,GAAUg8B,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOlF,GAAiBkF,EAAW,KAAO,MAC9C,IAAK,KACD,OAAIuxF,EAAOt0G,GACAjZ,GAAU82B,GAAiBkF,EAAW,KAAO,QAEjDh8B,GAAU82B,GAAiBkF,EAAW,KAAO,QAIvDgiF,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,oFAAoFlY,MACxF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,mFAAmFjc,MACzF,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACNjiB,EAAG4oH,EACH1mG,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG,cACHsnB,GAAIwmG,EACJ1pH,EAAG0pH,EACHvmG,GAAIumG,EACJvkH,EAAGukH,EACHrmG,GAAIqmG,EACJrkH,EAAGqkH,EACHpmG,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAzIyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,gGAAgGlY,MACpG,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,WACL,MACI,WACC3oB,KAAK0nB,QAAU,EAAI,OAA0B,IAAjB1nB,KAAK0nB,QAAgB,IAAM,OACxD,OAGRkB,QAAS,WACL,MACI,aACC5oB,KAAK0nB,QAAU,EAAI,OAA0B,IAAjB1nB,KAAK0nB,QAAgB,IAAM,OACxD,OAGRmB,SAAU,WACN,MACI,WACC7oB,KAAK0nB,QAAU,EAAI,OAA0B,IAAjB1nB,KAAK0nB,QAAgB,IAAM,OACxD,OAGRoB,QAAS,WACL,MACI,WACC9oB,KAAK0nB,QAAU,EAAI,OAA0B,IAAjB1nB,KAAK0nB,QAAgB,IAAM,OACxD,OAGRqB,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MACI,uBACC7mB,KAAK0nB,QAAU,EACV,OACiB,IAAjB1nB,KAAK0nB,QACL,IACA,OACN,MAER,QACI,MACI,uBACC1nB,KAAK0nB,QAAU,EACV,OACiB,IAAjB1nB,KAAK0nB,QACL,IACA,OACN,QAIhBsB,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNjiB,EAAG,iBACHkiB,GAAI,aACJjjB,EAAG,YACHkjB,GAAI,YACJrnB,EAAG,SACHsnB,GAAI,SACJljB,EAAG,YACHmjB,GAAI,YACJzf,EAAG,gBACH0f,GAAI,eACJje,EAAG,UACHke,GAAI,UACJhe,EAAG,UACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAtGyBgf,CAAQ,EAAQ,K,iBCClD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,gGAAgGlY,MACpG,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SAAUhiB,GACd,OAAQ,YAAYgD,KAAKhD,GAAK,MAAQ,MAAQ,IAAMA,GAExDiiB,KAAM,QACNjiB,EAAG,iBACHkiB,GAAI,aACJjjB,EAAG,YACHkjB,GAAI,YACJrnB,EAAG,SACHsnB,GAAI,SACJljB,EAAG,YACHmjB,GAAI,YACJhe,EAAG,UACHke,GAAI,UACJhe,EAAG,UACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA9DyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BwM,KAAM,CACF,CACIwE,MAAO,aACP3I,OAAQ,EACR11B,KAAM,KACN85B,OAAQ,IACRxM,KAAM,KAEV,CACI+Q,MAAO,aACPC,MAAO,aACP5I,OAAQ,EACR11B,KAAM,KACN85B,OAAQ,IACRxM,KAAM,KAEV,CACI+Q,MAAO,aACPC,MAAO,aACP5I,OAAQ,EACR11B,KAAM,KACN85B,OAAQ,IACRxM,KAAM,KAEV,CACI+Q,MAAO,aACPC,MAAO,aACP5I,OAAQ,EACR11B,KAAM,KACN85B,OAAQ,IACRxM,KAAM,KAEV,CACI+Q,MAAO,aACPC,MAAO,aACP5I,OAAQ,EACR11B,KAAM,KACN85B,OAAQ,IACRxM,KAAM,KAEV,CACI+Q,MAAO,aACPC,MAAO,aACP5I,OAAQ,EACR11B,KAAM,KACN85B,OAAQ,KACRxM,KAAM,MAEV,CACI+Q,MAAO,aACPC,OAAO,IACP5I,OAAQ,EACR11B,KAAM,MACN85B,OAAQ,KACRxM,KAAM,OAGdwmG,oBAAqB,WACrBl5F,oBAAqB,SAAUzhB,EAAO9D,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIgR,SAAShR,EAAM,IAAM8D,EAAO,KAE9DiL,OAAQ,yCAAyClY,MAAM,KACvDiY,YAAa,yCAAyCjY,MAClD,KAEJic,SAAU,8BAA8Bjc,MAAM,KAC9Cgc,cAAe,gBAAgBhc,MAAM,KACrC+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACN5oB,EAAG,aACH4vH,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEVtmG,cAAe,SACf/B,KAAM,SAAUrR,GACZ,MAAiB,OAAVA,GAEXkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,KAEA,MAGfvH,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAU6F,GAChB,OAAIA,EAAI3J,SAAW/kB,KAAK+kB,OACb,cAEA,WAGf+D,QAAS,UACTC,SAAU,SAAU2F,GAChB,OAAI1uB,KAAK+kB,SAAW2J,EAAI3J,OACb,cAEA,WAGfiE,SAAU,KAEdM,uBAAwB,WACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXjZ,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBqN,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNjiB,EAAG,KACHkiB,GAAI,MACJjjB,EAAG,KACHkjB,GAAI,MACJrnB,EAAG,MACHsnB,GAAI,OACJljB,EAAG,KACHmjB,GAAI,MACJhe,EAAG,MACHke,GAAI,OACJhe,EAAG,KACHie,GAAI,SAlJ0B2Z,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yFAAyFlY,MAC7F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,+CAA+Cjc,MAAM,KAC/Dgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,6BACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,WAAblX,EACOkX,EACa,WAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAblX,GAAsC,UAAbA,EACzBkX,EAAO,QADX,GAIXlX,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfgB,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACNjiB,EAAG,kBACHkiB,GAAI,WACJjjB,EAAG,kBACHkjB,GAAI,WACJrnB,EAAG,gBACHsnB,GAAI,SACJljB,EAAG,WACHmjB,GAAI,YACJhe,EAAG,UACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAzEyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qGAAqGlY,MACzG,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,CACNupG,WAAY,gEAAgExlH,MACxE,KAEJ+N,OAAQ,iEAAiE/N,MACrE,KAEJ01B,SAAU,iBAEd1Z,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SAAUhiB,GACd,OAAOA,EAAEwC,QAAQ,iCAAiC,SAC9CynH,EACA/rF,EACAgsF,GAEA,MAAc,MAAPA,EAAahsF,EAAK,KAAOA,EAAKgsF,EAAK,SAGlDjoG,KAAM,SAAUjiB,GACZ,MAAI,4BAA4BgD,KAAKhD,GAC1BA,EAAEwC,QAAQ,SAAU,UAE3B,OAAOQ,KAAKhD,GACLA,EAAEwC,QAAQ,QAAS,YAEvBxC,GAEXA,EAAG,iBACHkiB,GAAI,UACJjjB,EAAG,OACHkjB,GAAI,UACJrnB,EAAG,QACHsnB,GAAI,WACJljB,EAAG,MACHmjB,GAAI,SACJhe,EAAG,MACHke,GAAI,SACJhe,EAAG,OACHie,GAAI,WAERV,uBAAwB,8BACxBnM,QAAS,SAAUjB,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KA1FyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuN,EAAW,CACXN,EAAG,MACHT,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHa,GAAI,MACJH,GAAI,MACJI,GAAI,MACJ4C,GAAI,MACJ/C,GAAI,MACJI,GAAI,MACJP,GAAI,MACJC,GAAI,MACJO,GAAI,MACJJ,IAAK,OAGA5N,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,0DAA0Djc,MAChE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNjiB,EAAG,iBACHkiB,GAAI,YACJjjB,EAAG,YACHkjB,GAAI,WACJrnB,EAAG,YACHsnB,GAAI,WACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,QACJhe,EAAG,UACHie,GAAI,UAERV,uBAAwB,kBACxBnM,QAAS,SAAUjB,GAGf,OAAOA,GAAUsyG,EAAStyG,IAAWsyG,EAF7BtyG,EAAS,KAEmCsyG,EAD5CtyG,GAAU,IAAM,IAAM,QAGlC6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAhFyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yEAAyElY,MAC7E,KAEJiY,YAAa,yEAAyEjY,MAClF,KAEJic,SAAU,iDAAiDjc,MAAM,KACjEgc,cAAe,oBAAoBhc,MAAM,KACzC+b,YAAa,oBAAoB/b,MAAM,KACvC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,cACf/B,KAAM,SAAUrR,GACZ,MAAiB,UAAVA,GAEXkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,QAEA,SAGfvH,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNjiB,EAAG,iBACHkiB,GAAI,YACJjjB,EAAG,UACHkjB,GAAI,UACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,UACJhe,EAAG,QACHke,GAAI,QACJhe,EAAG,WACHie,GAAI,YAERV,uBAAwB,YACxBnM,QAAS,OACToT,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAGzBgS,KAAM,CACFL,IAAK,EACLC,IAAK,KApGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,6FAA6FlY,MACjG,KAEJiY,YAAa,2EAA2EjY,MACpF,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,0DAA0Djc,MAChE,KAEJgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,wBAAwB/b,MAAM,KAC3CiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVX,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNjiB,EAAG,gBACHkiB,GAAI,gBACJjjB,EAAG,aACHkjB,GAAI,WACJrnB,EAAG,YACHsnB,GAAI,UACJljB,EAAG,WACHmjB,GAAI,SACJhe,EAAG,cACHke,GAAI,YACJhe,EAAG,YACHie,GAAI,WAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAGzBkX,cAAe,gCACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,WAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAblX,EACAkX,EACa,aAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGf3G,uBAAwB,eACxBnM,QAAS,SAAUjB,GACf,OAAOA,EAAS,OAEpB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAzHyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yCAAyClY,MAAM,KACvDiY,YAAa,yCAAyCjY,MAClD,KAEJic,SAAU,8BAA8Bjc,MAAM,KAC9Cgc,cAAe,gBAAgBhc,MAAM,KACrC+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,cACH8e,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACN5oB,EAAG,cACH4vH,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEV7nG,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,OACRC,KAAM,OACNjiB,EAAG,MACHkiB,GAAI,MACJjjB,EAAG,KACHkjB,GAAI,MACJrnB,EAAG,OACHsnB,GAAI,OACJljB,EAAG,KACHmjB,GAAI,MACJhe,EAAG,MACHke,GAAI,MACJhe,EAAG,MACHie,GAAI,OAERV,uBAAwB,iBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnB+N,cAAe,QACf/B,KAAM,SAAUjL,GACZ,MAAiB,OAAVA,GAEXlE,SAAU,SAAUkX,EAAMkB,EAAQygG,GAC9B,OAAO3hG,EAAO,GAAK,KAAO,QAxEI0T,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETrsG,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGCm/F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQA,EACRD,YAAaC,EACb+D,SAAU,0EAA0Ejc,MAChF,KAEJgc,cAAe,2DAA2Dhc,MACtE,KAEJ+b,YAAa,gBAAgB/b,MAAM,KACnC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,kBACf/B,KAAM,SAAUrR,GACZ,MAAO,UAAUrM,KAAKqM,IAE1BkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,UAEA,WAGfvH,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,KACNjiB,EAAG,kBACHkiB,GAAI,WACJjjB,EAAG,cACHkjB,GAAI,YACJrnB,EAAG,eACHsnB,GAAI,aACJljB,EAAG,WACHmjB,GAAI,SACJhe,EAAG,YACHke,GAAI,UACJhe,EAAG,WACHie,GAAI,UAERuG,SAAU,SAAU7c,GAChB,OAAOA,EACF1J,QAAQ,iBAAiB,SAAU+I,GAChC,OAAOo7G,EAAUp7G,MAEpB/I,QAAQ,KAAM,MAEvB8vB,WAAY,SAAUpmB,GAClB,OAAOA,EACF1J,QAAQ,OAAO,SAAU+I,GACtB,OAAOy6G,EAAUz6G,MAEpB/I,QAAQ,KAAM,MAEvB+a,KAAM,CACFL,IAAK,EACLC,IAAK,MApHyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuN,EAAW,CACXN,EAAG,MACHT,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHa,GAAI,MACJH,GAAI,MACJI,GAAI,MACJ4C,GAAI,MACJ/C,GAAI,MACJI,GAAI,MACJP,GAAI,MACJC,GAAI,MACJO,GAAI,MACJJ,IAAK,OAGA5N,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,kFAAkFlY,MACtF,KAEJiY,YAAa,qDAAqDjY,MAC9D,KAEJic,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNjiB,EAAG,iBACHkiB,GAAI,YACJjjB,EAAG,YACHkjB,GAAI,WACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,QACJhe,EAAG,UACHie,GAAI,UAERV,uBAAwB,wBACxBnM,QAAS,SAAUjB,GAGf,OAAOA,GAAUsyG,EAAStyG,IAAWsyG,EAF7BtyG,EAAS,KAEmCsyG,EAD5CtyG,GAAU,IAAM,IAAM,QAGlC6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAlFyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTlR,EAAG,CAAC,aAAc,gBAClBnE,EAAG,CAAC,YAAa,eACjBoE,EAAG,CAAC,UAAW,aACfmF,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAOguB,EAAgBpiB,EAAOxQ,GAAK,GAAKwQ,EAAOxQ,GAAK,GAuBxD,SAAS0qH,EAA4B31G,GAEjC,GADAA,EAAS6H,SAAS7H,EAAQ,IACtB3C,MAAM2C,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAImzG,EAAYnzG,EAAS,GAEzB,OACW21G,EADO,IAAdxC,EADanzG,EAAS,GAISmzG,GAChC,GAAInzG,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAO21G,EAA4B31G,GAInC,OAAO21G,EADP31G,GAAkB,KAKjB+kG,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,uFAAuFlY,MAC3F,KAEJiY,YAAa,+DAA+DjY,MACxE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,mEAAmEjc,MACzE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,cACJD,IAAK,iBACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVX,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvB0C,aAAc,CACVC,OAhGR,SAA2B9V,GAEvB,OAAIm+G,EADSn+G,EAAOiJ,OAAO,EAAGjJ,EAAOtW,QAAQ,OAElC,KAAOsW,EAEX,MAAQA,GA4FX+V,KA1FR,SAAyB/V,GAErB,OAAIm+G,EADSn+G,EAAOiJ,OAAO,EAAGjJ,EAAOtW,QAAQ,OAElC,QAAUsW,EAEd,SAAWA,GAsFdlM,EAAG,kBACHkiB,GAAI,cACJjjB,EAAGgqH,EACH9mG,GAAI,cACJrnB,EAAGmuH,EACH7mG,GAAI,aACJljB,EAAG+pH,EACH5mG,GAAI,UACJhe,EAAG4kH,EACH1mG,GAAI,WACJhe,EAAG0kH,EACHzmG,GAAI,WAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KApIyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,6EAA6ElY,MACjF,KAEJiY,YAAa,6EAA6EjY,MACtF,KAEJic,SAAU,sCAAsCjc,MAAM,KACtDgc,cAAe,oCAAoChc,MAAM,KACzD+b,YAAa,mBAAmB/b,MAAM,KACtC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVY,cAAe,kBACf/B,KAAM,SAAUrR,GACZ,MAAiB,WAAVA,GAEXkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,WAEA,UAGfvH,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNjiB,EAAG,mBACHkiB,GAAI,YACJjjB,EAAG,SACHkjB,GAAI,UACJrnB,EAAG,YACHsnB,GAAI,aACJljB,EAAG,QACHmjB,GAAI,SACJhe,EAAG,UACHke,GAAI,WACJhe,EAAG,OACHie,GAAI,SAERV,uBAAwB,eACxBnM,QAAS,SAAUjB,GACf,MAAO,MAAQA,KA/DeynB,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAI7iG,EAAQ,CACRsL,GAAI,6BACJjjB,EAAG,wBACHkjB,GAAI,0BACJrnB,EAAG,2BACHsnB,GAAI,4BACJljB,EAAG,qBACHmjB,GAAI,sBACJhe,EAAG,uBACHke,GAAI,4BACJhe,EAAG,mBACHie,GAAI,oBASR,SAAS8nG,EAAkB51G,EAAQ6d,EAAe5yB,EAAK83B,GACnD,OAAOlF,EACDo1F,EAAMhoH,GAAK,GACX83B,EACAkwF,EAAMhoH,GAAK,GACXgoH,EAAMhoH,GAAK,GAErB,SAAS4qH,EAAQ71G,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASizG,EAAMhoH,GACX,OAAOiX,EAAMjX,GAAKyC,MAAM,KAE5B,SAASwmH,EAAUl0G,EAAQ6d,EAAe5yB,EAAK83B,GAC3C,IAAIh8B,EAASiZ,EAAS,IACtB,OAAe,IAAXA,EAEIjZ,EAAS6uH,EAAkB51G,EAAQ6d,EAAe5yB,EAAI,GAAI83B,GAEvDlF,EACA92B,GAAU8uH,EAAQ71G,GAAUizG,EAAMhoH,GAAK,GAAKgoH,EAAMhoH,GAAK,IAE1D83B,EACOh8B,EAASksH,EAAMhoH,GAAK,GAEpBlE,GAAU8uH,EAAQ71G,GAAUizG,EAAMhoH,GAAK,GAAKgoH,EAAMhoH,GAAK,IAIjE85G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJnK,OAAQ,oGAAoG/N,MACxG,KAEJwlH,WAAY,kGAAkGxlH,MAC1G,KAEJ01B,SAAU,+DAEdzd,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,CACNlO,OAAQ,oFAAoF/N,MACxF,KAEJwlH,WAAY,2FAA2FxlH,MACnG,KAEJ01B,SAAU,cAEd1Z,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,iBAAiB/b,MAAM,KACpC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN5oB,EAAG,aACH4vH,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEV7nG,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAlFR,SAA0B0U,EAAQ6d,EAAe5yB,EAAK83B,GAClD,OAAIlF,EACO,kBAEAkF,EAAW,kBAAoB,mBA+EtCvV,GAAI0mG,EACJ3pH,EAAGqrH,EACHnoG,GAAIymG,EACJ9tH,EAAGwvH,EACHloG,GAAIwmG,EACJ1pH,EAAGorH,EACHjoG,GAAIumG,EACJvkH,EAAGimH,EACH/nG,GAAIqmG,EACJrkH,EAAG+lH,EACH9nG,GAAIomG,GAER9mG,uBAAwB,cACxBnM,QAAS,SAAUjB,GACf,OAAOA,EAAS,QAEpB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAzHyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAI7iG,EAAQ,CACRsL,GAAI,qCAAqC9f,MAAM,KAC/CnD,EAAG,iCAAiCmD,MAAM,KAC1C+f,GAAI,iCAAiC/f,MAAM,KAC3CtH,EAAG,iCAAiCsH,MAAM,KAC1CggB,GAAI,iCAAiChgB,MAAM,KAC3ClD,EAAG,6BAA6BkD,MAAM,KACtCigB,GAAI,6BAA6BjgB,MAAM,KACvCiC,EAAG,iCAAiCjC,MAAM,KAC1CmgB,GAAI,iCAAiCngB,MAAM,KAC3CmC,EAAG,wBAAwBnC,MAAM,KACjCogB,GAAI,wBAAwBpgB,MAAM,MAKtC,SAAS+N,EAAOw3G,EAAOjzG,EAAQ6d,GAC3B,OAAIA,EAEO7d,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKizG,EAAM,GAAKA,EAAM,GAI5DjzG,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKizG,EAAM,GAAKA,EAAM,GAG3E,SAASD,EAAuBhzG,EAAQ6d,EAAe5yB,GACnD,OAAO+U,EAAS,IAAMvE,EAAOyG,EAAMjX,GAAM+U,EAAQ6d,GAErD,SAASi4F,EAAyB91G,EAAQ6d,EAAe5yB,GACrD,OAAOwQ,EAAOyG,EAAMjX,GAAM+U,EAAQ6d,GAM7BknF,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,uGAAuGlY,MAC3G,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,0EAA0Ejc,MAChF,KAEJgc,cAAe,kBAAkBhc,MAAM,KACvC+b,YAAa,kBAAkB/b,MAAM,KACrC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,cACH8e,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVX,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNjiB,EAlCR,SAAyB0U,EAAQ6d,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtCrQ,GAAIwlG,EACJzoH,EAAGurH,EACHroG,GAAIulG,EACJ5sH,EAAG0vH,EACHpoG,GAAIslG,EACJxoH,EAAGsrH,EACHnoG,GAAIqlG,EACJrjH,EAAGmmH,EACHjoG,GAAImlG,EACJnjH,EAAGimH,EACHhoG,GAAIklG,GAER5lG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA1FyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;IAAIgR,EAAa,CACbxlD,MAAO,CAEH/iD,GAAI,CAAC,SAAU,UAAW,WAC1BjjB,EAAG,CAAC,cAAe,iBACnBkjB,GAAI,CAAC,QAAS,SAAU,UACxBrnB,EAAG,CAAC,YAAa,eACjBsnB,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BC,GAAI,CAAC,SAAU,SAAU,WAE7BkoG,uBAAwB,SAAUh2G,EAAQi2G,GACtC,OAAkB,IAAXj2G,EACDi2G,EAAQ,GACRj2G,GAAU,GAAKA,GAAU,EACzBi2G,EAAQ,GACRA,EAAQ,IAElB/B,UAAW,SAAUl0G,EAAQ6d,EAAe5yB,GACxC,IAAIgrH,EAAUF,EAAWxlD,MAAMtlE,GAC/B,OAAmB,IAAfA,EAAI3H,OACGu6B,EAAgBo4F,EAAQ,GAAKA,EAAQ,GAGxCj2G,EACA,IACA+1G,EAAWC,uBAAuBh2G,EAAQi2G,KAMjDlR,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,mFAAmFlY,MACvF,KAEJiY,YAAa,2DAA2DjY,MACpE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,4DAA4Djc,MAClE,KAEJgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBiC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgB/oB,KAAK6mB,QAE7BmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,mBACHkiB,GAAIuoG,EAAW7B,UACf3pH,EAAGwrH,EAAW7B,UACdzmG,GAAIsoG,EAAW7B,UACf9tH,EAAG2vH,EAAW7B,UACdxmG,GAAIqoG,EAAW7B,UACf1pH,EAAG,MACHmjB,GAAIooG,EAAW7B,UACfvkH,EAAG,SACHke,GAAIkoG,EAAW7B,UACfrkH,EAAG,SACHie,GAAIioG,EAAW7B,WAEnB9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KApHyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,8IAA8IlY,MAClJ,KAEJiY,YAAa,iEAAiEjY,MAC1E,KAEJoY,YAAa,yCACb+tG,kBAAmB,yCACnBhuG,iBAAkB,yCAClBiuG,uBAAwB,yCACxBnqG,SAAU,kDAAkDjc,MAAM,KAClEgc,cAAe,wBAAwBhc,MAAM,KAC7C+b,YAAa,wBAAwB/b,MAAM,KAC3CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVX,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNjiB,EAAG,mBACHkiB,GAAI,YACJjjB,EAAG,YACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,QACHmjB,GAAI,QACJhe,EAAG,YACHke,GAAI,YACJhe,EAAG,SACHie,GAAI,UAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAzDyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,uFAAuFlY,MAC3F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,YACH8e,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,kBACHkiB,GAAI,aACJjjB,EAAG,cACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,WACHmjB,GAAI,UACJhe,EAAG,aACHke,GAAI,YACJhe,EAAG,cACHie,GAAI,aAERV,uBAAwB,8BACxBnM,QAAS,SAAUjB,GACf,IAAImzG,EAAYnzG,EAAS,GACrBozG,EAAcpzG,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhBozG,EACApzG,EAAS,MACTozG,EAAc,IAAMA,EAAc,GAClCpzG,EAAS,MACK,IAAdmzG,EACAnzG,EAAS,MACK,IAAdmzG,EACAnzG,EAAS,MACK,IAAdmzG,GAAiC,IAAdA,EACnBnzG,EAAS,MAETA,EAAS,OAGxB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAnFyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yFAAyFlY,MAC7F,KAEJiY,YAAa,yEAAyEjY,MAClF,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,wEAAwEjc,MAC9E,KAEJgc,cAAe,2CAA2Chc,MAAM,KAChE+b,YAAa,wBAAwB/b,MAAM,KAC3CiU,eAAgB,CACZqL,GAAI,aACJD,IAAK,gBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVX,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNjiB,EAAG,gBACHkiB,GAAI,cACJjjB,EAAG,eACHkjB,GAAI,cACJrnB,EAAG,eACHsnB,GAAI,cACJljB,EAAG,YACHmjB,GAAI,WACJhe,EAAG,WACHke,GAAI,UACJhe,EAAG,WACHie,GAAI,WAERC,cAAe,gDACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAGO,WAAblX,GAAyBkX,GAAQ,GACrB,iBAAblX,GACa,eAAbA,EAEOkX,EAAO,GAEPA,GAGflX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,YA7EmB0T,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;SAASmP,EAAUl0G,EAAQ6d,EAAe5yB,EAAK83B,GAC3C,OAAQ93B,GACJ,IAAK,IACD,OAAO4yB,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAO7d,GAAU6d,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAO7d,GAAU6d,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAO7d,GAAU6d,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAO7d,GAAU6d,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAO7d,GAAU6d,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAO7d,GAAU6d,EAAgB,OAAS,WAC9C,QACI,OAAO7d,GAIV+kG,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,+LAA+LlY,MACnM,KAEJiY,YAAa,6EAA6EjY,MACtF,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,6CAA6Cjc,MAAM,KAC7Dgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVY,cAAe,SACf/B,KAAM,SAAUrR,GACZ,MAAiB,OAAVA,GAEXkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,KAEA,MAGfvH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,UACNjiB,EAAG4oH,EACH1mG,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG0pH,EACHvmG,GAAIumG,EACJvkH,EAAGukH,EACHrmG,GAAIqmG,EACJrkH,EAAGqkH,EACHpmG,GAAIomG,GAER9mG,uBAAwB,eACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,QACpB,QACI,OAAOA,MAhGeynB,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAASiE,EAAel2G,EAAQ6d,EAAermB,EAAQurB,GACnD,IAAIxhB,EAAS,GACb,GAAIsc,EACA,OAAQrmB,GACJ,IAAK,IACD+J,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQ/J,GACJ,IAAK,IACD+J,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAOzT,QAAQ,MAAOkS,GAGxB+kG,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,gFAAgFjY,MACzF,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,kCAAkChc,MAAM,KACvD+b,YAAa,qBAAqB/b,MAAM,KACxCiU,eAAgB,CACZqL,GAAI,eACJD,IAAK,kBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVX,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNjiB,EAAG4qH,EACH1oG,GAAI0oG,EACJ3rH,EAAG2rH,EACHzoG,GAAIyoG,EACJ9vH,EAAG8vH,EACHxoG,GAAIwoG,EACJ1rH,EAAG0rH,EACHvoG,GAAIuoG,EACJvmH,EAAGumH,EACHroG,GAAIqoG,EACJrmH,EAAGqmH,EACHpoG,GAAIooG,GAER7hG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAGzBkX,cAAe,qCACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,UAAblX,GAAqC,UAAbA,EACjBkX,EAEM,WAAblX,GACa,aAAbA,GACa,WAAbA,EAEOkX,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KAvMyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,oFAAoFlY,MACxF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,6CAA6Cjc,MAAM,KAC7Dgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,8BACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,SAAblX,EACOkX,EACa,cAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAblX,GAAsC,UAAbA,EACzBkX,EAAO,QADX,GAIXlX,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfgB,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNjiB,EAAG,gBACHkiB,GAAI,UACJjjB,EAAG,UACHkjB,GAAI,WACJrnB,EAAG,QACHsnB,GAAI,SACJljB,EAAG,SACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,YAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAzEyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,oFAAoFlY,MACxF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,6CAA6Cjc,MAAM,KAC7Dgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVY,cAAe,8BACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,SAAblX,EACOkX,EACa,cAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAblX,GAAsC,UAAbA,EACzBkX,EAAO,QADX,GAIXlX,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfgB,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNjiB,EAAG,gBACHkiB,GAAI,UACJjjB,EAAG,UACHkjB,GAAI,WACJrnB,EAAG,QACHsnB,GAAI,SACJljB,EAAG,SACHmjB,GAAI,UACJhe,EAAG,UACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,YAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAzEyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,iEAAiEjc,MACvE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,eACHkiB,GAAI,aACJjjB,EAAG,SACHkjB,GAAI,YACJrnB,EAAG,SACHsnB,GAAI,aACJljB,EAAG,UACHmjB,GAAI,YACJhe,EAAG,QACHke,GAAI,UACJhe,EAAG,OACHie,GAAI,UAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KArDyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,2FAA2FlY,MAC/F,KAEJiY,YAAa,mDAAmDjY,MAAM,KACtEic,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,2BAA2Bhc,MAAM,KAChD+b,YAAa,2BAA2B/b,MAAM,KAE9CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACNjiB,EAAG,kBACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,WACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,OACHke,GAAI,OACJhe,EAAG,UACHie,GAAI,WAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAGzBgS,KAAM,CACFL,IAAK,EACLC,IAAK,KAvFyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,6DAA6DjY,MACtE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,qDAAqDjc,MAAM,KACrEgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVX,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,gBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,cACJrnB,EAAG,UACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,WACJzf,EAAG,SACH0f,GAAI,UACJje,EAAG,WACHke,GAAI,aACJhe,EAAG,SACHie,GAAI,SAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAzDyBgf,CAAQ,EAAQ,K,iBCClD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,uFAAuFlY,MAC3F,KAEJiY,YAAa,uEAAuEjY,MAChF,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,0CAA0Chc,MAAM,KAC/D+b,YAAa,4BAA4B/b,MAAM,KAC/C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,eACJD,IAAK,kBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVkH,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAGzBkX,cAAe,yBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,SAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAblX,EACAkX,EACa,WAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGfvH,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,OACRC,KAAM,WACNjiB,EAAG,YACHkiB,GAAI,aACJjjB,EAAG,WACHkjB,GAAI,WACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,WACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,WAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAtHyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAIoQ,EAAsB,6DAA6DznH,MAC/E,KAEJ0nH,EAAyB,kDAAkD1nH,MACvE,KAEJqY,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,qKAETi/F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,SAAUpb,EAAGkR,GACtB,OAAKlR,EAEM,QAAQ+D,KAAKmN,GACb25G,EAAuB7qH,EAAE+Y,SAEzB6xG,EAAoB5qH,EAAE+Y,SAJtB6xG,GAQfrvG,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBAAmB,4FACnBC,uBAAwB,mFAExB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAElB4D,SAAU,6DAA6Djc,MACnE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,SACJljB,EAAG,UACHmjB,GAAI,WACJzf,EAAG,WACH0f,GAAI,WACJje,EAAG,YACHke,GAAI,aACJhe,EAAG,WACHie,GAAI,WAERV,uBAAwB,kBACxBnM,QAAS,SAAUjB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhE6I,KAAM,CACFL,IAAK,EACLC,IAAK,KArGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIoQ,EAAsB,6DAA6DznH,MAC/E,KAEJ0nH,EAAyB,kDAAkD1nH,MACvE,KAEJqY,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJD,EAAc,qKAEPi/F,EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,SAAUpb,EAAGkR,GACtB,OAAKlR,EAEM,QAAQ+D,KAAKmN,GACb25G,EAAuB7qH,EAAE+Y,SAEzB6xG,EAAoB5qH,EAAE+Y,SAJtB6xG,GAQfrvG,YAAaA,EACbD,iBAAkBC,EAClB+tG,kBAAmB,4FACnBC,uBAAwB,mFAExB/tG,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAElB4D,SAAU,6DAA6Djc,MACnE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNjiB,EAAG,oBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,SACJljB,EAAG,UACHmjB,GAAI,WACJhe,EAAG,YACHke,GAAI,aACJhe,EAAG,WACHie,GAAI,WAERV,uBAAwB,kBACxBnM,QAAS,SAAUjB,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhE6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAnGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qFAAqFlY,MACzF,KAEJiY,YAAa,6DAA6DjY,MACtE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,qDAAqDjc,MAAM,KACrEgc,cAAe,+BAA+Bhc,MAAM,KACpD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVX,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNjiB,EAAG,eACHkiB,GAAI,YACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,UACHmjB,GAAI,WACJzf,EAAG,UACH0f,GAAI,WACJje,EAAG,YACHke,GAAI,aACJhe,EAAG,SACHie,GAAI,SAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAzDyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIbA;EAAOl2F,aAAa,SAAU,CACtCjJ,OAAQ,CACJstG,WAAY,qFAAqFxlH,MAC7F,KAEJ+N,OAAQ,sHAAsH/N,MAC1H,KAEJ01B,SAAU,mBAEdzd,YAAa,+DAA+DjY,MACxE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,mBACJknG,GAAI,aACJjnG,IAAK,4BACLknG,IAAK,mBACLjnG,KAAM,iCACNknG,KAAM,wBAEV7nG,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,QACNjiB,EAAG,gBACHkiB,GAAI,cACJjjB,EAAG,aACHkjB,GAAI,aACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,WACJhe,EAAG,SACHke,GAAI,WACJhe,EAAG,QACHie,GAAI,UAERV,uBAAwB,qBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,IAAI1X,EACW,IAAXvB,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXiZ,GAA6B,MAAXA,IAClB1X,EAAS,KAENvB,EAASuB,GAEpBsH,KAAM,CACFL,IAAK,EACLC,IAAK,KAjFyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFlN,EAAOl2F,aAAa,QAAS,CAEpCjJ,OAAQ,sEAAsElY,MAC1E,KAEJiY,YAAa,sEAAsEjY,MAC/E,KAEJic,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,iCAAiChc,MAAM,KACtD+b,YAAa,iCAAiC/b,MAAM,KACpDiU,eAAgB,CACZqL,GAAI,aACJD,IAAK,gBACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVX,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNjiB,EAAG,YACHkiB,GAAI,WACJjjB,EAAG,UACHkjB,GAAI,UACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,YACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,UAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAKzBkX,cAAe,uBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,QAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAblX,EACAkX,EACa,WAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KAvHyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIoR,EAAmB,mGAAmGzoH,MAClH,KAEJ0oH,EAAmB,qGAAqG1oH,MACpH,KAEJqY,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASuuG,EAAOnpH,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAAS+oH,EAAUl0G,EAAQ6d,EAAe5yB,GACtC,IAAIlE,EAASiZ,EAAS,IACtB,OAAQ/U,GACJ,IAAK,KACD,OAAOlE,GAAUutH,EAAOt0G,GAAU,UAAY,UAClD,IAAK,IACD,OAAO6d,EAAgB,SAAW,SACtC,IAAK,KACD,OAAO92B,GAAUutH,EAAOt0G,GAAU,SAAW,SACjD,IAAK,IACD,OAAO6d,EAAgB,UAAY,UACvC,IAAK,KACD,OAAO92B,GAAUutH,EAAOt0G,GAAU,UAAY,UAClD,IAAK,KACD,OAAOjZ,GAAUutH,EAAOt0G,GAAU,WAAa,WACnD,IAAK,KACD,OAAOjZ,GAAUutH,EAAOt0G,GAAU,WAAa,YACnD,IAAK,KACD,OAAOjZ,GAAUutH,EAAOt0G,GAAU,OAAS,QAI9C+kG,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,SAAU8uG,EAAgBj5G,GAC9B,OAAKi5G,EAEM,SAASpmH,KAAKmN,GACd26G,EAAiB1B,EAAepxG,SAEhC6yG,EAAiBzB,EAAepxG,SAJhC6yG,GAOfxwG,YAAa,kDAAkDjY,MAAM,KACrEqY,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAClB4D,SAAU,6DAA6Djc,MACnE,KAEJgc,cAAe,2BAA2Bhc,MAAM,KAChD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnBiC,QAAS,iBACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,eACHkiB,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG,UACHmjB,GAAI,SACJzf,EAAG,UACH0f,GAAIsmG,EACJvkH,EAAG,UACHke,GAAIqmG,EACJrkH,EAAG,MACHie,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAzIyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,2FAA2FlY,MAC/F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,iFAAiFjc,MACvF,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf/oB,KAAK6mB,OAA8B,IAAf7mB,KAAK6mB,MAC1B,wBACA,yBAEVmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNjiB,EAAG,WACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJzf,EAAG,aACH0f,GAAI,aACJje,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA5DyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,2FAA2FlY,MAC/F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,iFAAiFjc,MACvF,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf/oB,KAAK6mB,OAA8B,IAAf7mB,KAAK6mB,MAC1B,wBACA,yBAEVmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNjiB,EAAG,kBACHkiB,GAAI,cACJjjB,EAAG,YACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,UACJhe,EAAG,SACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,WAERV,uBAAwB,WACxBnM,QAAS,MACTQ,YAAa,kBAxDqBgmB,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIzB;SAASiO,EAAuBhzG,EAAQ6d,EAAe5yB,GACnD,IASIksB,EAAY,IAIhB,OAHInX,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDmX,EAAY,QAETnX,EAASmX,EAbH,CACL3J,GAAI,UACJC,GAAI,SACJC,GAAI,MACJC,GAAI,OACJC,GAAI,YACJC,GAAI,OACJC,GAAI,OAMuB7iB,GAG9B85G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,oGAAoGlY,MACxG,KAEJiY,YAAa,+DAA+DjY,MACxE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,kDAAkDjc,MAAM,KAClEgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,aACNjiB,EAAG,iBACHkiB,GAAIwlG,EACJzoH,EAAG,WACHkjB,GAAIulG,EACJ5sH,EAAG,QACHsnB,GAAIslG,EACJxoH,EAAG,OACHmjB,GAAIqlG,EACJ9kH,EAAG,cACH0f,GAAIolG,EACJrjH,EAAG,SACHke,GAAImlG,EACJnjH,EAAG,QACHie,GAAIklG,GAERnqG,KAAM,CACFL,IAAK,EACLC,IAAK,KAvEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAYzB;SAASiO,EAAuBhzG,EAAQ6d,EAAe5yB,GACnD,IATkB4hC,EACdomF,EAiBJ,MAAY,MAARhoH,EACO4yB,EAAgB,SAAW,SAE3B7d,EAAS,KArBF6sB,GAqB6B7sB,EApB3CizG,EAQS,CACTzlG,GAAIqQ,EAAgB,yBAA2B,yBAC/CpQ,GAAIoQ,EAAgB,sBAAwB,sBAC5CnQ,GAAI,iBACJC,GAAI,gBACJC,GAAI,uBACJC,GAAI,uBACJC,GAAI,gBAKgC7iB,GApBvByC,MAAM,KAChBm/B,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjComF,EAAM,GACNpmF,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEomF,EAAM,GACNA,EAAM,IAkBhB,IAAIltG,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMKg/F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJnK,OAAQ,oFAAoF/N,MACxF,KAEJwlH,WAAY,kFAAkFxlH,MAC1F,MAGRiY,YAAa,CAETlK,OAAQ,gEAAgE/N,MACpE,KAEJwlH,WAAY,gEAAgExlH,MACxE,MAGRic,SAAU,CACNupG,WAAY,gEAAgExlH,MACxE,KAEJ+N,OAAQ,gEAAgE/N,MACpE,KAEJ01B,SAAU,iDAEd1Z,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1CqY,YAAaA,EACbguG,gBAAiBhuG,EACjBiuG,iBAAkBjuG,EAGlBD,YAAa,2MAGbD,iBAAkB,2MAGlBguG,kBAAmB,wHAGnBC,uBAAwB,6FACxBnyG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAU6F,GAChB,GAAIA,EAAI3J,SAAW/kB,KAAK+kB,OAcpB,OAAmB,IAAf/kB,KAAK6mB,MACE,oBAEA,mBAhBX,OAAQ7mB,KAAK6mB,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvBkC,SAAU,SAAU2F,GAChB,GAAIA,EAAI3J,SAAW/kB,KAAK+kB,OAcpB,OAAmB,IAAf/kB,KAAK6mB,MACE,oBAEA,mBAhBX,OAAQ7mB,KAAK6mB,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNjiB,EAAG,mBACHkiB,GAAIwlG,EACJzoH,EAAGyoH,EACHvlG,GAAIulG,EACJ5sH,EAAG,MACHsnB,GAAIslG,EACJxoH,EAAG,OACHmjB,GAAIqlG,EACJ9kH,EAAG,SACH0f,GAAIolG,EACJrjH,EAAG,QACHke,GAAImlG,EACJnjH,EAAG,MACHie,GAAIklG,GAERjlG,cAAe,wBACf/B,KAAM,SAAUrR,GACZ,MAAO,iBAAiBrM,KAAKqM,IAEjCkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGf3G,uBAAwB,mBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KA1MyBgf,CAAQ,EAAQ,K,iBCClD,SAAWs9E,GAAU;kCAIzB;IAAIn/F,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJyQ,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElD0uF,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQA,EACRD,YAAaC,EACb+D,SAAU0M,EACV3M,cAAe2M,EACf5M,YAAa4M,EACb1U,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,UACf/B,KAAM,SAAUrR,GACZ,MAAO,QAAUA,GAErBkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,MAEJ,OAEXvH,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNjiB,EAAG,YACHkiB,GAAI,WACJjjB,EAAG,SACHkjB,GAAI,SACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,WACHmjB,GAAI,WACJhe,EAAG,WACHke,GAAI,WACJhe,EAAG,SACHie,GAAI,UAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC8vB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC+a,KAAM,CACFL,IAAK,EACLC,IAAK,KA/EyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,mJAAmJlY,MACvJ,KAEJiY,YAAa,6DAA6DjY,MACtE,KAEJic,SAAU,6EAA6Ejc,MACnF,KAEJgc,cAAe,mCAAmChc,MAAM,KACxD+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNjiB,EAAG,mBACHkiB,GAAI,eACJjjB,EAAG,eACHkjB,GAAI,cACJrnB,EAAG,cACHsnB,GAAI,aACJljB,EAAG,cACHmjB,GAAI,cACJhe,EAAG,aACHke,GAAI,WACJhe,EAAG,aACHie,GAAI,YAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAvDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAKhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,kGAAkGlY,MACtG,KAEJiY,YAAa,wDAAwDjY,MACjE,KAEJic,SAAU,gEAAgEjc,MACtE,KAEJgc,cAAe,gCAAgChc,MAAM,KACrD+b,YAAa,qBAAqB/b,MAAM,KACxC2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVX,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNjiB,EAAG,eACHkiB,GAAI,WACJjjB,EAAG,YACHkjB,GAAI,cACJrnB,EAAG,MACHsnB,GAAI,SACJljB,EAAG,OACHmjB,GAAI,SACJhe,EAAG,OACHke,GAAI,SACJhe,EAAG,MACHie,GAAI,UAERV,uBAAwB,eACxBnM,QAAS,SAAUjB,GACf,OAAOA,EAAS,SAEpB+N,cAAe,4BACf/B,KAAM,SAAUrR,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/BkC,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACDsY,EAAU,OAAS,UAEnBA,EAAU,QAAU,aAjED2D,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAIn/F,EAAS,oFAAoFlY,MACzF,KAEJiY,EAAc,kDAAkDjY,MAAM,KAC1E,SAAS4mH,EAAOnpH,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAAS+oH,EAAUl0G,EAAQ6d,EAAe5yB,EAAK83B,GAC3C,IAAIh8B,EAASiZ,EAAS,IACtB,OAAQ/U,GACJ,IAAK,IACD,OAAO4yB,GAAiBkF,EAAW,aAAe,gBACtD,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,UAAY,UAEvCjZ,EAAS,YAExB,IAAK,IACD,OAAO82B,EAAgB,SAAWkF,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,SAAW,SAEtCjZ,EAAS,WAExB,IAAK,IACD,OAAO82B,EAAgB,SAAWkF,EAAW,SAAW,UAC5D,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,SAAW,SAEtCjZ,EAAS,WAExB,IAAK,IACD,OAAO82B,GAAiBkF,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,MAAQ,OAEnCjZ,EAAS,QAExB,IAAK,IACD,OAAO82B,GAAiBkF,EAAW,SAAW,WAClD,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,UAAY,YAEvCjZ,EAAS,WAExB,IAAK,IACD,OAAO82B,GAAiBkF,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAIlF,GAAiBkF,EACVh8B,GAAUutH,EAAOt0G,GAAU,OAAS,SAEpCjZ,EAAS,SAKvBg+G,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQA,EACRD,YAAaA,EACbgE,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBiC,QAAS,eACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG4oH,EACH1mG,GAAI0mG,EACJ3pH,EAAG2pH,EACHzmG,GAAIymG,EACJ9tH,EAAG8tH,EACHxmG,GAAIwmG,EACJ1pH,EAAG0pH,EACHvmG,GAAIumG,EACJvkH,EAAGukH,EACHrmG,GAAIqmG,EACJrkH,EAAGqkH,EACHpmG,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA7IyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAIh8B,EAASiZ,EAAS,IACtB,OAAQ/U,GACJ,IAAK,IACD,OAAO4yB,GAAiBkF,EAClB,eACA,kBACV,IAAK,KAUD,OARIh8B,GADW,IAAXiZ,EACU6d,EAAgB,UAAY,UACpB,IAAX7d,EACG6d,GAAiBkF,EAAW,UAAY,WAC3C/iB,EAAS,EACN6d,GAAiBkF,EAAW,UAAY,WAExC,SAGlB,IAAK,IACD,OAAOlF,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARI92B,GADW,IAAXiZ,EACU6d,EAAgB,SAAW,SACnB,IAAX7d,EACG6d,GAAiBkF,EAAW,SAAW,WAC1C/iB,EAAS,EACN6d,GAAiBkF,EAAW,SAAW,WAEvClF,GAAiBkF,EAAW,QAAU,WAGxD,IAAK,IACD,OAAOlF,EAAgB,UAAY,UACvC,IAAK,KAUD,OARI92B,GADW,IAAXiZ,EACU6d,EAAgB,MAAQ,MAChB,IAAX7d,EACG6d,GAAiBkF,EAAW,MAAQ,QACvC/iB,EAAS,EACN6d,GAAiBkF,EAAW,MAAQ,QAEpClF,GAAiBkF,EAAW,KAAO,QAGrD,IAAK,IACD,OAAOlF,GAAiBkF,EAAW,SAAW,YAClD,IAAK,KAQD,OANIh8B,GADW,IAAXiZ,EACU6d,GAAiBkF,EAAW,MAAQ,OAC5B,IAAX/iB,EACG6d,GAAiBkF,EAAW,MAAQ,UAEpClF,GAAiBkF,EAAW,MAAQ,QAGtD,IAAK,IACD,OAAOlF,GAAiBkF,EAAW,WAAa,eACpD,IAAK,KAUD,OARIh8B,GADW,IAAXiZ,EACU6d,GAAiBkF,EAAW,QAAU,UAC9B,IAAX/iB,EACG6d,GAAiBkF,EAAW,SAAW,WAC1C/iB,EAAS,EACN6d,GAAiBkF,EAAW,SAAW,SAEvClF,GAAiBkF,EAAW,UAAY,SAG1D,IAAK,IACD,OAAOlF,GAAiBkF,EAAW,WAAa,aACpD,IAAK,KAUD,OARIh8B,GADW,IAAXiZ,EACU6d,GAAiBkF,EAAW,OAAS,QAC7B,IAAX/iB,EACG6d,GAAiBkF,EAAW,OAAS,SACxC/iB,EAAS,EACN6d,GAAiBkF,EAAW,OAAS,OAErClF,GAAiBkF,EAAW,MAAQ,QAMrDgiF,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,8DAA8DjY,MACvE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,eACH8e,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBiC,QAAS,iBACTC,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnBmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNjiB,EAAGipH,EACH/mG,GAAI+mG,EACJhqH,EAAGgqH,EACH9mG,GAAI8mG,EACJnuH,EAAGmuH,EACH7mG,GAAI6mG,EACJ/pH,EAAG+pH,EACH5mG,GAAI4mG,EACJ5kH,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAxKyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,gFAAgFlY,MACpF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,4DAA4Djc,MAClE,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,mBAAmB/b,MAAM,KACtC2kH,oBAAoB,EACpBtkG,cAAe,QACf/B,KAAM,SAAUrR,GACZ,MAA2B,MAApBA,EAAMtK,OAAO,IAExBwM,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAOtY,EAAQ,GAAK,KAAO,MAE/B7J,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,aACNjiB,EAAG,eACHkiB,GAAI,aACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,UACHsnB,GAAI,SACJljB,EAAG,WACHmjB,GAAI,UACJhe,EAAG,WACHke,GAAI,UACJhe,EAAG,UACHie,GAAI,WAERV,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA7DyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIzB;IAAIgR,EAAa,CACbxlD,MAAO,CAEH/iD,GAAI,CAAC,UAAW,UAAW,WAC3BjjB,EAAG,CAAC,cAAe,gBACnBkjB,GAAI,CAAC,QAAS,SAAU,UACxBrnB,EAAG,CAAC,YAAa,eACjBsnB,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBC,GAAI,CAAC,SAAU,SAAU,WAE7BkoG,uBAAwB,SAAUh2G,EAAQi2G,GACtC,OAAkB,IAAXj2G,EACDi2G,EAAQ,GACRj2G,GAAU,GAAKA,GAAU,EACzBi2G,EAAQ,GACRA,EAAQ,IAElB/B,UAAW,SAAUl0G,EAAQ6d,EAAe5yB,GACxC,IAAIgrH,EAAUF,EAAWxlD,MAAMtlE,GAC/B,OAAmB,IAAfA,EAAI3H,OACGu6B,EAAgBo4F,EAAQ,GAAKA,EAAQ,GAGxCj2G,EACA,IACA+1G,EAAWC,uBAAuBh2G,EAAQi2G,KAMjDlR,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,mFAAmFlY,MACvF,KAEJiY,YAAa,2DAA2DjY,MACpE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,cACH8e,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBiC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgB/oB,KAAK6mB,QAE7BmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,mBACHkiB,GAAIuoG,EAAW7B,UACf3pH,EAAGwrH,EAAW7B,UACdzmG,GAAIsoG,EAAW7B,UACf9tH,EAAG2vH,EAAW7B,UACdxmG,GAAIqoG,EAAW7B,UACf1pH,EAAG,MACHmjB,GAAIooG,EAAW7B,UACfvkH,EAAG,QACHke,GAAIkoG,EAAW7B,UACfrkH,EAAG,SACHie,GAAIioG,EAAW7B,WAEnB9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAnHyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIgR,EAAa,CACbxlD,MAAO,CAEH/iD,GAAI,CAAC,UAAW,UAAW,WAC3BjjB,EAAG,CAAC,cAAe,gBACnBkjB,GAAI,CAAC,QAAS,SAAU,UACxBrnB,EAAG,CAAC,YAAa,eACjBsnB,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBC,GAAI,CAAC,SAAU,SAAU,WAE7BkoG,uBAAwB,SAAUh2G,EAAQi2G,GACtC,OAAkB,IAAXj2G,EACDi2G,EAAQ,GACRj2G,GAAU,GAAKA,GAAU,EACzBi2G,EAAQ,GACRA,EAAQ,IAElB/B,UAAW,SAAUl0G,EAAQ6d,EAAe5yB,GACxC,IAAIgrH,EAAUF,EAAWxlD,MAAMtlE,GAC/B,OAAmB,IAAfA,EAAI3H,OACGu6B,EAAgBo4F,EAAQ,GAAKA,EAAQ,GAGxCj2G,EACA,IACA+1G,EAAWC,uBAAuBh2G,EAAQi2G,KAM7ClR,EAAOl2F,aAAa,UAAW,CACxCjJ,OAAQ,mFAAmFlY,MACvF,KAEJiY,YAAa,2DAA2DjY,MACpE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,cACH8e,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQ7oB,KAAK6mB,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBiC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgB/oB,KAAK6mB,QAE7BmC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNjiB,EAAG,mBACHkiB,GAAIuoG,EAAW7B,UACf3pH,EAAGwrH,EAAW7B,UACdzmG,GAAIsoG,EAAW7B,UACf9tH,EAAG2vH,EAAW7B,UACdxmG,GAAIqoG,EAAW7B,UACf1pH,EAAG,MACHmjB,GAAIooG,EAAW7B,UACfvkH,EAAG,QACHke,GAAIkoG,EAAW7B,UACfrkH,EAAG,SACHie,GAAIioG,EAAW7B,WAEnB9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAjHyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,mHAAmHlY,MACvH,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,sEAAsEjc,MAC5E,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACNjiB,EAAG,qBACHkiB,GAAI,cACJjjB,EAAG,SACHkjB,GAAI,aACJrnB,EAAG,SACHsnB,GAAI,aACJljB,EAAG,UACHmjB,GAAI,cACJhe,EAAG,UACHke,GAAI,cACJhe,EAAG,UACHie,GAAI,eAERC,cAAe,mCACflR,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGfyI,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,YAAblX,EACOkX,EACa,UAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAblX,GAA0C,YAAbA,EACvB,IAATkX,EACO,EAEJA,EAAO,QAJX,GAOX3G,uBAAwB,UACxBnM,QAAS,KACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAjFyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,oDAAoDjc,MAAM,KACpEgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNinG,IAAK,mBACLC,KAAM,wBAEV7nG,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,eACNjiB,EAAG,iBACHkiB,GAAI,cACJjjB,EAAG,WACHkjB,GAAI,aACJrnB,EAAG,WACHsnB,GAAI,YACJljB,EAAG,SACHmjB,GAAI,WACJhe,EAAG,WACHke,GAAI,aACJhe,EAAG,SACHie,GAAI,SAERV,uBAAwB,mBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,GAEM,IAANA,EADA,KAIA,OAIlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAlEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,sFAAsFlY,MAC1F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,8DAA8Djc,MACpE,KAEJgc,cAAe,kCAAkChc,MAAM,KACvD+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,UACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNjiB,EAAG,aACHkiB,GAAI,aACJjjB,EAAG,cACHkjB,GAAI,YACJrnB,EAAG,aACHsnB,GAAI,WACJljB,EAAG,YACHmjB,GAAI,UACJhe,EAAG,cACHke,GAAI,WACJhe,EAAG,cACHie,GAAI,YAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KApDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuM,EAAY,CACRC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,EAAG,KAEPC,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJlN,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,0FAA0FjY,MACnG,KAEJic,SAAU,8FAA8Fjc,MACpG,KAEJgc,cAAe,mDAAmDhc,MAC9D,KAEJ+b,YAAa,sBAAsB/b,MAAM,KACzCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNjiB,EAAG,oBACHkiB,GAAI,eACJjjB,EAAG,cACHkjB,GAAI,gBACJrnB,EAAG,gBACHsnB,GAAI,eACJljB,EAAG,WACHmjB,GAAI,aACJhe,EAAG,YACHke,GAAI,cACJhe,EAAG,aACHie,GAAI,eAERV,uBAAwB,aACxBnM,QAAS,SAAUjB,GACf,OAAOA,EAAS,OAEpBqU,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,iBAAiB,SAAU+I,GAC7C,OAAOo7G,EAAUp7G,OAGzB+mB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,OAAO,SAAU+I,GACnC,OAAOy6G,EAAUz6G,OAIzBkX,cAAe,wCACflR,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfE,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,UAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAblX,GAAqC,SAAbA,GAEX,YAAbA,GACAkX,GAAQ,GAFRA,EAIAA,EAAO,IAGtBlL,KAAM,CACFL,IAAK,EACLC,IAAK,KA/HyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,mEAAmEjY,MAC5E,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,8DAA8Djc,MACpE,KAEJgc,cAAe,kCAAkChc,MAAM,KACvD+b,YAAa,qBAAqB/b,MAAM,KACxCiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVX,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,YACNjiB,EAAG,iBACHkiB,GAAI,aACJjjB,EAAG,YACHkjB,GAAI,cACJrnB,EAAG,SACHsnB,GAAI,WACJljB,EAAG,UACHmjB,GAAI,YACJhe,EAAG,SACHke,GAAI,WACJhe,EAAG,cACHie,GAAI,iBAERV,uBAAwB,WACxBnM,QAAS,MACT8M,cAAe,iCACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,WAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAblX,EACAkX,EACa,cAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGflL,KAAM,CACFL,IAAK,EACLC,IAAK,KApFyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIfA;EAAOl2F,aAAa,MAAO,CACjCjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,kDAAkDjc,MAAM,KAClEgc,cAAe,iCAAiChc,MAAM,KACtD+b,YAAa,yBAAyB/b,MAAM,KAC5CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,YACHmjB,GAAI,WACJhe,EAAG,YACHke,GAAI,WACJhe,EAAG,YACHie,GAAI,YAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KAhEyBgf,CAAQ,EAAQ,K,iBCClD,SAAWs9E,GAAU;kCAIzB;IAAIuN,EAAW,CACXN,EAAG,MACHT,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHC,EAAG,MACHa,GAAI,MACJyD,GAAI,MACJC,GAAI,MACJ7D,GAAI,MACJI,GAAI,MACJ4C,GAAI,MACJ/C,GAAI,MACJI,GAAI,MACJP,GAAI,MACJC,GAAI,MACJO,GAAI,MACJJ,IAAK,OAGA5N,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJnK,OAAQ,qFAAqF/N,MACzF,KAEJwlH,WAAY,yEAAyExlH,MACjF,MAGRiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,SACNjiB,EAAG,eACHf,EAAG,YACHkjB,GAAI,YACJrnB,EAAG,UACHsnB,GAAI,UACJljB,EAAG,SACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,SACJhe,EAAG,SACHie,GAAI,UAERC,cAAe,qBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,QAAblX,EACOkX,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAblX,EACAkX,EACa,QAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAblX,EACAkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGf3G,uBAAwB,kBACxBnM,QAAS,SAAUjB,GAGf,OAAOA,GAAUsyG,EAAStyG,IAAWsyG,EAF7BtyG,EAAS,KAEmCsyG,EAD5CtyG,GAAU,IAAM,IAAM,QAGlC6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAlHyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,oGAAoGlY,MACxG,KAEJiY,YAAa,iEAAiEjY,MAC1E,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,iDAAiDjc,MAAM,KACjEgc,cAAe,8CAA8Chc,MAAM,KACnE+b,YAAa,yBAAyB/b,MAAM,KAC5C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,OACJD,IAAK,UACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVY,cAAe,wBACf/B,KAAM,SAAUrR,GACZ,MAAiB,eAAVA,GAEXkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,aAEA,cAGfvH,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNjiB,EAAG,eACHkiB,GAAI,YACJjjB,EAAG,SACHkjB,GAAI,UACJrnB,EAAG,YACHsnB,GAAI,aACJljB,EAAG,QACHmjB,GAAI,SACJzf,EAAG,YACH0f,GAAI,aACJje,EAAG,UACHke,GAAI,WACJhe,EAAG,OACHie,GAAI,WA9D0B2Z,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIuN,EAAW,CACXf,EAAG,QACHI,EAAG,QACHG,EAAG,QACHS,GAAI,QACJC,GAAI,QACJhB,EAAG,OACHK,EAAG,OACHY,GAAI,OACJC,GAAI,OACJjB,EAAG,QACHC,EAAG,QACHiB,IAAK,QACLf,EAAG,OACHG,EAAG,QACHa,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SAGChO,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,+EAA+ElY,MACnF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNjiB,EAAG,iBACHf,EAAG,YACHkjB,GAAI,WACJrnB,EAAG,YACHsnB,GAAI,WACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,QACJhe,EAAG,UACHie,GAAI,UAER7M,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOjZ,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI7X,EAAI6X,EAAS,GAGjB,OAAOA,GAAUsyG,EAASnqH,IAAMmqH,EAFvBtyG,EAAS,IAAO7X,IAEsBmqH,EADvCtyG,GAAU,IAAM,IAAM,SAI1C6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAzFyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,wBAAwB/b,MAAM,KAC3CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,YACH8e,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVX,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNjiB,EAAG,gBACHkiB,GAAI,aACJjjB,EAAG,eACHkjB,GAAI,YACJrnB,EAAG,aACHsnB,GAAI,UACJljB,EAAG,aACHmjB,GAAI,UACJhe,EAAG,cACHke,GAAI,WACJhe,EAAG,aACHie,GAAI,WAERV,uBAAwB,UACxBnM,QAAS,SAAUjB,GACf,OAAOA,GAEX6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAvDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIwR,EAAe,iDAAiD7oH,MAAM,KA4B1E,SAASwmH,EAAUl0G,EAAQ6d,EAAermB,EAAQurB,GAC9C,IAAIyzF,EAiBR,SAAsBx2G,GAClB,IAAIy2G,EAAUr2G,KAAK0C,MAAO9C,EAAS,IAAQ,KACvC02G,EAAMt2G,KAAK0C,MAAO9C,EAAS,IAAO,IAClC8mC,EAAM9mC,EAAS,GACfkwD,EAAO,GAUX,OATIumD,EAAU,IACVvmD,GAAQqmD,EAAaE,GAAW,SAEhCC,EAAM,IACNxmD,IAAkB,KAATA,EAAc,IAAM,IAAMqmD,EAAaG,GAAO,OAEvD5vE,EAAM,IACNopB,IAAkB,KAATA,EAAc,IAAM,IAAMqmD,EAAazvE,IAEpC,KAATopB,EAAc,OAASA,EA/BbymD,CAAa32G,GAC9B,OAAQxI,GACJ,IAAK,KACD,OAAOg/G,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtBzR,EAAOl2F,aAAa,MAAO,CACjCjJ,OAAQ,kMAAkMlY,MACtM,KAEJiY,YAAa,0HAA0HjY,MACnI,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,2DAA2Djc,MACjE,KAEJgc,cAAe,2DAA2Dhc,MACtE,KAEJ+b,YAAa,2DAA2D/b,MACpE,KAEJiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdO,aAAc,CACVC,OA/FR,SAAyB/L,GACrB,IAAIyb,EAAOzb,EASX,OARAyb,GAC+B,IAA3Bzb,EAAOrgB,QAAQ,OACT87B,EAAK5zB,MAAM,GAAI,GAAK,OACO,IAA3BmY,EAAOrgB,QAAQ,OACf87B,EAAK5zB,MAAM,GAAI,GAAK,OACO,IAA3BmY,EAAOrgB,QAAQ,OACf87B,EAAK5zB,MAAM,GAAI,GAAK,MACpB4zB,EAAO,QAuFbzP,KAnFR,SAAuBhM,GACnB,IAAIyb,EAAOzb,EASX,OARAyb,GAC+B,IAA3Bzb,EAAOrgB,QAAQ,OACT87B,EAAK5zB,MAAM,GAAI,GAAK,OACO,IAA3BmY,EAAOrgB,QAAQ,OACf87B,EAAK5zB,MAAM,GAAI,GAAK,OACO,IAA3BmY,EAAOrgB,QAAQ,OACf87B,EAAK5zB,MAAM,GAAI,GAAK,MACpB4zB,EAAO,QA2Eb1xB,EAAG,UACHkiB,GAAI0mG,EACJ3pH,EAAG,UACHkjB,GAAIymG,EACJ9tH,EAAG,UACHsnB,GAAIwmG,EACJ1pH,EAAG,UACHmjB,GAAIumG,EACJvkH,EAAG,UACHke,GAAIqmG,EACJrkH,EAAG,UACHie,GAAIomG,GAER9mG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KA3HyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIzB;IAAIuN,EAAW,CACXf,EAAG,QACHI,EAAG,QACHG,EAAG,QACHS,GAAI,QACJC,GAAI,QACJhB,EAAG,OACHK,EAAG,OACHY,GAAI,OACJC,GAAI,OACJjB,EAAG,QACHC,EAAG,QACHiB,IAAK,QACLf,EAAG,OACHG,EAAG,QACHa,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SAGChO,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,6EAA6ElY,MACjF,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,wDAAwDjc,MAC9D,KAEJgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CmP,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACDsY,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhC/V,cAAe,cACf/B,KAAM,SAAUrR,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7BgH,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,UACNjiB,EAAG,gBACHkiB,GAAI,YACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,SACJzf,EAAG,YACH0f,GAAI,WACJje,EAAG,SACHke,GAAI,QACJhe,EAAG,UACHie,GAAI,UAER7M,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOjZ,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI7X,EAAI6X,EAAS,GAGjB,OAAOA,GAAUsyG,EAASnqH,IAAMmqH,EAFvBtyG,EAAS,IAAO7X,IAEsBmqH,EADvCtyG,GAAU,IAAM,IAAM,SAI1C6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAvGyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAiEzB;SAASwP,EAAoBv0G,EAAQ6d,EAAe5yB,EAAK83B,GACrD,IAAItnB,EAAS,CACTnQ,EAAG,CAAC,kBAAmB,mBACvBkiB,GAAI,CAACxN,EAAS,WAAiBA,EAAS,YACxCzV,EAAG,CAAC,UAAW,cACfkjB,GAAI,CAACzN,EAAS,SAAeA,EAAS,UACtC5Z,EAAG,CAAC,UAAW,eACfsnB,GAAI,CAAC1N,EAAS,SAAeA,EAAS,UACtCxV,EAAG,CAAC,UAAW,eACfmjB,GAAI,CAAC3N,EAAS,SAAeA,EAAS,UACtCrQ,EAAG,CAAC,SAAU,aACdke,GAAI,CAAC7N,EAAS,SAAeA,EAAS,UACtCnQ,EAAG,CAAC,QAAS,YACbie,GAAI,CAAC9N,EAAS,OAAaA,EAAS,SAExC,OAAO+iB,GAEDlF,EADApiB,EAAOxQ,GAAK,GAGZwQ,EAAOxQ,GAAK,GA9EZ85G,EAAOl2F,aAAa,MAAO,CACjCjJ,OAAQ,sFAAsFlY,MAC1F,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,sDAAsDjc,MAAM,KACtEgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVY,cAAe,aACf/B,KAAM,SAAUrR,GACZ,MAAO,QAAUA,EAAM/D,eAE3BiG,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACDsY,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCtX,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,YACRC,KAAM,OACNjiB,EAAGipH,EACH/mG,GAAI+mG,EACJhqH,EAAGgqH,EACH9mG,GAAI8mG,EACJnuH,EAAGmuH,EACH7mG,GAAI6mG,EACJ/pH,EAAG+pH,EACH5mG,GAAI4mG,EACJ5kH,EAAG4kH,EACH1mG,GAAI0mG,EACJ1kH,EAAG0kH,EACHzmG,GAAIymG,GAERnnG,uBAAwB,YACxBnM,QAAS,MACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAhEyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIfA;EAAOl2F,aAAa,MAAO,CACjCjJ,OAAQ,kFAAkFlY,MACtF,KAEJiY,YAAa,kFAAkFjY,MAC3F,KAEJic,SAAU,kDAAkDjc,MAAM,KAClEgc,cAAe,kDAAkDhc,MAAM,KACvE+b,YAAa,kDAAkD/b,MAAM,KACrEiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACNjiB,EAAG,OACHkiB,GAAI,UACJjjB,EAAG,QACHkjB,GAAI,WACJrnB,EAAG,OACHsnB,GAAI,cACJljB,EAAG,MACHmjB,GAAI,WACJhe,EAAG,QACHke,GAAI,YACJhe,EAAG,QACHie,GAAI,aAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,MAnDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIXA;EAAOl2F,aAAa,WAAY,CAC1CjJ,OAAQ,wFAAwFlY,MAC5F,KAEJiY,YAAa,wFAAwFjY,MACjG,KAEJic,SAAU,kDAAkDjc,MAAM,KAClEgc,cAAe,kDAAkDhc,MAAM,KACvE+b,YAAa,kDAAkD/b,MAAM,KACrEiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVX,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACNjiB,EAAG,OACHkiB,GAAI,UACJjjB,EAAG,QACHkjB,GAAI,WACJrnB,EAAG,OACHsnB,GAAI,cACJljB,EAAG,MACHmjB,GAAI,WACJhe,EAAG,QACHke,GAAI,YACJhe,EAAG,QACHie,GAAI,aAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,MAnDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,sFAAsFlY,MAC1F,KAEJiY,YAAa,sFAAsFjY,MAC/F,KAEJic,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVY,cAAe,qDACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAGM,eAAblX,GACa,UAAbA,GACa,iBAAbA,EAEOkX,EACa,iBAAblX,GAA4C,QAAbA,EAC/BkX,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1ClX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,IAAIhS,EAAY,IAAPiC,EAAakB,EACtB,OAAInD,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGftF,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNjiB,EAAG,eACHkiB,GAAI,YACJjjB,EAAG,YACHkjB,GAAI,WACJrnB,EAAG,YACHsnB,GAAI,WACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,UACHke,GAAI,SACJhe,EAAG,UACHie,GAAI,UAGRV,uBAAwB,6BACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBqU,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC8vB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC+a,KAAM,CAEFL,IAAK,EACLC,IAAK,KA5GyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAYzB;SAASiO,EAAuBhzG,EAAQ6d,EAAe5yB,GACnD,IATkB4hC,EACdomF,EAgBJ,MAAY,MAARhoH,EACO4yB,EAAgB,UAAY,UACpB,MAAR5yB,EACA4yB,EAAgB,SAAW,SAE3B7d,EAAS,KAtBF6sB,GAsB6B7sB,EArB3CizG,EAQS,CACTzlG,GAAIqQ,EAAgB,yBAA2B,yBAC/CpQ,GAAIoQ,EAAgB,yBAA2B,yBAC/CnQ,GAAImQ,EAAgB,sBAAwB,sBAC5ClQ,GAAI,gBACJE,GAAI,wBACJC,GAAI,kBAOgC7iB,GArBvByC,MAAM,KAChBm/B,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjComF,EAAM,GACNpmF,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEomF,EAAM,GACNA,EAAM,IAiDhB,SAAS2D,EAAqBvjH,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBvP,KAAK0nB,QAAiB,IAAM,IAAM,QAIrDu5F,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,CACJnK,OAAQ,yFAAyF/N,MAC7F,KAEJwlH,WAAY,iGAAiGxlH,MACzG,MAGRiY,YAAa,yDAAyDjY,MAClE,KAEJic,SAhDJ,SAA6Bpf,EAAGkR,GAC5B,IAAIkO,EAAW,CACPktG,WAAY,0DAA0DnpH,MAClE,KAEJopH,WAAY,0DAA0DppH,MAClE,KAEJqpH,SAAU,4DAA4DrpH,MAClE,MAKZ,OAAU,IAANnD,EACOof,EAAqB,WACvBvgB,MAAM,EAAG,GACTnB,OAAO0hB,EAAqB,WAAEvgB,MAAM,EAAG,IAE3CmB,EASEof,EALI,qBAAqBrb,KAAKmN,GAC/B,aACA,sCAAsCnN,KAAKmN,GAC3C,WACA,cACoBlR,EAAEogB,OARjBhB,EAAqB,YA6BhCD,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVX,SAAU,CACNC,QAASmqG,EAAqB,cAC9BlqG,QAASkqG,EAAqB,YAC9BhqG,QAASgqG,EAAqB,WAC9BjqG,SAAUiqG,EAAqB,cAC/B/pG,SAAU,WACN,OAAQ/oB,KAAK6mB,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOisG,EAAqB,oBAAoB/2H,KAAKiE,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO8yH,EAAqB,qBAAqB/2H,KAAKiE,QAGlEgpB,SAAU,KAEdO,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNjiB,EAAG,kBACHkiB,GAAIwlG,EACJzoH,EAAGyoH,EACHvlG,GAAIulG,EACJ5sH,EAAG,SACHsnB,GAAIslG,EACJxoH,EAAG,OACHmjB,GAAIqlG,EACJrjH,EAAG,SACHke,GAAImlG,EACJnjH,EAAG,MACHie,GAAIklG,GAGRjlG,cAAe,wBACf/B,KAAM,SAAUrR,GACZ,MAAO,iBAAiBrM,KAAKqM,IAEjCkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGf3G,uBAAwB,iBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOjZ,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnB6I,KAAM,CACFL,IAAK,EACLC,IAAK,KAhKyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIzB;IAAIn/F,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJyQ,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpD0uF,EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQA,EACRD,YAAaC,EACb+D,SAAU0M,EACV3M,cAAe2M,EACf5M,YAAa4M,EACb1U,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVY,cAAe,UACf/B,KAAM,SAAUrR,GACZ,MAAO,QAAUA,GAErBkC,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,OAAI/P,EAAO,GACA,MAEJ,OAEXvH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNjiB,EAAG,YACHkiB,GAAI,WACJjjB,EAAG,UACHkjB,GAAI,SACJrnB,EAAG,YACHsnB,GAAI,WACJljB,EAAG,SACHmjB,GAAI,QACJhe,EAAG,UACHke,GAAI,SACJhe,EAAG,UACHie,GAAI,UAERuG,SAAU,SAAU7c,GAChB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC8vB,WAAY,SAAUpmB,GAClB,OAAOA,EAAO1J,QAAQ,KAAM,MAEhC+a,KAAM,CACFL,IAAK,EACLC,IAAK,KA/EyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,yEAAyElY,MAC7E,KAEJiY,YAAa,kDAAkDjY,MAAM,KACrEic,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,8BAA8Bhc,MAAM,KACnD+b,YAAa,uBAAuB/b,MAAM,KAC1CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACNjiB,EAAG,SACHkiB,GAAI,YACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,QACJhe,EAAG,UACHie,GAAI,UAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAjDyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIZA;EAAOl2F,aAAa,UAAW,CACxCjJ,OAAQ,6EAA6ElY,MACjF,KAEJiY,YAAa,oDAAoDjY,MAAM,KACvEic,SAAU,+DAA+Djc,MACrE,KAEJgc,cAAe,kCAAkChc,MAAM,KACvD+b,YAAa,yBAAyB/b,MAAM,KAC5CiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACNjiB,EAAG,SACHkiB,GAAI,YACJjjB,EAAG,aACHkjB,GAAI,YACJrnB,EAAG,WACHsnB,GAAI,UACJljB,EAAG,UACHmjB,GAAI,SACJhe,EAAG,SACHke,GAAI,QACJhe,EAAG,UACHie,GAAI,UAERjF,KAAM,CACFL,IAAK,EACLC,IAAK,KAnDyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,qGAAqGlY,MACzG,KAEJiY,YAAa,sFAAsFjY,MAC/F,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,yDAAyDjc,MAC/D,KAEJgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,uBAAuB/b,MAAM,KAC1C2kH,oBAAoB,EACpBtkG,cAAe,SACf/B,KAAM,SAAUrR,GACZ,MAAO,QAAQrM,KAAKqM,IAExBkC,SAAU,SAAU2O,EAAOE,EAASoY,GAChC,OAAItY,EAAQ,GACDsY,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCniB,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACN5oB,EAAG,YACH4vH,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEV7nG,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNjiB,EAAG,WACHkiB,GAAI,UACJjjB,EAAG,WACHkjB,GAAI,UACJrnB,EAAG,UACHsnB,GAAI,SACJljB,EAAG,WACHmjB,GAAI,UACJzf,EAAG,WACH0f,GAAI,UACJje,EAAG,YACHke,GAAI,WACJhe,EAAG,UACHie,GAAI,UAERV,uBAAwB,UACxBnM,QAAS,SAAUjB,GACf,OAAOA,GAEX6I,KAAM,CACFL,IAAK,EACLC,IAAK,KA5EyBgf,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIXA;EAAOl2F,aAAa,WAAY,CAC1CjJ,OAAQ,6GAA6GlY,MACjH,KAEJiY,YAAa,8DAA8DjY,MACvE,KAEJ2lH,kBAAkB,EAClB1pG,SAAU,yEAAyEjc,MAC/E,KAEJgc,cAAe,qCAAqChc,MAAM,KAC1D+b,YAAa,4BAA4B/b,MAAM,KAC/C2kH,oBAAoB,EACpB1wG,eAAgB,CACZqL,GAAI,QACJ7e,EAAG,aACH8e,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVX,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNjiB,EAAG,mBACHkiB,GAAI,eACJjjB,EAAG,aACHkjB,GAAI,eACJrnB,EAAG,YACHsnB,GAAI,YACJljB,EAAG,SACHmjB,GAAI,WACJhe,EAAG,YACHke,GAAI,cACJhe,EAAG,UACHie,GAAI,aAERV,uBAAwB,uBACxBnM,QAAS,SAAUjB,GACf,IAAI5X,EAAI4X,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN5X,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBygB,KAAM,CACFL,IAAK,EACLC,IAAK,KArEyBgf,CAAQ,EAAQ,K,iBCGlD,SAAWs9E,GAAU;kCAIhBA;EAAOl2F,aAAa,KAAM,CAC/BjJ,OAAQ,0FAA0FlY,MAC9F,KAEJiY,YAAa,gEAAgEjY,MAAM,KACnFic,SAAU,uDAAuDjc,MAAM,KACvEgc,cAAe,sCAAsChc,MAAM,KAC3D+b,YAAa,2BAA2B/b,MAAM,KAC9CiU,eAAgB,CACZqL,GAAI,SACJD,IAAK,YACL5e,EAAG,aACH8e,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVX,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdO,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNjiB,EAAG,oBACHkiB,GAAI,WACJjjB,EAAG,cACHkjB,GAAI,aACJrnB,EAAG,cACHsnB,GAAI,aACJljB,EAAG,WACHmjB,GAAI,UACJhe,EAAG,WACHke,GAAI,UACJhe,EAAG,YACHie,GAAI,YAERV,uBAAwB,gBACxBnM,QAAS,UACT4H,KAAM,CACFL,IAAK,EACLC,IAAK,KAnDyBgf,CAAQ,EAAQ,K,iBCKlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wCAAwClY,MAC5C,KAEJiY,YAAa,yCAAyCjY,MAClD,KAEJic,SAAU,8BAA8Bjc,MAAM,KAC9Cgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5oB,EAAG,WACH4vH,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVtmG,cAAe,oBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,OAAblX,GAAkC,OAAbA,GAAkC,OAAbA,EACnCkX,EACa,OAAblX,GAAkC,OAAbA,EACrBkX,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1ClX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,IAAIhS,EAAY,IAAPiC,EAAakB,EACtB,OAAInD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGftF,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAU6F,GAChB,OAAIA,EAAI3J,SAAW/kB,KAAK+kB,OACb,WAEA,YAGf+D,QAAS,SACTC,SAAU,SAAU2F,GAChB,OAAI1uB,KAAK+kB,SAAW2J,EAAI3J,OACb,WAEA,YAGfiE,SAAU,KAEdM,uBAAwB,iBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBqN,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNjiB,EAAG,KACHkiB,GAAI,OACJjjB,EAAG,OACHkjB,GAAI,QACJrnB,EAAG,OACHsnB,GAAI,QACJljB,EAAG,MACHmjB,GAAI,OACJzf,EAAG,MACH0f,GAAI,OACJje,EAAG,OACHke,GAAI,QACJhe,EAAG,MACHie,GAAI,QAERjF,KAAM,CAEFL,IAAK,EACLC,IAAK,KApHyBgf,CAAQ,EAAQ,K,iBCIlD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wCAAwClY,MAC5C,KAEJiY,YAAa,yCAAyCjY,MAClD,KAEJic,SAAU,8BAA8Bjc,MAAM,KAC9Cgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5oB,EAAG,WACH4vH,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVtmG,cAAe,oBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,OAAblX,GAAkC,OAAbA,GAAkC,OAAbA,EACnCkX,EACa,OAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAblX,GAAkC,OAAbA,EACrBkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,IAAIhS,EAAY,IAAPiC,EAAakB,EACtB,OAAInD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGftF,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEdM,uBAAwB,iBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBqN,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNjiB,EAAG,KACHkiB,GAAI,OACJjjB,EAAG,OACHkjB,GAAI,QACJrnB,EAAG,OACHsnB,GAAI,QACJljB,EAAG,MACHmjB,GAAI,OACJhe,EAAG,OACHke,GAAI,QACJhe,EAAG,MACHie,GAAI,UAhG0B2Z,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wCAAwClY,MAC5C,KAEJiY,YAAa,yCAAyCjY,MAClD,KAEJic,SAAU,8BAA8Bjc,MAAM,KAC9Cgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5oB,EAAG,WACH4vH,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVtmG,cAAe,oBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,OAAblX,GAAkC,OAAbA,GAAkC,OAAbA,EACnCkX,EACa,OAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAblX,GAAkC,OAAbA,EACrBkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,IAAIhS,EAAY,IAAPiC,EAAakB,EACtB,OAAInD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGftF,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdM,uBAAwB,iBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBqN,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNjiB,EAAG,KACHkiB,GAAI,OACJjjB,EAAG,OACHkjB,GAAI,QACJrnB,EAAG,OACHsnB,GAAI,QACJljB,EAAG,MACHmjB,GAAI,OACJhe,EAAG,OACHke,GAAI,QACJhe,EAAG,MACHie,GAAI,UAhG0B2Z,CAAQ,EAAQ,K,iBCElD,SAAWs9E,GAAU;kCAIdA;EAAOl2F,aAAa,QAAS,CACpCjJ,OAAQ,wCAAwClY,MAC5C,KAEJiY,YAAa,yCAAyCjY,MAClD,KAEJic,SAAU,8BAA8Bjc,MAAM,KAC9Cgc,cAAe,uBAAuBhc,MAAM,KAC5C+b,YAAa,gBAAgB/b,MAAM,KACnCiU,eAAgB,CACZqL,GAAI,QACJD,IAAK,WACL5e,EAAG,aACH8e,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5oB,EAAG,WACH4vH,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVtmG,cAAe,oBACfkG,aAAc,SAAUF,EAAMlX,GAI1B,OAHa,KAATkX,IACAA,EAAO,GAEM,OAAblX,GAAkC,OAAbA,GAAkC,OAAbA,EACnCkX,EACa,OAAblX,EACAkX,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAblX,GAAkC,OAAbA,EACrBkX,EAAO,QADX,GAIXlX,SAAU,SAAUkX,EAAMkB,EAAQ6O,GAC9B,IAAIhS,EAAY,IAAPiC,EAAakB,EACtB,OAAInD,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGftF,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdM,uBAAwB,iBACxBnM,QAAS,SAAUjB,EAAQiZ,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOjZ,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBqN,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNjiB,EAAG,KACHkiB,GAAI,OACJjjB,EAAG,OACHkjB,GAAI,QACJrnB,EAAG,OACHsnB,GAAI,QACJljB,EAAG,MACHmjB,GAAI,OACJhe,EAAG,OACHke,GAAI,QACJhe,EAAG,MACHie,GAAI,UAhG0B2Z,CAAQ,EAAQ,K,u6ECkBpDuvF,EAAa,SAAClmF,EAAammF,GAC/B,IAAMC,EAAWD,EAAUlvF,OAC3B,GAAI+I,EAAa,CACf,IAAMqmF,EAAWF,EAAUl2E,QAAQ4G,UAEnC,OADAuvE,EAASn2E,MAAMo2E,GACRD,EAET,OAAOD,GAGHG,EAAuB,SAAC,GAAqC,IAAnCplD,EAAmC,EAAnCA,eAAmBqlD,EAAgB,OACjE,OAAO,mBAAUA,EAAYrlD,IAG/BolD,EAAqB1qF,UAAY,CAC/BslC,eAAgB12B,IAAU9jC,QAG5B4/G,EAAqBz4D,aAAe,CAClCqT,eAAgB,IAGlB,IAAMyB,EAAO,SAAC,GA4BR,IA3BJ71B,EA2BI,EA3BJA,qBACA7M,EA0BI,EA1BJA,gCACAC,EAyBI,EAzBJA,sBACAZ,EAwBI,EAxBJA,WACAE,EAuBI,EAvBJA,kBACAE,EAsBI,EAtBJA,YACA8mF,EAqBI,EArBJA,gBACAx6E,EAoBI,EApBJA,aACAjM,EAmBI,EAnBJA,aACAkM,EAkBI,EAlBJA,UACAjM,EAiBI,EAjBJA,YACAZ,EAgBI,EAhBJA,MACAmB,EAeI,EAfJA,YACAe,EAcI,EAdJA,WACA8K,EAaI,EAbJA,SACAlN,EAYI,EAZJA,YACAW,EAWI,EAXJA,MACA2M,EAUI,EAVJA,cACAC,EASI,EATJA,WASI,IARJg6E,wBAQI,MARe,GAQf,EAPJ/5E,EAOI,EAPJA,eACArM,EAMI,EANJA,kBACAF,EAKI,EALJA,mBACAC,EAII,EAJJA,qBACAyM,EAGI,EAHJA,WACAvM,EAEI,EAFJA,qBACAtpC,EACI,EADJA,KAEA,EAAqD+/E,qBAAWl3B,KAAxDE,EAAR,EAAQA,WAAY5jB,EAApB,EAAoBA,MAAOC,EAA3B,EAA2BA,OAAQ6jB,GAAnC,EAAmCA,cAG7Bt1C,GAASy1B,EACXjD,IAEAsP,IAAe5M,EAAM4M,WAAa5M,EAAM4M,aAAetP,KAGrDupF,GAAgBpmF,EAElB,EAAI,IAAIk5B,IAAJ,YAAY35B,EAAMihC,SAAlB,EAA+BxgC,GAAwB,OAAO9pB,MAAK,SAACnf,EAAGC,GAAJ,OAErEuoC,EAAMoQ,QAAQ,GAAKpQ,EAAMoQ,QAAQ,GAAKpQ,EAAMxoC,GAAKwoC,EAAMvoC,GAAKuoC,EAAMvoC,GAAKuoC,EAAMxoC,MAE/Ew1C,EAGE85E,GAAavmF,EACfsmF,GAAc9vH,KAAI,SAAC8C,GAAD,OAAOA,EAAE2mC,MAC3BqmF,GACEE,GAAgBxmF,EAClBsmF,GAAc9vH,KAAI,SAAC8C,GAAD,OAAOA,EAAE0mC,MAC3BsmF,GAEEG,GACJF,IACC5mF,GAAgBF,EAAMihC,QAAQxoE,MAAM,GAAI,KACxCunC,EAAMihC,MAAQjhC,EAAMihC,QAAU4lD,KAC/B7mF,EAAM2W,SAKFswE,GAAY1mF,EACd2mF,YAAa,CAAEvwE,OAAQmwE,GAAY12E,MAAO22E,GAAchwH,KAAI,SAAConE,GAAD,OAAcn+B,EAAMm+B,QAChFn+B,EAGEmnF,GAAa5nF,EAAQA,EAAMxiC,MAAM,KAAKhG,KAAI,SAACnD,GAAD,OAAOA,EAAEkJ,UAAU,GAC7DsqH,GAAqBD,GAAWx0H,OAGtC,GAA6Es3C,YAC3EiW,GADkBmnE,GAApB,GAAQ/8E,WAAkCC,GAA1C,GAA0CA,eAAgBH,GAA1D,GAA0DA,eAGpDE,GAC0B,iBAAvBhK,EAAkCA,EAAqB+mF,GAG1DrpG,GAASgpG,KAAoBhnF,EAAMihC,MAAQjhC,EAAMihC,MAAM10B,GAAYvM,EAAM2W,UAGzE2wE,GACJ73G,KAAKI,IAAL,MAAAJ,KAAI,EACCuO,GACAjnB,KAAI,SAAC8C,EAAGnH,GAAJ,OAAUoY,GAAOjR,EAAGnH,MACxBqE,KACC,SAAC8C,GAAD,OACE+iF,YAAoB/iF,EAAG,CACrB6nE,WAAY,oBACZr3B,SAAUD,GAAeC,WACxB/N,YAIVqqF,EAAkB,EAAIr8E,IAEvBs8E,EAQIW,GAA0B,SAACC,GAAD,OAAkB,SAACC,EAAWp2F,GAC5D,IAAMq2F,EAA0B76E,EAC5BA,EAAe46E,EAAWp2F,EAAO+Y,IACjC,GACJ,cAEKo9E,GAFL,IAGE1pD,MAAO,EAAF,KACA0pD,EAAa1pD,OACb1zB,KAEFs9E,KAKDC,GAA0Bv9E,GAAeC,UAAYs8E,EAAkB,EAAIr8E,IAC3Es9E,GAAoBr9E,GAAeF,SAAW+8E,GAC9CS,GACJF,IAA2BP,GAAqB,GAAK1mF,GAAe,GAAKknF,GAAoB,GACzFE,GACJR,IAAgBF,GAAqB,GAAK1mF,GAAe,GAAKknF,GAAoB,GAGhFG,GAAa/5C,IACjB,OAAQ72E,GACN,IAAK,QACH4wH,GAAa55C,IACb,MACF,IAAK,SACH45C,GAAa95C,IACb,MACF,IAAK,QACH85C,GAAa75C,IACb,MACF,IAAK,MACL,QACE65C,GAAa/5C,IAEjB,IAAMplE,GAAMqkC,EAAuBmhC,YAAc25C,GAAY96E,GAAwB86E,GAGrF30C,qBAAU,WACJhzC,IACkB,WAAhBf,GACF+gB,GAAc,CAAEzjB,OAAQkrF,KAEN,QAAhBxoF,GACF+gB,GAAc,CAAE9kB,IAAKusF,QAIxB,CAACznF,EAAiCf,EAAawoF,KAGlDz0C,qBAAU,WACJhzC,IACkB,SAAhBf,GACF+gB,GAAc,CAAE5kB,KAAMssF,KAEJ,UAAhBzoF,GACF+gB,GAAc,CAAE1jB,MAAOorF,QAI1B,CAAC1nF,EAAiCknF,GAAcjoF,IAGnD,IAAM2oF,GAAqBnoF,EACzB,YAAC,IAAD,CACEC,aAAcE,EACd1D,MAAOA,EACPC,OAAQA,EACR8C,YAAaA,EACb2N,WAAYA,GAAchvB,GAC1BiqG,UAAW1nF,EAAuB,SAAW,QAC7CA,qBAAsBA,IAEtB,KAEJ,OAAQlB,GACN,IAAK,MAEH,OADIgB,IAA0BE,GAAsBP,EAAMoQ,MAAM,CAAC,EAAG9T,IAElE,YAAC,IAAD,CAAO1zB,IAAKA,IACTo/G,GACD,YAAC,IAAD,CACE1sF,IAAKqrF,EAAkBpqF,EAAS,EAChC4P,aAAcA,GAAgBw6E,EAC9Bv6E,UAAWA,EACXpM,MAAOqmF,EAAWlmF,EAAa8mF,IAAajnF,GAC5C2M,cAAeA,GAAiB85E,EAChC75E,WAAY9hC,GACZ+hC,eAAgB06E,GAAwB,CAAE9mD,GAAI,YAC9Cn2B,WAAYq8E,EAAkBpqF,EAAS+N,GACvC0C,WAAYg6E,KAEbznF,GACC,YAAC,IAAD,CACEj9B,UAAU,kBACVg5B,IACEiP,GAAeF,UACd3J,GAAe,GAChBinF,GACAC,GAEFpsF,KAAMc,EAAQ,GAEd,wBACMmF,EADN,CAEEq8B,MAAO,CAAEzzB,SAAUE,GAAeF,SAAUoH,WAAY,YAEvD01E,GAAWpwH,KAAI,SAACs6E,EAAM3+E,GAAP,OACd,qBAAO4H,IAAG,eAAU+2E,GAAQ7yE,EAAG,EAAGiiE,GAAU,IAAN/tE,EAAU,EAAI63C,GAAeF,UAChEgnC,QAMV5xC,GACC,YAAC,IAAD,CAAOn9B,UAAU,mBAAmBg5B,IAAKoF,GAAe,GACtD,YAAC,IAAD,CACEjB,WAAYA,EACZE,kBAAmBA,EACnBD,gBAAiBM,EACjBX,YAAaA,MAMzB,IAAK,QAKH,OAJIgB,IAA0BE,GAAkD,SAA1B8jC,YAAerkC,IACnEA,EAAMoQ,MAAM,CAAC7T,EAAQ,IACnB8D,IAA0BE,GAAkD,SAA1B8jC,YAAerkC,KACnEA,EAAMoQ,MAAM,CAAC,EAAG7T,IAEhB,YAAC,IAAD,CAAO3zB,IAAKA,IACTo/G,GACD,YAAC,IAAD,CACExsF,KAAMmrF,EAAkB,EAAIrqF,EAC5B6P,aAAcA,GAAgBw6E,EAC9Bv6E,UAAWA,EACXpM,MAAOqmF,EAAWlmF,EAAa8mF,IAAajnF,GAC5C2M,cAAeA,GAAiB85E,EAChC75E,WAAY9hC,GACZ+hC,eAAgB06E,GAAwB,CAAEhnD,GAAI,SAAUE,GAAI,WAC5Dn2B,WAAYq8E,EAAkBrqF,EAAQgO,GACtC0C,WAAYg6E,KAEbznF,GACC,YAAC,IAAD,CACEj9B,UAAU,gBACVm5B,UAAS,oBACPkrF,EACIW,IACC5mF,GAAe,IACf0mF,GAAqB,GAAK78E,GAAeF,SAC1C/N,EACAgrF,IACC5mF,GAAe,IACf0mF,GAAqB,GAAK78E,GAAeF,SARvC,aASJ9N,EAAS,EATL,iBAWT,wBACMkF,EADN,CAEEq8B,MAAO,CAAEzzB,SAAUE,GAAeF,SAAUoH,WAAY,YAEvD01E,GAAWpwH,KAAI,SAACs6E,EAAM3+E,GAAP,OACd,qBAAO4H,IAAG,eAAU+2E,GAAQ7yE,EAAG,EAAGiiE,GAAU,IAAN/tE,EAAU,EAAI63C,GAAeF,UAChEgnC,SAQjB,IAAK,SAEH,OADIhxC,IAA0BE,GAAsBP,EAAMoQ,MAAM,CAAC,EAAG9T,IAElE,YAAC,IAAD,CAAO1zB,IAAKA,IACTo/G,GACD,YAAC,IAAD,CACE1sF,IAAKqrF,EAAkB,EAAIpqF,EAC3B4P,aAAcA,GAAgBw6E,EAC9Bv6E,UAAWA,EACXpM,MAAOqmF,EAAWlmF,EAAa8mF,IAAajnF,GAC5C2M,cAAeA,GAAiB85E,EAChC75E,WAAY9hC,GACZ+hC,eAAgB06E,GAAwB,CAAE9mD,GAAI,WAC9Cn2B,WAAYq8E,EAAkBpqF,EAAS+N,GACvC0C,WAAYg6E,KAEbznF,GACC,YAAC,IAAD,CACEj9B,UAAU,kBACVg5B,IAAKiB,EAASorF,IAA2BjnF,GAAe,GAAK6J,GAAeF,SAC5E7O,KAAMc,EAAQ,GAEd,wBACMmF,EADN,CAEEq8B,MAAO,CAAEzzB,SAAUE,GAAeF,SAAUoH,WAAY,YAEvD01E,GAAWpwH,KAAI,SAACs6E,EAAM3+E,GAAP,OACd,qBAAO4H,IAAG,eAAU+2E,GAAQ7yE,EAAG,EAAGiiE,GAAU,IAAN/tE,EAAU,EAAI63C,GAAeF,UAChEgnC,QAMV5xC,GACC,YAAC,IAAD,CAAOn9B,UAAU,mBAAmBg5B,IAAKiB,GAAUmE,GAAe,IAChE,YAAC,IAAD,CACEjB,WAAYA,EACZE,kBAAmBA,EACnBD,gBAAiBM,EACjBX,YAAaA,MAMzB,IAAK,OAKH,OAJIgB,IAA0BE,GAAkD,SAA1B8jC,YAAerkC,IACnEA,EAAMoQ,MAAM,CAAC7T,EAAQ,IACnB8D,IAA0BE,GAAkD,SAA1B8jC,YAAerkC,KACnEA,EAAMoQ,MAAM,CAAC,EAAG7T,IAEhB,YAAC,IAAD,CAAO3zB,IAAKA,IACTo/G,GACD,YAAC,IAAD,CACExsF,KAAMmrF,EAAkBrqF,EAAQ,EAChC6P,aAAcA,GAAgBw6E,EAC9Bv6E,UAAWA,EACXpM,MAAOqmF,EAAWlmF,EAAa8mF,IAAajnF,GAC5C2M,cAAeA,GAAiB85E,EAChC75E,WAAY9hC,GACZ+hC,eAAgB06E,GAAwB,CAAEhnD,GAAI,UAAWE,GAAI,WAC7Dn2B,WAAYq8E,EAAkBrqF,EAAQgO,GACtC0C,WAAYg6E,KAEbznF,GACC,YAAC,IAAD,CACEj9B,UAAU,gBACVm5B,UAAS,qBACN6rF,IACA5mF,GAAe,IACf0mF,GAAqB,GAAK78E,GAAeF,SAHnC,aAIJ9N,EAAS,EAJL,kBAMT,wBACMkF,EADN,CAEEq8B,MAAO,CAAEzzB,SAAUE,GAAeF,SAAUoH,WAAY,YAEvD01E,GAAWpwH,KAAI,SAACs6E,EAAM3+E,GAAP,OACd,qBAAO4H,IAAG,eAAU+2E,GAAQ7yE,EAAG,EAAGiiE,GAAU,IAAN/tE,EAAU,EAAI63C,GAAeF,UAChEgnC,SAQjB,QACE,OACE,YAAC,IAAD,CAAOzoE,IAAKA,IACV,YAAC,IAAD,CACE+jC,cAAeA,GAAiB85E,EAChC75E,WAAY9hC,GACZk1B,MAAOA,O,EA1Xb8iC,E,sFAiYNA,EAAK/mC,UAAYiQ,IACjB82B,EAAK9U,aAAejuB,I,UAEL+iC,EAAA,O,6FA1ZTujD,E,iHAUAI,E,2HAYA3jD,E,kVC/CN,IAAIolD,EAAe,EAAQ,KACvBh3E,EAAW,EAAQ,KAevBx6C,EAAOiD,QALP,SAAmBc,EAAQH,GACzB,IAAIpJ,EAAQggD,EAASz2C,EAAQH,GAC7B,OAAO4tH,EAAah3H,GAASA,OAAQuB,I,gBCbvC,IAAIwH,EAAS,EAAQ,KACjBkuH,EAAY,EAAQ,KACpBC,EAAiB,EAAQ,KAOzBC,EAAiBpuH,EAASA,EAAOC,iBAAczH,EAkBnDiE,EAAOiD,QATP,SAAoBzI,GAClB,OAAa,MAATA,OACeuB,IAAVvB,EAdQ,qBADL,gBAiBJm3H,GAAkBA,KAAkBt5H,OAAOmC,GAC/Ci3H,EAAUj3H,GACVk3H,EAAel3H,K,gBCxBrB,IAGI+I,EAHO,EAAQ,KAGDA,OAElBvD,EAAOiD,QAAUM,G,2QCMXquH,EAAO,SAAC,GAcR,IAbJt0H,EAaI,EAbJA,KACAmoC,EAYI,EAZJA,KACAI,EAWI,EAXJA,OACAD,EAUI,EAVJA,MACAuE,EASI,EATJA,OACAC,EAQI,EARJA,UACAC,EAOI,EAPJA,OACAC,EAMI,EANJA,UACAC,EAKI,EALJA,WACAC,EAII,EAJJA,cACAC,EAGI,EAHJA,kBACAC,EAEI,EAFJA,eAUA,OARI,EADJf,wBAGEQ,EAAOuP,MAAM,CAAC,EAAG9T,IACZ8E,GACHL,EAAOqP,MAAM,CAAC,EAAG7T,KAKnB,YAAC,IAAD,CAAOj6B,UAAU,WACdtO,EAAK+C,KAAI,SAAC8C,GAET,IAAM0uH,EAAYpnF,EAAoBJ,EAAOlnC,EAAEsnC,IAAsBJ,EAAO0iC,YACtE+kD,EAAW3nF,EAAOhnC,EAAEinC,IACpBs2C,EAAYr2C,EAAOlnC,EAAEmnC,IACrBynF,EAAUxnF,EAAaA,EAAWpnC,EAAEqnC,IAAkB/E,EAE5D,OACE,YAAC,IAAD,CACE7hC,IAAG,cAAST,EAAEmnC,IACdxiC,EAAG3E,EAAEinC,GAAa,EAAID,EAAO,GAAK2nF,EAClCtpH,EAAGk4E,EACH96C,MAAO7sB,KAAKC,IAAImxB,EAAO,GAAK2nF,GAC5BjsF,OAAQgsF,EACRpsF,KAAMssF,SAQlBH,EAAKvsF,UAAYwR,IACjB+6E,EAAKt6D,aAAertB,I,UAEL2nF,G,6FAjDTA,E,y1BCHAI,EAAmB,SAAC,GAAgE,IAA9DpsF,EAA8D,EAA9DA,MAAOC,EAAuD,EAAvDA,OAAQC,EAA+C,EAA/CA,OAAQC,EAAuC,EAAvCA,QAASq9E,EAA8B,EAA9BA,YAAannC,EAAiB,EAAjBA,WACjEr3C,EAAMkB,EAAOlB,IAAMmB,EAAQnB,IAC3BE,EAAOgB,EAAOhB,KAAOiB,EAAQjB,KAEnC,OACE,8BACE,oBACEc,MAAOA,EACPC,OAAQA,EACRJ,KAAK,cACL29E,YAAa,SAAAjiF,GAAK,OAAIiiF,EAAYjiF,EAAO,CAAEyD,MAAKE,OAAMe,YACtDo2C,WAAYA,MAMdinC,EAAW,SAAC,GAeZ,IAdJ/4E,EAcI,EAdJA,OACAE,EAaI,EAbJA,OACAE,EAYI,EAZJA,WACA0D,EAWI,EAXJA,mBACA7D,EAUI,EAVJA,UACAE,EASI,EATJA,UACAhtC,EAQI,EARJA,KACAkzC,EAOI,EAPJA,MACAL,EAMI,EANJA,wBACAM,EAKI,EALJA,SACAC,EAII,EAJJA,WACAC,EAGI,EAHJA,WACAC,EAEI,EAFJA,aACAC,EACI,EADJA,YAEA,EAAmF2vC,qBACjFl3B,KADM1jB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,OAAQC,EAAvB,EAAuBA,OAAQC,EAA/B,EAA+BA,QAASu1C,EAAxC,EAAwCA,cAAe7J,EAAvD,EAAuDA,YAAaC,EAApE,EAAoEA,WAGpEvnC,EAAOuP,MAAM,CAAC,EAAG9T,IACjByE,EAAOqP,MAAM,CAAC7T,EAAQ,IAEtB,IAEMk9E,EAAgB3nC,YAAiB,CAAEC,SAAS,EAAMC,kBAExD,EAAgDwnC,YAAY,CAC1Dl9E,QACAC,SACAsE,SACAE,OARwB,SAAA7hC,GAAC,OAAI6hC,EAAO4D,EAAqBA,EAAmBzlC,GAAKA,IASjF4hC,YACAE,YACA2D,qBACA3wC,OACAylH,gBACA5yE,0BACAU,cACAL,UAZM4yE,EAAR,EAAQA,YAAannC,EAArB,EAAqBA,WAAYknC,EAAjC,EAAiCA,WAe3B8O,EAAmBxgD,GAAetnC,EAAOsnC,EAAY3pE,GACrDoqH,EACJzgD,GAAepnC,EAAO4D,EAAqBA,EAAmBwjC,EAAYjpE,GAAKipE,EAAYjpE,GAE7F,OACEo9B,EAAQ,GACRC,EAAS,GACP,8BACG4K,GAAYghC,GACX,YAAC,IAAD,GACEn0E,KAAM,CACJ,CAAEwK,EAAGmqH,EAAkBzpH,EAAG,GAC1B,CAAEV,EAAGmqH,EAAkBzpH,EAAGq9B,IAE5B/9B,EAAG,gBAAGA,EAAH,EAAGA,EAAH,OAAWA,GACdU,EAAG,gBAAGA,EAAH,EAAGA,EAAH,OAAWA,IACVmoC,IAGPD,GAAc+gC,GACb,YAAC,IAAD,GACEhsC,KAAM8E,EAAWknC,EAAYtjC,YAC7Br7B,GAAIm/G,EACJE,GAAID,GACAthF,IAGR,YAACohF,EAAD,CACEpsF,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTq9E,YAAaA,EACbnnC,WAAYA,EACZzrC,MAAOA,IAERA,GAAS,oBAAMrtC,EAAGggH,EAAY19E,KAAK,OAAOsQ,OAAO,MAAMw8B,cAAc,SACrE/hC,GAASK,GAAe6gC,GACvB,YAAC,IAAD,CACEjsC,KAAK,OACLsQ,OAAO,MACPpnC,gBAAgB,MAChB4jE,cAAc,OACdjvE,EAAGutC,EACH/9B,GAAI4+D,EAAW6xC,GACf4O,GAAIzgD,EAAW8xC,O,EAtFrBN,E,mMAwBkB9nC,IAE0B0nC,QAoElDI,EAAS79E,UAAY0T,IAErBmqE,EAAS5rD,aAAe/mB,I,UAET2yE,EAAA,O,6FAnHT8O,E,2HAiBA9O,E,k2ECfAkP,EAAa,SAAC,GAA+C,IAA7CtqH,EAA6C,EAA7CA,EAAGU,EAA0C,EAA1CA,EAAGo9B,EAAuC,EAAvCA,MAAOH,EAAgC,EAAhCA,KAAMsQ,EAA0B,EAA1BA,OAAQhnC,EAAkB,EAAlBA,YACzCsjH,GAAazsF,EAAQ72B,GAAe,EAC1C,OACE,oBACE5L,EAAC,WAAM2E,EAAIuqH,EAAV,YAAuB7pH,EAAI6pH,EAA3B,aAAyCvqH,EAAIuqH,EAA7C,YAA0D7pH,EAAI6pH,EAA9D,aAA4EvqH,EAA5E,YACCU,EAAI6pH,EADL,MAGD5sF,KAAMA,EACNsQ,OAAQA,EACRhnC,YAAaA,EAAc,EAC3B+7D,cAAc,WAKdwnD,EAAW,SAAC,GAAD,IACfzpF,EADe,EACfA,MACAw1D,EAFe,EAEfA,UACAD,EAHe,EAGfA,QACA9vD,EAJe,EAIfA,iBACAikF,EALe,EAKfA,YACAtnF,EANe,EAMfA,iBACAunF,EAPe,EAOfA,oBAPe,OASf,YAAC,IAAD,KACGlkF,GACC,YAAC,IAAD,GACE1iC,UAAU,oBACVi9B,MAAOA,EACPi1D,OAAQy0B,EACRl0B,UAAW/vD,EACXmwD,YAAanwD,EACbrD,iBAAkBA,EAClBmzD,QAASA,GACLo0B,IAGR,YAAC,IAAD,GACE5mH,UAAU,oBACVi9B,MAAOA,EACPi1D,OAAQy0B,EACRl0B,UAAWA,EACXI,YAAY,OACZL,QAASA,GACLo0B,MAKJC,EAAM,SAAC,GAkBP,IAjBJ3/G,EAiBI,EAjBJA,GACAq/G,EAgBI,EAhBJA,GACA7uH,EAeI,EAfJA,EACAovH,EAcI,EAdJA,WACAC,EAaI,EAbJA,OACA/yE,EAYI,EAZJA,MACA5xC,EAWI,EAXJA,QACA+oC,EAUI,EAVJA,YACAhoC,EASI,EATJA,YACA2gE,EAQI,EARJA,iBACA7mC,EAOI,EAPJA,MACAyF,EAMI,EANJA,iBACArD,EAKI,EALJA,iBACA2nF,EAII,EAJJA,WACA7nF,EAGI,EAHJA,WACAI,EAEI,EAFJA,sBACA03C,EACI,EADJA,mBAGMgwC,EAAqB,CAAC,CAAE/qH,EAAGgL,EAAItK,EAAG2pH,IAExC,EACEtpF,GAASkC,EAAaA,EAAWj4B,EAAIq/G,EAAI7uH,EAAGs8C,GAAS,GAD/Ck+C,EAAR,EAAQA,OAAW00B,EAAnB,OAGID,EAAcz0B,GAAU+0B,EAItBC,EADN,EAA4CP,EAA5C,MAAS/pH,EAC4C,EACrD,GAAIsqH,EAAiB,CAEnB,IAAShrH,EAAT,EAAgByqH,EAAhB,MAASzqH,EAEHirH,EAAuB,EAAJzvH,EAKzBivH,EAAc,CAAC,CAAEzqH,EAHW,QAA1BqjC,EAAkCrjC,EAAI+6E,EAAqBkwC,EAGjBvqH,EADbkqH,EAAa,GAAKA,EAAaK,EAAmB,IAInF,OACE,+BACID,GACA,YAAC,IAAD,GACElnH,UAAU,MACVkH,GAAIA,EACJq/G,GAAIA,EACJ7uH,EAAGA,EACHmiC,KAAMktF,EAAS,OAAS/yE,EACxB7J,OAAQgB,IAAgB47E,GAAU5jH,EAAc6wC,EAAQ,QACxD7wC,YAAaA,GAAe,EAC5BP,YAAaR,GACT0hE,IAGP7mC,GACC,YAACypF,EAAD,CACEzpF,MAAOA,EACPw1D,UAAWu0B,EACXtkF,iBAAkBA,EAClBikF,YAAaA,EACbtnF,iBAAkBA,EAClBunF,oBAAqBA,EACrBM,gBAAiBA,IAGpBA,GACC,YAACV,EAAD,CACEtqH,EAAGyqH,EAAY,GAAGzqH,EAClBU,EAAG+pH,EAAY,GAAG/pH,EAClBo9B,MAAW,EAAJtiC,EACPmiC,KAAMmtF,EACN78E,OAAQzH,EACRv/B,YAAak8B,MAOjB+nF,EAAO,SAAC,GAiCR,IAhCJptF,EAgCI,EAhCJA,MACAC,EA+BI,EA/BJA,OACAC,EA8BI,EA9BJA,OACAC,EA6BI,EA7BJA,QACAzoC,EA4BI,EA5BJA,KACAg6C,EA2BI,EA3BJA,YAEAlN,EAyBI,EAzBJA,UACAE,EAwBI,EAxBJA,UACAuE,EAuBI,EAvBJA,aACArE,EAsBI,EAtBJA,cACAL,EAqBI,EArBJA,OACAE,EAoBI,EApBJA,OACA4D,EAmBI,EAnBJA,mBACArD,EAkBI,EAlBJA,UACAL,EAiBI,EAjBJA,WACA2M,EAgBI,EAhBJA,gBAEArM,EAcI,EAdJA,WACA78B,EAaI,EAbJA,QACAe,EAYI,EAZJA,YACAgoC,EAWI,EAXJA,YAEAgsE,EASI,EATJA,cACA33E,EAQI,EARJA,uBACA+E,EAOI,EAPJA,wBAEA8iF,EAKI,EALJA,cACAloF,EAII,EAJJA,WACAuD,EAGI,EAHJA,iBACArD,EAEI,EAFJA,iBACAE,EACI,EADJA,sBAEAhB,EAAOuP,MAAM,CAAC,EAAG9T,IACjByE,EAAOqP,MAAM,CAAC7T,EAAQ,IAEtB,IAAaqtF,EAAgCptF,EAArClB,IAAsBuuF,EAAertF,EAArBhB,KACXsuF,EAAkCrtF,EAAvCnB,IAAuB09E,EAAgBv8E,EAAtBjB,KACnB4tF,EAAaQ,EAAYE,EACzBC,EAAcF,EAAa7Q,EAE3BgR,EAAgB,SAAC,GAAD,IAASC,EAAT,EAAGj2H,KAAqB6wC,EAAxB,EAAwBA,WAAxB,OACpB,YAAC,IAAD,KACGolF,EAAclzH,KAAI,SAACmzH,EAASx3H,GAC3B,IAAM8W,EAAKq3B,EAAOqpF,EAAQppF,IACpB+nF,EAAK9nF,EACT4D,EAAqBA,EAAmBulF,EAAQlpF,IAAckpF,EAAQlpF,IAElEhnC,EAAIsnC,EAAU4oF,EAAQ3kF,IACtB+Q,EAAQrV,EAAWipF,EAAQhpF,IAC3BooF,EAAa17E,EAAkBA,EAAgBs8E,EAAQhpF,IAAkBoV,EACzE/W,GACc,UAAlBoqF,GAEIO,EAAQ3qF,QADR2qF,EAAQP,GAENpwC,EAAuB2wC,EAAvB3wC,mBACF4wC,EAA2B5wC,GAAsB14C,EAAO04C,GAExDygC,EAAkBnzE,EACpBA,EAAwB,CACtB7yC,KAAMk2H,EACNrpF,OAAQ,SAACriC,GAAD,OAAOurH,EAAclpF,EAAOriC,IACpCuiC,OAAQ,SAAC7hC,GAAD,OAAOkqH,EAAaroF,EAAO7hC,MAGrC,CAAEV,EAAGgL,EAAKugH,EAAa7qH,EAAG2pH,EAAKO,EAAiB,EAAJpvH,GAE1CosE,EAAmBqzC,EACrBA,EACE,CAAE94G,QAASmhC,EAAyBooF,EAAUA,EAAQP,IACtD3P,GAEF,GAEJ,OACE,YAACmP,EAAD,CACE7uH,IAAG,iBAAYuqC,EAAZ,YAA0Br7B,EAA1B,YAAgCq/G,EAAhC,YAAsCn2H,GACzC8W,GAAIA,EACJq/G,GAAIA,EACJ7uH,EAAGA,EACHovH,WAAYA,EACZ9yE,MAAOA,EACP+yE,OAAQ9nF,EACR78B,QAASA,EACTe,YAAaA,EACbgoC,YAAaA,EACb24B,iBAAkBA,EAClB3kC,WAAYA,EACZ6nF,WAAYA,EACZtkF,iBAAkBA,EAClBrD,iBAAkBA,EAClBpC,MAAOA,EACP6qF,uBAAwBvoF,EACxB03C,mBAAoB4wC,SAO9B,OAAOn8E,EACL,YAAC,IAAD,KACGA,EAAYj3C,KAAI,SAAC8tC,GAChB,IAAMolF,EAAgBj2H,EAAK6wC,GAC3B,OAAO,YAACmlF,EAAD,CAAeh2H,KAAMi2H,EAAeplF,WAAYA,QAI3D,YAACmlF,EAAD,CAAeh2H,KAAMA,EAAM6wC,WAAW,UAIpCwlF,EAAexhD,IAAM2O,KACzBkyC,GACA,SAACjyC,EAAWC,GAAZ,OAA0BtiF,KAAK47C,UAAUymC,KAAeriF,KAAK47C,UAAU0mC,MAGnE4yC,EAAqB,SAAC,GAUtB,IATJt2H,EASI,EATJA,KACA0tC,EAQI,EARJA,aACAsM,EAOI,EAPJA,YACApM,EAMI,EANJA,qBACAmF,EAKI,EALJA,uBACAC,EAII,EAJJA,uBACA0G,EAGI,EAHJA,sBACAC,EAEI,EAFJA,2BACGxlC,EACC,OACJ,EAAsF+uE,qBACpFl3B,KADM1jB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,OAAQC,EAAvB,EAAuBA,OAAQC,EAA/B,EAA+BA,QAASyrC,EAAxC,EAAwCA,cAAeC,EAAvD,EAAuDA,YAAa6J,EAApE,EAAoEA,cAG9DynC,EAAgB3nC,YAAiB,CAAEC,QAASrwC,EAAcswC,kBAE1D4F,EAAkB,CACtBC,WAAYxT,YAAel8D,EAAM44B,QACjC+2C,aAAc3vE,EAAM44B,OAAO4V,SAC3BohC,YAAa5vE,EAAM44B,OAAOqP,QAC1B5L,WAAY6/B,YAAel8D,EAAM04B,QACjCm3C,aAAc7vE,EAAM04B,OAAO8V,SAC3BshC,YAAa9vE,EAAM04B,OAAOuP,SAG5B,OACE,8BACE,YAACi6E,EAAD,KACMliH,EADN,CAEEnU,KAAMA,EACNsoC,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTg9E,cAAeA,EACfzrE,YAAaA,GAET4pC,IAGLh2C,GAAwBsmC,GACvB,YAACmiD,EAAD,KACMliH,EADN,CAEEnU,KAAMA,EACNsoC,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTg9E,cAAeA,EACfzrE,YAAak6B,EAAgB,CAACA,GAAiBA,EAC/CjnC,WAAYyM,EACZE,gBAAiBD,GAEbiqC,IAIPh2C,GAAwBumC,GACvB,YAACkiD,EAAD,KACMliH,EADN,CAEEnU,KAAMA,EAAKrB,OAASqB,EAAKi1B,QAAO,SAACpvB,GAAD,OAAOA,EAAEgrC,aAAesjC,EAAYtjC,cAAc,GAClF4I,YAAa1G,EACbthC,YAAauhC,EACbtiC,QAAS,EACT43B,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTg9E,cAAeA,EACfx4E,WAAYyM,EACZE,gBAAiBD,GAEbiqC,M,EAxER0yC,E,gJAckBx4C,QAiExB43C,EAAK3tF,UAAYyR,IACjBk8E,EAAK17D,aAAe3sB,I,sGAzUdynF,E,iHAeAE,E,+GAkCAG,E,0GAkFAO,E,2GAiHAW,E,mHAKAC,E,yHAmFS,K,8yCCpUTC,EAAS,SAAC,GAcV,IAEAC,EACA5hH,EAhBJi2B,EAaI,EAbJA,YACAC,EAYI,EAZJA,aACAC,EAWI,EAXJA,KACAC,EAUI,EAVJA,KACAC,EASI,EATJA,WACOwrF,EAQH,EARJzqF,MACAd,EAOI,EAPJA,OACAC,EAMI,EANJA,SACAE,EAKI,EALJA,YACaqrF,EAIT,EAJJ18E,YACA1O,EAGI,EAHJA,OACAC,EAEI,EAFJA,MACAH,EACI,EADJA,UAEQgL,EAAmBH,YAAoBpL,GAAvCuL,eAGJpK,EAAQyqF,EACRz8E,EAAc08E,EA+ElB,MA7EmB,cAAfzrF,IACFr2B,EAAMyrF,IACDr0D,IACHA,EAAQ2qF,YAAU,CAChBh0E,OAAQ,CAAC,EAAG,EAAG,IACfvG,MAAO,CAAC,EAAG,OAIVpC,IACHA,EAAchO,EAAM2W,UAEtB3I,EAAc,EAAIA,GACfr3B,MAAK,SAACnf,EAAGC,GACR,OAAOD,EAAIC,KAGZwxB,QAAO,SAAApvB,GACN,OAAO+4C,OAAO/4C,MAGlB2wH,EACE,YAAC,IAAD,CACEx8E,YAAaA,EACbhO,MAAOA,EACPqK,SAAUD,EAAeC,SACzB9K,MAAOA,KAIM,cAAfN,GACFr2B,EAAMwrF,IACDp0D,IACHA,EAAQ4qF,YAAe,CACrBj0E,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,EAAG,KAAM,KAAM,MAC5CvG,MAAO,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,cAGzEpC,IACHA,EAAchO,EAAM2W,UAEtB6zE,EACE,YAAC,IAAD,CACExqF,MAAOA,EACPd,OAAQA,EACR5C,MAAOuC,EACPtC,OAAQuC,EACRO,YAAaA,EACbgL,SAAUD,EAAeC,SACzB/K,OAAQA,EACR0O,YAAaA,KAGO,gBAAf/O,IACTr2B,EAAMurF,IACDn0D,IACHA,EAAQknF,YAAa,CACnBvwE,OAAQ5nD,OAAO4J,KAAKuiH,KACpB9qE,MAAOrhD,OAAOivB,OAAOk9F,QAGpBltE,IACHA,EAAchO,EAAM2W,UAElBzX,GACF8O,EAAYgJ,UAEdwzE,EACE,YAAC,IAAD,CACExqF,MAAOA,EACPgO,YAAaA,EACb3O,YAAaA,EACbF,SAAUA,EACVkL,SAAUD,EAAeC,YAK7B,YAAC,IAAD,CAAM/N,MAAOuC,EAAatC,OAAQuC,IAC/B,YAA8C,IAA3C+rF,EAA2C,EAA3CA,UAAWC,EAAgC,EAAhCA,QAASC,EAAuB,EAAvBA,SAAUxqD,EAAa,EAAbA,GAAIE,EAAS,EAATA,GACpC,OACE,YAAC,IAAD,CACEpsE,GAAI4qC,EACJr2B,IAAKA,EACLkxG,YAAaiR,EACbC,UAAWF,EACXG,YAAaJ,EACbK,aAAcL,EACdM,YAAaJ,EACbK,WAAYN,EACZrvF,UAGE2D,EAAY,aAAH,OAAgBmhC,EAAhB,aAAuBE,EAAvB,yBAA4C1hC,EAA5C,aAAqDC,EAArD,MAGVwrF,OAQbD,EAAOxuF,UAAYmR,IACnBq9E,EAAOv8D,aAAepvB,I,UAEP2rF,EAAA,O,6FAhITA,E,qmBCPAc,EAAmB,SAACnsH,EAAGV,GAU3B,IATA,IAAM8sH,EAAK,GACL9wH,EAAI0E,EAAEvM,OACR44H,EAAO,EACPC,EAAO,EACPC,EAAQ,EACRC,EAAQ,EACRC,EAAQ,EAGHj5H,EAAI,EAAGA,EAAIwM,EAAEvM,OAAQD,IAC5B64H,GAAQ/sH,EAAE9L,GACV84H,GAAQtsH,EAAExM,GACV+4H,GAASjtH,EAAE9L,GAAKwM,EAAExM,GAClBg5H,GAASltH,EAAE9L,GAAK8L,EAAE9L,GAClBi5H,GAASzsH,EAAExM,GAAKwM,EAAExM,GAYpB,OATA44H,EAAGM,OAASpxH,EAAIixH,EAAQF,EAAOC,IAAShxH,EAAIkxH,EAAQH,EAAOA,GAC3DD,EAAGO,WAAaL,EAAOF,EAAGM,MAAQL,GAAQ/wH,EAE1C8wH,EAAGQ,GAAKr8G,KAAKG,KACVpV,EAAIixH,EAAQF,EAAOC,GAAQ/7G,KAAK0nD,MAAM38D,EAAIkxH,EAAQH,EAAOA,IAAS/wH,EAAImxH,EAAQH,EAAOA,IACtF,GAIK,SAAAhtH,GACL,OAAO8sH,EAAGM,MAAQptH,EAAI8sH,EAAGO,YAIvBE,EAAiB,SAAA5jH,GACrB,IAAQnU,EAA+CmU,EAA/CnU,KAAM8sC,EAAyC34B,EAAzC24B,UAAWE,EAA8B74B,EAA9B64B,UAAWH,EAAmB14B,EAAnB04B,OAAQE,EAAW54B,EAAX44B,OAC5C,EAA0Bm2C,qBAAWl3B,KAA7B1jB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,OACfsE,EAAOuP,MAAM,CAAC,EAAG9T,IACjByE,EAAOqP,MAAM,CAAC7T,EAAQ,IAEtB,IAAIyvF,EAAU,GACVC,EAAU,GACVj4H,EAAK,GAAGrB,SACVq5H,EAAUh4H,EAAK,GAAG+C,KAAI,SAAAyD,GAAC,OAAIA,EAAEsmC,MAC7BmrF,EAAUj4H,EAAK,GAAG+C,KAAI,SAAAyD,GAAC,OAAIA,EAAEwmC,OAG/B,IAAMkrF,EAAYb,EAAiBY,EAASD,GAEtCG,EAAUH,EAAQ,GAClBI,EAAWJ,EAAQA,EAAQr5H,OAAS,GAE1C,OACE,YAAC,IAAD,CACE6a,KAAM,CAAEhP,EAAGqiC,EAAOsrF,GAAUjtH,EAAG6hC,EAAOmrF,EAAUC,KAChD5+G,GAAI,CAAE/O,EAAGqiC,EAAOurF,GAAWltH,EAAG6hC,EAAOmrF,EAAUE,KAC/C3/E,OAAO,OACPhnC,YAAa,K,EAvBbsmH,E,iCA4BNA,EAAehwF,UAAYqR,I,UAEZ2+E,G,6FA9DTV,E,kIAgCAU,E,kxBChCAzoB,EAAQ,SAAC,GAUT,IATJhvC,EASI,EATJA,IACA+c,EAQI,EARJA,KACAg7C,EAOI,EAPJA,YACAC,EAMI,EANJA,aACAC,EAKI,EALJA,aACAC,EAII,EAJJA,aACAC,EAGI,EAHJA,UACA7xD,EAEI,EAFJA,KACAzlB,EACI,EADJA,KAEM/sC,EAAM27E,mBAEZ3Q,qBAAU,W,SACR,yBAAC,6FACC,IAAIs5C,IAAOtkH,EAAI5H,SADhB,0C,mLAGA,IAEH,IAAMmsH,EAAW,CACf,CACE97H,KAAM,UACNsyG,KACE,kDACQ7uC,GADR,gBAES+3D,GAAeh7C,GACxB,uBAEJ,CACExgF,KAAM,WACNsyG,KAAM,sCAAwC,MAAxC,OAA8C7uC,GAA9C,aAA4Dg4D,GAAgBj7C,IAEpF,CACExgF,KAAM,WACNsyG,KACE,iEAEQ7uC,GAFR,iBAGUi4D,GAAgBl7C,GAH1B,2BAMJ,CACExgF,KAAM,WACNsyG,KAAM,wBAAF,OAA0BqpB,GAAgBn7C,EAA1C,cAAoD/c,KAI5D,OACE,mBAAKhyD,UAAW8G,IAAW,UAAWqjH,GAAa,qBAAzB,mBAA2Dt3E,KACnF,mBAAK7yC,UAAW8G,IAAW,UAAWwxD,GAAQ,oBAAqBuP,mBAAiB,WAClF,sBACGwiD,EAAS51H,KAAI,gBAAGlG,EAAH,EAAGA,KAAMsyG,EAAT,EAASA,KAAT,OACZ,kBAAI7oG,IAAKzJ,EAAMyR,UAAU,mBACvB,iBACEA,UAAS,uCAAkCzR,EAAKoV,eAChD+9F,KAAMb,EACNypB,IAAI,YAEJ,oBAAMtqH,UAAU,iBAAhB,YAA0CzR,EAA1C,qC,EA1DVyyG,E,4BAoENA,EAAMvnE,UAAY,CAChBu4B,IAAK3pB,IAAU9jC,OAAOymC,WACtB+jC,KAAM1mC,IAAU9jC,OAAOymC,WACvB++E,YAAa1hF,IAAU9jC,OACvBylH,aAAc3hF,IAAU9jC,OACxB0lH,aAAc5hF,IAAU9jC,OACxB2lH,aAAc7hF,IAAU9jC,OACxB4lH,UAAW9hF,IAAUM,KACrB2vB,KAAMjwB,IAAUM,KAChBkK,KAAMxK,IAAUI,MAAM,CAAC,UAAW,WAGpCu4D,EAAMlmC,YAAc,S,UAELkmC,EAAA,O,6FAlFTA,E,0iBCTAv3B,EAAe,SAAfA,IACLu3B,IAAMr3B,OACNr2E,SAASm7D,oBAAoB,qBAAsBgb,IAGpDn2E,SAASmiC,iBAAiB,qBAAsBg0C,G,UAEjCu3B,IAAA,O,6FAPTv3B,E,qUCeN,SAAS4kB,EAASrG,GAOhBn3F,KAAKy9F,YAAc,CAAC,GAAI,IAEpBtG,GACFn3F,KAAKm3F,KAAKA,GAKZn3F,KAAK09F,OAASF,EAAS3hG,UAAU6hG,OAAOt2F,KAAKpH,MAE7CA,KAAK29F,kBAAoB,GAgZ3B,SAASC,EAAWC,EAASp5D,GAC3B,OAAOo5D,EAAQ/qF,gBAAkB2xB,EAAQo5D,QAAQ/qF,cAYnD,SAASgrF,EAAYrvF,EAAUg2B,GAC7B,OAAIzkC,KAAK+9F,cAAgBziG,OAErBmpC,IAAYhiC,UACZgiC,IAAYhiC,SAAS69C,iBACrB7b,IAAYnpC,OAIT0E,KAAK+9F,cAAgBt5D,EAe9B,SAASu5D,EAAU98F,EAAIujC,GACrB,OAAOvjC,IAAOujC,EAAQvjC,GAtdxBtF,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAQ8gC,aAAU,EAwClBk2D,EAAS3hG,UAAUs7F,KAAO,SAAUA,GAClC,IACInyD,EADAy4D,EAAcz9F,KAAKy9F,YAGvB,GAAIz9F,KAAK+9F,YAAa,CACpB,IAAK/4D,KAAay4D,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,QAAQ,GAIjE,IAAK14D,KAAay4D,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,QAAQ,GAQnE,IAAKvG,IAASA,EAAKvyD,iBAKjB,OAJI5kC,KAAK+9F,oBACA/9F,KAAK+9F,YAGP/9F,KAYT,IAAKglC,KAFLhlC,KAAK+9F,YAAc5G,EAEDsG,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYn5D,iBAAiBI,EAAWhlC,KAAK09F,QAAQ,GAI9D,IAAK14D,KAAay4D,EAAY,GACxBA,EAAY,GAAG3hG,eAAekpC,IAChChlC,KAAK+9F,YAAYn5D,iBAAiBI,EAAWhlC,KAAK09F,QAAQ,GAI9D,OAAO19F,MAQTw9F,EAAS3hG,UAAUoiG,eAAiB,SAAUj5D,GAC5C,OAAsF,IAA/E,CAAC,OAAQ,QAAS,QAAS,OAAQ,SAAU,UAAU5nC,QAAQ4nC,IA6BxEw4D,EAAS3hG,UAAUovF,GAAK,SAAUjmD,EAAWv2B,EAAUuuD,EAASkhC,GAC9D,IAAI/G,EACAsG,EACA/pE,EACAyqE,EAEJ,IAAKn5D,EACH,MAAM,IAAIo5D,UAAU,uBAAyBp5D,GAiB/C,GAZwB,mBAAbv2B,IACTyvF,EAAalhC,EACbA,EAAUvuD,EACVA,EAAW,WAKMnP,IAAf4+F,IACFA,EAAal+F,KAAKi+F,eAAej5D,IAGZ,mBAAZg4B,EACT,MAAM,IAAIohC,UAAU,sCAqCtB,OAlCAjH,EAAOn3F,KAAK+9F,aACZN,EAAcz9F,KAAKy9F,YAAYS,EAAa,EAAI,IAE/Bl5D,KACXmyD,GACFA,EAAKvyD,iBAAiBI,EAAWhlC,KAAK09F,OAAQQ,GAGhDT,EAAYz4D,GAAa,IAGtBv2B,EAKM,YAAYjE,KAAKiE,IAC1B0vF,EAAe1vF,EACfilB,EAAUkqE,GACD,mBAAmBpzF,KAAKiE,IACjC0vF,EAAe1vF,EAASnJ,MAAM,GAC9BouB,EAAUsqE,IAEVG,EAAe1vF,EACfilB,EAAU2qE,QAAQxiG,UAAU+3B,UAZ5BuqE,EAAe,KAGfzqE,EAAUoqE,EAAY12F,KAAKpH,OAa7By9F,EAAYz4D,GAAW3nC,KAAK,CAC1BoR,SAAUA,EACVuuD,QAASA,EACTtpC,QAASA,EACTyqE,aAAcA,IAETn+F,MAcTw9F,EAAS3hG,UAAUyiG,IAAM,SAAUt5D,EAAWv2B,EAAUuuD,EAASkhC,GAC/D,IAAI3+F,EACAolC,EACA84D,EACAc,EACAC,EAWJ,GARwB,mBAAb/vF,IACTyvF,EAAalhC,EACbA,EAAUvuD,EACVA,EAAW,WAKMnP,IAAf4+F,EAGF,OAFAl+F,KAAKs+F,IAAIt5D,EAAWv2B,EAAUuuD,GAAS,GACvCh9D,KAAKs+F,IAAIt5D,EAAWv2B,EAAUuuD,GAAS,GAChCh9D,KAKT,GAFAy9F,EAAcz9F,KAAKy9F,YAAYS,EAAa,EAAI,IAE3Cl5D,EAAW,CACd,IAAKw5D,KAAmBf,EAClBA,EAAY3hG,eAAe0iG,IAC7Bx+F,KAAKs+F,IAAIE,EAAiB/vF,EAAUuuD,GAIxC,OAAOh9D,KAKT,KAFAu+F,EAAed,EAAYz4D,MAELu5D,EAAa/+F,OACjC,OAAOQ,KAKT,IAAKT,EAAIg/F,EAAa/+F,OAAS,EAAGD,GAAK,EAAGA,IACxColC,EAAW45D,EAAah/F,GAElBkP,GAAYA,IAAak2B,EAASl2B,UAAeuuD,GAAWA,IAAYr4B,EAASq4B,UACrFh9D,KAAK29F,kBAAkBtgG,KAAKsnC,GAE5B45D,EAAaz+F,OAAOP,EAAG,IAa3B,OARKg/F,EAAa/+F,gBACTi+F,EAAYz4D,GAEfhlC,KAAK+9F,aACP/9F,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,OAAQQ,IAI1Dl+F,MASTw9F,EAAS3hG,UAAU6hG,OAAS,SAAUh5D,GACpC,IAAInlC,EACAkB,EAEA02F,EAEAxyD,EAGAX,EANAhgC,EAAO0gC,EAAM1gC,KAKbu6F,EAAe,GAInB,IAA2B,IAAvB75D,EAAiB,qBAArB,CAmBA,OAZwB,KAHxBV,EAASU,EAAMV,QAGJu0C,WACTv0C,EAASA,EAAOz6B,YAIdy6B,EAAOy6D,0BACTz6D,EAASA,EAAOy6D,yBAGlBtH,EAAOn3F,KAAK+9F,YACJr5D,EAAMg6D,aAAeh6D,EAAMV,SAAWU,EAAM06C,cAAgB,EAAI,IAGtE,KAAK,EAEHmf,EAAev+F,KAAKy9F,YAAY,GAAGz5F,GACnC,MAEF,KAAK,EAEChE,KAAKy9F,YAAY,IAAMz9F,KAAKy9F,YAAY,GAAGz5F,KAC7Cu6F,EAAeA,EAAap6F,OAAOnE,KAAKy9F,YAAY,GAAGz5F,KAGrDhE,KAAKy9F,YAAY,IAAMz9F,KAAKy9F,YAAY,GAAGz5F,KAC7Cu6F,EAAeA,EAAap6F,OAAOnE,KAAKy9F,YAAY,GAAGz5F,KAGzD,MAEF,KAAK,EAEHu6F,EAAev+F,KAAKy9F,YAAY,GAAGz5F,GAIvC,IAmDIywB,EAnDAkqE,EAAS,GAQb,IAFAl+F,EAAI89F,EAAa/+F,OAEVwkC,GAAUvjC,GAAG,CAClB,IAAKlB,EAAI,EAAGA,EAAIkB,IACdkkC,EAAW45D,EAAah/F,IADPA,IAUbykC,EAAO65D,SAAW,CAAC,SAAU,QAAS,SAAU,YAAYzgG,QAAQ4mC,EAAO65D,QAAQ/qF,gBAAkB,GAAKkxB,EAAOg2D,aAAa,YAEhI2E,EAAS,GAOFh6D,EAASjR,QAAQ33B,KAAKioC,EAAQW,EAASw5D,aAAcn6D,IAC1D26D,EAAOthG,KAAK,CAACqnC,EAAOV,EAAQW,IASlC,GAAIX,IAAWmzD,EACb,MAOF,GAJA12F,EAAI89F,EAAa/+F,QAEjBwkC,EAASA,EAAOitD,eAAiBjtD,EAAOz6B,sBAElBq1F,aACpB,MAMJ,IAAKr/F,EAAI,EAAGA,EAAIo/F,EAAOn/F,OAAQD,IAE7B,KAAIS,KAAK29F,kBAAkBvgG,QAAQuhG,EAAOp/F,GAAG,KAAO,KAQnC,IAJNS,KAAK6+F,KAAKv+F,MAAMN,KAAM2+F,EAAOp/F,IAIhB,CACtBo/F,EAAOp/F,GAAG,GAAc,sBAAI,EAC5Bo/F,EAAOp/F,GAAG,GAAG69F,iBACb3oE,GAAM,EACN,MAIJ,OAAOA,IAYT+oE,EAAS3hG,UAAUgjG,KAAO,SAAUn6D,EAAOV,EAAQW,GACjD,OAAOA,EAASq4B,QAAQjhE,KAAKioC,EAAQU,EAAOV,IAiE9Cw5D,EAAS3hG,UAAUmiD,QAAU,WAC3Bh+C,KAAKs+F,MACLt+F,KAAKm3F,QAGP,IAAI2H,EAAWtB,EACfh3F,EAAQ8gC,QAAUw3D,EAClBv7F,EAAOiD,QAAUA,EAAQ8gC,S,wxBChenBirE,EAAS,SAAC,GAAwB,IAAtBn5F,EAAsB,EAAtBA,MACVnE,GADgC,OAC1B27E,oBAIN8oC,EAAgB,CAAC,WAAY,mBAFlBtgH,EAATquD,MAEuD,yBAC5D3xC,QAAO,SAACv2B,GAAD,OAAOA,KACduF,KAAK,KAYR,OAVAm7E,qBAAU,W,SACR,yBAAC,6FACC,IACE,IAAI05C,IAAQ1kH,EAAI5H,SAChB,MAAOpP,GACPV,QAAQyI,MAAM/H,GAJjB,0C,mLAOA,IAGD,sBAAQgX,IAAKA,EAAK9F,UAAWuqH,EAAe1iD,mBAAiB,WAAW4iD,uBAAqB,IAC3F,mBAAKzqH,UAAU,+BACb,mBAAKA,UAAU,uBACb,mBAAKA,UAAU,yBACb,mBAAKA,UAAU,qDACb,iBACEA,UAAU,qBACV0hG,KAAK,sBACLvlE,MAAM,kCAEN,oBAAMn8B,UAAU,6BAAhB,0B,EA9BVojG,E,4BAwCNA,EAAOtoC,YAAc,UAErBsoC,EAAO3pE,UAAY,CACjBxvB,MAAOwtD,KAGT2rC,EAAO13C,aAAe,CACpBzhD,MAAO,CACLquD,MAAM,I,UAIK8qC,EAAA,O,6FApDTA,E,6iBCRA35B,EAAe,SAAfA,IACL25B,IAAOz5B,OACPr2E,SAASm7D,oBAAoB,qBAAsBgb,IAGpDn2E,SAASmiC,iBAAiB,qBAAsBg0C,G,UAEjC25B,IAAA,O,6FAPT35B,E,8gBCAN,SAASE,EAAM05B,GACd,IAAMxuE,EAASwuE,EAASxhB,cAAc,0BAChC6oC,EAAW71F,GAAUwuE,EAASpkG,iBAAT,0BAA6C41B,EAAO9iC,GAApD,OAE3B,GAAiB,OAAb24H,GAAyC,IAApBA,EAASr6H,OAmBlC,IAfA,IAAMs6H,EAAU,GAEVz6H,EAAW,SAAUqgE,EAAOzhE,GACnB,SAAVyhE,GAEHo6D,EAAQz8H,KAAKY,EAAEmhF,eACfp7C,EAAOgtD,cAAc,cAAcmgB,SAG/B2oB,EAAQt6H,QACXs6H,EAAQ/1H,MAAMotG,SAKR5xG,EAAI,EAAGiQ,EAAMqqH,EAASr6H,OAAQD,EAAIiQ,EAAKjQ,IAC/C,IAAIs5E,IAAOghD,EAASt6H,GAAI,CAAEykC,SAAQ3kC,a,UAKrB,CAAEy5E,QAAF,O,6FA7BNA,E,whCCFHo6B,O,WAEL,gBAAYJ,GAAO,6BAClB9yG,KAAKizG,SAAWH,EAAOG,SACvBjzG,KAAKuzG,QAAU,G,mDAGhB,SAAUT,GACT9yG,KAAKuzG,QAAQl2G,KAAKy1G,K,0BAGnB,SAAaA,GACZ,IAAMinB,EAAiB/5H,KAAKuzG,QAAQn2G,QAAQ01G,GAC5C9yG,KAAKuzG,QAAUvzG,KAAKuzG,QAAQjuG,MAAM,EAAGy0H,GAAgB51H,OAAOnE,KAAKuzG,QAAQjuG,MAAMy0H,EAAgB,IACnE,IAAxB/5H,KAAKuzG,QAAQ/zG,QAGhBQ,KAAK2B,S,kBAIP,WACC3B,KAAKizG,SAASxqG,aAAa,cAAe,SAC1CzI,KAAKizG,SAASniB,UAAUr/D,IAAI,oBAE5BzxB,KAAKuzG,QAAQ9tG,SAAQ,SAACqtG,GACrBA,EAAOnxG,Y,mBAIT,WACC3B,KAAKizG,SAASxqG,aAAa,cAAe,QAC1CzI,KAAKizG,SAASniB,UAAU1f,OAAO,oBAG/BpxE,KAAKuzG,QAAQ9tG,SAAQ,SAACqtG,GACrBA,EAAOlJ,a,oBAIT,WACK5pG,KAAKqzG,SACRrzG,KAAK4pG,QAEL5pG,KAAK2B,S,oBAIP,WACC,OAAO3B,KAAKizG,SAASniB,UAAU6f,SAAS,sB,8IAI3BuC,O,2BAAA,+B,qIArDTA,O,omBCGA8mB,EAAW,GAEjB,SAASC,EAAW/1H,EAAQg2H,GAC3B,IAAIt4H,EAEJsC,EAAO0gC,iBAAiB,cAAc,WACrCq0C,aAAar3E,GAETyxG,EAAO6mB,KAIXt4H,EAAUs3E,YAAW,WAChB8gD,EAASx6H,QACZ26H,EAAKH,EAAS,IACd1hB,EAAK4hB,GAAM,IAEX5hB,EAAK4hB,GAAM,KApBM,SAyBpBh2H,EAAO0gC,iBAAiB,cAAc,WACrCq0C,aAAar3E,GACbA,EAAUs3E,YAAW,kBAAMm6B,EAAO6mB,IAASC,EAAKD,KA1B7B,QA8BrB,SAAS7mB,EAAQ6mB,GAChB,OAAmC,IAA5BF,EAAS58H,QAAQ88H,GAGzB,SAAS5hB,EAAM4hB,EAAME,GAChBA,GACHF,EAAKppC,UAAUr/D,IAAI,6BAGpByoG,EAAKzxH,aAAa,cAAe,SACjCyxH,EAAKzxH,aAAa,gBAAiB,QAEnCyxH,EAAKh1F,cAAc,IAAIC,YAAY,uBAAwB,CAAEC,SAAS,KAEtE40F,EAAS38H,KAAK68H,GAGf,SAASC,EAAMD,GACdA,EAAKppC,UAAU1f,OAAO,6BACtB8oD,EAAKzxH,aAAa,cAAe,QACjCyxH,EAAKzxH,aAAa,gBAAiB,SAEnCyxH,EAAKh1F,cAAc,IAAIC,YAAY,uBAAwB,CAAEC,SAAS,KAEtE40F,EAASl6H,OAAOk6H,EAAS58H,QAAQ88H,GAAO,GAGzC,SAASphD,EAAM05B,GACd,IAAM6nB,EAAQhsH,MAAMgM,KAAKm4F,EAASpkG,iBAAiB,yBAC7CjR,EAAUk9H,EAAMz2H,KAAI,SAAAs2H,GAAI,OAAIA,EAAK3wH,cAEvC8wH,EAAM50H,SAAQ,SAAAy0H,GACbA,EAAKzxH,aAAa,cAAe,QACjCyxH,EAAKzxH,aAAa,gBAAiB,YAGpCtL,EAAQsI,SAAQ,SAACvB,EAAQ3E,GAAT,OAAe06H,EAAU/1H,EAAQm2H,EAAM96H,O,UAIzC,CAAEu5E,OAAMw/B,OAAM6hB,QAAd,O,6FAvEM,I,0GACA,I,0GAEfH,E,sGAEGC,E,uGA0BA5mB,E,oGAIAiF,E,kGAaA6hB,E,kGAUArhD,E,ohBCrDT,SAASwhD,EAAmBC,EAAOl7H,EAAUm7H,GAC5C,IAAI54H,EAEE64H,EAAgB,SAACx8H,GACJ,KAAdA,EAAEk0F,SACL9yF,KAIImxG,EAAc,SAACvyG,GACfs8H,EAAM5pB,SAAS1yG,EAAE+lC,SACrB3kC,KAIIq7H,EAAmB,WACxBzhD,aAAar3E,IAGR+4H,EAAmB,WAKpBr/H,OAAOqlD,YAAc45E,EAAM/f,cAC9B54G,EAAUs3E,WAAW75E,EA3BH,OA+Bdu7H,EAAc,SAAC38H,GACpB,IAAM+lC,EAAS/lC,EAAE48H,eAAiB58H,EAAE+lC,OAE/Bu2F,EAAM5pB,SAAS3sE,IACnBu2F,EAAMppB,SAIF2pB,EAAY,SAAC78H,GAClB,GAAkB,IAAdA,EAAEk0F,QAAe,CACpB,IAAM4oC,EAAUP,EAAa,GACvBQ,EAASR,EAAaA,EAAah7H,OAAS,GAG7CvB,EAAE45G,UAAY55G,EAAE+lC,SAAWg3F,EAGrB/8H,EAAE45G,UAAY55G,EAAE+lC,SAAW+2F,IACrCC,EAAO7pB,QACPlzG,EAAEm/F,mBAJF29B,EAAQ5pB,QACRlzG,EAAEm/F,oBAoCL,MAAO,CAAE68B,UAfS,WACjBM,EAAM31F,iBAAiB,aAAc81F,GACrCH,EAAM31F,iBAAiB,aAAc+1F,GACrCl4H,SAASmiC,iBAAiB,QAAS4rE,GACnC/tG,SAASmiC,iBAAiB,aAAc4rE,GACxC/tG,SAASmiC,iBAAiB,UAAW61F,GAIrCh4H,SAASmiC,iBAAiB,UAAWg2F,GACrCn4H,SAASmiC,iBAAiB,WAAYg2F,GAEtCL,EAAM31F,iBAAiB,UAAWk2F,IAGfG,aA5BC,WACpBhiD,aAAar3E,GAEb24H,EAAM38D,oBAAoB,aAAc88D,GACxCH,EAAM38D,oBAAoB,aAAc+8D,GACxCl4H,SAASm7D,oBAAoB,QAAS4yC,GACtC/tG,SAASm7D,oBAAoB,aAAc4yC,GAC3C/tG,SAASm7D,oBAAoB,UAAW68D,GACxCh4H,SAASm7D,oBAAoB,UAAWg9D,GACxCn4H,SAASm7D,oBAAoB,WAAYg9D,GACzCL,EAAM38D,oBAAoB,UAAWk9D,IAkBJH,oBAGnC,SAASO,EAAkBC,EAAUX,GACpC,IAEIY,EACAC,EAEJ,SAASC,EAAgB57D,EAAOzhE,GACjB,UAAVyhE,GACH67D,EAAcJ,GAAU,EAAOX,GAE/BY,EAAYH,eAEZI,EAAelqB,UAEfoqB,EAAcJ,GAAU,EAAMX,GAI9BthD,WAAWkiD,EAAYnB,UAzGL,KA4GlBoB,EAAiBp9H,EAAEmhF,cAInBlG,YAAW,WAGV,IAAMsiD,EAAiBL,EAASnqC,cAAc,4BAE1CwqC,EACHA,EAAerqB,QAGfgqB,EAAShqB,YAKZgqB,EAASrqC,UAAUgiB,OAAO,4BAAuC,UAAVpzC,GACvDy7D,EAASrqC,UAAUgiB,OAAO,4BAAuC,SAAVpzC,GAvCvCrxD,MAAMgM,KAAK5X,SAAS09C,KAAK/xC,iBAAd,0BAAkD+sH,EAASj6H,GAA3D,QA0CnBuE,SAAQ,SAACg2H,GACjB,IAAMC,EAAe,IAAI7iD,IAAO4iD,EAAS,CACxCz3F,OAAQm3F,EACR97H,SAAUi8H,IAMNF,IACJA,EAAcd,EAAkBa,EAAUO,EAAa5oB,OAAQ0nB,OAKjEW,EAASQ,UAAY,EAGtB,SAASC,EAAmBT,GAC3B,IAAMU,EAAWV,EAAS/sH,iBAAiB,kCAE3CC,MAAMgM,KAAKwhH,GAAUp2H,SAAQ,SAAAq2H,GAC5B,IAAM7qB,EAASkqB,EAASnqC,cAAT,0BAA0C8qC,EAAQ56H,GAAlD,OAEf46H,EAAQrzH,aAAa,cAAe,QAEpC,IAAIowE,IAAOo4B,EAAQ,CAClBjtE,OAAQ83F,EACRz8H,SAAU,SAACqgE,GACVuxC,EAAOhmC,YAAcgmC,EAAOhmC,YAAYjhE,QAAQ,aAAwB,SAAV01D,EAAmB,QAAU,cAS/F,SAAS67D,EAAeJ,EAAUY,EAAWvB,GACxCuB,EACHvB,EAAa/0H,SAAQ,SAAAk0F,GACpBA,EAAG2Y,gBAAgB,eAGpBkoB,EAAa/0H,SAAQ,SAAAk0F,GACpBA,EAAGlxF,aAAa,WAAY,SAK/B,SAASqwE,IACR,IAAMqiD,EAAW14H,SAAS09C,KAAK6wC,cAAc,0BAC7C,GAAKmqC,EAAL,CAGA,IAAMX,EAAensH,MAAMgM,KAAK8gH,EAAS/sH,iBAAiB,6BAC1DmtH,EAAcJ,GAAU,EAAOX,GAC/BoB,EAAkBT,GAClBD,EAAiBC,EAAUX,GAK3BthD,YAAW,WACViiD,EAAS7oB,gBAAgB,+BACzB6oB,EAAS1yH,aAAa,2BAA4B,Y,UAIrC,CAAEqwE,OAAMwhD,qBAAR,O,6FAvMM,I,4GACA,I,4GAEZA,E,iHAoFAY,E,gHA6DAU,E,iHAoBAL,E,6GAYAziD,E,whBCpLT,SAASA,EAAK05B,GACb,IAAMG,EAASH,EAASxhB,cAAc,0BAEtC,GAAe,OAAX2hB,EAAJ,CAIA,IAGI5xD,EAHEi7E,EAAU3tH,MAAMgM,KAAKs4F,EAAOliB,qBAAqB,WACjD6mB,EAAU3E,EAAO3hB,cAAc,kCAG/BirC,EAAe3kB,EAAQ52D,YAqD7B42D,EAAQ1yE,iBAAiB,SAAUs3F,IAAgBC,EAAY,MAC/D7gI,OAAOspC,iBAAiB,mBAAoBu3F,GAE5CH,EAAQv2H,SAAQ,SAAAwrG,GACfA,EAAOmrB,QAAUv/D,KAvDlB,WACC,IAAMw/D,EAAmB/kB,EAAQtmB,cAAc,kBAC/C,GAAIqrC,EAAkB,CACrB,IAAMC,EAAsBD,EAAiB7hD,wBAAwBjxC,MAGrE,GAAI+yF,EAAsBL,EAAc,CAEvC,IAAIloG,EAAOuoG,EAAsBL,EAEjCloG,EAAOA,EAAOkoG,EAAe,EAAIK,EAAsBL,EAAe,EAEtE3kB,EAAQvK,SAASh5E,EAAM,IAGzBooG,IA2CDI,GAxCA,SAASrnG,EAAU+7E,GAClB,OAAOA,EAAO9hG,UAAU4D,MAAM,cAAchP,MAG7C,SAASo4H,IACRp7E,EAAcu2D,EAAQv2D,YAEtBi7E,EAAQv2H,SAAQ,SAAAwrG,GACf,GAA0B,SAAtB/7E,EAAU+7E,GACbA,EAAOvuC,SAAkC,IAAvB40C,EAAQ95C,eACpB,CACN,IAAMg/D,EAAYz7E,EAAck7E,EAAe3kB,EAAQ95C,WAEvDyzC,EAAOvuC,SAAW85D,GAAa,MAKlC,SAAS3/D,EAAO5+D,GACf,IAAIw+H,EAAW,IAEf,GAAmC,SAA/BvnG,EAAUj3B,EAAEmhF,eACfq9C,GAA8E,GAAlEnlB,EAAQ95C,WAAai/D,EAAWA,EAAWnlB,EAAQ95C,gBACzD,CACN,IAAMg/D,EAAYz7E,EAAck7E,EAAe3kB,EAAQ95C,WACvDi/D,EAAWD,EAAYC,EAAWA,EAAWD,EAG9CllB,EAAQ95C,WAAa85C,EAAQ95C,WAAai/D,EAE1CN,K,UAca,CAAErjD,QAAF,O,6FA3ENA,E,whBCAT,SAASA,EAAM05B,GACd,GAAKA,EAASxY,aAAa,yBAA3B,CAIA,IAAI0iC,EACAC,EACAC,EACAC,EAoDEC,EAAqBr7E,aAN3B,WAXKm7E,GACHthI,OAAOyhI,qBAAqBH,GAY7BthI,OAAOsiE,oBAAoB,SAAUk/D,GACrCxhI,OAAOspC,iBAAiB,SAAUo4F,KAGY,KAE/C1hI,OAAOspC,iBAAiB,SAAUo4F,GAElCC,IAtDA,SAASA,IAGR,IAAMC,EAAc5hI,OAAO4lD,aAAe5lD,OAAO6lD,QAC3Cg8E,EAAWD,EAAcR,EAU/B,GARAlqB,EAAS1hB,UAAUgiB,OAAO,0BAA2BqqB,GAEjDA,IAAaN,IAChBA,EAAkBM,EAClB3qB,EAASttE,cAAc,IAAIC,YAAY,iBAAkB,CAAEC,SAAS,EAAMH,OAAQ,CAAEk4F,gBAIjF7gH,KAAKC,IAAI2gH,EAAcP,GAAmB,GAAI,CACjD,IAAMS,EAAkBT,EAAkBO,EAC1C1qB,EAAS1hB,UAAUgiB,OAAO,+BAAgCqqB,GAAYC,GACtE5qB,EAAS1hB,UAAUgiB,OAAO,6BAA8BqqB,IAAaC,GAGtET,EAAkBO,EAkBnB,SAASF,IACR1hI,OAAOsiE,oBAAoB,SAAUo/D,GACrC1hI,OAAOspC,iBAAiB,SAAUk4F,GAjBnC,SAASO,IACRX,EAAiBphI,OAAOklD,YAAc,EAEtCo8E,EAAqBthI,OAAOs+G,uBAAsB,WACjDqjB,IACAI,OAaDA,I,UAiBa,CAAEvkD,QAAF,O,6FApENA,E,2tBCYHwkD,EAAY,SAAC,GAA4B,IAA1Bp8H,EAA0B,EAA1BA,GAAIo9E,EAAsB,EAAtBA,SAAUllE,EAAY,EAAZA,MAoDjC,OAnDA6mE,qBAAU,W,SACR,yBAAC,mHAEQ3kF,OAAOiiI,eAFf,iDAGSC,EAAW,CACfhwH,QAAS,CAAEiwH,WAAY,gBAGnBvnG,EAAa,GAAGmoC,OAAOtiE,KAC3B0G,SAAS2L,iBAAiB,qCAAuC,IACjE,SAACxH,EAAG+yF,GACF,OAAKA,GAGL/yF,EADgB+yF,EAAGprF,aAAa,YAAYvE,QAAQ,YAAa,KACpD2vF,EAAGprF,aAAa,WACtB3H,GAJSA,IAMlB,KAGI82H,EAAYx8H,GAAMuB,SAAS69C,gBAAgB/xC,aAAa,sBAG5DivH,EAAShwH,QAAQm6D,KAAO+1D,GAGtBxnG,EAAWynG,iBACbH,EAASG,eAAiBznG,EAAWynG,gBAIvCC,IAAU9kD,KAAK,CACb+kD,OAAQ,kCACRnlC,OAAQ,CACNC,QACgC,iBAAvBziE,EAAWyiE,SAAuBziE,EAAWyiE,QAAQ7lF,eAEhEvF,QAAS,CAAEu6D,QAAS5xC,EAAW4xC,SAAW,QAI5C81D,IAAUlqB,KAAK8pB,GAGfI,IAAUnpB,MAAM37B,OA3CnB,kDA6CGv7E,QAAQyI,MAAR,MA7CH,yD,mLAgDA,CAAC9E,IAGF,YAAC,WAAD,KAEGy1E,YAAmB,CAClBqW,OAAQ,OACR3uC,SAAU,OACV9wC,QAAS,CACPC,QAAS,CACPiwH,WAAY,cACZ91D,KAAMzmE,GAER4mE,QAAS,KACT61D,eAAgBr/C,EAASzW,eAE3B6wB,OAAQ,CACNC,QAASv/E,EAAMytD,KACfi3D,OAAQ,iCACR1+F,OAAQ,gBACRoD,QAAS,WAGZppB,EAAM4tD,iBACL,sBACE0wB,wBAAyB,CACvBC,OAAQ,weAad,sBACED,wBAAyB,CACvBC,OAAQ,2mB,EA3FZ2lC,E,eA2GNA,EAAUrzD,YAAc,aAExBqzD,EAAUrzD,YAAc,aAExBqzD,EAAU10F,UAAY,CACpB1nC,GAAIs2C,IAAU9jC,OAAOymC,WACrB/gC,MAAOwtD,IAAczsB,WACrBmkC,SAAU9mC,IAAUC,MAAM,CACxBowB,cAAerwB,IAAU9jC,UAI7B4pH,EAAUziE,aAAe,CACvByjB,SAAU,CACRzW,mBAAevoE,I,UAIJg+H,EAAA,O,6FA7HTA,E,qpDCPFS,EAEEC,EAA2B,CAChC,UACA,SACA,WACA,WAKKC,EAAqB,SAAAv5F,GAC1B,IADmC,EAC7Bw5F,EAAkB,GADW,IAEZF,GAFY,IAEnC,2BAAiD,KAAtCz2H,EAAsC,QAChD,GAAIm9B,EAAMn9B,GACT,IACC22H,EAAgB32H,GAAYy+B,YAAStB,EAAMn9B,IAC1C,MAAOtJ,GAERV,QAAQsmC,IAAI5lC,KARoB,8BAanC,OAAOigI,GAIFC,EAAmB,SAAAC,GAAS,OAAI,SAACC,EAAYC,GAElD,GAAkE,SAA9DA,EAAa/vH,aAAa,gCAA9B,CACA,IAAMhB,EAAU0wH,EAAmBI,GACnC,EAAgC/jC,YAASgkC,GAAjC/jC,EAAR,EAAQA,MAAOC,EAAf,EAAeA,cACfjtF,EAAQgxH,cAAgBhkC,EACxBhtF,EAAQ4zD,IAAM7lE,OAAOmH,SAASk8D,SAASkyC,MAAQ,KAG/CtjG,EAAQixH,UAAY7pB,IAAKn5C,YAEzBv1B,YAAkBu0D,EAAejtF,GAEjC6wH,EAAU7wH,QAAUA,EAGpB,IAAMyN,EAAS5E,YAAMqiF,YAAW,UAAW2lC,GAC3CzpB,IAAKl5C,MAAMzgD,MAWN89D,EAAO,SAACz6B,EAAUogF,GACvBA,EAAkBA,GAAmB,oCAGrC,IAAML,EAAY,CACjBpxC,OAAQ,QACR3uC,SAAUA,GAAY,eAIvB0/E,EAAWA,GAAY,IAAIvgC,IAAS/6F,SAAS09C,OACpC8qC,GAAG,QAASwzC,EAAiBN,EAAiBC,IAAY,GAInEM,EADmB,IAAItlC,IAAM,YAI9B,SAASslC,EAAuB/6H,GAC/B,IAAMg7H,EAAWh7H,EAAM86B,QACnBkgG,GACHhqB,IAAKl5C,MAAMkjE,GAAU,kBAAMD,EAAuB/6H,MAIpD,I,IAAM8wG,EAAQ,CACb37B,S,6FAlFGilD,E,wHAEEC,E,wIASAC,E,kIAiBAE,E,gIA4BArlD,E,oHAkBG4lD,E,sIAOHjqB,E,yPC9EN,SAASjX,EAASrG,GAQjBn3F,KAAKy9F,YAAc,CAAC,GAAI,IACpBtG,GACHn3F,KAAKm3F,KAAKA,GAIXn3F,KAAK09F,OAASF,EAAS3hG,UAAU6hG,OAAOt2F,KAAKpH,MAG7CA,KAAK29F,kBAAoB,GA+Y1B,SAASC,EAAWC,EAASp5D,GAC5B,OAAOo5D,EAAQ/qF,gBAAkB2xB,EAAQo5D,QAAQ/qF,cAWlD,SAASgrF,EAAYrvF,EAAUg2B,GAC9B,OAAIzkC,KAAK+9F,cAAgBziG,OAGvBmpC,IAAYhiC,UAEZgiC,IAAYhiC,SAAS69C,iBAErB7b,IAAYnpC,OAGP0E,KAAK+9F,cAAgBt5D,EAc7B,SAASu5D,EAAU98F,EAAIujC,GACtB,OAAOvjC,IAAOujC,EAAQvjC,GA3avBs8F,EAAS3hG,UAAUs7F,KAAO,SAAUA,GACnC,MAAMsG,EAAcz9F,KAAKy9F,YACzB,IAAIz4D,EAGJ,GAAIhlC,KAAK+9F,YAAa,CACrB,IAAK/4D,KAAay4D,EAAY,GACzBA,EAAY,GAAG3hG,eAAekpC,IACjChlC,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,QAAQ,GAG/D,IAAK14D,KAAay4D,EAAY,GACzBA,EAAY,GAAG3hG,eAAekpC,IACjChlC,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,QAAQ,GAQhE,IAAKvG,IAASA,EAAKvyD,iBAIlB,OAHI5kC,KAAK+9F,oBACD/9F,KAAK+9F,YAEN/9F,KAYR,IAAKglC,KAHLhlC,KAAK+9F,YAAc5G,EAGDsG,EAAY,GACzBA,EAAY,GAAG3hG,eAAekpC,IACjChlC,KAAK+9F,YAAYn5D,iBAAiBI,EAAWhlC,KAAK09F,QAAQ,GAG5D,IAAK14D,KAAay4D,EAAY,GACzBA,EAAY,GAAG3hG,eAAekpC,IACjChlC,KAAK+9F,YAAYn5D,iBAAiBI,EAAWhlC,KAAK09F,QAAQ,GAI5D,OAAO19F,MAORw9F,EAAS3hG,UAAUoiG,eAAiB,SAAUj5D,GAC7C,OAAsF,IAA/E,CAAC,OAAQ,QAAS,QAAS,OAAQ,SAAU,UAAU5nC,QAAQ4nC,IA4BvEw4D,EAAS3hG,UAAUovF,GAAK,SAAUjmD,EAAWv2B,EAAUuuD,EAASkhC,GAC/D,IAAI/G,EACAsG,EACA/pE,EACAyqE,EAEJ,IAAKn5D,EACJ,MAAM,IAAIo5D,UAAU,uBAAyBp5D,GAiB9C,GAZwB,mBAAbv2B,IACVyvF,EAAalhC,EACbA,EAAUvuD,EACVA,EAAW,WAKOnP,IAAf4+F,IACHA,EAAal+F,KAAKi+F,eAAej5D,IAGX,mBAAZg4B,EACV,MAAM,IAAIohC,UAAU,sCAyCrB,OAtCAjH,EAAOn3F,KAAK+9F,YACZN,EAAcz9F,KAAKy9F,YAAYS,EAAa,EAAI,GAG3CT,EAAYz4D,KACZmyD,GACHA,EAAKvyD,iBAAiBI,EAAWhlC,KAAK09F,OAAQQ,GAE/CT,EAAYz4D,GAAa,IAGrBv2B,EAQM,YAAYjE,KAAKiE,IAC3B0vF,EAAe1vF,EACfilB,EAAUkqE,GACA,mBAAmBpzF,KAAKiE,IAClC0vF,EAAe1vF,EAASnJ,MAAM,GAC9BouB,EAAUsqE,IAEVG,EAAe1vF,EACfilB,EAAU2qE,QAAQxiG,UAAU+3B,UAf5BuqE,EAAe,KAIfzqE,EAAUoqE,EAAY12F,KAAKpH,OAe5By9F,EAAYz4D,GAAW3nC,KAAK,CAC3BoR,SAAUA,EACVuuD,QAASA,EACTtpC,QAASA,EACTyqE,aAAcA,IAGRn+F,MAaRw9F,EAAS3hG,UAAUyiG,IAAM,SAAUt5D,EAAWv2B,EAAUuuD,EAASkhC,GAChE,IAAI3+F,EACAolC,EACA84D,EACAc,EACAC,EAYJ,GARwB,mBAAb/vF,IACVyvF,EAAalhC,EACbA,EAAUvuD,EACVA,EAAW,WAKOnP,IAAf4+F,EAGH,OAFAl+F,KAAKs+F,IAAIt5D,EAAWv2B,EAAUuuD,GAAS,GACvCh9D,KAAKs+F,IAAIt5D,EAAWv2B,EAAUuuD,GAAS,GAChCh9D,KAIR,GADAy9F,EAAcz9F,KAAKy9F,YAAYS,EAAa,EAAI,IAC3Cl5D,EAAW,CACf,IAAKw5D,KAAmBf,EACnBA,EAAY3hG,eAAe0iG,IAC9Bx+F,KAAKs+F,IAAIE,EAAiB/vF,EAAUuuD,GAItC,OAAOh9D,KAIR,GADAu+F,EAAed,EAAYz4D,IACtBu5D,IAAiBA,EAAa/+F,OAClC,OAAOQ,KAKR,IAAKT,EAAIg/F,EAAa/+F,OAAS,EAAGD,GAAK,EAAGA,IACzColC,EAAW45D,EAAah/F,GAElBkP,GAAYA,IAAak2B,EAASl2B,UAAeuuD,GAAWA,IAAYr4B,EAASq4B,UACtFh9D,KAAK29F,kBAAkBtgG,KAAKsnC,GAC5B45D,EAAaz+F,OAAOP,EAAG,IAczB,OATKg/F,EAAa/+F,gBACVi+F,EAAYz4D,GAGfhlC,KAAK+9F,aACR/9F,KAAK+9F,YAAYngC,oBAAoB54B,EAAWhlC,KAAK09F,OAAQQ,IAIxDl+F,MASRw9F,EAAS3hG,UAAU6hG,OAAS,SAAUh5D,GACrC,IAAInlC,EACAkB,EACJ,MAAMuD,EAAO0gC,EAAM1gC,KACnB,IAAImzF,EACAynC,EACAj6F,EACAk6F,EAEA76F,EADAu6D,EAAe,GAInB,IAA2B,IAAvB75D,EAAiB,qBACpB,OAqBD,OAlBAV,EAASU,EAAMV,OAIS,IAApBA,EAAOu0C,WACVv0C,EAASA,EAAOz6B,YAIby6B,EAAOy6D,0BACVz6D,EAASA,EAAOy6D,yBAGjBtH,EAAOn3F,KAAK+9F,YAEZ6gC,EAAQl6F,EAAMg6D,aAAeh6D,EAAMV,SAAWU,EAAM06C,cAAgB,EAAI,GAGhEw/C,GACP,KAAK,EACJrgC,EAAev+F,KAAKy9F,YAAY,GAAGz5F,GACnC,MACD,KAAK,EACAhE,KAAKy9F,YAAY,IAAMz9F,KAAKy9F,YAAY,GAAGz5F,KAC9Cu6F,EAAeA,EAAap6F,OAAOnE,KAAKy9F,YAAY,GAAGz5F,KAEpDhE,KAAKy9F,YAAY,IAAMz9F,KAAKy9F,YAAY,GAAGz5F,KAC9Cu6F,EAAeA,EAAap6F,OAAOnE,KAAKy9F,YAAY,GAAGz5F,KAExD,MACD,KAAK,EACJu6F,EAAev+F,KAAKy9F,YAAY,GAAGz5F,GAIrC,IA2DIywB,EA3DAkqE,EAAS,GAQb,IADAl+F,EAAI89F,EAAa/+F,OACVwkC,GAAUvjC,GAAG,CACnB,IAAKlB,EAAI,EAAGA,EAAIkB,IACfkkC,EAAW45D,EAAah/F,GAMnBolC,GAPaplC,IAYjBykC,EAAO65D,SACP,CAAC,SAAU,QAAS,SAAU,YAAYzgG,QAAQ4mC,EAAO65D,QAAQ/qF,gBAAkB,GACnFkxB,EAAOg2D,aAAa,YAGpB2E,EAAS,GAQDh6D,EAASjR,QAAQ33B,KAAKioC,EAAQW,EAASw5D,aAAcn6D,IAC7D26D,EAAOthG,KAAK,CAACqnC,EAAOV,EAAQW,IAS9B,GAAIX,IAAWmzD,EACd,MASD,GANA12F,EAAI89F,EAAa/+F,OAGjBwkC,EAASA,EAAOitD,eAAiBjtD,EAAOz6B,WAGpCy6B,aAAkB46D,aACrB,MAMF,IAAKr/F,EAAI,EAAGA,EAAIo/F,EAAOn/F,OAAQD,IAE9B,KAAIS,KAAK29F,kBAAkBvgG,QAAQuhG,EAAOp/F,GAAG,KAAO,KAGpDs/H,EAAW7+H,KAAK6+F,KAAKv+F,MAAMN,KAAM2+F,EAAOp/F,KAKvB,IAAbs/H,GAAoB,CACvBlgC,EAAOp/F,GAAG,GAAc,sBAAI,EAC5Bo/F,EAAOp/F,GAAG,GAAG69F,iBACb3oE,GAAM,EACN,MAIF,OAAOA,GAWR+oE,EAAS3hG,UAAUgjG,KAAO,SAAUn6D,EAAOV,EAAQW,GAClD,OAAOA,EAASq4B,QAAQjhE,KAAKioC,EAAQU,EAAOV,IA+D7Cw5D,EAAS3hG,UAAUmiD,QAAU,WAC5Bh+C,KAAKs+F,MACLt+F,KAAKm3F,QAGS,O,gwCC3dT2nC,EAAsB,CAC3B,qBACA,OACA,UACA,aAGKC,EAAoB,SAACX,EAAWY,EAAUntD,GAE/C,IACItkE,EADJ,EAAiC+sF,YAAS0kC,GAAlCzkC,EAAR,EAAQA,MAAOC,EAAf,EAAeA,cAGf,GAAI3oB,EAAKotD,eAAgB,CACxB,GAAmC,mBAAxBptD,EAAKotD,eACf,MAAM,IAAI99H,MAAM,yCAGjB,IAAM+9H,EAAcrtD,EAAKotD,eAAeD,GAExC,GAA2B,WAAvB,EAAOE,GACV,MAAM,IAAI/9H,MAAM,uDAGjBoM,EAAUo4B,YAAiBu5F,EAAaJ,QAExCvxH,EAAU,GAGXA,EAAQgxH,cAAgBhkC,EACxBhtF,EAAQ4zD,IAAM7lE,OAAOmH,SAASk8D,SAASkyC,MAAQ,KAE/C5qE,YAAkBu0D,EAAejtF,GAEjC6wH,EAAU7wH,QAAUA,GAUfurE,EAAO,WAAe,IAAdjH,EAAc,uDAAP,GACpB,GAAIv2E,OAAO6jI,qBAAX,CAMA,IAAM1wH,EAAWojE,EAAKpjE,UAAY,yBAC5BgwH,EAAkB,EAAIh8H,SAAS2L,iBAAiBK,IAEtD,GAAKgwH,EAAgBj/H,OAArB,CAoBA,IAAM4/H,EAAW,IAAID,qBAAqB3a,EAAU,CAAE1hF,UAAW,CAAE,KAEnE27F,EAAgBh5H,SAAQ,SAAAk0F,GAAE,OAAIylC,EAASC,QAAQ1lC,YA7B9Cp8F,QAAQC,KAAK,wGAWd,SAASgnH,EAAU/iD,GAClBA,EAAQh8D,SAAQ,SAAA65H,GACf,GAAGA,EAAOC,gBAAkBD,EAAOE,kBAAoB,EAAG,CACzD,IAAMpB,EAAY,CACjBpxC,OAAQnb,EAAKmb,QAAU,OACvB3uC,SAAUwzB,EAAKxzB,UAAY,aAEtB2gF,EAAWM,EAAOt7F,OAExB+6F,EAAkBX,EAAWY,EAAUntD,GACvC8iC,IAAKl5C,MAAM2iE,GACXgB,EAASK,UAAUT,SAUjBtqB,EAAO,CACZ57B,S,6FA/EKgmD,E,4IAOAC,E,0IAoCAjmD,E,6HAmCA47B,E,kPClFNnxG,EAAOiD,QAAU,SAASk5H,EAAIv8H,IAC5BA,EAAUA,GAAW,IACbw8H,kBAAkBx8H,EAAQrH,eAAe,oBAAqBqH,EAAQw8H,gBAC9Ex8H,EAAQozE,kBAAmBpzE,EAAQrH,eAAe,qBAAsBqH,EAAQozE,iBAChFpzE,EAAQszE,KAAMtzE,EAAQrH,eAAe,QAASqH,EAAQszE,IACtDtzE,EAAQy8H,eAAgBz8H,EAAQrH,eAAe,kBAAmBqH,EAAQy8H,cAE1E,IAAIniH,EAASiiH,GAAM,GAGnBjiH,EAASA,EAAOzT,QAAQ,kCAAmC,IAE3D,IACM7G,EAAQozE,mBAER94D,EADEta,EAAQw8H,gBACDliH,EAAOzT,QAAQ,kCAAmC7G,EAAQw8H,gBAAkB,OAE5EliH,EAAOzT,QAAQ,kCAAmC,OAE3D7G,EAAQszE,MACVh5D,EAASA,EAENzT,QAAQ,WAAY,MAEpBA,QAAQ,YAAa,IAErBA,QAAQ,MAAO,IAEfA,QAAQ,YAAa,KAE1ByT,EAASA,EAENzT,QAAQ,WAAY,IAEpBA,QAAQ,kBAAmB,IAE3BA,QAAQ,uBAAwB,IAChCA,QAAQ,wBAAyB,IAEjCA,QAAQ,8BAA+B7G,EAAQy8H,cAAgB,KAAO,IAEtE51H,QAAQ,4BAA6B,MAErCA,QAAQ,gBAAiB,IAEzBA,QAAQ,yCAA0C,IAElDA,QAAQ,iEAAkE,UAE1EA,QAAQ,gCAAiC,MACzCA,QAAQ,gCAAiC,MAEzCA,QAAQ,mBAAoB,MAE5BA,QAAQ,WAAY,MAEpBA,QAAQ,UAAW,QACtB,MAAM/L,GAEN,OADAV,QAAQyI,MAAM/H,GACPyhI,EAET,OAAOjiH,I,uSCpDIoiH,EAAK,SAAC,GAWb,IAVJniI,EAUI,EAVJA,KACA2sE,EASI,EATJA,UACA1gC,EAQI,EARJA,WACAm2F,EAOI,EAPJA,QACAC,EAMI,EANJA,aACAtpG,EAKI,EALJA,cACAupG,EAII,EAJJA,YACAC,EAGI,EAHJA,aACAC,EAEI,EAFJA,YACAC,EACI,EADJA,YAEA,OACE,mBACEhxH,UAAS,qCACQ,UAAfw6B,EAAyB,SAAW,GAD7B,qCAEoBm2F,EAFpB,YAE+BC,EAAe,oBAAsB,IAC7EK,kBAAiB1iI,EACjB2iI,uBAAsBh2D,EACtBi2D,6BAA4B7pG,EAC5B8pG,2BAA0BP,EAC1BQ,4BAA2BP,EAC3BQ,2BAA0BP,EAC1BQ,2BAA0BP,EAC1BQ,cAAY,UAKlBd,EAAG51D,YAAc,MAEV,IAAM22D,EAAQ,kBACnB,YAACf,EAAD,CACEniI,KAAK,SACL2sE,UAAU,WACVy1D,QAAQ,KACRrpG,eAAe,EACfupG,aAAa,EACbC,aAAa,yBACbC,YAAY,0CACZC,YAAY,uDAIhBS,EAAM32D,YAAc,SAEb,I,IAAM42D,EAAW,kBACtB,YAAChB,EAAD,CACEniI,KAAK,SACL2sE,UAAU,WACVy1D,QAAQ,MACRC,cAAY,EACZtpG,cAAc,aACdupG,YAAY,6BACZC,aAAa,6BACbC,YAAY,6BACZC,YAAY,gCAIhBU,EAAS52D,YAAc,YAEvB41D,EAAGj3F,UAAY,CACblrC,KAAM85C,IAAU9jC,OAChB22D,UAAW7yB,IAAU9jC,OACrBi2B,WAAY6N,IAAUI,MAAM,CAAC,UAAW,UACxCkoF,QAAStoF,IAAUI,MAAM,CAAC,KAAM,QAChCmoF,aAAcvoF,IAAUM,KACxBrhB,cAAe+gB,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU9jC,SAC9DssH,YAAaxoF,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU9jC,SAC5DusH,aAAczoF,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU9jC,SAC7DwsH,YAAa1oF,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU9jC,SAC5DysH,YAAa3oF,IAAU3O,UAAU,CAAC2O,IAAUM,KAAMN,IAAU9jC,UAI9DmsH,EAAGhlE,aAAe,CAChBn9D,KAAM,SACN2sE,UAAW,UACX1gC,WAAY,UACZm2F,QAAS,KACTC,cAAc,EACdtpG,eAAe,EACfupG,aAAa,EACbC,aAAc,yBACdC,YAAa,0CACbC,YAAa,sD,6FAtFFN,E,sGA+BAe,E,yGAeAC,E,kkDC7CPC,EAAgB,SAAC,GAAwC,IAAtCC,EAAsC,EAAtCA,QAAS1jD,EAA6B,EAA7BA,OAAQkB,EAAqB,EAArBA,eACxC,IAAgCuB,mBAAS,IAAzC,GAAOkhD,EAAP,KAAiBC,EAAjB,KACMC,EAAWtwC,mBA6BjB,OA3BA3Q,qBAAU,W,MAsBR,O,EArBA,yBAAC,0GACCihD,EAAS7zH,QAAU8pE,YACjB91E,QAAQ03F,IACNxa,EAAe36E,KAAI,YAAwB,IAArB2C,EAAqB,EAArBA,KAAqB,IAAfi4E,KACpBz7C,EAAe,QADoB,MAAR,EAAQ,GAEnCo+B,EAAM,GAAH,OAAM4/D,GAAN,OAAgBx6H,EAAhB,iBAA6B82E,EAA7B,kBAA6Ct6C,GACtD,OAAOi5D,MAAM76B,GAAK/iE,MAAK,SAAAmZ,GAAG,OAAIA,EAAI2mE,eANzC,kBAY0BgjD,EAAS7zH,QAAQ9K,QAZ3C,OAYSy+H,EAZT,OAaGC,EAAYD,GAbf,oDAeO,KAAE3pD,WAfT,mDAgBG95E,QAAQyI,MAAR,MAhBH,wD,iLAqBM,WACLk7H,EAAS7zH,QAAQiqE,YAElB,CAAC+F,EAAQkB,EAAgBwiD,IAErBC,EAASp9H,KAAI,SAACu9H,EAASthI,GAAV,OAClB,uBACEsH,IAAKtH,EACLsP,UAAU,0BACViyH,mBAAiB,iBACjB1pC,wBAAyB,CAAEC,OAAQwpC,S,EApCnCL,E,wEAyCNA,EAAc72D,YAAc,iBAE5B62D,EAAcl4F,UAAY,CACxB21C,eAAgB/mC,IAAUS,QACxBT,IAAUC,MAAM,CACd+mC,KAAMhnC,IAAUt7B,OAAOi+B,WACvB5zC,KAAMixC,IAAU9jC,UAGpBqtH,QAASvpF,IAAU9jC,OACnB2pE,OAAQ7lC,IAAU9jC,QAGpBotH,EAAcjmE,aAAe,CAC3B0jB,eAAgB,GAChBwiD,QAAS,sCACT1jD,OAAQ,I,UAGKyjD,EAAA,O,6FA5DTA,E,woBCCA/qB,EAAW,SAAC,GAAoC,IAAlC70G,EAAkC,EAAlCA,GAAIigE,EAA8B,EAA9BA,IAAKkgE,EAAyB,EAAzBA,YAAajoH,EAAY,EAAZA,MAClCnE,EAAM27E,mBAEJnpB,EAASruD,EAATquD,KAERwY,qBAAU,YACH/+E,GAAMmgI,GAAiBngI,GAAMigE,IAChC,IAAImgE,IAAUrsH,EAAI5H,QAAS,CAEzB8oG,WAAYkrB,GAAelgE,EAC3B+0C,UAAWh1G,EACXoqC,MAAOpqC,MAGV,CAACA,EAAIigE,EAAKkgE,IAEb,IAAM75D,EACJ,mBAAKr4D,UAAU,oBACb,mBAAKA,UAAU,cACb,mBAAKu8F,sBAAoB,4BACvB,mBAAKz2F,IAAKA,EAAK+hE,mBAAiB,aAAa91E,GAAG,YAC9C,mBAAKiO,UAAU,eAAf,2EAC2E,IACzE,iBAAG0hG,KAAK,6DAAR,oBAQZ,OAAIppC,EACK,mBAAKt4D,UAAU,QAAQq4D,GAGzBA,G,EAnCHuuC,E,4BAsCNA,EAAS9rC,YAAc,YAEvB8rC,EAASntE,UAAY,CACnB0C,MAAOkM,IAAU9jC,OACjBxS,GAAIs2C,IAAU9jC,OAAOymC,WACrBgnB,IAAK3pB,IAAU9jC,OAAOymC,WACtB/gC,MAAOwtD,KAGTmvC,EAASl7C,aAAe,CACtBvvB,MAAO,WACPlyB,MAAO,CACLquD,MAAM,I,UAIKsuC,EAAA,MACfA,EAAS9rC,YAAc,a,6FAvDjB8rC,E,mjBCTAn9B,EAAe,SAAfA,IACLm9B,IAASj9B,OACTr2E,SAASm7D,oBAAoB,qBAAsBgb,IAGpDn2E,SAASmiC,iBAAiB,qBAAsBg0C,G,UAEjCm9B,IAAA,O,6FAPTn9B,E,2zCCGA09B,O,WAOL,gBAAairB,GAAqB,IAAX1vD,EAAW,uDAAJ,GAAI,6BACjC7xE,KAAKuhI,SAAWA,GAAY9+H,SAC5BzC,KAAKmD,QAAU0uE,EACf7xE,KAAKwhI,eAAiB,GACtBxhI,KAAK46G,sBAAwB9zE,QAAQ+qC,EAAK+oC,uB,8CAG3C,WAAQ,WACD6mB,EAAwB,SAACx3D,GAC9B,OAAO5oE,QAAQ03F,IAAI,CAAC,EAAK2oC,iBAAkB,EAAKC,iBAAiB13D,KAC/D7rE,MAAK,WACL,EAAKwjI,YAIR,OAAO33D,sDAAY8yB,WAAW/8F,KAAKmD,QAAQ8mE,aACzC7rE,MAAK,SAAA6rE,GAAW,OAAIw3D,EAAsBx3D,MAC1CgzB,OAAM,kBAAMwkC,S,mBAGf,WACKzhI,KAAK6hI,sBACR7hI,KAAK8hI,MAAMF,MAAM5hI,KAAK6hI,qBAElB7hI,KAAKiqE,aACRjqE,KAAK+hI,2B,8BAKR,SAAkB93D,GAAa,WACxB+3D,EAAe,CACpBpnB,sBAAuB56G,KAAK46G,uBAO7B,OAJI3wC,IACH+3D,EAAa/3D,YAAcA,GAGrBg4D,8CAAKC,kBAAkBF,GAC5B5jI,MAAK,SAAA89F,GACL,EAAKjyB,YAAciyB,EAASjyB,YAExBiyB,EAASj/E,MACZ,EAAK4kH,oBAAsB3lC,EAASj/E,MAEpC,EAAKklH,oBAAsBjmC,EAASimC,uBAGrCllC,OAAM,WACN,OAAO,O,4BAIV,WAAkB,WACjB,OAAO,IAAI57F,SAAQ,SAACC,GACnB,IAEC,IACM8gI,EAAU,EAAKxnB,sBAClB,4CACA,oCAEGynB,EAAgB5/H,SAASC,cAAc,UAsB7C,GArBA2/H,EAAcz/H,IAAd,UAAuBw/H,EAAvB,+BANoB,sBAQpBC,EAAcpoD,OAAS,WACtB,EAAK6nD,MAAQQ,MAAMC,kBAClB,CACCrhI,GAAI,EAAKqgI,SAASrgI,GAClBshI,SAAU,EAAKr/H,QAAQgzG,WACvBssB,QAAS,EAAKt/H,QAAQ+yG,UACtBwsB,QAASN,EACTO,YAAY,EACZvsC,OAAQ,SAACA,GACRA,EAAOwsC,OAAM,SAACllI,EAAMmD,GACnB,EAAKgiI,aAAa,CAACnlI,OAAMmD,eAK7BS,KAED,EAAKigI,SAASh4H,WAAWzG,YAAYu/H,GAEjC,EAAKznB,sBAAuB,CAC/B,IAAMkoB,EAAiBrgI,SAASC,cAAc,OAC9CogI,EAAejpD,UAAf,6UAMA,EAAK0nD,SAASh4H,WAAWV,aAAai6H,EAAgB,EAAKvB,UAG5D9+H,SAASyiC,cAAc,IAAIqmE,MAAM,mBAChC,MAAOvlG,GACR1E,U,+BAKH,WAA6D,oEAAJ,GAAI,IAAzCyhI,iCAAyC,SACtDrmC,EAAUzyB,sDAAYwyB,SAEtBumC,EAAiB,SAACt+F,GACvB,IACM24D,EADgB34D,EAAM44D,WACUtM,cAAc,gCAEhDqM,GACHA,EAAgBz4D,iBAAiB,UAAU,SAACF,GAC3CulC,sDAAYkzB,iBAAiBz4D,GAC3BtmC,MAAK,SAAA6rE,GACLyyB,EAAQkN,QACR,EAAK+3B,iBAAiB13D,GACpB7rE,MAAK,WACL,EAAKwjI,WAEHmB,GACHE,0EAMNxgI,SAASmiC,iBAAiB,iBAAkBo+F,GAE5C,IAAME,EAAkB,SAAlBA,IACLxmC,EAAQnvF,QAAQqwD,oBAAoB,gBAAiBslE,GACrDzgI,SAASm7D,oBAAoB,iBAAkBolE,GAC/CtmC,EAAQ1+C,WAET0+C,EAAQnvF,QAAQq3B,iBAAiB,gBAAiBs+F,K,0BAWnD,YAAiC,IAAlBxlI,EAAkB,EAAlBA,KAAkB,IAAZmD,YAAY,MAAL,GAAK,EAChC,EAKIA,EAJHsiI,QACC3iI,GAFF,aAGK,GAHL,GAEEA,OAEDwF,EACGnF,EADHmF,MAGD,GAAa,gBAATtI,GAA0BsC,KAAKmiI,oBAClC,OAAOniI,KAAKojI,oBAGb,IAAMC,EAAcjtC,gDAAOktC,cAAczlI,IAAIH,GAE7C,GAAI2lI,EAAa,CAChB,IAAM30G,EAAM+wB,OAAO,IAAIpoC,MAKvB,IAHoCrX,KAAKwhI,eAAe6B,EAAYE,YACnE70G,EAAM1uB,KAAKwhI,eAAe6B,EAAYE,WAFX,IAII,CAC/BvjI,KAAKwhI,eAAe6B,EAAYE,WAAa70G,EAE7C,IAAM80G,EAAwB,CAAEp+F,SAAS,GACrCp/B,IACHw9H,EAAsBv+F,OAAS,CAAEj/B,UAGlC,IAAMy9H,EAAiB,IAAIt+F,YAAYk+F,EAAYE,UAAWC,GAG9D,GAFAxjI,KAAKuhI,SAASr8F,cAAcu+F,GAExBJ,EAAYK,YAAc1jI,KAAKmD,QAAQwgI,iBAAkB,CAC5D,IAAMC,EAAwB,CAC7Bx+F,SAAS,EACTH,OAAQ,CACPoZ,SAAU,UACV2uC,OAAQq2C,EAAYK,UACpB10E,OAAO,EACP60E,WAAuB,oBAAXrjI,IAIVwF,IACH49H,EAAsB3+F,OAAOj/B,MAAQA,GAGtC,IAAM89H,EAAiB,IAAI3+F,YAAY,kBAAmBy+F,GAC1DnhI,SAAS09C,KAAKjb,cAAc4+F,Q,mCAMhC,WAAyB,WAClBC,EAAe,2BAAH,OAA8B/jI,KAAKuhI,SAASrgI,IACxD8iI,EAAkBvhI,SAASC,cAAc,OAC/CshI,EAAgBlzC,UAAUr/D,IAAI,mCAC9BuyG,EAAgBnqD,UAAhB,8LAGsBkqD,EAHtB,sNAOAC,EAAgBhzC,cAAc,qCAAqCuM,UAAYv9F,KAAKiqE,YAEpF,IAAMg6D,EAAqBjkI,KAAKuhI,SAASh4H,WAAWynF,cAAc,oCAC9DizC,GACHA,EAAmB7yD,SAGpBpxE,KAAKuhI,SAASh4H,WAAWV,aAAam7H,EAAiBhkI,KAAKuhI,UAE5D9+H,SAASooE,eAAek5D,GAAc3H,QAAU,WAC/C,EAAKgH,kBAAkB,CAACL,2BAA2B,O,8IAKvCzsB,O,2BAAA,+B,qIAtOTA,O,4mBCLAgtB,EAAgB,IAAI3rD,IAAI,CAC7B,CAAC,QACA,CACC4rD,UAAW,kBACXG,UAAW,UAGb,CAAC,cACA,CACCH,UAAW,0BAGb,CAAC,wBACA,CACCA,UAAW,wBACXG,UAAW,SAGb,CAAC,sBACA,CACCH,UAAW,yBACXG,UAAW,eAGb,CAAC,6BACA,CACCH,UAAW,yBACXG,UAAW,UAGb,CAAC,sBACA,CACCH,UAAW,wBACXG,UAAW,SAGb,CAAC,gCACA,CACCH,UAAW,wBACXG,UAAW,SAGb,CAAC,wBACA,CACCH,UAAW,0BACXG,UAAW,WAGb,CAAC,qBACA,CACCH,UAAW,uBACXG,UAAW,kB,EAKC,CACdJ,iBADc,O,6FAxDTA,E,mjBCAS,CACdpB,kBAAmB,WAA0C,IAAd/+H,EAAc,uDAAJ,GAClDg+D,EAAM,IAAI83B,IAAI,0CAUpB,OARI91F,EAAQ8mE,aACX9I,EAAI+iE,aAAaC,OAAO,cAAehhI,EAAQ8mE,aAG5C9mE,EAAQy3G,uBACXz5C,EAAI+iE,aAAaC,OAAO,UAAW,KAG7BnoC,MAAM76B,EAAK,CAAEijE,YAAa,YAAahmI,MAAK,SAAA89F,GAElD,OAAIA,EAASp6C,GACLo6C,EAASC,OAGQ,MAApBD,EAAS17F,OACL,CAAE2hI,qBAAqB,GAKxB,CAAEA,qBAAqB,QAxBnB,O,ujBCAA,SAASc,IAEvB,OAAOjnC,MADK,wCACM,CACjBC,OAAQ,QACRmoC,YAAa,a,4FAJSnB,E,onBCQlB/nB,EAAS,WACb,IAAMjmG,EAAM27E,mBAYZ,OAVA3Q,qBAAU,W,SACR,yBAAC,6FACC,IACE,IAAIokD,IAAQpvH,EAAI5H,SAChB,MAAOpP,GACPV,QAAQyI,MAAM/H,GAJjB,0C,mLAOA,IAGD,sBACEgX,IAAKA,EACLqvH,uBAAqB,GACrBn1H,UAAU,gCACV6nE,mBAAiB,YAEjB,mBAAK7nE,UAAU,uBACb,mBAAKA,UAAU,iBACb,mBAAKA,UAAU,mBAAmBimE,KAAK,aAAamvD,aAAW,gBAC7D,mBAAKp1H,UAAU,oDACb,kBAAIA,UAAU,0BAAd,WACA,mBAAKA,UAAU,2BAA2BjO,GAAG,sBAC3C,mBAAKiO,UAAU,2BACb,iBAAGA,UAAU,wBAAwB0hG,KAAK,QAAQ2zB,iBAAe,kBAC/D,oBAAMr1H,UAAU,+BAAhB,mBAEF,iBACEA,UAAU,wBACV0hG,KAAK,sBACL2zB,iBAAe,eAEf,oBAAMr1H,UAAU,+BAAhB,gBAEF,iBACEA,UAAU,wBACV0hG,KAAK,oCACL2zB,iBAAe,cAEf,oBAAMr1H,UAAU,+BAAhB,eAEF,iBACEA,UAAU,wBACV0hG,KAAK,6BACL2zB,iBAAe,YAEf,oBAAMr1H,UAAU,+BAAhB,aAEF,iBACEA,UAAU,wBACV0hG,KAAK,mCACL2zB,iBAAe,iBAEf,oBAAMr1H,UAAU,+BAAhB,kBAEF,iBACEA,UAAU,wBACV0hG,KAAK,+BACL2zB,iBAAe,aAEf,oBAAMr1H,UAAU,+BAAhB,cAEF,iBACEA,UAAU,wBACV0hG,KAAK,wCACL2zB,iBAAe,WAEf,oBAAMr1H,UAAU,+BAAhB,eAKR,mBAAKA,UAAU,oDACb,kBAAIA,UAAU,0BAAd,mBACA,mBAAKA,UAAU,2BAA2BjO,GAAG,sBAC3C,mBAAKiO,UAAU,2BACb,iBACEA,UAAU,wBACV0hG,KAAK,2DACL2zB,iBAAe,sBAEf,oBAAMr1H,UAAU,+BAAhB,uBAEF,iBACEA,UAAU,wBACV0hG,KAAK,kDACL2zB,iBAAe,kBAEf,oBAAMr1H,UAAU,+BAAhB,mBAEF,iBACEA,UAAU,wBACV0hG,KAAK,kDACL2zB,iBAAe,WAEf,oBAAMr1H,UAAU,+BAAhB,YAEF,iBACEA,UAAU,wBACV0hG,KAAK,qEACL2zB,iBAAe,aAEf,oBAAMr1H,UAAU,+BAAhB,cAEF,iBACEA,UAAU,wBACV0hG,KAAK,oDACL2zB,iBAAe,gCAEf,oBAAMr1H,UAAU,+BAAhB,oCAKR,mBAAKA,UAAU,oDACb,kBAAIA,UAAU,yBAAyBs1H,gBAAc,sBAArD,YAGA,mBAAKt1H,UAAU,2BAA2BjO,GAAG,sBAC3C,mBAAKiO,UAAU,2BACb,iBACEA,UAAU,wBACV0hG,KAAK,gCACL2zB,iBAAe,2BACfE,+BAA6B,QAE7B,oBAAMv1H,UAAU,+BAAhB,6BAEF,iBACEA,UAAU,wBACV0hG,KAAK,8BACL2zB,iBAAe,4BAEf,oBAAMr1H,UAAU,+BAAhB,6BAEF,iBACEA,UAAU,wBACV0hG,KAAK,mKACL2zB,iBAAe,uBAEf,oBAAMr1H,UAAU,+BAAhB,wBAEF,iBACEA,UAAU,wBACV0hG,KAAK,yDACL2zB,iBAAe,gBAEf,oBAAMr1H,UAAU,+BAAhB,iBAEF,iBACEA,UAAU,wBACV0hG,KAAK,gDACL2zB,iBAAe,uBAEf,oBAAMr1H,UAAU,+BAAhB,wBAEF,iBACEA,UAAU,wBACV0hG,KAAK,qCACL2zB,iBAAe,wBAEf,oBAAMr1H,UAAU,+BAAhB,yBAEF,iBACEA,UAAU,wBACV0hG,KAAK,2BACL2zB,iBAAe,yBAEf,oBAAMr1H,UAAU,+BAAhB,0BAEF,iBACEA,UAAU,wBACV0hG,KAAK,qCACL2zB,iBAAe,4BAEf,oBAAMr1H,UAAU,+BAAhB,6BAEF,iBACEA,UAAU,wBACV0hG,KAAK,2BACL2zB,iBAAe,eAEf,oBAAMr1H,UAAU,+BAAhB,gBAEF,iBACEA,UAAU,wBACV0hG,KAAK,0EACL2zB,iBAAe,qBAEf,oBAAMr1H,UAAU,+BAAhB,yBAKR,mBAAKA,UAAU,oDACb,kBAAIA,UAAU,yBAAyBs1H,gBAAc,sBAArD,SAGA,mBAAKt1H,UAAU,2BAA2BjO,GAAG,sBAC3C,mBAAKiO,UAAU,2BACb,iBACEA,UAAU,wBACV0hG,KAAK,kDACL2zB,iBAAe,aAEf,oBAAMr1H,UAAU,+BAAhB,cAEF,iBACEA,UAAU,wBACV0hG,KAAK,qCACL2zB,iBAAe,8BAEf,oBAAMr1H,UAAU,+BAAhB,+BAEF,iBACEA,UAAU,wBACV0hG,KAAK,sCACL2zB,iBAAe,cAEf,oBAAMr1H,UAAU,+BAAhB,eAEF,iBACEA,UAAU,wBACV0hG,KAAK,0BACL2zB,iBAAe,4BAEf,oBAAMr1H,UAAU,+BAAhB,6BAEF,iBACEA,UAAU,wBACV0hG,KAAK,sBACL2zB,iBAAe,oBAEf,oBAAMr1H,UAAU,+BAAhB,qBAEF,iBACEA,UAAU,wBACV0hG,KAAK,+BACL2zB,iBAAe,aAEf,oBAAMr1H,UAAU,+BAAhB,cAEF,iBACEA,UAAU,wBACV0hG,KAAK,iCACL2zB,iBAAe,eAEf,oBAAMr1H,UAAU,+BAAhB,gBAEF,iBACEA,UAAU,wBACV0hG,KAAK,iEACL2zB,iBAAe,sBAEf,oBAAMr1H,UAAU,+BAAhB,0BAKR,mBAAKA,UAAU,oDACb,kBAAIA,UAAU,yBAAyBs1H,gBAAc,sBAArD,sBAGA,mBAAKt1H,UAAU,2BAA2BjO,GAAG,sBAC3C,mBAAKiO,UAAU,2BACb,iBACEA,UAAU,wBACV0hG,KAAK,oCACL2zB,iBAAe,gBAEf,oBAAMr1H,UAAU,+BAAhB,iBAEF,iBACEA,UAAU,wBACV0hG,KAAK,uBACL2zB,iBAAe,WAEf,oBAAMr1H,UAAU,+BAAhB,YAEF,iBACEA,UAAU,wBACV0hG,KAAK,wBACL2zB,iBAAe,aAEf,oBAAMr1H,UAAU,+BAAhB,cAEF,iBACEA,UAAU,wBACV0hG,KAAK,qBACL2zB,iBAAe,4BAEf,oBAAMr1H,UAAU,+BAAhB,gCAKR,mBAAKA,UAAU,oDACb,kBAAIA,UAAU,uDACZ,iBAAGA,UAAU,oDAAoDjO,GAAG,qBAAqB2vG,KAAK,qCAC5F,oBAAM1hG,UAAU,+BAAhB,+BAMV,mBAAKA,UAAU,sBAAsBimE,KAAK,eACxC,kGAC8E,KAC3E,IAAI/9D,MAAO8M,cACX,KACD,oBAAMmnB,MAAM,kBAAkBi5F,aAAW,OAAzC,MAEQ,IANV,mEAQE,uBARF,2FAS2F,IACzF,iBACE1zB,KAAK,kDACL0zB,aAAW,kCAFb,iCAVF,OAoBJ,mBAAKp1H,UAAU,mBACb,mBAAKA,UAAU,uBACb,mBAAKA,UAAU,6B,EA3UnB+rG,E,4BAkVNA,EAAOjxC,YAAc,U,UAENixC,EAAA,O,6FApVTA,E,6iBCNAtiC,EAAe,SAAfA,IACLsiC,IAAOpiC,OACPr2E,SAASm7D,oBAAoB,qBAAsBgb,IAGpDn2E,SAASmiC,iBAAiB,qBAAsBg0C,G,UAEjCsiC,IAAA,O,6FAPTtiC,E,gkBCCS,SAASE,EAAMz5E,GAC7BslI,IAAUjnE,SAAS,UAEnB,IAAIknE,EAAiBC,IAAMznD,mBAE3B36E,SAAS09C,KAAKvb,iBAAiB,oBAAoB,WAClD,IAAMklC,EAAa+6D,IAAMznD,mBAErBtT,IAAe86D,IAClBvlI,EAASyqE,GACT86D,EAAiB96D,MAInBzqE,EAASulI,I,4FAdc9rD,E,6mFCOlBgsD,EAAW,SAAApnI,GAEf,IAAMqnI,EAAczpI,OAAO0pI,KAAO1pI,OAAOypI,aAAezpI,OAAO2pI,eAAiB3pI,OAAO4pI,mBAAqB5pI,OAAO6pI,eAE/GJ,GAAeA,EAAYK,OAC7BL,EAAYM,WAAW3nI,GACvBqnI,EAAYK,KAAK1nI,KAKrB,SAAS4nI,EAAoBC,GAC3B,IAAIhqG,EAAS,GAMb,OAJIgqG,GAA8C,WAA3B,EAAOA,IAAgC,QAASA,GAAmB,SAAUA,IAClGhqG,EAAS,KAAO,CAACgqG,EAAgBn9G,IAAKm9G,EAAgB7nI,KAAM6nI,EAAgBvjF,KAAMujF,EAAgBC,YAAY1gI,KAAK,OAG9Gy2B,EAST,SAASuJ,EAAUyrE,EAAW1vG,EAAMmjC,GAElCA,EAASA,GAAUvhC,SAAS09C,MAAQ19C,SAAS69C,gBAC7CiwD,EAAY,QAAH,OAAWA,GACpB,IAAM1+B,EAAO,CACXzsC,SAAS,EACTqgG,YAAY,EACZxgG,OAAQpkC,GASJ06B,EAAS+pG,EAPqB,WAAhB,EAAOzkI,IAAqB,QAASA,EACzB,CAC9BunB,IAAKvnB,EAAKunB,IACV1qB,KAAMmD,EAAKnD,KACXskD,KAAMnhD,EAAKmhD,MAAQnhD,EAAKmhD,KAAKxiD,OAASqB,EAAKmhD,KAAKvyC,WAAa,GAC7D+1H,WAAY3kI,EAAK2kI,YACf,IAGJV,EADiBv0B,EAAYh1E,GAE7ByI,EAAOkB,cAAc,IAAIC,YAAYorE,EAAW1+B,IASlD,SAASoZ,EAAGvtF,EAAM2B,EAAU2kC,GAC1BtmC,EAAO,QAAH,OAAWA,IAGfsmC,EAASA,GAAUvhC,SAAS09C,MAAQ19C,SAAS69C,iBACtC1b,iBAAiBlnC,EAAM2B,GAShC,SAASi/F,EAAI5gG,EAAM2B,EAAU2kC,GAC3BtmC,EAAO,QAAH,OAAWA,IAGfsmC,EAASA,GAAUvhC,SAAS09C,MAAQ19C,SAAS69C,iBACtCsd,oBAAoBlgE,EAAM2B,GASnC,SAASqmI,EAAKhoI,EAAM2B,EAAU2kC,GAa5BinD,EAAGvtF,GAZa,SAAUgnC,IAEXA,EAAMV,QAAUU,EAAM44D,YAC9B1/B,oBAAoBlgE,EAAO,QAAH,OAAWA,GAAQ2B,GAE5CA,IACFA,EAASqlC,GAETrlC,EAAW,QAIG2kC,GAGpB,SAAS2hG,EAAkBvvC,EAAQ76D,GACjC,IAAMqqG,EAAYxvC,EAAOxyF,KAAI,SAAA2sG,GAAS,MAAI,QAAUA,EAAYh1E,KAEhE,IAAKwpG,cAAgBA,YAAYc,iBAE/B,MAAO,GAGT,IAAMC,EAAQ,GAsBd,OArBAF,EAAUngI,SAAQ,SAAUsgI,GAC1B,IAAMC,EAASjB,YAAYc,iBAAiBE,GACtCE,EAAWF,EAAM/7H,QAAQ,QAAS,IAAIA,QAAQuxB,EAAQ,IAE5D,GAAIyqG,GAAUA,EAAOxmI,OAEnBsmI,EAAMG,GAAY3pH,KAAK6W,MAAM6yG,EAAO,GAAGE,gBAMzC,GAAI3qG,EAAQ,CACV,IAAM4qG,EAAgBJ,EAAM/7H,QAAQuxB,EAAQ,IACtC6qG,EAAUrB,YAAYc,iBAAiBM,GAEzCC,GAAWA,EAAQ5mI,SACrBsmI,EAAMG,GAAY3pH,KAAK6W,MAAMizG,EAAQ,GAAGF,gBAIvCJ,EAET,SAASO,EAAeC,EAAoBC,GAAe,MACzD,GAAKxB,aAAgBA,YAAYyB,iBAAjC,CAIA,IACMC,EADiBH,EAAmBxwG,QAAO,SAAA6zE,GAAK,OAAI48B,EAAcjhG,SAASqkE,EAAM+8B,gBAC5C9iI,KAAI,SAAA+lG,GAAK,OAAIA,EAAMm8B,SAExDa,GAAgB,MAAGxiI,OAAH,UAAasiI,IACjB1B,YAAYyB,iBAAiB,QACrC/gI,SAAQ,YAEZ,IADJ/H,EACI,EADJA,KAEAipI,EAAclhI,SAAQ,SAAA8qG,GAChB7yG,EAAKqV,MAAL,eAAmBw9F,KACrBw0B,YAAYM,WAAW3nI,UAO/B,SAASkpI,EAAuBC,GAC9B,IAAK9B,cAAgBA,YAAYyB,mBAAqBhqE,GAAM7oD,QAAQkzH,GAElE,MAAO,GAGT,IAAMC,EAAgB/B,YAAYyB,iBAAiB,cAC7CO,EAAWvqE,GAAM7oD,QAAQmzH,IAAkBA,EAAc,IAAM,GAC/DhB,EAAQ,GAId,OAHAe,EAAaphI,SAAQ,SAAUwgI,GAC7BH,EAAMG,GAA0C,iBAAvBc,EAASd,GAAyB3pH,KAAK6W,MAAM4zG,EAASd,IAAa,KAEvFH,EAGT,SAASkB,EAAaltE,EAAaz6D,EAAU4nI,GACtC54H,MAAMsF,QAAQmmD,GAKnBA,EAAYr0D,SAAQ,SAAUyhI,IACxBD,GAAmBzqE,GAAM2qE,SAASD,EAAKE,eACxB/4H,MAAMsF,QAAQuzH,EAAKzsB,UAAYysB,EAAKzsB,SAAW,IACvDh1G,SAAQ,SAAUkxG,GACzB0wB,EAAmB,QAAU1wB,EAASuwB,EAAM7nI,SARhDW,KAAK6jC,IAAIrmC,KAAK,8EAclB,SAAS6pI,EAAmB92B,EAAW+2B,EAAUjoI,GAC/CoD,SAASmiC,iBAAiB2rE,GAAW,SAASg3B,EAAoB7iG,GAChE8iG,EAAYF,EAAU5iG,EAAMO,OAAQ5lC,GAE/BioI,EAASG,UACZhlI,SAASm7D,oBAAoB2yC,EAAWg3B,MAK9C,SAASC,EAAYF,EAAUI,EAAcroI,GAC3C,IAAMk8B,EAASihC,GAAM8oE,oBAAoBoC,GACnC5B,EAAQH,EAAkB2B,EAASxB,MAAOvqG,GAEhD,GAAI+rG,EAASK,WAAY,CACvB,IAAMZ,EAAWH,EAAuBU,EAASK,YACjD/rI,OAAOwmC,OAAO0jG,EAAOiB,GAGvB,IAAMa,EAAe,CACnBvpF,SAAU,MACV2uC,OAAQs6C,EAASZ,YACjBmB,QAAS,CACP/B,MAAOA,IAGX8B,EAAaE,OAAS,CACpBC,WAAYzsI,OAAO0sI,KAAK32C,IAAI42C,iBAG1BP,GAAgB,QAASA,IAC3BE,EAAaM,SAAW,CACtBxqI,KAAMgqI,EAAahqI,KACnB0qB,IAAKs/G,EAAat/G,IAClB45B,KAAM0lF,EAAa1lF,MAAQ0lF,EAAa1lF,KAAKvyC,WAC7C+1H,WAAYkC,EAAalC,YAAc,GAGL,kBAAzBkC,EAAaS,UACtBP,EAAaM,SAASC,QAAUT,EAAaS,UAIjD9oI,EAASuoI,GAGX,SAASQ,EAAetuE,EAAaysE,GACnCF,EAAevsE,EAAaysE,GAC5B/pE,GAAM13B,UAAU,cAQlB,IAsBIzlC,EACAgpI,EACAh7H,EAxBAi7H,EAAY,CACd3nC,KAAM,SAAUplB,EAASn8C,GACvBm8C,EAA6B,iBAAZA,EAAuBA,EAAUt5E,KAAK47C,UAAU09B,IACjEn8C,EAAStpB,UAAU,IAAMxa,OAAO6sC,KACzB4hD,YAAYxO,EAAS,MAE9Br5E,MAAO,SAAUq5E,GAEf,GAAuB,iBAAZA,GAAuC,MAAfA,EAAQ,GACzC,OAAOA,EAIT,IACE,OAAOt5E,KAAKC,MAAMq5E,GAEpB,MAAOt9E,GACL,OAAOs9E,KASb,SAASgtD,IACP,IAAIC,EACEC,EAAO9D,IAAU/jF,SAAQ,GAa/B,OADAhlD,OAAO4J,KAAK6iI,GAAe5iI,SAV3B,SAA+BqkE,GAC7B,IAAM4+D,EAAiBL,EAAcv+D,GAEjC2+D,EAAKt/F,OAASu/F,EAAe,IAAMD,EAAKr/F,QAAUs/F,EAAe,MAC9DF,GAAUE,EAAe,IAAML,EAAcG,GAAQ,MACxDA,EAAS1+D,MAMR0+D,EAGT,SAAS3pC,IACP,IAAM2pC,EAASD,IAEXl7H,IAAYm7H,IACdG,EAAWH,GACXnpI,EAASmpI,IAIb,SAASG,EAAWjrI,GAClB2P,EAAU3P,EAGZ,SAASkrI,IACP,OAAOv7H,EAET,SAASw7H,EAAOC,EAAMzlI,GACpB,QAAKm5D,GAAM7gD,WAAWtY,KAKtBglI,EAAgBS,EAChBzpI,EAAWgE,EACXslI,EAAWJ,KACX9lI,SAAS09C,KAAKvb,iBAAiB,wBAAyBi6D,GACxDp8F,SAAS09C,KAAKvb,iBAAiB,mBAAoBi6D,GACnD8lC,IAAUjnE,SAAS,eACnBinE,IAAUjnE,SAAS,UACZkrE,KAqBT,SAAS/kG,IACP,IAAI7/B,EACA+kI,GAEiD,IAAjD,sBAAsB3rI,QAAQ0Y,UAAU,KAC1C9R,EAAO,MACP+kI,EAAY,IAEZ/kI,EAAO8R,UAAU,GACjBizH,EAAY,GAGd,IAAM50H,EAAO,GAAG7O,MAAMvJ,KAAK+Z,UAAWizH,GAElCllG,EAAImlG,KAAKhlI,IACX1I,OAAOiC,QAAQyG,GAAM1D,MAAMhF,OAAOiC,QAAS4W,GAlC/CwwH,IAAU7nE,oBA0CV,IAAMksE,EAAO,SAAUhlI,GAGrB,OADco4E,cAAgBA,aAAaC,QAAQ,UAAsD,IAA3C1d,SAASE,OAAOzhE,QAAQ,gBACtE9B,OAAOiC,SAAWjC,OAAOiC,QAAQyG,IAM7CxG,EAAO,WACX,IAAM2W,EAAO,CAAC,QAAQhQ,OAAO,GAAGmB,MAAMvJ,KAAK+Z,UAAW,IACtD+tB,EAAIvjC,MAAM,KAAM6T,IAMZnO,EAAQ,WACZ,IAAMmO,EAAO,CAAC,SAAShQ,OAAO,GAAGmB,MAAMvJ,KAAK+Z,UAAW,IACvD+tB,EAAIvjC,MAAM,KAAM6T,IAMZolE,EAAO,WACX,IAAMplE,EAAO,CAAC,QAAQhQ,OAAO,GAAGmB,MAAMvJ,KAAK+Z,UAAW,IACtD+tB,EAAIvjC,MAAM,KAAM6T,IAOZ+oC,EAAQ,SAAUysD,GACjB9lE,EAAImlG,KAAK,mBAId1tI,OAAOiC,QAAQ0rI,eAAet/B,GAAS,UAMnCtsD,EAAM,WACLxZ,EAAImlG,KAAK,aAId1tI,OAAOiC,QAAQ2rI,YAEXC,EAAQ,SAAUtoI,EAAMqP,GACxB2zB,EAAImlG,KAAK,QAAU1tI,OAAOiC,UACxBA,QAAQ4rI,MACV5rI,QAAQ4rI,MAAMtoI,EAAMqP,GAEpB3S,QAAQsmC,IAAIhjC,KAIZuoI,EAAiB,SAAU9hI,EAAQ4I,GACvC,GAAI2zB,EAAImlG,KAAK,QAAU1tI,OAAOiC,QAC5B,GAAI+J,GAAU/J,QAAQ4rI,MAAO,CAC3B,IAAMtoI,EAAOjF,OAAO4J,KAAK8B,GAAQ1D,KAAI,SAAAW,GASnC,MAAO,CACL4C,IAAK5C,EACLxG,MARE4V,EAAQrM,EAAO/C,KAAUuS,EAASxP,EAAO/C,IACrCtC,KAAK47C,UAAUv2C,EAAO/C,IAEtB+C,EAAO/C,OAQjBhH,QAAQ4rI,MAAMtoI,EAAMqP,QAEpB3S,QAAQsmC,IAAIv8B,IAcZ+hI,EAAMztI,OAAOC,UAAUC,eAmB7B,SAASgoC,EAAGx8B,GACV,IAAMtD,EAAOpI,OAAOC,UAAU4T,SAAS1T,KAAKuL,GAAQyL,MAAM,sBAAsB,GAEhF,OAAe,OAAXzL,EACK,YACahI,IAAXgI,EACF,YAEAtD,EA1BX6kI,EAAOD,WAAaA,EACpB/kG,EAAIqZ,MAAQA,EACZrZ,EAAIwZ,IAAMA,EACVxZ,EAAImlG,KAAOA,EACXnlG,EAAI01C,KAAOA,EACX11C,EAAIrmC,KAAOA,EACXqmC,EAAI79B,MAAQA,EACZ69B,EAAIslG,MAAQA,EACZtlG,EAAIulG,eAAiBA,EA4BrB,IAAMz1H,EAAU,SAAUF,GACxB,MAAmB,UAAZqwB,EAAGrwB,IAQNgiB,EAAW,SAAUhiB,GACzB,MAAmB,WAAZqwB,EAAGrwB,IAQNkI,EAAa,SAAUlI,GAC3B,MAAmB,aAAZqwB,EAAGrwB,IAQN61H,EAAY,SAAU71H,GAC1B,MAAmB,YAAZqwB,EAAGrwB,IAQNqD,EAAW,SAAUrD,GACzB,MAAmB,WAAZqwB,EAAGrwB,IAQN81H,EAAW,SAAU91H,GACzB,OAAOA,GAAe,OAARA,GAAgBA,IAAQnY,QAUlCkuI,EAAgB,SAAU/1H,GAC9B,IAqBItM,EArBEkiI,EAAMztI,OAAOC,UAAUC,eAI7B,IAAK2X,IAAQqD,EAASrD,IAAQA,EAAI8kE,UAAYgxD,EAAS91H,GACrD,OAAO,EAGT,IAEE,GAAIA,EAAIwzB,cAAgBoiG,EAAIttI,KAAK0X,EAAK,iBAAmB41H,EAAIttI,KAAK0X,EAAIwzB,YAAYprC,UAAW,iBAC3F,OAAO,EAET,MAAOoC,GAGP,OAAO,EAOT,IAAKkJ,KAAOsM,GAGZ,YAAenU,IAAR6H,GAAqBkiI,EAAIttI,KAAK0X,EAAKtM,IAQtCsiI,EAAmB,SAAUl6H,GACjC,OAAOkmB,EAASlmB,IAAQu3B,QAAQv3B,EAAI/P,SAEhCi5E,EAAY,SAAUh0C,GAC1B,OAAOA,GAAgC,IAArBA,EAAQ8zC,UAAkB9zC,EAAQo5D,UAAW,GAEjE,SAASrmF,IAIP,IAAIrU,EACAP,EACAqhC,EAEAjQ,EACAgQ,EAASluB,UAAU,IAAM,GACvBtW,EAASsW,UAAUtW,OACrBkqI,GAAO,EACPnqI,EAAI,EAmBR,GAjBsB,kBAAXykC,IACT0lG,EAAO1lG,EACPA,EAASluB,UAAU,IAAM,GAEzBvW,EAAI,GAMgB,WAAlB,EAAOykC,IAAwBroB,EAAWqoB,KAC5CA,EAAS,IAMPxkC,IAAWD,EACb,OAAOykC,EAGT,KAAOzkC,EAAIC,EAAQD,IAEjB,GAAiC,QAA5B4D,EAAU2S,UAAUvW,IAEvB,IAAK,IAAM7B,KAAQyF,EAEjB,GAAIA,EAAQrH,eAAe4B,GAAO,CAIhC,GAHAkF,EAAMohC,EAAOtmC,GAGTsmC,KAFJC,EAAO9gC,EAAQzF,IAGb,SAIEgsI,GAAQzlG,IAASulG,EAAcvlG,IAAStwB,EAAQswB,KACpCtwB,EAAQswB,KAGN,EACdjQ,EAAQpxB,GAAO+Q,EAAQ/Q,GAAOA,EAAM,IAEpCoxB,EAAQpxB,GAAOkU,EAASlU,GAAOA,EAAM,GAIvCohC,EAAOtmC,GAAQ8Z,EAAOkyH,EAAM11G,EAAOiQ,SACjB3kC,IAAT2kC,IACTD,EAAOtmC,GAAQumC,GAQzB,OAAOD,EAYT,IAAM4tE,GAAO,SAAUriG,EAAKzB,EAAW67H,GACrC,IAAIC,EAEEC,EAAU,GAEhB,GAAIt6H,GAAOA,EAAI3F,MAGb,IAAK,IAAI/J,EAAM,EAAGY,GAFlB8O,EAAMA,EAAI3F,MAAMkE,IAEUtO,OAAQK,EAAMY,EAAGZ,GAAO,GAEhD+pI,EADQr6H,EAAI1P,GACC+J,MAAM+/H,IAEVnqI,OAAS,IAChBqqI,EAAQD,EAAK,GAAGjgI,QAAUigI,EAAKtkI,MAAM,GAAGR,KAAK6kI,IAKnD,OAAOE,GAaHC,GAAS,SAAUC,EAAWC,EAAO3qI,EAAU4qI,EAASC,GAC5D,IAAM1hI,EAAM/F,SAASC,cAAc,UAC7B4L,EAAO7L,SAASguF,qBAAqB,UAAU,GACjD05C,GAAS,EAEb,SAASC,EAAgB/qI,GAElB8qI,IACH9qI,EAAStD,OACTouI,GAAS,EAGLD,GACF1hI,EAAIyoF,cAAcznF,YAAYhB,IAwCpC,OAnCAA,EAAIC,aAAa,MAAOshI,GACxBvhI,EAAIC,aAAa,QAAS,IAGtBuhI,IACFxhI,EAAIwhI,MAAQ,QAKVruH,EAAWtc,KAETgqI,EAAIttI,KAAKyM,EAAK,sBAChBA,EAAI1G,mBAAqB,WACA,WAAnB0G,EAAIzG,YACNqoI,EAAgB/qI,IAIpBmJ,EAAIyxE,OAAS,WACXmwD,EAAgB/qI,KAOlBsc,EAAWsuH,KACbzhI,EAAI0xE,QAAU,WACZkwD,EAAgBH,KAKpB37H,EAAK/E,WAAWV,aAAaL,EAAK8F,GAC3B9F,GAUH6hI,GAAc,WAClB,OAAO5nI,SAASkzG,UAAY,IAQxB20B,GAAc,SAAU52H,GAC5B,OAAOA,EAAO1J,QAAQ,eAAe,SAAU+I,EAAOw3H,EAAQviC,GAC5D,OAAOA,EAAOnpE,kBASZ2rG,GAAqB,SAAUxhD,GACnC,IAAMtrF,EAAO+3B,EAASuzD,GAAaA,EAAYA,EAAUtrF,KACzD,OAAO4sI,GAAY5sI,EAAKsM,QAAQ,iBAAkB,MAU9CygI,GAAc,WAClB,OAAOhoI,SAASk8D,SAASkyC,MAAQ,IAS7B65B,GAAiB,WACrB,OAAOjoI,SAASk8D,SAASE,OAAO10D,UAAU,IAAM,IAS5CwgI,GAAsB,SAAUjtI,EAAMyjE,GAC1CA,EAAMA,GAAO7lE,OAAOqjE,SAASkyC,KAC7BnzG,EAAOA,EAAKsM,QAAQ,SAAU,QAC9B,IACMqkF,EADQ,IAAIptE,OAAO,OAASvjB,EAAO,qBACnB+W,KAAK0sD,GAE3B,OAAKktB,EAIAA,EAAQ,GAIN/pD,mBAAmB+pD,EAAQ,GAAGrkF,QAAQ,MAAO,MAH3C,GAJA,MAcL4gI,GAAe,WACnB,IAAMl8G,EAAM,IAAIrX,KAChB,MAAO,CAACqX,EAAIvK,cAAe,WAAIuK,EAAII,WAAa,GAAIxpB,OAAO,GAAI,WAAIopB,EAAIK,WAAYzpB,OAAO,GAAI,WAAIopB,EAAIo5B,YAAaxiD,OAAO,GAAI,WAAIopB,EAAI45B,cAAehjD,OAAO,GAAI,WAAIopB,EAAI85B,cAAeljD,OAAO,IAAIR,KAAK,KAUnM+lI,GAAmB,SAAUC,GAOjC,IALA,IACIC,EACAz8H,EAFE08H,EAAUvoI,SAASguF,qBAAqB,UAG1ClxF,EAAIyrI,EAAQxrI,OAETD,KAEL,GAAIyrI,EAAQzrI,GAAG0rI,gBAAkBH,EAAc,CAC7Cx8H,EAAO08H,EAAQzrI,GACf,MAMJ,GAAI+O,EAEF,KAAOA,EAAK/E,YAAY,CAItB,GAHAwhI,EAAWz8H,EAAKC,aAAa,mBAI3B,OAAOw8H,EAGTz8H,EAAOA,EAAK/E,WAIhB,OAAO,GAEH2hI,GAAuB,SAA8BC,GACzD,OAAOA,EAAa9sE,QAAO,SAAC+sE,EAAMvqI,GAEhC,OADAuqI,EAAKvqI,EAAKsG,KAAOtG,EAAK9C,MACfqtI,IACN,KAEC3lG,GAAS,SAAU/nC,GACvB,IAAM6c,EAAM9X,SAASgjC,OAAO1yB,MAAhB,mBAAkCrV,EAAlC,qBACZ,OAAO6c,EAAMA,EAAIxW,MAAQ,MAErBsnI,GAAa,iBA/bL,UAgcRC,GAAyBhvH,KAAKq5D,SACpC,SAASwxD,GAASC,GAChB,YAA6B,IAAfA,GAA8BA,EAAakE,GAE3D,IAAI9uE,GAAQ,CACVyuB,KACAqT,MACAonC,OACA5gG,YACAwjG,YACAiD,WAAY1C,EACZhlG,MACAlwB,UACA8hB,WACA9Z,aACA2tH,YACAxyH,WACAyyH,WACAC,gBACAC,mBACAhxD,YACAjhE,SACAo6F,QACAk4B,UACAO,eACAC,eACAE,sBACAC,eACAC,kBACAC,uBACAC,gBACAC,oBACAK,wBACAzlG,UACA4lG,cACArE,eACAX,iBACA+B,iBACAjB,YACArC,WACAQ,uBAQIl3G,GAAW,CACf+K,QAAS,CACPqyG,eAAgB,CACdC,MAAO,CAAC,UAEVC,gBAAiB,CACfD,MAAO,CAAC,IAAK,MAEfE,UAAW,CACTF,MAAO,CAAC,IAAK,KAEfG,eAAgB,CACdH,MAAO,CAAC,IAAK,MAEfI,YAAa,CACXJ,MAAO,CAAC,IAAK,KAEfK,iBAAkB,CAChBL,MAAO,CAAC,CAAC,IAAK,IAAK,CAAC,IAAK,MAE3BM,SAAU,CACRN,MAAO,CAAC,IAAK,MAEfO,UAAW,CACTP,MAAO,CAAC,IAAK,MAEfQ,SAAU,CACRR,MAAO,CAAC,IAAK,OAEfS,eAAgB,CACdT,MAAO,CAAC,IAAK,KAEfU,SAAU,CACRV,MAAO,CAAC,GAAI,KAEdW,QAAS,CACPX,MAAO,CAAC,IAAK,KAEfY,WAAY,CACVZ,MAAO,CAAC,EAAG,KAGfF,WAAY,CACVe,MAAO,CAAC,KAAM,GAEdC,MAAO,CAAC,IAAM,GAEdC,OAAQ,CAAC,IAAK,GAEdC,MAAO,CAAC,EAAG,IAGbrzH,MAAO,CACLszH,SAAS,EACTC,QAAQ,GAEVC,yBAAyB,GAG3B,SAASC,KACP,IAAIx+C,EAAU,GAKd,OAJgBhgF,MAAMgM,KAAK5X,SAAS2L,iBAAiB,8BAC7C3I,SAAQ,SAAAjD,GACd6rF,EAAU/yF,OAAO2G,KAAOu6D,GAAMhlD,OAAO62E,EAASpsF,KAAKC,MAAMM,EAAOq3E,YAAc,iBAEzEwU,EAST,SAASy+C,KACP,IAAIC,EACEC,EAAevqI,SAASuuF,cAAc,yBAM5C,OAJIg8C,IACFD,EAAYC,EAAan8B,MAGpB,CACLk8B,UAAWA,GAUf,SAASE,KACPjtI,KAAKqmF,MAAQ,GAGf4mD,GAAOpxI,UAAUqxI,OAAS,SAAUphI,EAAG/B,GACrC,IAAI9G,EAgBJ,OAdIu5D,GAAMgtE,cAAc19H,IACtB0wD,GAAMhlD,QAAO,EAAMxX,KAAKqmF,MAAOv6E,GAC/B7I,EAASjD,KAAKqmF,YACQ,IAANt8E,EAEd9G,OADe,IAAN6I,EACA9L,KAAKqmF,MAELrmF,KAAKqmF,MAAMv6E,IAGtB9L,KAAKqmF,MAAMv6E,GAAK/B,EAChB9G,EAAS8G,GAGJ9G,GAGTgqI,GAAOpxI,UAAUsxI,MAAQ,SAAUhmI,GAC7BA,SACKnH,KAAKqmF,MAAMl/E,GAElBnH,KAAKqmF,MAAQ,IAIjB4mD,GAAOpxI,UAAUi9E,KAAO,WAEtB,OADA94E,KAAKqmF,MAAQ7pB,GAAMhlD,QAAO,EAAM,GAAI4W,GAAU0+G,KAAqBD,MAC5D7sI,KAAKqmF,OAGd,IAAMrrE,GAAS,IAAIiyH,GACfG,GAAWpyH,GAAOkyH,OAAO9lI,KAAK4T,IAC5BqyH,GAASryH,GAAO89D,KAAK1xE,KAAK4T,IAC1BmyH,GAAQnyH,GAAOmyH,MAAM/lI,KAAK4T,IAE1BsyH,GAAqB,CAAC,SACtBC,GAAuB,CAAC,SAAU,QAAS,SAC3CC,GAAmB,CACvB/B,MAAO,SAAU1tI,EAAO0tI,GACtB,IAAc,IAAV1tI,GAA6B,UAAVA,EACrB,OAAO,EAGJ,GAAIy+D,GAAM7oD,QAAQ83H,GAAQ,CAC7B,IAAM5qH,EAAQ,cACd9iB,EAAM6L,MAAM,KAAKksB,QAAO,SAAAksB,GAAI,OAAIA,EAAKxiD,UAAQiG,SAAQ,SAAAu8C,GAC/CnhC,EAAMrW,KAAKw3C,GACbA,EAAKh4C,QAAQ6W,GAAO,SAAU9N,EAAOo2B,EAAOC,GAC1CqiG,EAAMpuI,KAAK,CAAC0mB,SAASolB,EAAO,IAAKplB,SAASqlB,EAAQ,SAE3CkkG,GAAmBlwI,QAAQ4kD,IAAS,GAC7CypF,EAAMpuI,KAAK2kD,MAKjB,OAAOypF,GAETtyG,QAAS,SAAUp7B,EAAO0tI,GACxB,IAAc,IAAV1tI,GAA6B,UAAVA,EACrB0tI,GAAQ,MACH,CACL,IAAMgC,EAAUL,KAAWj0G,QACrBA,EAAUqjC,GAAM7oD,QAAQ5V,GAASA,EAAQA,EAAM6L,MAAM,KAC3DuvB,EAAQ1zB,SAAQ,SAAAkS,GACV81H,GAAWA,EAAQ91H,IACrBA,EAAS81H,EAAQ91H,GAEb6kD,GAAM7oD,QAAQgE,EAAO8zH,MAAM,KAAO6B,GAAmBlwI,QAAQua,EAAO8zH,MAAM,KAAO,EACnF9zH,EAAO8zH,MAAMhmI,SAAQ,SAAAu8C,GACnBypF,EAAMpuI,KAAK2kD,MAGbypF,EAAMpuI,KAAKsa,EAAO8zH,QAGpBjvE,GAAM34B,IAAI79B,MAAV,8CAAuD2R,OAK7D,OAAO8zH,GAETiC,gBAAiB,SAAUhwI,EAAMK,EAAO0tI,GACtC,IAAMkC,EAAajwI,EAAKsM,QAAQ,SAAU,IAAI8I,cAQ9C,OALK0pD,GAAMgtE,cAAciC,KACvBA,EAAQ,IAGVA,EAAMkC,GAAcH,GAAiB/B,MAAM1tI,EAAO0tI,EAAMkC,IAAe,IAChElC,GAETmC,kBAAmB,SAAUlwI,EAAMK,EAAO0tI,GACxC,IAAMkC,EAAajwI,EAAKsM,QAAQ,WAAY,IAAI8I,cAQhD,OALK0pD,GAAMgtE,cAAciC,KACvBA,EAAQ,IAGVA,EAAMkC,GAAcH,GAAiBr0G,QAAQp7B,EAAO,IAC7C0tI,GAEToC,kBAAmB,SAAU9vI,GAC3B,OAAOA,EAAM6L,MAAM,KAAKhG,IAAI67C,SAE9B4qB,UAAW,SAAUtsE,EAAOssE,GAG1B,OAFAtsE,EAAQy+D,GAAMo1C,KAAK7zG,EAAO,IAAK,KAC/By+D,GAAMhlD,OAAO6yD,EAAWtsE,GACjBssE,GAET11C,KAAM,SAAU52B,GAQd,MANc,KAAVA,GAA0B,SAAVA,EAClBA,GAAQ,EACW,UAAVA,IACTA,GAAQ,GAGHA,GAET+vI,cAAe,SAAU/vI,GAGvB,IAFoE,IAAzCwvI,GAAqBnwI,QAAQW,GAOxD,OAAOA,EAJLy+D,GAAM34B,IAAIrmC,KAAV,4BAAoCO,EAApC,kFAQAgwI,GAAiC,SAAAt6H,IAChB,IAAjBA,EAAI+9E,WACN/9E,EAAI+9E,SAAW,KAIbw8C,GAAqB,SAAAtpG,GACzB,IAAMupG,EAAOvpG,EAAMO,OAAOgpG,KAC1BA,EAAKC,WAAaxpG,EAAMO,OAAOipG,WAE3BD,EAAKE,eACPF,EAAKG,cAELH,EAAKI,WACLJ,EAAKd,UAUT,SAASmB,GAAKpmI,EAAWgmI,EAAYK,GAAiB,WAE9CC,EAAMpB,KACRqB,EAAarB,GAAS,UAAY,GAEtCptI,KAAKkI,UAAYA,EAIbgmI,IACFluI,KAAKkuI,WAAaA,GAIpBluI,KAAK0uI,MAAQ1uI,KAAK2uI,aAAazmI,EAAW,CACxC,MAAS,eACT,cAAe,OACf,SAAY,OAEdlI,KAAKqnC,MAAQrnC,KAAK2uI,aAAa3uI,KAAK0uI,MAAO,CACzC,MAAS,iBAGX1uI,KAAK4uI,UACLH,EAAaA,EAAWzuI,KAAKtC,OAAS,GAEtCsC,KAAK69H,OAAS,MACd79H,KAAK6uI,OAAQ,EAEb7uI,KAAKqqE,UAAYokE,EAAWpkE,WAAa,GACzCrqE,KAAKyrI,MAAQgD,EAAWhD,OAAS,GACjCzrI,KAAK8uI,OAASL,EAAWK,SAAU,EACnC9uI,KAAKosC,MAAQqiG,EAAWriG,QAAS,EACjCpsC,KAAK+uI,UAAYN,EAAWM,YAAa,EACzC/uI,KAAKgvI,WAAqC,IAAzBP,EAAWO,UAC5BhvI,KAAK8tI,cAAgBW,EAAWX,cAG5BtxE,GAAM7oD,QAAQ86H,EAAWt1G,SAC3Bq0G,GAAiBr0G,QAAQs1G,EAAWt1G,QAASn5B,KAAKyrI,OACzCjvE,GAAMgtE,cAAciF,EAAWt1G,WACxCn5B,KAAKyrI,MAAQ,GACb7vI,OAAO4J,KAAKipI,EAAWt1G,SAAS1zB,SAAQ,SAAAkoI,GACtC,EAAKlC,MAAMkC,GAAcH,GAAiBr0G,QAAQs1G,EAAWt1G,QAAQw0G,GAAa,aAInD,IAAxBc,EAAWj9C,SACpBxxF,KAAKwxF,SAAWi9C,EAAWj9C,SAE3BxxF,KAAKwxF,SAAW47C,GAAS,cAAe,EAG1C,IAAM6B,EAAU/mI,EAAU8oF,cAAc,iBAExC,GAAIi+C,GAAWT,EAAI5B,yBAA2B5sI,KAAKkI,UAAUqG,aAAa,oBAAqB,CAC7F,IAAM2gI,EAAgB,CAAC,OAAQ,SAAU,SACnCC,EAAcnvI,KAAKkI,UAAUqG,aAAa,oBAChDiuD,GAAMkpE,KAzDY,mBAyDM,WACtB,IAAM0J,EAAWF,EAAc9xI,QAAQ+xI,GAAeA,EAAc,OACpEF,EAAQn+C,UAAUr/D,IAAI,4BAAtB,qCAAiF29G,OAQrF,GAHApvI,KAAKqvI,wBAGArvI,KAAKyrI,MAAMjsI,SAAWg9D,GAAMgtE,cAAcxpI,KAAKyrI,OAElD,OADAjvE,GAAM34B,IAAI79B,MAAM,mCAAoChG,KAAKtC,OAClD,EAITsC,KAAKsvI,iBAAmBf,EAAgBvuI,KAAKwxF,UAC7CxxF,KAAKuvI,eACLvvI,KAAKwvI,kBACLxvI,KAAKyvI,iBACLzvI,KAAK0vI,iBA+SP,SAASC,GAAa1B,GACpB,IAAK5/H,MAAMsF,QAAQs6H,EAAKxC,OAAQ,MAAO,kBACvC,IAF0B,EAEpBA,EAAQ,GAFY,IAIPwC,EAAKxC,OAJE,IAI1B,2BAA+B,KAApBzpF,EAAoB,QAC7BypF,EAAMpuI,KAAKgR,MAAMsF,QAAQquC,GAAQA,EAAKl9C,KAAK,KAAOk9C,IAL1B,8BAQ1B,OAAOypF,EAAM3mI,KAAK,MAQpB,SAAS8qI,GAAT,GAKE,IAHC,IADDvlE,EACC,EADDA,UAEMyzC,EAAS,GAEf,MAAyBliH,OAAOgrC,QAAQyjC,GAAxC,eAAoD,CAA/C,gBAAOljE,EAAP,KAAYoT,EAAZ,KACHujG,EAAOzgH,KAAP,UAAe8J,EAAf,YAAsBoT,IAGxB,OAAOujG,EAAOh5G,KAAK,MAQrB,SAAS+qI,GAAT,GAEG,IADDx+C,EACC,EADDA,IAEA,OAAIA,EAAI82C,QAAgB,QACnB95H,MAAMsF,QAAQ09E,EAAIrvC,MAChBqvC,EAAIrvC,KAAKl9C,KAAK,KADgB,MA7UvCwpI,GAAKzyI,UAAUwzI,qBAAuB,WAAY,WAChDhhI,MAAMgM,KAAKra,KAAKkI,UAAUuyF,YAAYh1F,SAAQ,SAAAujF,GAC5C,IAAMtrF,EAAO8+D,GAAMguE,mBAAmBxhD,EAAUtrF,MAC1CK,EAAQirF,EAAUjrF,MAEX,YAATL,EACF,EAAKA,GAAQ8vI,GAAiB9vI,GAAMK,EAAO,EAAK0tI,OAC9B,kBAAT/tI,EACT,EAAKowI,cAAgBN,GAAiBM,cAAc/vI,GAClC,sBAATL,GAAgC,EAAK8zF,UAC9Cu8C,GAA+B,GAC/B,EAAKv8C,SAAS1uD,UAAY0qG,GAAiBK,kBAAkB9vI,IAC3C,2BAATL,GAAqC,EAAK8zF,UACnDu8C,GAA+B,GAC/B,EAAKv8C,SAASs+C,eAAiBtC,GAAiB74G,KAAK52B,IAC5CyvI,GAAiB9vI,GAC1B,EAAKA,GAAQ8vI,GAAiB9vI,GAAMK,EAAO,EAAKL,IACvC,cAAc8M,KAAK9M,GAC5B,EAAK+tI,MAAQ+B,GAAiBI,kBAAkBlwI,EAAMK,EAAO,EAAK0tI,OACzD,YAAYjhI,KAAK9M,GAC1B,EAAK+tI,MAAQ+B,GAAiBE,gBAAgBhwI,EAAMK,EAAO,EAAK0tI,OACvD,EAAK3vI,eAAe4B,KAC7B,EAAKA,GAAQ8vI,GAAiB74G,KAAK52B,QAKzCuwI,GAAKzyI,UAAUk0I,cAAgB,WAC7B,IAAMt1C,EAAa,GAKnB,OAJApsF,MAAMgM,KAAKra,KAAKkI,UAAUuyF,YAAYh1F,SAAQ,SAAAujF,GAC5CyR,EAAWj+B,GAAMguE,mBAAmBxhD,IAAcA,EAAUjrF,SAE9DiC,KAAKy6F,WAAaA,EACXz6F,MAOTsuI,GAAKzyI,UAAU0zI,aAAe,WAAY,WAiBxC,OAfIvvI,KAAKsvI,kBAAoBtvI,KAAKwxF,WAChCxxF,KAAK6uI,OAAQ,EACb7uI,KAAKsvI,iBAAiBjQ,QAAQr/H,KAAKkI,WAI/BlI,KAAKgvI,WACPxyE,GAAMkpE,KAAK,gBAAgB,WACrB,EAAKyI,gBACP,EAAKp5H,WAEN/U,KAAKkI,YAILlI,MAGTsuI,GAAKzyI,UAAUkZ,OAAS,WACtB/U,KAAK6+F,KAAK,iBAGN7+F,KAAKsvI,kBACPtvI,KAAKsvI,iBAAiB7P,UAAUz/H,KAAKkI,YASzComI,GAAKzyI,UAAU6zI,eAAiB,WAW9B,OATIlzE,GAAMgtE,cAAcxpI,KAAKyrI,SAEtBzrI,KAAKmuI,gBACRnuI,KAAKquI,WAGP7xE,GAAMyuB,GAAG,aAAc+iD,GAAoBhuI,KAAKkI,YAG3ClI,MAOTsuI,GAAKzyI,UAAUm0I,SAAW,SAAUhuF,GAC9BA,GAA4B,MAApBvC,OAAOuC,EAAK,KAAmC,MAApBvC,OAAOuC,EAAK,KACjDhiD,KAAK6+F,KAAK,SAAU,CAClB78C,KAAM,CAAC,OAAQ,WASrBssF,GAAKzyI,UAAU+yI,QAAU,WAQvB,OAPA5uI,KAAKtC,KAAOsC,KAAKkI,UAAUqG,aAAa,oBAAsBvO,KAAKkI,UAAUqG,aAAa,cAErFvO,KAAKtC,OACRsC,KAAKtC,KAAL,qBAA0B4e,KAAK0C,MAAsB,IAAhB1C,KAAKq5D,WAC1C31E,KAAKkI,UAAUO,aAAa,kBAAmBzI,KAAKtC,OAG/CsC,MAOTsuI,GAAKzyI,UAAUwyI,SAAW,WAKxB,OAJAruI,KAAKkI,UAAU4oF,UAAUr/D,IAAI,gBAC7BzxB,KAAKiwI,iBAAgB,GACrBxtI,SAAS09C,KAAK2wC,UAAUr/D,IAAxB,mBAAwCzxB,KAAKtC,OAC7C8+D,GAAM13B,UAAU,YAAa9kC,MACtBA,MAOTsuI,GAAKzyI,UAAUq0I,SAAW,SAAU/gI,GAGlC,OAFAnP,KAAKkI,UAAU4oF,UAAUr/D,IAAzB,gBAAsCtiB,IACtCqtD,GAAM13B,UAAU,iBAAkB9kC,MAC3BA,MAOTsuI,GAAKzyI,UAAUo0I,gBAAkB,SAAUt4H,GAEzC,OADA3X,KAAKkI,UAAUO,aAAa,oBAAqBkP,GAC1C3X,MAOTsuI,GAAKzyI,UAAUuyI,WAAa,WAG1B,OAFApuI,KAAKkI,UAAU4oF,UAAU1f,OAAO,gBAChC3uE,SAAS09C,KAAK2wC,UAAU1f,OAAxB,mBAA2CpxE,KAAKtC,OACzCsC,MAOTsuI,GAAKzyI,UAAUsxI,MAAQ,WAMrB,OAJI3wE,GAAM7gD,WAAW3b,KAAA,YACnBA,KAAKmwI,YAGAnwI,MAOTsuI,GAAKzyI,UAAUmiD,QAAU,WAavB,OAXIwe,GAAM7gD,WAAW3b,KAAA,eACnBw8D,GAAM8hC,IAAI,aAAc0vC,GAAoBhuI,KAAKkI,WACjDlI,KAAKowI,cAEDpwI,KAAK0uI,MAAMz9C,gBAAkBjxF,KAAKkI,UACpClI,KAAKkI,UAAUsB,YAAYxJ,KAAK0uI,OAEhCnxI,QAAQyI,MAAM,wEAIXhG,MAOTsuI,GAAKzyI,UAAUw0I,iBAAmB,WAMhC,OAJI7zE,GAAM7gD,WAAW3b,KAAA,sBACnBA,KAAKswI,sBAGAtwI,MAOTsuI,GAAKzyI,UAAUgjG,KAAO,SAAUnhG,EAAMmD,GACpC,IAAMwwF,EAAMrxF,KAAKqxF,KAAO,GAClBk/C,EAAU,CACd7yI,KAAMsC,KAAKtC,MAAQ,GACnB0qB,IAAKpoB,KAAKqqE,WAAarqE,KAAKqqE,UAAUjiD,KAAO,GAC7C45B,KAAMqvC,EAAIrvC,MAAQ,GAClBwjF,WAAYn0C,EAAIm0C,YAAc,GAC9ByI,KAAMjuI,MAYR,MAT2B,kBAAhBqxF,EAAI82C,UACboI,EAAQpI,QAAU92C,EAAI82C,SAGpB3rE,GAAMgtE,cAAc3oI,IACtB27D,GAAMhlD,OAAO+4H,EAAS1vI,GAGxB27D,GAAM13B,UAAUpnC,EAAM6yI,EAASvwI,KAAKkI,WAC7BlI,MAOTsuI,GAAKzyI,UAAU8yI,aAAe,SAAUrgI,EAAM4rF,GAC5C,IAAIhyF,EAAY,QAYhB,OATIgyF,GACFt+F,OAAO4J,KAAK00F,GAAOz0F,SAAQ,SAAUinF,GACnC,IAAM3uF,EAAQm8F,EAAMxN,GACpBxkF,GAAa,GAAJ,OAAOwkF,EAAP,YAAe3uF,EAAf,QAIbmK,GAAa,UACboG,EAAKkiI,mBAAmB,YAAatoI,GAC9BoG,EAAKmiI,WAGdnC,GAAKzyI,UAAUsyI,aAAe,SAAUD,GAGtC,QAFAA,EAAaA,GAAcluI,KAAKkuI,cAEd1xE,GAAMgtE,cAAcxpI,KAAKyrI,SACP,IAA3BzrI,KAAKyrI,MAAMyC,IAUtBI,GAAKzyI,UAAU2zI,gBAAkB,WAK/B,OAJIxvI,KAAK8uI,QACP9uI,KAAKkI,UAAU4oF,UAAUr/D,IAAI,iBAGxBzxB,MAOTsuI,GAAKzyI,UAAU4zI,eAAiB,WAC9B,IAAItgI,EAYJ,OAVmB,IAAfnP,KAAKosC,OAAiC,SAAfpsC,KAAKosC,MAC9Bj9B,EAAY,aACY,UAAfnP,KAAKosC,QACdj9B,EAAY,eAGVA,IAAci+H,GAAS,4BACzBptI,KAAKkI,UAAU4oF,UAAUr/D,IAAzB,iBAAuCtiB,IAGlCnP,MAuDT,IAAM0wI,GAAS,SAAA9pI,GAAC,MAAI,SAAUA,GAM9B,SAAS+pI,GAAQj/C,GACf,IADsB,EAChB7wF,EAAO,GADS,IAGH6wF,GAHG,IAGtB,2BAA0B,KAAfu8C,EAAe,QACxB,GAAIyC,GAAOzC,GAAO,CAChB,IAAMj+C,EAAM,CACVtyF,KAAMuwI,EAAKvwI,KACX,YAAauwI,EAAK58C,IAAIu/C,SACtB,cAAe3C,EAAK58C,IAAIm0C,YAAc,MACtC,eAAgByI,EAAK58C,IAAIw/C,YAAc,MACvC7uF,KAAM6tF,GAAe5B,GACrBxC,MAAOkE,GAAa1B,GACpB5jE,UAAWulE,GAAiB3B,IAE9BptI,EAAKxD,KAAK2yF,KAdQ,8BAqBtB,OAHAzyF,QAAQosG,MAAM,aACdpsG,QAAQ4rI,MAAMtoI,GACdtD,QAAQ2rI,WACDroI,EAIT,IAAIqtI,GAAa,KAQjB,SAAS4C,MAGT,SAASC,GAAoB5lH,EAAO8wE,EAAQ58F,GAC1C,IAAIqyF,EAAQ,GAgBZ,OAfAvmE,EAAQA,GAASvvB,OAAO4J,KAAKxF,MAGzBw8D,GAAMitE,iBAAiBt+G,GACzBumE,EAAMr0F,KAAK8tB,GACFqxC,GAAM7oD,QAAQwX,KACvBumE,EAAQvmE,GAGVumE,EAAMjsF,QAAQozF,GAAIzxF,KAAK,KAAMpH,KAAMi8F,IAE/Bz/B,GAAM7gD,WAAWtc,IACnBA,EAAStD,KAAKiE,KAAM0xF,GAGf1xF,KAST,SAAS64F,GAAInH,EAAO1E,EAAQtvF,GAC1B,IAAMuwI,EAAOv8C,EAAMh0F,GAEfuwI,EACEzxE,GAAM7gD,WAAWsyH,EAAKjhD,IACxBihD,EAAKjhD,KAEDxwB,GAAM7gD,WAAWsyH,EAAKpvC,MACxBovC,EAAKpvC,KAAK7R,GAEVxwB,GAAM34B,IAAIrmC,KAAK,mCAAoCwvF,EAAQtvF,GAI/D8+D,GAAM34B,IAAIrmC,KAAK,uCAAwCwvF,EAAQtvF,GAInE,SAASszI,GAAiBhvF,GACxB,IAAKA,EACH,OAAO,EAGT,IAAM7oB,EAAUi0G,GAAS,WAEzB,IAAK,IAAM9yH,KAAQ6e,EAEjB,GAAIA,EAAQr9B,eAAewe,GAAO,CAChC,IAAImxH,EAAQtyG,EAAQ7e,GAAMmxH,MAM1B,IALAA,EAAQjvE,GAAM7oD,QAAQ83H,EAAM,IAAMA,EAAQ,CAACA,IACvB31G,QAAO,SAAUtuB,GACnC,OAAOA,EAAE,KAAOuc,SAASi+B,EAAK,GAAI,KAAOx6C,EAAE,KAAOuc,SAASi+B,EAAK,GAAI,OAG5DxiD,OACR,OAAO8a,GAiKf,SAAS22H,GAAmBv/C,EAAOw8C,GACjCx8C,EAAMjsF,SAAQ,SAAUwoI,GAEtB,GAAIA,EAAM,CAIR,IAAMiD,EAAwBjD,EAAK/lI,WAAkE,eAArD+lI,EAAK/lI,UAAUqG,aAAa,qBACtE4iI,EAAuBlD,EAAKxC,MAAMyC,IAAeD,EAAKxC,MAAMyC,GAAYp4G,QAAO,SAAAksB,GAAI,MAA+B,eAA3BgvF,GAAiBhvF,MAAwBxiD,OAAS,EAE/I,GAAI0xI,GAAyBC,EAC3B,OAAO,EAGTlD,EAAKC,WAAaA,EAClBD,EAAKpvC,KAAK,aAAc,CACtBqvC,WAAYA,QAvKpB4C,GAAMj1I,UAAUwyI,SAAW,SAAUljH,GACnC,OAAO4lH,GAAoBh1I,KAAKiE,KAAMmrB,EAAO,aAO/C2lH,GAAMj1I,UAAUuyI,WAAa,SAAUjjH,GACrC,OAAO4lH,GAAoBh1I,KAAKiE,KAAMmrB,EAAO,eAO/C2lH,GAAMj1I,UAAU6wI,QAAU,SAAUvhH,GAClC,OAAO4lH,GAAoBh1I,KAAKiE,KAAMmrB,EAAO,YAO/C2lH,GAAMj1I,UAAUsxI,MAAQ,SAAUhiH,GAChC,OAAO4lH,GAAoBh1I,KAAKiE,KAAMmrB,EAAO,UAO/C2lH,GAAMj1I,UAAUmiD,QAAU,SAAU7yB,GAClC,OAAO4lH,GAAoBh1I,KAAKiE,KAAMmrB,EAAO,WAAW,SAAUA,GAAO,WACvEA,EAAM1lB,SAAQ,SAAA/H,GACZ,EAAKA,GAAQ,YACN,EAAKA,UASlBozI,GAAMj1I,UAAUw0I,iBAAmB,SAAU3yI,GAC3C,OAAOqzI,GAAoBh1I,KAAKiE,KAAMtC,EAAM,qBAO9CozI,GAAMj1I,UAAU81F,SAAW,SAAUzpF,GAanC,GAVIs0D,GAAM/mC,SAASvtB,KACjBA,EAAYzF,SAASooE,eAAe3iE,IAAczF,SAASuuF,cAAT,4BAA4C9oF,EAA5C,SAEjCA,EAAUhH,KACzBgH,EAAUO,aAAa,kBAAmBP,EAAUhH,IACpDgH,EAAUoqG,gBAAgB,QAKzB91C,GAAMic,UAAUvwE,GAEnB,OADAs0D,GAAM34B,IAAI79B,MAAM,qCAAsCkC,IAC/C,EAITA,EAAUO,aAAa,cAAe,QAEtC,IAAMwlI,EAAO,IAAIK,GAAKpmI,EAAWgmI,GAAYluI,KAAKuuI,gBAAgBnnI,KAAKpH,OAUvE,OAPIiuI,IAASjuI,KAAKiuI,EAAKvwI,OACrBsC,KAAKiuI,EAAKvwI,MAAQuwI,EAClBA,EAAKpvC,KAAK,cACD7+F,KAAKiuI,EAAKvwI,OACnB8+D,GAAM34B,IAAI79B,MAAM,8BAA+BioI,EAAKvwI,MAG/CuwI,GAGT6C,GAAMj1I,UAAUu1I,YAAc,WAAY,WACxC,GAAIhE,GAAS,SAASV,SAAWU,GAAS,WAAY,CACpD,IAAMvsI,EAAOusI,GAAS,WAItB,GAHAptI,KAAKqxI,aAAe,EAGhBxwI,EAAKq4B,OAASr4B,EAAK8rI,OAAQ,CAU7BjwB,aATgB,SAAVgwB,KAEC7rI,EAAK6b,KAAO,EAAK20H,eAAiBxwI,EAAK6b,IAC1C,EAAKgwH,UACI,EAAK2E,cAAgBxwI,EAAK6b,KACnC40H,cAAc5E,KAIkC,KAA9Bh6G,WAAW7xB,EAAKq4B,OAAS,KAInD,OAAOl5B,MAQT8wI,GAAMj1I,UAAU01I,aAAe,WAc7B,OAbA/0E,GAAMyuB,GAAG,kBAAmB,SAAUyG,EAAOhtD,GAC3C,IAAMupG,EAAOv8C,EAAMhtD,EAAMO,OAAOvnC,MAGhC,GAAIuwI,EAAM,CACRzxE,GAAMhlD,OAAOy2H,EAAKA,EAAKpQ,QAASn5F,EAAMO,OAAOgpG,EAAKpQ,SAClD,IAAM77E,EAAOtd,EAAMO,OAAOosD,IAAIrvC,KACxBrqC,EAASq5H,GAAiBhvF,GAChCisF,EAAKgC,gBAAgBt4H,GACrBs2H,EAAK+B,SAAShuF,GACdisF,EAAKpvC,KAAK,aAAcn6D,EAAMO,UAEhC79B,KAAK,KAAMpH,OACNA,MAOT8wI,GAAMj1I,UAAU6zI,eAAiB,WAC/B,IAAMh4D,EAAc01D,GAAS,cAO7B,OAJI5wE,GAAM1lD,SAAS4gE,KACjBw2D,GAAa1xE,GAAM+uE,WAAW7zD,EAAau5D,GAAmB7pI,KAAK,KAAMpH,QAGpEA,MAiCT8wI,GAAMj1I,UAAU21I,gBAAkB,WAEhCl2I,OAAOspC,iBAAiB,UAExB,SAAmB8sD,EAAOhtD,GACxB,IAAM7jC,EAAO27D,GAAM8rE,UAAUpmI,MAAMwiC,EAAM7jC,MAGzC,GAAIA,EAAKmD,OAAS,UAAUwG,KAAK3J,EAAKmD,OAAS,SAASwG,KAAK3J,EAAKmD,OAAQ,CACxE,IAAMA,EAAOnD,EAAKmD,KAAKgG,QAAQ,QAAS,IAElC+gI,EAAWvuE,GAAMquE,iBAAiBnmG,EAAMtF,OAAO9jC,QAC/C2yI,EAAOv8C,EAAMq5C,KAAa,EAEhC,IAAKkD,EAEH,YADAzxE,GAAM34B,IAAI79B,MAAM,2CAKL,mBAAThC,EACFiqI,EAAKpvC,KAAK,mBACQ,cAAT76F,GAAwBnD,EAAK4wI,UACtCxD,EAAKiC,SAASrvI,EAAK4wI,WAEH,aAATztI,GACPiqI,EAAKpvC,KAAK,iBACVovC,EAAKI,YAIE,SAAS7jI,KAAK3J,EAAKmD,MAC1BiqI,EAAKpvC,KAAK,QAASh+F,GAEnB27D,GAAM34B,IAAI79B,MAAM,+CAhCuBoB,KAAK,KAAMpH,OAAO,IAwCjE8wI,GAAMj1I,UAAU61I,iBAAmB,WACjC1xI,KAAK2xI,qBAAuB3xI,KAAK2xI,qBAAqB77G,QAAO,SAAAspG,GAC3D,OAAOt4F,SAASs4F,EAASjoC,MAAQ10F,SAASkuG,SAASyuB,EAASjoC,WAIhE25C,GAAMj1I,UAAU0yI,gBAAkB,SAAUE,GAC1C,IAAMmD,EAAoBxE,GAAS,aAAeqB,EAAa,GAC/DzuI,KAAK2xI,qBAAuB3xI,KAAK2xI,sBAAwB,GACzD3xI,KAAK0xI,mBAEL,IAAIG,EAAsB7xI,KAAK2xI,qBAAqBx5D,MAAK,SAAAinD,GAEvD,OAAOwS,EAAkBz6C,MAAQioC,EAASjoC,QAoB5C,GAAI,yBAA0B77F,SAAWu2I,GAAuB/qG,QAAQ8qG,GAAoB,CAC1F,IAAMzuI,EAAU,GAGiB,WAA7B,EAAOyuI,KAELA,EAAkB9B,iBACpB3sI,EAAQ2uI,WAAaF,EAAkB9B,gBAKrC8B,EAAkB9uG,YACpB3/B,EAAQ2/B,UAAY8uG,EAAkB9uG,WAGxC3/B,EAAQg0F,KAAOy6C,EAAkBz6C,MAAQ,MAG3C06C,EAAsB,IAAI1S,qBApC5B,SAAkB19D,GAAS,WAIzBA,EAAQ3rC,QAAO,SAAAzxB,GAAC,OAAIA,EAAE0tI,iBAAiB3oG,QAAU/kC,EAAE0tI,iBAAiB5oG,OAAS9kC,EAAE0tI,iBAAiB5pG,KAAO9jC,EAAE0tI,iBAAiB1pG,QAAM7kB,MAAK,SAACnf,EAAGC,GAAJ,OAAUD,EAAE0tI,iBAAiB5pG,IAAM7jC,EAAEytI,iBAAiB5pG,OAAK1iC,SAAQ,SAAA65H,GACtM,IAAMyL,EAAWzL,EAAOt7F,OAAOz1B,aAAa,mBAGxCw8H,GACFgG,GAAoBh1I,KAAK,EAAMgvI,EAAU,cA2BW3jI,KAAKpH,MAAOmD,GACpEnD,KAAK2xI,qBAAqBt0I,KAAKw0I,GAGjC,OAAOA,GAGTf,GAAMj1I,UAAU4J,QAAU,SAAU1I,GAAI,WAStC,OARAnB,OAAO4J,KAAKxF,MAAMyF,SAAQ,SAAA/H,GACxB,IAAMuwI,EAAO,EAAKvwI,GAGduwI,aAAgBK,IAClBvxI,EAAGhB,KAAK,EAAMkyI,MAGXjuI,MAOT8wI,GAAMj1I,UAAUi9E,KAAO,WACrB94E,KAAKoxI,cACLpxI,KAAKuxI,eACLvxI,KAAK0vI,iBACL1vI,KAAKwxI,kBACLxxI,KAAKuuI,mBAGPuC,GAAMj1I,UAAUk4C,MAAQ,WACtB48F,GAAQ/0I,OAAOivB,OAAO7qB,QAGxB,IAAI0xF,GAAQ,IAAIo/C,GAEZx/D,GAAa,GAEjB,SAAS0gE,MAGTA,GAAUn2I,UAAUgC,IAAM,WACxB,IAAMo0I,EAAU,CACdC,eAAgBlyI,KAAKmyI,kBACrBt/C,UAAW7yF,KAAK6yF,UAChB04C,WAAYvrI,KAAKurI,YAInB,IAAK,IAAMhnI,KAFXi4D,GAAMhlD,OAAO85D,GAAYtxE,KAAKoyI,aAAcpyI,KAAKqrI,cAE9B4G,EAEbA,EAAQn2I,eAAeyI,IACzBi4D,GAAMhlD,OAAO85D,GAAY2gE,EAAQ1tI,MAIrC,OAAO+sE,IAGT0gE,GAAUn2I,UAAU41B,IAAM,SAAUhe,GAE9B+oD,GAAMgtE,cAAc/1H,IACtB+oD,GAAMhlD,OAAO85D,GAAY79D,IAI7Bu+H,GAAUn2I,UAAUu1E,OAAS,SAAUjqE,GAEjCmqE,GAAWnqE,WACNmqE,GAAWnqE,IAItB6qI,GAAUn2I,UAAUsxI,MAAQ,WAC1B77D,GAAa,IAGf0gE,GAAUn2I,UAAUwvI,WAAa,WAC/B,GAAI+B,GAAS,mBACX,MAAO,CACLiF,aAAc71E,GAAM6uE,eAU1B2G,GAAUn2I,UAAUu2I,WAAa,WAC/B,IAAME,EAAK91E,GAAMmuE,oBAAoB,cAErC,GAAI2H,EACF,MAAO,CACLC,WAAYD,IAKlBN,GAAUn2I,UAAUs2I,kBAAoB,WACtC,IAAIK,EACE78B,EAAWn5C,GAAM6tE,cAEjBoI,EAAS,CACb,OAAQ,MACR,eAAgB,MAChB,eAAgB,MAChB,mBAAoB,MACpB,cAAe,MACfC,OAAQ,OAUV,OARA92I,OAAO4J,KAAKitI,GAAQhtI,SAAQ,SAAA07D,GACL,IAAIlgD,OAAJ,8BAAkCkgD,EAAlC,MAGJ32D,KAAKmrG,KACpB68B,EAAaC,EAAOtxE,OAGjBqxE,GAAc,CACnBG,OAAQH,IACL,IAGPR,GAAUn2I,UAAU+2I,WAAa,WAC/B,IAAMC,EAAKr2E,GAAMo1C,KAAKp1C,GAAMkuE,iBAAkB,MAAO,KACjDxiE,EAAW2qE,EAAG1nI,GAAK0nI,EAAGrrI,GAAKqrI,EAAGz0E,OAASy0E,EAAGC,WAAaD,EAAGE,kBAAezzI,EAO7E,OAJI4oE,GAAyB,KAAbA,IACdA,EAAW3jC,SAAS2jC,GAAUp1D,cAAc9I,QAAQ,UAAW,KAAKA,QAAQ,OAAQ,KAAKL,QAGpF,CACLqpI,GAAI9qE,IAIR8pE,GAAUn2I,UAAUg3F,UAAY,WAC9B,MAAO,CACLogD,GAAIz2E,GAAMouE,iBAIdoH,GAAUn2I,UAAU0vI,WAAa,WAC/B,OAAO6B,GAAS,cAAgB,CAC9B71H,IAAKilD,GAAM+uE,WAAW3C,cACpB,IAGNoJ,GAAUn2I,UAAUk4C,MAAQ,WAC1B,IAAMlQ,EAAM24B,GAAM34B,IACZytC,EAAatxE,KAAKnC,MAGe,IAAnCjC,OAAO4J,KAAK8rE,GAAY9xE,SAC1BqkC,EAAIqZ,MAAM,aACVrZ,EAAIulG,eAAeppI,KAAKnC,OACxBgmC,EAAIwZ,QAIR,IAAIgtB,GAAY,IAAI2nE,GAEdkB,GAAgB,CAAC,IAAK,MAc5B,SAASC,GAAmBC,EAAcC,GACxC,IAAKA,GAAeA,EAAY7zI,OAAS,EACvC,OAAO4zI,EAGT,IALqD,EAK/CE,EAAc,IAAIC,gBAAgBH,GALa,IAOnCC,GAPmC,IAOrD,2BAA+B,KAApBlsI,EAAoB,QAC7BmsI,EAAYE,OAAOrsI,IARgC,8BAWrD,OAAOmsI,EAAY7jI,WA6BrB,SAASgkI,GAAT,GAOE,IAJC,IAFD5iC,EAEC,EAFDA,KACA6iC,EACC,EADDA,QAGMvyE,EAAM,IAAI83B,IAAI4X,GAEpB,MAA8Bj1G,OAAOgrC,QAAQ8sG,GAA7C,eAAuD,CAAlD,gBAAOthE,EAAP,KAAct8C,EAAd,KACH,GAAc,SAAVs8C,EAAkB,WAEFt8C,GAFE,IAEpB,2BAA0B,KAAf3uB,EAAe,QACxBg6D,EAAI+iE,aAAasP,OAAOrsI,IAHN,mCAKf,CAEL,IAAMisI,EAAejyE,EAAI+iE,aAAarmI,IAAIu0E,GAEtCghE,GACFjyE,EAAI+iE,aAAapmI,IAAIs0E,EAAO+gE,GAAmBC,EAAct9G,KAKnE,OAAOqrC,EAAI0vC,KAIb,IAAM8iC,GAAoB,CACxBC,mBAAoB,IACpBC,oBAAqB,IACrBC,cAAe,GAGbp8D,IAAc,EAWlB,SAASoB,KACP,IAAMi7D,EAAY3G,GAAS,QAAU,GACrC11D,GAAc01D,GAAS,cACvB4G,KACAx3E,GAAMyuB,GAAG,YAAagpD,GAAQ7sI,KAAK,KAAM8sI,KACzC13E,GAAMyuB,GAAG,gBAAiBkpD,IAC1B33E,GAAMyuB,GAAG,UAAWmpD,IACpB53E,GAAMyuB,GAAG,SAAUopD,IACnBC,UAAUC,IAAIl3I,KAAKi+G,GAAMl0G,KAAK,KAAM2sI,IAOtC,SAASC,KACF14I,OAAOg5I,YAEVh5I,OAAOg5I,UAAY,GAInBh5I,OAAOg5I,UAAUC,IAAM,IAGzB/3E,GAAMstE,OAAO,kDAAkD,GAAM,WACnEttE,GAAM13B,UAAU,yBACf,SAAAxmC,GACDk+D,GAAM13B,UAAU,oBAAqBxmC,MAgBzC,SAASg9G,GAAMy4B,GACb,IAAMS,EAAkBpH,GAAS,mBAAqB,EAAI,EAC1DkH,UAAUG,SAAS7vG,iBAAiB,kBAAmB8vG,IACvDC,GAAiBZ,GACjBa,GAAiBb,GACjBc,GAAiBxqE,GAAUxsE,OAC3Bi3I,KAEIf,EAAUj4I,eAAe,mBAC3Bi5I,GAAehB,EAAUgB,gBAG3B,IAAM5zE,EAAMsyE,GAAe,CACzB5iC,KAAMv1G,OAAOqjE,SAASkyC,KACtB6iC,QAAS,CACPv8C,KAAM+7C,MAMV,OAHAoB,UAAUU,iBACVV,UAAUG,SAASQ,aAAa,MAAO9zE,GACvCmzE,UAAUG,SAASS,6BAA6BV,IACzC,EA4BT,SAASO,GAAeI,GACtB,IAAIA,GAAyC,WAAxB,EAAOA,IAAqD,kBAAjBA,EAI9D34E,GAAM34B,IAAIrmC,KAAK,qDAAsD23I,OAJsB,CAC3F,IAAMtjE,EAAOj2E,OAAOwmC,OAAO,GAAIuxG,GAA2C,WAAxB,EAAOwB,GAA4BA,EAAe,IACpG75I,OAAOg5I,UAAUG,SAASM,eAAeljE,IAW7C,SAAS+iE,GAAiBb,GACxB,IAAMqB,EAAYrB,EAAUqB,UAEV,SAAdA,EACFd,UAAUG,SAASY,sBACI,QAAdD,EACTd,UAAUG,SAASa,sBAEnBhB,UAAUG,SAASc,uBAWvB,SAASV,GAAiBW,GAcxB,OAbIh5E,GAAMgtE,cAAcgM,GACtBlB,UAAUC,IAAIl3I,MAAK,WACjB,IAAMo3I,EAASH,UAAUG,SACzB74I,OAAO4J,KAAKgwI,GAAe/vI,SAAQ,SAAA0B,GAEjCstI,EAAOQ,aAAa9tI,EAAKuuB,OAAO8/G,EAAcruI,WAKlDq1D,GAAM34B,IAAIrmC,KAAK,kCAAmCg4I,GAG7CA,EAOT,SAASC,GAAyBtuI,GAC3B7L,OAAOg5I,UAKPntI,EAKLmtI,UAAUC,IAAIl3I,MAAK,WACjBi3I,UAAUG,SAASiB,eAAevuI,MALlCq1D,GAAM34B,IAAIrmC,KAAK,wDALfg/D,GAAM34B,IAAIrmC,KAAK,6EAqBnB,SAASs3I,KACP,IAAMp2I,EAAO0uI,GAAS,iBAET,WAAT1uI,GACF41I,UAAUG,SAASkB,mBAAkB,GAG1B,UAATj3I,GACF41I,UAAUG,SAASkB,mBAAkB,GASzC,SAAShB,GAAiBZ,GACpBA,EAAU6B,aACZtB,UAAUG,SAASoB,qBACnBvB,UAAUwB,eAAeC,yBAAwB,IAcrD,SAAS9B,GAAQC,EAAaxvG,GAC5B,IAAMupG,EAAOvpG,EAAMO,OAAOgpG,KAGN,QAAhBA,EAAKpQ,SACPoQ,EAAK58C,IAAM,GAEX70B,GAAMhlD,OAAOy2H,EAAMiG,GAEnBI,UAAUC,IAAIl3I,MAAK,WACjB4wI,EAAK+H,aAAaC,cAAcC,mBAAmBjB,eAAekB,UAE7DlI,EAAKY,OAASZ,EAAKE,gBACtBF,EAAK7tD,cAUb,SAAS+zD,GAASzvG,GAChB,IAAMupG,EAAOvpG,EAAMO,OAAOgpG,KAGtBzxE,GAAM7gD,WAAWsyH,EAAK7tD,UACxB6tD,EAAK7tD,UAQT,SAASg0D,GAAU1vG,GAYjB,OAXAppC,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB,IAAMgtE,EAAY3lC,EAAMO,OAAOolC,UAE3B7N,GAAMgtE,cAAcn/D,IACtBzuE,OAAO4J,KAAK6kE,GAAW5kE,SAAQ,SAAA/H,GAC7BgnC,EAAMO,OAAOgpG,KAAK58C,IAAI48C,KAAKgH,aAAav3I,EAAM2sE,EAAU3sE,OAI5D42I,UAAUG,SAAS/H,QAAQ,CAAChoG,EAAMO,OAAOgpG,KAAK58C,IAAI48C,UAE7CjuI,KAGT,SAASq0I,GAAS3vG,GAChB,IAAM0xG,EAAS1xG,EAAMO,OAAOgpG,KAAK58C,IAAI+kD,OAC/Bp0F,EAAOtd,EAAMO,OAAO+c,KAC1Bo0F,EAAOjtG,MAAQ6Y,EAAK,GACpBo0F,EAAOhtG,OAAS4Y,EAAK,GAOvB,SAAS0yF,GAAchwG,GACrB,IAAM7jC,EAAO,CACXwwF,IAAK,IAEDglD,EAAY3xG,EAAMupG,KAAKqI,YACvBC,EAAQF,EAAUG,WAAW5sI,MAAM,KACnC6sI,EAAW,qBAAH,OAAwBJ,EAAUK,SAChD71I,EAAKmD,KAAOuyI,EAAMxyI,MAClBlD,EAAKnD,KAAO64I,EAAMzxI,KAAK,KACvBjE,EAAKmhD,KAAOtd,EAAMsd,MAAQtd,EAAMsd,KAAKxiD,OAASklC,EAAMsd,KAAKl9C,OAAS,GAClEjE,EAAK2kI,WAAa9gG,EAAM8gG,WACxB,IAAMmR,EAAgBjyG,EAAMupG,KAAK2I,iBAAmBlyG,EAAMupG,KAAK2I,kBAE3DD,GAAiBA,EAAcvuH,MACjCvnB,EAAKunB,IAAMuuH,EAAcvuH,IAAI5oB,OAASm3I,EAAcvuH,IAAItjB,OAAS,IAGnE,IAAMmgC,EAASpkC,EAAKwwF,IACpBpsD,EAAOkjG,QAAUzjG,EAAMyjG,QACvBljG,EAAO+c,KAAOtd,EAAMsd,KACpB/c,EAAOugG,WAAa9gG,EAAM8gG,WAC1BvgG,EAAO4rG,WAAansG,EAAMmsG,WAC1B5rG,EAAO4xG,YAAcnyG,EAAMmyG,YAC3B,IAAMC,EAAWr0I,SAASooE,eAAe4rE,GAErCK,GACFA,EAASruI,aAAa,WAAY,MAClCquI,EAASruI,aAAa,cAAe,QACrCquI,EAASruI,aAAa,OAAQ,gBAC9BquI,EAASruI,aAAa,QAAS,iBAC/Bw8B,EAAOmxG,OAASU,GAGhBt6E,GAAM34B,IAAIrmC,KAAK,uCAGjBg/D,GAAM13B,UAAU,kBAAmBjkC,GAUrC,IAAMqzI,GAAc,CAIlB8B,WAAY,WAAY,WAiBtB,OAhBA16I,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB,EAAKg0F,IAAInwF,GAAT,UAAiB,EAAKxD,KAAtB,QACA,EAAK2pC,MAAM5+B,aAAa,KAAM,EAAK4oF,IAAInwF,IACvC,EAAK61I,cAEA,EAAKhI,UAQR,EAAK19C,IAAI48C,KAAOqG,UAAU0C,oBAAoB,EAAK3lD,IAAIu/C,SAAU,EAAKv/C,IAAInwF,IAPtEw2E,IAAelb,GAAM1lD,SAAS,EAAK20H,QACrC,EAAKiE,iBACL,EAAKr+C,IAAI48C,KAAOqG,UAAU0B,WAAW,EAAK3kD,IAAIu/C,SAAU,CAAC,EAAG,GAAI,EAAKv/C,IAAInwF,IAAI+1I,kBAAkB,EAAK5lD,IAAIo6C,QAExG,EAAKp6C,IAAI48C,KAAOqG,UAAU0B,WAAW,EAAK3kD,IAAIu/C,SAAU,EAAKnF,MAAO,EAAKp6C,IAAInwF,OAM5ElB,MAETmwI,UAAW,SAAU+G,GACnB,SAAI57I,OAAOg5I,UAAU6C,cAAe77I,OAAOg5I,UAAUG,UACnDyC,EAAUA,GAAWl3I,KAAKqxF,IAAI48C,KACvBqG,UAAUG,SAAStH,MAAM,CAAC+J,MAKrCxH,eAAgB,WAAY,WA0B1B,OAzBAp0I,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxBm/D,GAAMyuB,GAAG,cAAc,SAAAvmD,GACrB,IAAMupG,EAAOvpG,EAAMO,OAAOgpG,KACpBC,EAAaxpG,EAAMO,OAAOipG,WAChCkJ,GAAoB,CAClB7/H,IAAK22H,IAGHD,EAAKE,aAAaD,KAEhBD,EAAK58C,IAAI+kD,OACXnI,EAAKpvC,KAAK,WACA,EAAKgwC,OACfZ,EAAK7tD,aAGR,EAAKl4E,WACR,IAAMulI,EAAU6G,UAAU+C,cAC1Bz7I,OAAO4J,KAAKkyE,IAAajyE,SAAQ,SAAAqkE,GAC3B,EAAK2hE,MAAM3hE,IACb2jE,EAAQ6J,QAAQ5/D,GAAY5N,GAAa,EAAK2hE,MAAM3hE,OAGxD,EAAKunB,IAAIo6C,MAAQgC,EAAQ8J,WAEpBv3I,MAMTowI,YAAa,SAAU8G,GACrB,SAAI57I,OAAOg5I,UAAU6C,cAAe77I,OAAOg5I,UAAUG,UACnDyC,EAAUA,GAAWl3I,KAAKqxF,IAAI48C,KACvBqG,UAAUkD,aAAa,CAACN,MASnC92D,QAAS,WAAY,WAKnB,OAJA9kF,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB,EAAKwhG,KAAK,gBACVy1C,UAAUl0D,QAAQ,EAAKiR,IAAInwF,OAEtBlB,MAMT+2I,YAAa,WAAY,WAqBvB,OApBAz7I,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB,IAAIuzI,EACEv/C,EAAM+7C,GAAS,QAAU,GACzB1gD,EAAO,EAAKxkF,UAAUqG,aAAa,4BAEzC,GAAIiuD,GAAMitE,iBAAiB/8C,GACzBkkD,EAAWlkD,OACN,GAAIlwB,GAAMitE,iBAAiBp4C,EAAIu/C,UACpCA,EAAWv/C,EAAIu/C,aACV,CACL,IAAMt/C,EAAUD,EAAIC,QACdC,EAAOF,EAAIE,KACX/1D,EAAO61D,EAAI71D,KACjBo1G,EAAW,IAAH,OAAOt/C,GACfs/C,GAAYp0E,GAAMitE,iBAAiBl4C,GAAvB,WAAmCA,GAAS,GACxDq/C,GAAYp0E,GAAMitE,iBAAiBjuG,GAAvB,WAAmCA,GAAS,GAG1D,EAAK61D,IAAIu/C,SAAWA,KAEf5wI,MAMTi2I,YAAa,SAAUiB,GAAS,WAU9B,OATA57I,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB,IAAMg0F,EAAM+7C,GAAS,QAAU,IAC/B8J,EAAUA,GAAW,EAAK7lD,IAAI48C,MACtBwJ,WAAWnD,UAAUG,UAEzBpjD,EAAIukD,aAAiC,IAAnB,EAAK5G,WACzBkI,EAAQO,WAAWnD,UAAUwB,mBAG1B91I,MAOTk2I,iBAAkB,WAAY,WAY5B,OAXA56I,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB,IAAMqB,EAAO,EAAKovI,eAAiBV,GAAS,kBAxcpB,QA0cX,WAAT1uI,EACF,EAAK2yF,IAAI48C,KAAKyJ,qBAAoB,GAAM,GACtB,UAATh5I,EACT,EAAK2yF,IAAI48C,KAAKyJ,qBAAoB,GAChB,UAATh5I,GACT,EAAK2yF,IAAI48C,KAAKyJ,qBAAoB,MAG/B13I,MAETswI,oBAAqB,WAanB,GAAItwI,KAAK+uI,WAAa/uI,KAAKqxF,IAAI+kD,OAAQ,CACrC,IAAMuB,GAZkBvB,EAYep2I,KAAKqxF,IAAI+kD,QAX1CwB,EAAqBxB,EAAOnL,cAAcxoI,SAASuuF,cAAc,gCAG9D4mD,EAAmB7mC,QAAQ8mC,mBAElCr7E,GAAM34B,IAAIrmC,KAAK,mEACR,IAQLm6I,GACFn7E,GAAMstE,OAAO6N,GAAe,GAAM,WAChCn7E,GAAM34B,IAAI01C,KAAK,+BACd,WACD/c,GAAM34B,IAAI01C,KAAK,kDACd,QAGL/c,GAAM34B,IAAIrmC,KAAK,yDAvBjB,IAA0B44I,EAClBwB,GA8BVzB,OAAQ,SAAUe,GAAS,WAMzB,OALA57I,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB65I,EAAUA,GAAW,EAAK7lD,IAAI48C,KAC9B,IAAMlB,EAAYK,GAAS,aAC3B8J,EAAQp5I,IAAI,WAAYivI,GAAwBvwE,GAAMiuE,kBAEjDzqI,MAMTi1I,aAAc,SAAUiC,GAAS,WAW/B,OAVA57I,OAAOg5I,UAAUC,IAAIl3I,MAAK,WACxB65I,EAAUA,GAAW,EAAK7lD,IAAI48C,KAG1BzxE,GAAMgtE,cAAc,EAAKn/D,YAC3BzuE,OAAO4J,KAAK,EAAK6kE,WAAW5kE,SAAQ,SAAA2sE,GAClC8kE,EAAQjC,aAAa7iE,EAAO,EAAK/H,UAAU+H,UAI1CpyE,OAeX,SAAS83I,KACPt7E,GAAM34B,IAAIrmC,KAAK,2GACf82I,UAAUC,IAAIl3I,MAAK,WACjBi3I,UAAUG,SAASqD,sBAIvB,SAAS7P,KACP,GAAI3sI,OAAOg5I,WAAah5I,OAAOg5I,UAAUG,OACvC,OAAOH,UAAUG,SAASxM,gBAI9B,SAAS8P,KACHz8I,OAAOg5I,UACTA,UAAUC,IAAIl3I,MAAK,WACjBi3I,UAAUG,SAASiB,oBAGrBl5E,GAAM34B,IAAIrmC,KAAK,6EAInB,SAAS45I,GAAoBY,GACvB18I,OAAOg5I,UAETO,GADer4E,GAAMgtE,cAAcwO,GAAYA,EAAW3tE,GAAUxsE,OAGpE2+D,GAAM34B,IAAIrmC,KAAK,2EAKnB,SAASy6I,KACP,SAAI38I,OAAOg5I,YAAah5I,OAAOg5I,UAAU4D,UAO3C,SAASnkG,KACP,IAAMlQ,EAAM24B,GAAM34B,IACZs0G,EAAO/K,GAAS,OAEjB+K,IAILt0G,EAAIqZ,MAAM,OACVrZ,EAAIulG,eAAe+O,GACnBt0G,EAAIwZ,OAGN,IAAIg0C,GAAM,CACRvY,QACAwiC,SACAw8B,oBACA7P,iBACAmP,uBACAW,sBACAtC,4BACAwC,gBACAjE,WACAjgG,UAKF,SAASqkG,KACPC,KAEI/8I,SAAWA,OAAO0sI,OACpB1sI,OAAO0sI,KAAOhoI,MAIlBotI,GAASt0D,KAAOu0D,GAChBD,GAASD,MAAQA,GAEjBiL,GAAIv8I,UAAUmf,OAASoyH,GACvBgL,GAAIv8I,UAAU61F,MAAQA,GACtB0mD,GAAIv8I,UAAUw1F,IAAMA,GACpB+mD,GAAIv8I,UAAUwuE,UAAYA,GAC1B+tE,GAAIv8I,UAAU2gE,MAAQA,GAMtB47E,GAAIv8I,UAAUi9E,KAAO,SAAU31E,GAC7BA,EAAUA,GAAW,GACrBnD,KAAKgb,OAAO89D,OACZ,IAAMw/D,EAAgB18I,OAAOwmC,OAAOj/B,EAAS,CAC3CqxI,iBAAkBrxI,EAAQo1I,uBAsB5B,OApBAv4I,KAAKgb,OAAOs9H,GAERn1I,EAAQo1I,qBACVv4I,KAAKw4I,SAAW,CACdC,YAAY,GAGdz4I,KAAKw4I,SAAWE,KAGd14I,KAAKw4I,SAASC,YAChBz4I,KAAKw8D,MAAM13B,UAAU,qBAGnB9kC,KAAKw4I,SAASG,cAChB34I,KAAKw8D,MAAM13B,UAAU,uBAGvB9kC,KAAKw8D,MAAM13B,UAAU,gBACrB9kC,KAAKqqE,UAAU54C,IAAIzxB,KAAKgb,SAASqvD,WAC1BhpE,QAAQC,QAAQtB,KAAK44I,gBAO9BR,GAAIv8I,UAAUg9I,gBAAkB,SAAUh4I,GACxCb,KAAKqqE,UAAU54C,IAAI5wB,GACnBb,KAAKqxF,IAAI+lD,oBAAoBp3I,KAAKqqE,UAAUxsE,QAG9Cu6I,GAAIv8I,UAAU+8I,YAAc,WAiB1B,OAhBA54I,KAAK0xF,MAAM5Y,OAEP94E,KAAKw4I,SAASG,eAChB34I,KAAKgb,OAAO,CACV,iBAAmB,IAErBhb,KAAKqqE,UAAU54C,IAAI,CACjB,GAAM,OAIVzxB,KAAKqxF,IAAIvY,OACT94E,KAAKw8D,MAAMyuB,GAAG,QAASjrF,KAAK+zC,MAAM3sC,KAAKpH,OACvCA,KAAK84I,eAAgB,EACrB94I,KAAKw8D,MAAM13B,UAAU,cAAe9kC,MACpC+4I,KACO/4I,MAGTo4I,GAAIv8I,UAAUk4C,MAAQ,WACpB,IAAIq9B,GAAS,EAETgL,aAAaC,QAAQ,QACvBjL,GAAS,EAETgL,aAAaG,QAAQ,QAAQ,GAG/Bv8E,KAAKqxF,IAAIt9C,QACT/zC,KAAK0xF,MAAM39C,QACX/zC,KAAKqqE,UAAUt2B,QAEXq9B,GACFgL,aAAaI,WAAW,SAI5B47D,GAAIv8I,UAAU2mC,QAAU,WACtBxiC,KAAKw8D,MAAM34B,IAAIrmC,KAAK,sFACpBwC,KAAKw8D,MAAM34B,IAAX,yBAAiC7jC,KAAKw8D,MAAM6uE,gBAG9C+M,GAAIv8I,UAAUwvI,WAAa,WACzB,OAAOrrI,KAAKw8D,MAAM6uE,cAGpB,IAAM2N,GAAU,WACd,OAAO/xE,GAAI6R,OAAO16E,MAAK,WACPiQ,MAAMgM,KAAK5X,SAAS2L,iBAAiB,8BAC7C3I,QAAQwhE,GAAIyqB,MAAMC,SAASvqF,KAAK6/D,GAAIyqB,YAM9C,SAASgnD,KAEP,IACM3lI,EAAQtQ,SAASgjC,OAAO1yB,MADnB,qBAGX,IAAKA,EAEH,MAAO,CACL0lI,YAAY,EACZE,cAAc,GAIlB,IAAMM,EAAgB30G,mBAAmBvxB,EAAM,IAC/C,MAAO,CACL0lI,YAAkE,IAAtDQ,EAAc77I,QAAQ,2BAClCu7I,cAAqE,IAAvDM,EAAc77I,QAAQ,6BAIxC,SAASi7I,KACP51I,SAASmiC,iBAAiB,qBAAsBo0G,IAGlD,SAASD,KACPt2I,SAASm7D,oBAAoB,qBAAsBo7E,IA3BrDZ,GAAIv8I,UAAUm9I,QAAUA,GA8BxB,I,MAAM/xE,GAAM,IAAImxE,I,+FAp8FVtT,E,8GAWGQ,E,yHAgBAxgG,E,+GA4BAmmD,E,wGAcAqT,E,yGAcAonC,E,0GAgBAC,E,uHAgCAU,E,oHAsBAO,E,4HAeAI,E,kHAgBAK,E,wHAUAG,E,iHAoCAY,E,oHAULE,E,+GAsBAjpI,E,8GACAgpI,E,mHACAh7H,E,6GAEKk7H,E,0HAkBA1pC,E,0GASA8pC,E,gHAIAC,E,gHAGAC,E,4GAkCAhlG,E,yGAuBHmlG,E,0GASAxrI,E,0GAQAwI,E,2GAQAuzE,E,0GASAr8B,E,2GAWAG,E,yGAOA8rF,E,2GASAC,E,oHAyBQ,S,6GAQRC,E,yGAmBGvlG,E,wGAkBHnwB,E,6GASA8hB,E,8GASA9Z,E,gHASA2tH,E,+GASAxyH,E,8GASAyyH,E,8GAWAC,E,mHAmCAC,E,sHAGAhxD,E,+GAGGjhE,E,4GAmFHo6F,G,0GA+BAk4B,G,4GA+DAO,G,iHASAC,G,iHAWAE,G,wHAYAC,G,iHAUAC,G,oHAUAC,G,yHAqBAC,G,kHAYAC,G,sHAiCAK,G,0HAMAzlG,G,4GAIA4lG,G,gHACAC,G,4HACGnE,G,8GAGL3qE,G,2GA4CEpuC,G,8GA2DGy+G,G,4HAeAC,G,uHAmBAG,G,4GAqCHjyH,G,4GACFoyH,G,8GACEC,G,4GACAF,G,2GAEAG,G,wHACAC,G,0HACAC,G,sHAkGAO,G,oIAMAC,G,wHAkBGM,G,0GA6XAqB,G,kHAgBAC,G,sHAiBAC,G,oHAaHa,G,4GAMGC,G,6GAyBLzC,G,gHAQK4C,G,2GAGAC,G,yHA0BAl4C,G,yGAkBAm4C,G,sHAkLAC,G,wHA2JLv/C,G,2GAEApgB,G,gHAEK0gE,G,+GA6HL3nE,G,+GAEE6oE,G,mHAcGC,G,wHAwCAM,G,oHA2BHE,G,uHAKwB,Q,2HAC1Bj8D,G,iHAWKoB,G,0GAeAk7D,G,6GA6BA14B,G,2GAiDAy5B,G,oHAcAH,G,sHAmBAC,G,sHAqBAY,G,8HAuBAX,G,0HAiBAH,G,sHAiBAV,G,6GAuBAE,G,8GAaAC,G,+GAeAC,G,8GAWAK,G,mHA8CHR,G,iHAuNG4D,G,sHAOA7P,G,mHAMA8P,G,wHAUAX,G,yHAUAa,G,kHAQAlkG,G,2GAaLs9C,G,yGAeK+mD,G,yGA0GHY,G,6GASGN,G,iHAoBAL,G,yHAIAU,G,4HAIH9xE,G,ieCp8FAiyE,EAAW,SAAC,GAAD,IAAG5tG,EAAH,EAAGA,MAAOhuC,EAAV,EAAUA,SAAV,OACf,YAAC,IAAD,CAAM6R,UAAU,eACbm8B,GAAS,kBAAIn8B,UAAU,sBAAsBm8B,GAC9C,kBAAIn8B,UAAU,qBACXomE,WAAS3xE,IAAItG,GAAU,SAAAyI,GACtB,OAAO,kBAAIoJ,UAAU,0BAA0BpJ,SAMvDmzI,EAAStwG,UAAY,CACnB0C,MAAOkM,IAAU9jC,OACjBpW,SAAUk6C,IAAUS,QAAQT,IAAUlpC,OAGxC4qI,EAASr+E,aAAe,CACtBvvB,OAAO,EACPhuC,SAAU,I,UAGG47I,EAAA,O,6FArBTA,E,ykBCDAC,EAAW,WACf,IAAMt6H,GAAO,IAAIxH,MAAO8M,cACxB,OACE,YAAC,IAAD,KACE,YAAC,IAAD,KACE,YAAC,IAAD,CAAWsnF,QAAQ,6BACjB,sBAAQt8F,UAAU,wBAChB,iBAAG0hG,KAAK,qEAAqE2zB,iBAAe,kBAA5F,aADF,gCAC0J3lH,EAD1J,8BASVs6H,EAASlvE,YAAc,Y,UAERkvE,EAAA,O,6FAjBTA,E,8iBCJOC,EAAQ,CACnB,aACA,cACA,SACA,OACA,OACA,UACA,aACA,WACA,OACA,OACA,OACA,WACA,U,EAGaA,EAAA,O,6FAhBFA,E,0pCCAPC,EAAoB,SAAC,GAAyD,IAAvDr7D,EAAuD,EAAvDA,MAAOD,EAAgD,EAAhDA,SAAU5W,EAAsC,EAAtCA,QAASC,EAA6B,EAA7BA,QAAS0W,EAAoB,EAApBA,cAC9D,OACE,mBAAK3uE,UAAU,uBACZ6uE,GACC,mBAAK7uE,UAAU,SACb,iBAAG0hG,KAAM7yB,EAAM7c,IAAKhyD,UAAU,gCAC3B6uE,EAAMtgF,OAKb,kBAAIyR,UAAU,+BAA+B6/F,SAAS,YACnDjxB,GAGF3W,EACC0W,EACE,YAAC,IAAD,CAASpyE,OAAO,UAAUywG,WAAS,EAAChxF,MAAOi8C,EAAS3nD,KAAMq+D,IAE1D,YAAC,IAAD,CAASpyE,OAAO,KAAKyf,MAAOi8C,IAE5B,KAEHD,GAAW,mBAAKh4D,UAAU,qCAAqCg4D,GAEhE,oBAAM6nC,SAAS,eAAexhG,QAASswE,EAAem+B,0BAAwB,MAKpFo9B,EAAkBzwG,UAAlB,KACKi1C,KAGLw7D,EAAkBx+E,aAAlB,KACK6jB,K,UAGU26D,EAAA,O,6FAtCTA,E,khBCJAzgE,EAAe,SAAfA,IACL0gE,IAAMxgE,OACNr2E,SAASm7D,oBAAoB,qBAAsBgb,IAEpDn2E,SAASmiC,iBAAiB,qBAAsBg0C,G,UACjC0gE,IAAA,O,6FALT1gE,E,6mBCIA2gE,EAAuC,SAAC,GAMxC,MALJznC,EAKI,EALJA,MACAjD,EAII,EAJJA,YACAxuB,EAGI,EAHJA,QACAgzB,EAEI,EAFJA,OACAmmC,EACI,EADJA,UAEcC,EAAgB3nC,EAAM35B,MAAK,qBAAGhX,MAAkB0tC,KAAtD3wB,KACR,OACE,mBAAK/uE,UAAU,oCACb,yBACE8F,IAAKukI,EACLrqI,UAAU,8BAFZ,mFAIIkkG,EAAS,OAAS,WAJtB,cAMSxE,GANT,gBAOWxuB,GAPX,GASGo5D,KAMHC,EAAiC,SAAC,GAMlC,IALJ5nC,EAKI,EALJA,MACAjD,EAII,EAJJA,YACA8qC,EAGI,EAHJA,qBACAC,EAEI,EAFJA,cACAJ,EACI,EADJA,UAEMK,EAAcjpD,mBAEd4f,EAAc,SAAA9rE,GACdm1G,EAAYxsI,QAAQsjG,SAASjsE,EAAMV,SAAWw1G,EAAUnsI,QAAQsjG,SAASjsE,EAAMV,SAGnF41G,KAUF,OAPA35D,qBAAU,WAER,OADAx9E,SAASmiC,iBAAiB,YAAa4rE,GAChC,WACL/tG,SAASm7D,oBAAoB,YAAa4yC,MAE3C,IAGD,mBAAKrhG,UAAU,8BAA8B8F,IAAK4kI,GAC/C/nC,EAAMluG,KAAI,gBAAGs6E,EAAH,EAAGA,KAAM/c,EAAT,EAASA,IAAT,OACT,iBACEh6D,IAAKg6D,EACLhyD,UAAU,mCACV0hG,KAAMhC,IAAgB1tC,EAAMA,EAAM,IAClCn9B,OAAQ21G,EAAuB,SAAW,KAC1CG,eAAcjrC,IAAgB1tC,EAAM,OAAS,KAC7CiU,KAAMy5B,IAAgB1tC,EAAM,SAAW,KACvCkf,QAASu5D,GAER17D,Q,EAnCLw7D,E,oCA0CN,IAAMK,EAAmB,SAAC,GAAwD,IAAtDzuG,EAAsD,EAAtDA,MAAOwmE,EAA+C,EAA/CA,MAAOjD,EAAwC,EAAxCA,YAAa8qC,EAA2B,EAA3BA,qBAC/CH,EAAY5oD,mBAClB,EAA4B9Q,oBAAS,GAArC,WAAOuzB,EAAP,KAAe2mC,EAAf,KAEoB11I,EAAMy/E,qBAAWna,KAA7BE,WACFA,GAAexlE,GAAKA,EAAEwlE,YAAe,WAAWh3D,cAEtD,OACE,mBAAK3D,UAAU,qBACZm8B,GAAS,mBAAKn8B,UAAU,4BAA4Bm8B,GACrC,YAAfw+B,EACC,YAACyvE,EAAD,CACEznC,MAAOA,EACPjD,YAAaA,EACbxuB,QAAS,kBAAM25D,GAAW3mC,IAC1BA,OAAQA,EACRmmC,UAAWA,IAGb,kBAAIrqI,UAAU,2BACX2iG,EAAMluG,KAAI,gBAAGs6E,EAAH,EAAGA,KAAM/c,EAAT,EAASA,IAAT,OACT,kBAAIh6D,IAAKg6D,EAAKhyD,UAAU,2BACtB,iBACEA,UAAU,0BACV0hG,KAAMhC,IAAgB1tC,EAAMA,EAAM,IAClCn9B,OAAQ21G,EAAuB,SAAW,KAC1CG,eAAcjrC,IAAgB1tC,EAAM,OAAS,MAE5C+c,QAMVm1B,GACC,YAACqmC,EAAD,CACE5nC,MAAOA,EACPjD,YAAaA,EACb8qC,qBAAsBA,EACtBC,cAAe,kBAAMI,GAAU,IAC/BR,UAAWA,M,EAxCfO,E,0FA+CNA,EAAiBnxG,UAAY,CAC3B0C,MAAOkM,IAAU9jC,OACjBo+F,MAAOt6D,IAAUS,QACfT,IAAUC,MAAM,CACdymC,KAAM1mC,IAAU9jC,OAChBytD,IAAK3pB,IAAU9jC,UAEjBymC,WACFw/F,qBAAsBniG,IAAUM,KAChC+2D,YAAar3D,IAAU9jC,QAGzBqmI,EAAiBl/E,aAAe,CAC9B8+E,sBAAsB,G,UAGTI,EAAA,O,6FAlITR,E,sHAyBAG,E,gHA0CAK,E,onBCjEAE,EAAe,SAAC,GAAuC,IAArC38I,EAAqC,EAArCA,SAAUqxG,EAA2B,EAA3BA,aAAcvlE,EAAa,EAAbA,OAC9C,EAA8B02C,oBAAS,GAAvC,WAAOo6D,EAAP,KAAiBC,EAAjB,KACA,EAAwCr6D,oBAAS,GAAjD,WAAOs6D,EAAP,KAAqBC,EAArB,KACA,EAAwCv6D,mBAAS,GAAjD,WACM7qE,GADN,UACY27E,iBAAO,OAcnB,OAZAysB,aAAkB,YAA0B,IAAvBM,EAAuB,EAAvBA,QAASD,EAAc,EAAdA,QAC5B,GAAIzoG,EAAI5H,SAAWshG,EAAathG,QAAS,CACvC,MAAiD4H,EAAI5H,QAAQmtE,wBAAhD8/D,EAAb,EAAQnyG,IAAwBoyG,EAAhC,EAAwBnxG,OACRoxG,EAAoB7rC,EAAathG,QAAQmtE,wBAAjDhxC,OACF0wG,EAAWI,GAAa,GAAKE,EAAkBD,GAAgB,EACrEJ,EAAUD,GAGNA,GAAUG,EAAgB38B,EAAQ3xG,EAAI4xG,EAAQ5xG,MAEnD,IAGD,YAAC,IAAQmJ,SAAT,MACG,YAAuB,IAAR5Q,EAAQ,EAApBwlE,WACIA,EAAcxlE,GAAKA,EAAEwlE,YAAe,UACpC2wE,EAAmBrxG,EAAO0gC,GAE1B4wE,EAAiBzrI,IACrB,wBACAirI,GAAY,gCAEVE,GAAgBF,GAA4B,YAAfpwE,IAC7B,iCAGJ,OACE,mBACE36D,UAAWurI,EACXzlI,IAAKA,EACL01D,MAAO,CAAEgwE,UAAWT,GAAYO,EAAmBA,EAAmB,SAErEn9I,O,EAtCP28I,E,8LAMJ58B,QAwCF48B,EAAarxG,UAAY,CACvBQ,OAAQoO,IAAUlwC,Q,UAGL2yI,EAAA,O,6FAlDTA,E,6kCCDAv7B,EAAiB,SAACrgE,EAAU2uC,EAAQ4tD,GACxC,IAAMl2G,EAAQ,IAAIS,YAAY,kBAAmB,CAC/CF,OAAQ,EAAF,CACJoZ,WACA2uC,UACG4tD,GAELx1G,SAAS,IAEX3iC,SAAS09C,KAAKjb,cAAcR,I,EAGfg6E,EAAA,O,6FAZTA,E,qRCNOn7G,EAAOiD,QAAU,EAAQ,MAC/B06G,GAAG/kC,KAAK,EAAQ,O,wUCMjB0+D,EAAe,SAAC,GAKhB,IAJJ35I,EAII,EAJJA,GACa45I,EAGT,EAHJ14B,YACmB24B,EAEf,EAFJ14B,kBACAU,EACI,EADJA,+BAEA,EAA0DjjC,mBACxDijC,GADF,WAAOi4B,EAAP,KAA8BC,EAA9B,KAKA,OACE,YAAC,IAAQ/lI,SAAT,MACG,YAAuB,IAAR5Q,EAAQ,EAApBwlE,WACIA,GAAexlE,GAAKA,EAAEwlE,YAAe,WAAWh3D,cAEhDooI,EAA8B,YAAN52I,EACxByuF,EAAU,CAAC,UAAW,KAAKztD,SAASwkC,GACpCqxE,EAAapoD,EAAU,GAAH,gBAAiBioD,EAAwB,KAAO,QACpEI,EAAoBroD,EACtB,UACAioD,EACA,gBACA,eAGE54B,EACmB,mBAAhB04B,EACL,YAACA,EAAD,CAAahxE,WAAYA,EAAYoxE,sBAAuBA,IAE5DJ,EAGEz4B,EACyB,mBAAtB04B,EACL,YAACA,EAAD,CACEjxE,WAAYA,EACZoxE,sBAAuBA,EACvB54B,oBAAqBvvB,EAAU,kBAAMkoD,GAAyB,IAAS,eAGzEF,EAGJ,OACE,mBAAK5rI,UAAU,iBACb,mBAAKA,UAAU,+BACZizG,EACD,YAAC,IAAD,CACElhH,GAAE,uBAAkB85I,EAAwB,KAAO,QACnD7rI,UAAU,6BACVqzD,KAAG,EACHC,KAAM04E,EACN96D,QAAS,kBA5Ce46D,GAA0BD,KA8CjDI,IAKJJ,IAA0BjoD,GACzB,mBAAK5jF,UAAU,qCAAqCkzG,GAItD,YAAC,IAAD,CACEnhH,GAAE,mBAAcA,GAChB4/G,WAAW,gBACXyC,UAAWy3B,GAAyBjoD,EACpCuvB,oBAAqB,kBAAM24B,GAAyB,KAEnD54B,Q,EAvETw4B,E,+FAgFNA,EAAajyG,UAAY,CACvBw5E,YAAa5qE,IAAU3O,UAAU,CAAC2O,IAAUlpC,KAAMkpC,IAAU1iC,OAAOqlC,WACnEkoE,kBAAmB7qE,IAAU3O,UAAU,CAAC2O,IAAUlpC,KAAMkpC,IAAU1iC,OAAOqlC,WACzE4oE,+BAAgCvrE,IAAUM,MAG5C+iG,EAAahgF,aAAe,CAC1BkoD,gCAAgC,G,UAGnB83B,EAAA,O,6FA1FTA,E,8iBCDAQ,EAAiB,SAAC,GAAD,IAAGn6I,EAAH,EAAGA,GAAI5D,EAAP,EAAOA,SAAUglH,EAAjB,EAAiBA,oBAAqBiB,EAAtC,EAAsCA,UAAWzC,EAAjD,EAAiDA,WAAjD,OACrB,YAAC,IAAD,CAAS5/G,GAAIA,EAAIiO,UAAU,kBAAkBo0G,UAAWA,GACtD,mBAAKp0G,UAAU,2BACb,mBAAKA,UAAU,+BACb,mBAAKA,UAAU,gCAAgC2xG,GAC/C,YAAC,IAAD,CACE5/G,GAAG,eACHuhE,KAAK,QACLE,SAAO,EACPH,KAAG,EACHx+D,KAAK,UACLooC,MAAM,QACNi0C,QAASiiC,MAIf,mBAAKnzG,UAAU,yBAAyB7R,KAI5C+9I,EAAezyG,UAAY,CACzBk4E,WAAYtpE,IAAU9jC,OACtB4uG,oBAAqB9qE,IAAU1iC,KAAKqlC,WACpCopE,UAAW/rE,IAAUM,MAGvBujG,EAAexgF,aAAe,CAC5BimD,WAAY,UACZyC,WAAW,G,UAGE83B,EAAA,O,6FA/BTA,E,slBCGAzgD,EAAU,SAAC,GAA2C,IAAzCt9F,EAAyC,EAAzCA,SAAUimH,EAA+B,EAA/BA,UAAWriH,EAAoB,EAApBA,GAAIiO,EAAgB,EAAhBA,UAEpCmsI,EAAep4B,YAAW,CAC9BhiH,KACAkiH,mBAAmB,EACnBE,gBAAiB,CACf1M,OAAO,EACP4C,aAAa,EACbb,gBAAgB,EAChB/b,MAAOztF,KAIHw0G,EAA6B23B,EAA7B33B,YAAaC,EAAgB03B,EAAhB13B,YAWrB,OATA3jC,qBAAU,WACJsjC,EACFI,KACuB,IAAdJ,GACTK,MAGD,CAACL,IAEG,YAAC,IAAD,CAAiB+3B,aAAcA,GAAeh+I,I,EAxBjDs9F,E,2DAEiBsoB,QAyBvBtoB,EAAQhyD,UAAY,CAClB26E,UAAW/rE,IAAUM,KACrB52C,GAAIs2C,IAAU9jC,OACdvE,UAAWqoC,IAAU9jC,QAGvBknF,EAAQ//B,aAAe,CACrB0oD,WAAW,EACXriH,GAAI,UACJiO,UAAW,W,UAGEyrF,EAAA,O,6FAvCTA,E,wkBCQA2gD,EAAkB,SAAC,GAA+B,IAA7Bj+I,EAA6B,EAA7BA,SAAUg+I,EAAmB,EAAnBA,aAC3B/3B,EAAwC+3B,EAAxC/3B,UAAWM,EAA6By3B,EAA7Bz3B,yBAGb23B,EAAkB/4I,SAASuuF,cAAc6yB,GAG/C,OAAON,EAAYk4B,IAASC,aAAap+I,EAAUk+I,GAAmB,MAGxED,EAAgB3yG,UAAY,CAC1B0yG,aAAc9jG,IAAUC,MAAM,CAC5B8rE,UAAW/rE,IAAUM,KACrB+rE,yBAA0BrsE,IAAU9jC,SACnCymC,Y,UAGUohG,EAAA,O,6FAjBTA,E,4rBCRAI,EAAa,SAAC,GAcd,IAbJh8F,EAaI,EAbJA,QACAC,EAYI,EAZJA,QACA2iE,EAWI,EAXJA,kBACAq5B,EAUI,EAVJA,gBACAp5B,EASI,EATJA,gBACAC,EAQI,EARJA,gBACAC,EAOI,EAPJA,iBACAC,EAMI,EANJA,YACAC,EAKI,EALJA,UACAE,EAII,EAJJA,gBAII,IAHJjjC,mBAGI,MAHU,IAGV,EAFJ75E,EAEI,EAFJA,MACA68G,EACI,EADJA,SAEA,EAA8B/iC,oBAAS,GAAvC,WAAOC,EAAP,KAAgBC,EAAhB,KACA,EAAgDF,oBAAS,GAAzD,WAAOqkC,EAAP,KAAyBC,EAAzB,KAEA,EAAkDtkC,mBAASyiC,GAA3D,WAAOs5B,EAAP,KAA0BC,EAA1B,KACA,EAA8Ch8D,mBAAS87D,GAAvD,WAAOG,EAAP,KAAwBC,EAAxB,KAEMC,EAAerrD,mBACfsrD,EAAatrD,mBAEb2zB,EAAkBvlE,IAAayjE,GAC/B05B,EAAsBn9F,IAAc0jE,GAGpC05B,EAAsBz5B,EAAco5B,EAAkBn8F,EACtDy8F,EAAqBp8F,cAErBq8F,EAAoBl9F,YAAgBg9F,EAAqB,GAuB/D,OArBAn8D,qBAAU,WACR,IAAIC,EAeJ,OAbIH,GAAWF,EAAc,IAC3BK,EAAQhH,YAAW,WACjB8G,GAAW,GACPD,EAAQw8D,QACV/5B,EAAgBziC,EAAQ+sB,UAAW/sB,EAAQw8D,SAE3C/5B,EAAgBziC,EAAQ+sB,WAE1B+V,EAAS,CAAEnjD,MAAO,UAAW6b,QAAS,KACtCunC,MACCjjC,IAGE,WACL5G,aAAaiH,MAEd,CAACH,IAGF,YAAC,IAAMzQ,SAAP,KACE,mBAAKngE,UAAU,iCACZyzG,EACAuB,GACC,mBAAKh1G,UAAU,yCAAf,IAAyDktI,EAAzD,MAGJ,mBACEltI,UAAS,oCACS,UAAhBnJ,EAAM05D,MACF,qCACA,yCAGN,YAAC,IAAD,CACE/f,QAASA,EACTC,QAASw8F,EACTr4B,aAAcxB,EACdyB,aAAc63B,EACdp5B,gBAAiBA,EACjBwB,SAAUg4B,EACV/3B,gBAAiB43B,EACjB33B,iBAAkBA,EAClBC,oBAAqBA,IAEtBzB,GACC,YAAC,IAAD,CACEhjE,QAASk8F,EACTj8F,QAASA,EACTmkE,aAAc63B,EACd53B,aAAc+3B,EACdt5B,gBAAiBA,EACjBwB,SAAUi4B,EACVh4B,gBAAiB83B,EACjB73B,iBAAkBA,EAClBC,oBAAqBA,IAGzB,YAAC,IAAD,CACEj1G,UAAU,qBACVqzD,KAAG,EACHx+D,KAAK,UACLq8E,QAAS,WACP,IAAMmuB,EAAkB2V,EACpBI,EAAgB03B,EAAa5uI,QAAQtP,OACrC89I,EACEW,EAAqBL,EAAoB3tC,GAE/C,GAAImU,EAAa,CACf,IAAM85B,EAAgBt4B,EAClBI,EAAgB23B,EAAW7uI,QAAQtP,OACnCg+I,EACEW,EAAmBP,EAAoBM,GAG7Cz8D,EAAW,CAAE8sB,UAAW0vC,EAAoBD,QAASG,SAEhD,GAAKluC,EAGL,GAAIA,GAAmB8tC,GAAqB9tC,GAAmB7uD,EAEpEqgC,EAAW,CAAE8sB,UAAW0vC,QACnB,CACL,IAAM3/D,EACJ2xB,EAAkB8tC,EACd,yCADJ,6BAE0Bt9F,IAAc,YAAdA,CAA2BW,IACvDkjE,EAAS,CACPnjD,MAAO,QACP6b,QAASsB,SAZXgmC,EAAS,CAAEnjD,MAAO,QAAS6b,QAAS,gCApB1C,QAsCGwE,EACC,mBAAK5wE,UAAU,+BACb,YAAC,IAAD,CAAS6yC,KAAK,WAEd,OAGPh8C,EAAMu1E,SACL,mBACEpsE,UAAS,iFAA4EnJ,EAAM05D,QAE1E,UAAhB15D,EAAM05D,OAAqB,YAAC,IAAD,CAAMoR,SAAS,cAAcC,UAAU,YAClE/qE,EAAMu1E,W,EA/IXogE,E,8SAsJSA,EAAA,O,6FAtJTA,E,0lBCKAgB,EAAmB,SAAC,GAAoC,IAAlCv8D,EAAkC,EAAlCA,QAAS1d,EAAyB,EAAzBA,SAAUJ,EAAe,EAAfA,SAC7C,OACE,mBAAKnzD,UAAS,2BAAsBuzD,EAAW,6BAA+B,KAC3EJ,GACC,YAAC,IAAD,CACEnzD,UAAU,yBACV2hE,SAAS,OACTC,UAAU,UACV3nC,OAAQ,GACRD,MAAO,KAGX,mBAAKh6B,UAAU,0BACb,oBAAMA,UAAU,+BAA+BixE,GAC9C1d,GACC,oBAAMvzD,UAAU,2BACb,IADH,kDAUJytI,EAAa,SAAC,GAYd,IAXJtxG,EAWI,EAXJA,MACA42C,EAUI,EAVJA,SACAE,EASI,EATJA,cACAy6D,EAQI,EARJA,cACA7uC,EAOI,EAPJA,YACA8uC,EAMI,EANJA,iBACA35I,EAKI,EALJA,QACAg/E,EAII,EAJJA,YACA46D,EAGI,EAHJA,YACAz7B,EAEI,EAFJA,uBACAC,EACI,EADJA,wBAEMy7B,EAAwB/5D,YAAqBb,EAAeD,EAAah/E,GAEzE85I,EAAsB76D,EAAcx+E,KAAI,qBAAG7F,SAE3Cm/I,EAAoB/+B,mBACxB,kBAAMl8B,YAAeC,EAAUC,EAAa86D,KAC5C,CAAC/6D,EAAUC,EAAa86D,IAGpBE,EAAqB,SAAAC,GACzB,GAAIh7D,EAAc5iF,SAAWs9I,EAAkB,CAC7C,IAAM36B,EAAmB,IAAI,IAAI37C,IAAJ,cAAYy2E,GAAZ,CAAiCG,MAC9DpvC,EAAYmU,KAIVk7B,EAA0B,SAAAC,GAC9B,IAAMn7B,EAAmB86B,EAAoBnnH,QAAO,SAAA/rB,GAAC,OAAIA,IAAMuzI,KAG/D,OAFAtvC,EAAYmU,GAEL,CAAEo7B,SAAS,EAAO1gE,aAAc,KAwCnC2gE,EAA0Bp7D,EAAc5iF,SAAWs9I,EAEzD,OACE,mBAAK3tI,UAAU,eACZm8B,GAAS,mBAAKn8B,UAAU,sBAAsBm8B,GAC/C,YAAC,IAAD,CACEyxG,YAAcS,EAAwC,GAAdT,EACxC5zG,MAAM,OACNs0G,iBAAiB,EACjBC,gBAAc,EACdC,mBAAmB,QACnBj9D,WAAYw8D,EACZU,eAAgBx7D,EAChBy7D,cAAe,SAAAhnI,GAAK,MACR,KAAVA,EACI,CAAE0mI,SAAS,EAAM1gE,aAAcykC,GAC/B,CAAEi8B,SAAS,EAAO1gE,aAAc,KAEtCihE,iBAAkBnB,EAClB57D,eAAgBA,IAChBg9D,iBAjDmB,SAAC,GAAsC,IAApChgJ,EAAoC,EAApCA,MAAOukE,EAA6B,EAA7BA,SAAUua,EAAmB,EAAnBA,aAO3C,GALIva,EACF+6E,EAAwBt/I,GAExBo/I,EAAmBp/I,GAEjB8+E,EACF,MAAO,CAAE0gE,SAAS,EAAM1gE,iBA0CtBmhE,iBArCmB,SAAAjgJ,GACvB,IAAMgV,EAAQ0tE,YAAUy8D,EAAmBn/I,GAE3C,IAAIgV,EAGG,CACL,IAAMkrI,EAAiBx9D,YAAUo8D,EAAe9+I,GAChD,OAAIkgJ,EAEK,CAAEV,SAAS,EAAM1gE,aADCohE,EAAjBphE,cAGH,CAAE0gE,SAAS,EAAM1gE,aAAc,kBARtC,IAAQ9+E,EAAUgV,EAAVhV,MACRo/I,EAAmBp/I,IAiCjBmgJ,sBAAuBb,EACvBc,sBA5D8B,WAClC,GAAIlB,EAAoBz9I,OAAS,EAAG,CAClC,IAAM2iH,EAAmB86B,EAAoB33I,MAAM,GAAI,GACvD0oG,EAAYmU,KA0DVi8B,gBAAiB,kBACfZ,EACI,CACED,SAAS,EACT1gE,aAAc0kC,GAEhB,MAEN88B,qBAAsBrB,EACtBt6E,SAAU86E,EACVc,6BAA6B,EAC7BC,qBAAmB,M,EA5GrB3B,E,8BAkHNA,EAAWh0G,UAAY,CACrB0C,MAAOkM,IAAUI,MAAM,CAACJ,IAAU9jC,OAAQ8jC,IAAUlpC,OACpD4zE,SAAU1qC,IAAUj6B,MACpB4/H,mBAAoB3lG,IAAU1iC,KAC9BuoI,wBAAyB7lG,IAAU1iC,KACnC+nI,cAAerlG,IAAUj6B,MACzBs/D,aAAcrlC,IAAU9jC,OACxBs6F,YAAax2D,IAAU1iC,KACvBgoI,iBAAkBtlG,IAAUt7B,OAC5BimE,YAAa3qC,IAAUj6B,MAAM48B,WAC7Bh3C,QAASq0C,IAAUlwC,OACnBy1I,YAAavlG,IAAU9jC,OACvB4tG,uBAAwB9pE,IAAU9jC,OAClC6tG,wBAAyB/pE,IAAU9jC,QAGrCkpI,EAAW/hF,aAAe,CACxBqnB,SAAU,GACVi7D,mBAAoB,aACpBE,wBAAyB,aACzBR,cAAe,GACf7uC,YAAa,aACb8uC,iBAAkB,EAClBC,YAAa,YACbz7B,uBAAwB,4BACxBC,wBAAyB,oC,UAGZq7B,EAAA,O,6FAvKTD,E,4FAyBAC,E,0iDC1BA4B,EAAwB,SAACzgJ,EAAO2iF,GACpC,IAAMM,EAAajjF,EAAM4L,OAAOmJ,cAC1BmuE,EAAcD,EAAWxhF,OAG/B,OAAuB,IAAhByhF,EACH,GACAP,EAAW5qD,QAAO,YAEhB,OAFiC,EAAdsqD,QACGttE,cAAclJ,MAAM,KAC7B+M,MAAK,SAAAy1D,GAAI,OAAIA,EAAKt5D,cAAcxN,MAAM,EAAG27E,KAAiBD,SAKzE27D,EAAmB,SAAC,GAAD,IAAGv8D,EAAH,EAAGA,QAAS1d,EAAZ,EAAYA,SAAZ,OACvB,mBAAKvzD,UAAWF,IAAW,aAAcyzD,GAAY,yBAA0B0d,IAI3Eq+D,EAA4B,SAAC,GAAD,SAAGr+D,SAE/Bs+D,EAAgB,SAAC,GAAD,IAAGvvI,EAAH,EAAGA,UAAWixE,EAAd,EAAcA,QAASriF,EAAvB,EAAuBA,MAAOmgJ,EAA9B,EAA8BA,sBAA9B,OACpB,mBAAK/uI,UAAS,UAAKA,EAAL,oBAAkChI,IAAG,0BAAqBpJ,IACtE,oBAAMmD,GAAE,0BAAqBnD,IAAUqiF,GACvC,sBACEjxE,UAAS,UAAKA,EAAL,iCACT+lE,kBAAA,0BAAoCn3E,GACpCiG,KAAK,SACLq8E,QAAS,kBAAM69D,EAAsBngJ,KAErC,YAAC,IAAD,CACEoR,UAAU,wBACV2hE,SAAS,QACTC,UAAU,SACV5nC,MAAO,GACPC,OAAQ,QAMVu1G,EAAoB,SAAC,GA8BrB,IA7BJxvI,EA6BI,EA7BJA,UACAg6B,EA4BI,EA5BJA,MACA4zG,EA2BI,EA3BJA,YACA3+B,EA0BI,EA1BJA,aACA17C,EAyBI,EAzBJA,SACAg7E,EAwBI,EAxBJA,eACAC,EAuBI,EAvBJA,mBACAF,EAsBI,EAtBJA,gBACAa,EAqBI,EArBJA,4BAEA59D,EAmBI,EAnBJA,WAEAk9D,EAiBI,EAjBJA,eACAW,EAgBI,EAhBJA,oBACwBK,EAepB,EAfJC,uBAEA99D,EAaI,EAbJA,eACA+9D,EAYI,EAZJA,mBACAhB,EAWI,EAXJA,iBAEAC,EASI,EATJA,iBACAC,EAQI,EARJA,iBACAI,EAOI,EAPJA,gBACAW,EAMI,EANJA,gBACAb,EAKI,EALJA,sBACAC,EAII,EAJJA,sBAEAN,EAEI,EAFJA,cACAQ,EACI,EADJA,qBAEMp6B,EAAWrzB,mBAIjB,IAAgD9Q,mBAAS,MAAzD,GAAOk/D,EAAP,KAAyBC,EAAzB,KACA,IAAsCn/D,mBAASs+B,GAAgB,IAA/D,GAAO59B,EAAP,KAAoB0+D,EAApB,KACA,IAAsCp/D,mBAAS,IAA/C,GAAOq/D,EAAP,KAAoBC,EAApB,KACA,IAAoCt/D,mBAAS,CAAEy9D,SAAS,EAAO1gE,aAAc,KAA7E,GAAOwiE,EAAP,KAAmBC,EAAnB,KAGMC,EAAe,kBAAMt7B,EAAS52G,QAAQwJ,MAAMs6F,SAI5C0tC,EAAyBD,GAAgCF,EAgFzDc,EAA+B,SAAAzhJ,GACnC,IAAMiI,EAAQk4I,EAAsBngJ,GAChCiI,GAAOs5I,EAAct5I,IAGVy5I,EAAkDJ,EAA3D9B,QAAqCmC,EAAsBL,EAApCxiE,aACzB0gE,EAAUc,GAAwBoB,EAClC5iE,EAAewhE,GAAwBqB,EAGvCv4G,EAAUl4B,IACdE,EACAouI,GAAW,GAAJ,OAAOpuI,EAAP,WACPuuI,GAAyC,UAAvBC,GAAlB,UAAuDxuI,EAAvD,6BAGF,OACE,oBAAMwwI,SA1ES,SAAAj7G,GAGf,GAFAA,EAAM04D,kBAED4hD,EAAkB,CACrB,IAAMY,EAAsB/B,EAAcr9D,GAE1C,GADIq9D,GAAiB+B,EAAoBrC,SAAS+B,EAAcM,GAC5D5B,IAAqB4B,EAAoBrC,QAAS,CACpD,IAAMsC,EAAiB7B,EAAiBx9D,GACpCq/D,GAAgBP,EAAcO,GAE9BtB,GAAqBW,EAAe,IAEtCZ,GArCqBr6B,EAAS52G,QAAQwJ,MAAMipI,SAmGxBn1E,MAAO,CAAExhC,SAASk3C,QArCvB,SAAApiF,GAErB,GAA2B,iCAAvBA,EAAE+lC,OAAO70B,UAA8C,CACzDowI,IACA,IAAMM,EAAiBzB,IACnByB,GAAgBP,EAAcO,GAGpCZ,EAAoB,QA8BlB,mBAAK9vI,UAAWg4B,GACbu2G,GAAyC,SAAvBC,GACjB,mBAAKxuI,UAAS,UAAKA,EAAL,kBACZ,YAAC,IAAD,CAAM2hE,SAAS,SAASC,UAAU,UAAU5nC,MAAO,GAAIC,OAAQ,MAGnE,mBAAKj6B,UAAS,UAAKA,EAAL,sBACXyuI,EAAep+I,OAAS,GACvBo+I,EAAeh6I,KAAI,gBAAGw8E,EAAH,EAAGA,QAASriF,EAAZ,EAAYA,MAAZ,OACjB8gJ,EAAuB,CACrB1vI,YACAixE,UACAriF,QACAmgJ,sBAAuBsB,QAI/B,YAAC,IAAD,CACEvqI,IAAKgvG,EACLk7B,YAAaA,EACbY,4BAnH4B,SAAC,GAAc,IAAZhiJ,EAAY,EAAZA,MACrCqhJ,EAAer+D,EAAehjF,EAAO2iF,KAmH/Bs/D,4BA/G4B,WAClCZ,EAAe,KA+GTN,mBAAoBA,EACpBhB,iBAAkBA,EAClBmC,qBA7GqB,SAACv7G,EAAD,GAA4C,IAAlCw7G,EAAkC,EAAlCA,gBAAiBC,EAAiB,EAAjBA,WACtD,GAAIpC,EAAkB,CACpB,IAAM8B,EAAiB9B,EAAiBoC,GACpCN,GAAgBP,EAAcO,GAGpCX,EAAeX,EAAsB,GAAK2B,IAwGpCE,wBAAyB,YAAoB,IAAjBD,EAAiB,EAAjBA,WAGtBA,GAAcA,EAAW//D,SAC3B6+D,EAAoBkB,EAAW//D,UAGnCigE,4BAA6B9B,EAC7B+B,WAAY,CACV,aAAcvD,EACdA,cACAh/I,MAAOyiF,EACPgkC,SA/FO,SAAA9/E,GACf,IACY3mC,EACR2mC,EADFV,OAAUjmC,MAEZmhJ,EAAenhJ,GACfuhJ,EAAc,CAAE/B,SAAS,EAAO1gE,aAAc,MA2FtC0jE,UAvFe,SAAA77G,GACvB,IAAQv9B,EAAQu9B,EAARv9B,IACY,KAAhBq5E,GAA8B,cAARr5E,GACxBg3I,IAGU,UAARh3I,GACF83I,EAAoB,OAiFdv8E,cAGH+6E,GAAmC,KAAhBj9D,GAClB,sBAAQrxE,UAAS,UAAKA,EAAL,kBAAgCnL,KAAK,SAASq8E,QArEnD,WAClB6+D,EAAe,IACfI,EAAc,CAAE/B,SAAS,EAAO1gE,aAAc,KAC9C0iE,IACAR,MAkEQ,YAAC,IAAD,CAAMjuE,SAAS,QAAQC,UAAU,UAAU5nC,MAAO,GAAIC,OAAQ,MAGjEs0G,GACwB,UAAvBC,KACEF,GAAmC,KAAhBj9D,IACnB,mBAAKrxE,UAAS,UAAKA,EAAL,wBACZ,YAAC,IAAD,CAAM2hE,SAAS,SAASC,UAAU,UAAU5nC,MAAO,GAAIC,OAAQ,OAItEm0G,GAAW,mBAAKpuI,UAAS,UAAKA,EAAL,oBAAkC0tE,K,EAtM5D8hE,E,oQA2MNA,EAAkB10E,YAAc,qBAEhC00E,EAAkB/1G,UAAY,CAC5Bz5B,UAAWqoC,IAAU9jC,OACrBy1B,MAAOqO,IAAU3O,UAAU,CAAC2O,IAAU9jC,OAAQ8jC,IAAUt7B,SACxD6gI,YAAavlG,IAAU9jC,OACvB0qG,aAAc5mE,IAAU9jC,OACxBgvD,SAAUlrB,IAAUM,KACpB4lG,eAAgBlmG,IAAUM,KAC1B6lG,mBAAoBnmG,IAAUI,MAAM,CAAC,OAAQ,UAC7C6lG,gBAAiBjmG,IAAUM,KAC3BwmG,4BAA6B9mG,IAAUM,KACvC4oC,WAAYlpC,IAAUS,QAAQT,IAAUlwC,QAAQ6yC,WAChDyjG,eAAgBpmG,IAAUj6B,MAC1BghI,oBAAqB/mG,IAAUM,KAC/B+mG,uBAAwBrnG,IAAU1iC,KAClCisE,eAAgBvpC,IAAU1iC,KAC1BgqI,mBAAoBtnG,IAAU1iC,KAC9BgpI,iBAAkBtmG,IAAU1iC,KAC5BipI,iBAAkBvmG,IAAU1iC,KAC5BkpI,iBAAkBxmG,IAAU1iC,KAC5BspI,gBAAiB5mG,IAAU1iC,KAC3BiqI,gBAAiBvnG,IAAU1iC,KAC3BopI,sBAAuB1mG,IAAU1iC,KACjCqpI,sBAAuB3mG,IAAU1iC,KACjC+oI,cAAermG,IAAU1iC,KACzBupI,qBAAsB7mG,IAAU9jC,QAGlCirI,EAAkB9jF,aAAe,CAC/B1rD,UAAW,uBACXg6B,MAAO,OACP4zG,YAAa,GACbr6E,UAAU,EACVg7E,gBAAgB,EAChBC,mBAAoB,OACpBF,iBAAiB,EACjBa,6BAA6B,EAC7BV,eAAgB,GAChBW,qBAAqB,EACrBx9D,eAAgBy9D,EAChBM,mBAAoBL,EACpBX,iBAAkBnB,EAClBoB,iBAAkB,aAClBC,iBAAkB,aAClBI,gBAAiB,aACjBoC,gBAAiB,aACjBtC,sBAAuB,aACvBC,sBAAuB,aACvBN,cAAe,c,UAGFc,EAAA,O,6FAxSTH,E,wIAcA7B,E,mIAKA8B,E,4IAEAC,E,gIAoBAC,E,oYCpDNp7I,EAAOiD,QAAU,EAAQ,KAA0B,S,yOCA7CszC,EAAuB,CAAH,+J,EASXA,EAAA,O,6FATTA,E,ihBCDA2mG,EAAa,WAAe,IAAdp1I,EAAc,uDAAV,GAAIU,EAAM,uCAChC,OAAOuQ,KAAKunB,IAAI93B,GAAKuQ,KAAKunB,IAAIx4B,IAI1Bq1I,EAAiB,WAAqB,IAApB/rH,EAAoB,uDAAb,GAAItwB,EAAS,uCAANC,EAAM,uCACpCq8I,EAAiBF,EAAW9rH,EAAMtwB,GAAKo8I,EAAW9rH,EAAMrwB,GAC9D,OAAOgY,KAAKG,IAAIkY,EAAMgsH,EAAiB,IAMnCC,EAA0B,SAACC,EAAejlG,EAAMklG,GAMpD,IALA,IAAIz5I,EAAIw5I,EAAcrhJ,OAAS,EAC3B4zF,EAAa,IAAIytD,GAIdztD,EAAW/rF,IAAMu0C,GAAM,CAE5B,IAIMylB,EAAWy/E,EAJA1tD,EAAW/rF,GAIiBA,GAE7C+rF,EAAa,GAAH,WAAOA,GAAP,CAAmB/xB,IAE7Bh6D,IAGF,OAAO+rF,GAOH2tD,EAAiC,SAAC3jG,EAAU/1C,GAAX,QAAmBA,EAAI,GAAK,GAAM,EAAI,IAAM,GAAK+1C,GAElFqjE,EAAsB,SAC1BogC,EACAjlG,GAGG,IAFHolG,EAEG,wDADHC,EACG,uDADeF,EAEZ3tD,EAAawtD,EAAwBC,EAAejlG,EAAMqlG,GAK1DC,EAAqBF,EACvB5tD,EAAWt9D,QAAO,SAACs/D,EAAM71F,EAAG+X,GAE1B,IAAM6pI,EAAe5hJ,EAAI,GAAK+X,EAAI/X,EAAI,GACtC,OAAO61F,GAAQx5C,GAAQA,GAAQ8kG,EAAe,GAAIS,EAAc/rD,MAElEhC,EAEJ,OAAO8tD,G,EAGMzgC,EAAA,O,6FA/DTggC,E,qFAKAC,E,yFAQAE,E,kGA0BAG,E,yGAEAtgC,E,owCCvCA2gC,EAAapiG,IAAc,cAC3BggD,EAAYhgD,IAAa,cAGzBqiG,EAAW,SAAChoD,EAAOjoE,GAGvB,OAAO9U,KAAK6W,OAAO/B,EAASioE,GAAV,QAIdioD,EAAa,SAACC,EAASC,EAAeC,EAAaC,GACvD,IAAMC,EAAiBJ,EAEpBzrH,QAAO,gBAAGrW,EAAH,EAAGA,KAAH,OAAc4hI,EAAS5hI,EAAMgiI,GAAeC,KACnD99I,KAAI,SAAAnF,GAAC,OAAIA,EAAE+iJ,MAEd,OAAOG,EAAetjF,QAAO,SAACh6D,EAAGC,GAAJ,OAAUD,EAAIC,KAAKq9I,EAAeniJ,QAI3DoiJ,EAAmC,SAACjsD,EAAY6rD,EAAen6I,GAEnE,OACEsuF,EACG/xF,KAAI,SAACi+I,EAAOtiJ,GACX,IAAQkgB,EAASoiI,EAATpiI,KACR,cACKoiI,GADL,UAEGL,EACCjiJ,EAAI8H,EAAI,EAEJ,KAEAi6I,EAAW3rD,EAAWrwF,MAAMgX,KAAKI,IAAI,EAAGnd,EAAI8H,EAAI,GAAI9H,EAAI,GAAIiiJ,EAAe/hI,EAAMpY,QAI1FyuB,OAAOgR,UAKRw4E,EAAqB,SACzBz+G,EADyB,EAYzBihJ,EACAC,GACG,IAXOC,EAWP,EAXDn3H,OACA83D,EAUC,EAVDA,WACAC,EASC,EATDA,QACA8P,EAQC,EARDA,OACA7P,EAOC,EAPDA,WACA8pB,EAMC,EANDA,MACAqS,EAKC,EALDA,eACAlS,EAIC,EAJDA,UAMIjiF,EAAS83D,EAAaq/D,EAAH,cAA0BA,GAE7CC,EAAkBH,EAAQhsH,QAC9B,oBAAG3yB,QAAoB++I,EAAvB,EAAct/D,QAAyBvgF,EAAvC,EAA2BsgF,WAAuB54E,EAAlD,EAA0C8gB,OAA1C,OACEq3H,IAAOt/D,GAAWvgF,IAAMsgF,GAAcq/D,IAAkBj4I,KAGtDo4I,EAAqBthJ,EACxB+C,KAAI,YAA4C,IAAzC+xF,EAAyC,EAAzCA,WAAYF,EAA6B,EAA7BA,WAAYj3C,EAAiB,EAAjBA,KAAS93C,EAAQ,SACzC07I,EAAoBzsD,EAAW/xF,KAAI,gBAAG6b,EAAH,EAAGA,KAAShhB,EAAZ,qBACvCghB,KAAM,IAAIpI,KAAKoI,IACdoL,EAASpsB,EAAEosB,OAQRw3H,GALsB1/D,EACxBy/D,EAEAR,EAAiCQ,EAAmBv3H,EAAQ,IAExBjnB,KAAI,SAAAnF,GAAC,cACxCA,GADwC,UAG1CosB,EAAS+3D,GAAWnkF,EAAEosB,GAAWpsB,EAAEosB,GAAU4qE,EAAc,IAASh3F,EAAEosB,QAI3D+2F,IAAwBlvB,GACpC2vD,EAAYlqE,MAAK,SAAAzxE,GAAC,OAAIA,EAAEmkB,IAAWg4D,MAAgB,CACnDpjE,KAAM,OAFAA,KAMR,GAAImiG,IAAsBlvB,EAAQ,CAChC,IAAM4vD,EAAcL,EAAgB9pE,MAAK,qBAAGkK,OAAoB7jC,KAC1D+jG,EAA8BD,EAChCzgC,YAAcD,EAAmB0gC,EAAYlvH,QAC7CwuF,EAEE4gC,EAA8BH,EACjCz+I,KAAI,gBAAG6b,EAAH,EAAGA,KAAH,4BAEHA,OACAgjI,wBAAyBpB,EAASkB,EAA6B9iI,QAEhEqW,QAAO,qBAAG2sH,yBAAyD,KAEnE3sH,QAAO,SAAA/rB,GAAC,OAAIA,EAAE8gB,IAAW,KAE5B,cACKnkB,GADL,IAEE83C,OACAi3C,aACAmsB,kBAAmB2gC,EACnB5sD,WAAY6sD,IAKhB,GAAI9vD,EAAQ,CACV,IAAMgwD,EAAcL,EAAYvsH,QAAO,SAAA/rB,GAAC,OAAIA,EAAE8gB,IAAW,GAAmB,OAAd9gB,EAAE8gB,MAC1D83H,EAA6BD,EAAYvqE,MAAK,SAAApuE,GAAC,OAAIA,EAAE8gB,GAAU,KAErE,GAAI83H,EAA4B,CAC9B,IAAMC,EAAkCF,EAAY5sH,QAClD,SAAA/rB,GAAC,OAAIA,EAAE0V,MAAQkjI,EAA2BljI,MAAQ1V,EAAE0V,MAAQqtF,KAE9D,cACKpmG,GADL,IAEE83C,OACAi3C,aACAE,WAAYitD,KAMlB,OAAO,QAER9sH,OAAOgR,SAGJ+7G,EAA0BV,EAE7BrsH,QAAO,qBAAG6/D,WAA4Bn2F,OAAS,KAC/CoE,KAAI,qBAAGy+E,QAGJygE,EAA6BX,EAChCrsH,QACC,gBAAG0oB,EAAH,EAAGA,KAAMi3C,EAAT,EAASA,WAAT,OAA2B7S,GAAYA,GAAW6S,GAAc,KAAUkX,EAAMrnE,SAASkZ,MAG1F1oB,QAAO,gBAAG0oB,EAAH,EAAGA,KAAH,QAAewgE,GAAkBrS,EAAMntG,OAAS,IAAImtG,EAAMrnE,SAASkZ,MAGvEohE,EAAkCkjC,EAA2BzkF,QACjE,SAACijB,EAAD,OAAQe,EAAR,EAAQA,KAAMu/B,EAAd,EAAcA,kBAAd,OAAsCtgC,EAAIxjF,IAAIukF,EAAMu/B,KACpD,IAAIjqC,KAKAorE,EAAoBD,EAA2BhtH,QAAO,gBAAG0oB,EAAH,EAAGA,KAAH,OACzDmuD,GAAS,IAAIrnE,SAASkZ,MAEnBwkG,EACJjB,GAAiCp1C,EAAMntG,OAAS,GAAKujJ,EAAkBvjJ,OAAS,EAC5EujJ,EACAD,EAEArjC,EAAYnjG,KAAKI,IAAL,MAAAJ,KAAI,IACjB0mI,EAAiBC,SAAQ,qBAAGttD,WAA4B/xF,KAAI,SAAAnF,GAAC,OAAIA,EAAEosB,WAGlE20F,EAAqBljG,KAAK2G,IAAL,MAAA3G,KAAI,IAC1B0mI,EACAC,SAAQ,qBAAGttD,WAA4B/xF,KAAI,SAAAnF,GAAC,OAAIA,EAAEosB,SAClDiL,QAAO,SAAA/3B,GAAK,OAAIA,EAAQ,OAIvBmlJ,EAAc,IACfJ,EACAzkF,QAAO,SAACijB,EAAD,OAAQe,EAAR,EAAQA,KAAMsT,EAAd,EAAcA,WAAd,oBAAmCrU,GAAnC,IAA2CqU,EAAW/xF,KAAI,SAAAnF,GAAC,cAAUA,GAAV,IAAa4jF,gBAAW,IAC1FhkB,QACC,SAACijB,EAAD,OAAQmhE,EAAR,EAAQA,wBAAyBhjI,EAAjC,EAAiCA,KAAM4iE,EAAvC,EAAuCA,KAAS5jF,EAAhD,gBACE6iF,EAAIxjF,IAAI40F,EAASjzE,EAAKhQ,WAAagzI,EAAnC,OACMnhE,EAAIzjF,IAAI60F,EAASjzE,EAAKhQ,WAAagzI,IAA4B,IADrE,UAEGpgE,EAAO5jF,EAAEosB,QAEd,IAAI8sD,MAIP/zE,KAAI,2BAAE6b,EAAF,KAAQktF,EAAR,eAAsBltF,KAAMizE,EAAS,IAAIr7E,KAAKoI,GAAQA,GAASktF,MACnEnpF,MAAK,SAACnf,EAAGC,GAAJ,OAAUD,EAAEob,KAAOnb,EAAEmb,QAE1B7b,KAAI,gBAAG6b,EAAH,EAAGA,KAASktF,EAAZ,mBAA2BltF,KAAMizE,EAAS0uD,EAAW3hI,GAAQA,GAASktF,MAG/DgT,EAAcujC,EAAY,GAAhCzjI,KACMigG,EAAcwjC,EAAYA,EAAY1jJ,OAAS,GAArDigB,KAIR,MAAO,CACL5e,KAAMqiJ,EACN/gE,YAAa0gE,EACbjjC,kCACAJ,qBACAC,YACAE,UATyBjtB,EAASsM,EAAU2gB,GAAaA,EAUzDD,UATyBhtB,EAASsM,EAAU0gB,GAAaA,I,EAa9CJ,EAAA,O,6FAvNT8hC,E,oFACApiD,E,mFAGAqiD,E,kFAOAC,E,oFAUAM,E,0GAsBAtiC,E,0fC9CAnsF,EAAQ,SAACp1B,EAAO+pH,GACpB,IAAMq7B,EAAa7mI,KAAKG,IAAI,GAAIqrG,GAAa,GAC7C,OAAOxrG,KAAK6W,MAAMp1B,EAAQolJ,GAAcA,GAGpCrhC,EAAwB,SAAC/jH,EAAOqiH,EAAezkE,GACnD,OAAc,IAAV59C,EACK,EAELA,EAAQ49C,EACV,gCAAgCA,EAAK9Z,QACnCu+E,EAAgB,EAAIA,EAAgB,EAAIA,IAGxCA,EAAgB,EACX3gE,OAAO/sB,WAAW30B,EAAM8jC,QAAQu+E,IAElCjtF,EAAMp1B,EAAO,GAAG2sE,kB,EAGVo3C,EAAA,O,6FApBT3uF,E,kFAKA2uF,E,mgBCLAzB,EAAmC,SAACZ,EAAWU,GACnD,OAAIV,EAAqC,IAAzBU,EACP,EAELV,EAAqC,GAAzBU,EACP,EAELV,EAAYU,EACP,EAEF,G,EAGME,EAAA,O,6FAbTA,E,ohBCAAhB,EAAoB,SAACh9B,EAAM68B,GAC/B,IAAMkkC,EAAYlkC,EAAkB/mC,MAAK,gBAAGp6E,EAAH,EAAGA,MAAH,OAAeskF,IAAStkF,KACjE,OAAQqlJ,GAAaA,EAAUhjE,SAAY,M,EAG9Bi/B,EAAA,O,6FALTA,E,ufCAAF,EAA6B,SAAA98B,GACjC,OAAQA,GACN,IAAK,iBACH,MAAO,CAAC,MACV,IAAK,gBACH,MAAO,CAAC,MACV,QACE,MAAO,K,EAIE88B,EAAA,O,6FAXTA,E,wTCAN57G,EAAOiD,QAAU,IAA0B,yD,iaCqBrCg7G,EAAY,SAAAxsG,GAChB,IACE9T,EA8DE8T,EA9DF9T,GACMmiJ,EA6DJruI,EA7DFnU,KAEAivC,EA2DE96B,EA3DF86B,iBACAC,EA0DE/6B,EA1DF+6B,iBACAuB,EAyDEt8B,EAzDFs8B,SACAoK,EAwDE1mC,EAxDF0mC,YACAzJ,EAuDEj9B,EAvDFi9B,sBACA4J,EAsDE7mC,EAtDF6mC,YACA1K,EAqDEn8B,EArDFm8B,iBACMmyG,EAoDJtuI,EApDF2mC,KACM4nG,EAmDJvuI,EAnDF4mC,KACAvK,EAkDEr8B,EAlDFq8B,WACA0uE,EAiDE/qG,EAjDF+qG,YACAjkE,EAgDE9mC,EAhDF8mC,YACAxL,EA+CEt7B,EA/CFs7B,iBACMkzG,EA8CJxuI,EA9CFu7B,KACMkzG,EA6CJzuI,EA7CFw7B,KACAgB,EA4CEx8B,EA5CFw8B,mBACAzE,EA2CE/3B,EA3CF+3B,aACA+M,EA0CE9kC,EA1CF8kC,qBACAzH,EAyCEr9B,EAzCFq9B,WACA0J,EAwCE/mC,EAxCF+mC,iBACAC,EAuCEhnC,EAvCFgnC,gBAEA5S,EAqCEp0B,EArCFo0B,OACAC,EAoCEr0B,EApCFq0B,OACAF,EAmCEn0B,EAnCFm0B,MAEAnlC,EAiCEgR,EAjCFhR,KACA+lC,EAgCE/0B,EAhCF+0B,WACAC,EA+BEh1B,EA/BFg1B,WACAH,EA8BE70B,EA9BF60B,iBACAS,EA6BEt1B,EA7BFs1B,SAEAqD,EA2BE34B,EA3BF24B,UACAE,EA0BE74B,EA1BF64B,UAEAuD,EAwBEp8B,EAxBFo8B,WAEAG,GAsBEv8B,EAtBFu8B,gBAIAK,IAkBE58B,EArBF68B,iBAqBE78B,EApBFw5B,iBAoBEx5B,EAlBF48B,mBAEArD,GAgBEv5B,EAhBFu5B,aACA2J,GAeEljC,EAfFkjC,aACAhO,GAcEl1B,EAdFk1B,iBACAuH,GAaEz8B,EAbFy8B,gBACAwK,GAYEjnC,EAZFinC,kBACA7H,GAWEp/B,EAXFo/B,YAEA8H,GASElnC,EATFknC,iBACAC,GAQEnnC,EARFmnC,kBACArK,GAOE98B,EAPF88B,eACAC,GAME/8B,EANF+8B,yBAGAjD,IAGE95B,EALFg9B,8BAKEh9B,EAHF85B,6BAEAozE,GACEltG,EADFktG,cAEIrhH,GAAsB,SAAfwwC,EAAwB0tD,YAAWskD,EAAS,cAAgBA,EACnExoG,GAAcxsC,MAAMsF,QAAQ9S,KAASA,GAAKrB,OAAS0/F,YAAer+F,IAAQ,GAE1E6iJ,GAAepkD,YAAYz+F,GAAMg6C,IAEjCc,GAAOtE,YAAgBisG,GACzBA,EACAhyG,GAAgC,IAApBoyG,GAAa,GACzB,EACAA,GAAa,GACX9nG,GAAO2nG,GAAgBG,GAAa,GACpCC,GAAkBnyG,EAAqBA,EAAmBmK,IAAQA,GAClEioG,GAAkBpyG,EAAqBA,EAAmBoK,IAAQA,GAClEhO,GAAS0D,EACXuyG,YAAS,CAAErgG,OAAQ,CAACmgG,GAAiBC,MACrCE,YAAY,CACVtgG,OAAQ,CAACmgG,GAAiBC,MAG1BG,GAAetkD,YAAO5+F,IAAM,SAAA6F,GAAC,OAAIA,EAAEinC,MACnC4C,GAAOizG,GAAgBO,GAAa,GACpCvzG,GAAOizG,GAAgBM,GAAa,GACpCr2G,GACW,SAAf2D,EACI2yG,YAAU,CACRxgG,OAAQ,CAACjT,GAAMC,MAEjBszG,YAAY,CAAEtgG,OAAQ,CAACjT,GAAMC,MAE/BzD,GAEFW,GAAOg4B,OAIT,IAAMu+E,GAAmBp2G,EAAUruC,OAC/BquC,EACA+D,GAAkBpyC,OAClBoyC,GACAiJ,GACEqpG,GACK,UAATlgJ,EACImgJ,IACS,WAATngJ,GAA8B,UAATA,EACrBmgJ,IACAA,IAGAC,GAAiBrwB,YAAa,CAClCvwE,OAAQygG,GACRhnG,MAAOf,IAAoBgoG,KAOvBG,IAJkBloG,IACpB43E,YAAa,CAAEvwE,OAAQygG,GAAkBhnG,MAAOd,KAG1B9tC,MAAMsF,QAAQk6B,IAAcA,EAAUruC,QAC1D8kJ,GAAeD,GAAoBx2G,EAAYgN,GAE/C0pG,GAA4Bl2I,MAAMsF,QAAQi+B,KAAsBA,GAAkBpyC,OAGlFglJ,GAAmBz+D,YAAoBllF,GAAMg6C,GAAalN,EAAWE,EAAW+N,IAGhF6oG,GAAuBF,GACzBD,GAAaxuH,QAAO,SAAAtuB,GAAC,OAAKoqC,GAAkBtM,SAAS99B,MACrD88I,GAEEI,GAA4BL,IAAmD,IAA9BE,GAGjDI,GAAc1oG,GAChBp7C,GAAKoiJ,SAAQ,SAAAv8I,GAAC,OACZm0C,GAAYj3C,KAAI,SAAA3F,GAAC,wBACd0vC,EAAYjnC,EAAEinC,IADA,UAEZjnC,EAAEzI,IAFU,mBAGHA,GAHG,kBAIJ,CAAEyzC,WAAYzzC,EAAG0zC,OAAQjrC,EAAEzI,GAAIyjH,OAAQh7G,EAAEinC,KAJrC,sBAKAiE,GAAkBtM,SAASrnC,IAL3B,QAQnBsmJ,GACA1jJ,GACGi1B,QAAO,SAAApvB,GAAC,OAAIkrC,GAAkBj7B,MAAK,SAAA+6B,GAAU,OAAI2F,YAAgB3wC,EAAEgrC,UACnEuxG,SAAQ,SAAAv8I,GAAC,OACRkrC,GAAkBhuC,KAAI,SAAA3F,GAAC,wBACpB0vC,EAAYjnC,EAAEinC,IADM,UAElBjnC,EAAEzI,IAFgB,mBAGTA,GAHS,kBAIV,CAAEyzC,WAAYzzC,EAAG0zC,OAAQjrC,EAAEzI,GAAIyjH,OAAQh7G,EAAEinC,KAJ/B,sBAKNiE,GAAkBtM,SAASrnC,IALrB,QAQ3B,GAEJ,OACE,YAAC,IAAD,CACE+F,KAAMA,EACNmlC,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRiB,SAAUA,EACV4N,aAAcA,GACdhO,iBAAkBA,GAClBH,WAAYA,EACZC,WAAYA,EACZH,iBAAkBA,GAGlB,YAAC,IAAD,CACEqC,YAAa4D,EACbjD,MAAOa,GACP8lF,gBAAiBljF,EACjBvD,aAAcA,EACd+M,qBAAsBA,EACtB1N,MAAOiG,EACP9E,YAAawO,EACbzN,WAAY0N,EACZnC,WAAYkmE,EACZtmE,WAAYqC,EACZpC,eAAgB,iBAAO,CACrB4zB,GAAI,WAEN9zB,cAAeorG,MAGjB,YAAC,IAAD,CACE14G,YAAa6D,EACblD,MAAOe,GACPiM,WAAY6B,EACZpO,qBAAsB2E,EAEtBwH,WAAYoC,GAAgBvK,GAAYnH,IACxCqpF,gBAAiBriF,EACjB2I,qBAAsBA,IAGvBooE,IACC,YAAC,IAAD,CACE2iC,aAAc,CAAC,MAAO,OAAQ,SAC9B3jJ,GAAE,uBAAkBA,GACpB4jJ,yBAA0B,CAAE38G,IAAK,GAAIE,KAAM,KAC3C08G,WAAY,CAAE18G,KAAM,QAASkB,MAAO,WAIvC6H,GAAc,YAAC,IAAD,OAAYp8B,EAAZ,CAAmB63B,MAAOu3G,GAAgB3sG,MAAM,UAE/D,YAAC,IAAD,CAAOv2C,GAAG,QAAQ8jJ,KAAM9iC,IAAiB,qBAAJ,OAAyBhhH,EAAzB,MACnC,YAAC,IAAD,CAAOA,GAAG,oBACR,YAAC,IAAD,CACE25C,YAAa4pG,GACb5jJ,KAAMA,GACN6sC,OAAQA,GACRC,UAAWA,EACXC,OAAQA,GACR4D,mBAAoBA,EACpB1D,WACEy2G,IAA6BG,GACzB,kBAAM5yG,IACNsyG,GAEN9xI,YAAaiyI,IAA6BG,GAA4B,EAAI,EAC1E3pG,sBAAuBkB,GACvBhN,uBAAwB8C,GACxBjD,4BAA6BA,MAGjC,YAAC,IAAD,CAAO5tC,GAAG,qBACPqjJ,IACC,YAAC,IAAD,CACE1pG,YAAajJ,GACb/wC,KAAMA,GACN6sC,OAAQA,GACRC,UAAWA,EACXC,OAAQA,GACR4D,mBAAoBA,EACpB1D,WAAYs2G,GACZt1G,4BAA6BA,OAMpCyC,IACC,YAAC,IAAD,CACEsJ,YAAajJ,GACb/wC,KAAM2jJ,GACN92G,OAAQA,GACRC,UAAU,IACVC,OAAQA,GACR4D,mBAAoBA,EACpB3D,UAAU,IACVC,WAAYs2G,GACZr2G,cAAc,GACdI,UAAW,kBAAM,GACjBmM,YAAY,UACZhoC,YAAa,EACbioC,sBAAuBxI,KAI1BR,IACC,YAAC,IAAD,CACEsJ,YAAajJ,GACb/wC,KAAM2jJ,GACN92G,OAAQA,GACRC,UAAU,IACVC,OAAQA,GACR4D,mBAAoBA,EACpB3D,UAAU,IACVC,WAAYs2G,GACZr2G,cAAc,GACdk3G,wBAAyB,iBAAM,WAC/BC,gBAAiB,CACf93E,GAAI,GACJE,GAAI,EACJp2B,SAAU,IAEZmuC,+BAA6B,IAIhC92C,KACGm2G,IAA6BzoG,IAAsBsoG,KACnD,YAAC,IAAD,CACE72G,OAAQA,GACRE,OAAQA,GACRE,WAAYs2G,GACZz2G,UAAWA,EACXE,UAAU,IACVhtC,KAAM8jJ,GACNnzG,mBAAoBA,EACpBkC,wBAAyB,gBAAG7yC,EAAH,EAAGA,KAAM6sC,EAAT,EAASA,OAAQE,EAAjB,EAAiBA,OAAjB,MAA+B,CACtDviC,EAAGqiC,EAAO7sC,EAAK4e,MACf1T,EAAG6hC,EAAOgO,MAEZ5H,SAAUvC,GACVwC,WAAYxC,GACZyC,WAAY,CACVoF,OAAQ,UACRpnC,gBAAiB,QAEnBiiC,aAAc,CACZttC,EAAG,EACHyyC,OAAQ,UACRhnC,YAAa,GAEf8hC,YAAaA,OAQzBotE,EAAU54E,UAAY6S,IACtB+lE,EAAU3mD,aAAe3pB,I,UAEVswE,EAAA,O,6FAtUTA,E,qgBCrBA9wE,EAA0B,CAC9B,CACEgvB,MAAO,OACPylF,QAAS,EACT97G,OAAQ,KAEV,CACEq2B,MAAO,QACPylF,QAAS,GACT97G,OAAQ,MAEV,CACEq2B,MAAO,iBACPylF,QAAS,GACT97G,OAAQ,IAEV,CACEq2B,MAAO,YACPylF,QAAS,GACT97G,QAAS,KAEX,CACEq2B,MAAO,UACPylF,QAAS,GACT97G,QAAS,GAEX,CACEq2B,MAAO,SACPylF,QAAS,EACT97G,QAAS,GAEX,CACEq2B,MAAO,UACPylF,QAAS,GACT97G,QAAS,KAEX,CACEq2B,MAAO,gBACPylF,QAAS,EACT97G,QAAS,KAEX,CACEq2B,MAAO,WACPylF,QAAS,GACT97G,QAAS,I,EAIEqH,EAAA,O,6FAhDTA,E,6mBCOOrG,EAAQ,kBACnB,oBACErB,KAAK,UACL9nC,GAAG,OACHwF,EAAE,y1FAIN2jC,EAAMlB,MAAQ,IACdkB,EAAMjB,OAAS,G,UAEA,CACbiB,U,6FAZWA,E,smBCAA+6G,EAAmB,CAAH,0G,EAUdA,G,6FAVFA,E,k5DCFPC,EAAc,SAAC,GAQf,IAeAC,EAtBJ34G,EAOI,EAPJA,aACAxD,EAMI,EANJA,MACAC,EAKI,EALJA,OACA8C,EAII,EAJJA,YACA2N,EAGI,EAHJA,WACAi7E,EAEI,EAFJA,UACA1nF,EACI,EADJA,qBAEMm4G,EAAoD,UAAjCr0E,YAAevkC,GAA4BA,EAAaqQ,OAAS,EAAI,EAE9F,IAA6BrQ,EAAa6W,SAA1C,GAAOgiG,EAAP,KAAiBC,EAAjB,KAEIC,EAAuB,EAAI7rG,GAG/B,GAAIzM,EAAsB,CACxB,IAAMu4G,EAAYD,EAAqB9hJ,KAAI,SAAC8C,GAC1C,OAAOA,EAAE0mC,MAEXs4G,EAAuBC,EAKzB,GAAkB,UAAd7wB,GAAyBv7G,MAAMmsI,EAAqB,IACtD,OAAQx5G,GACN,IAAK,MACL,IAAK,SACHo5G,EAAQI,EACL9hJ,KAAI,SAAC8C,EAAGnH,GAAJ,MAAW,CACd8L,EAAGshC,EAAajmC,GAAK6+I,EACrBx5I,EAAG,EACHo9B,MAAOwD,EAAa2jC,aAAe3jC,EAAaqQ,OAChD5T,aAEDtT,QAAO,SAACpvB,EAAGnH,GAAJ,OAAUA,EAAI,GAAM,KAC9B,MACF,IAAK,OACL,IAAK,QACH+lJ,EAAQI,EACL9hJ,KAAI,SAAC8C,EAAGnH,GAAJ,MAAW,CACd8L,EAAG,EACHU,EAAG4gC,EAAajmC,GAAK6+I,EACrBp8G,QACAC,OAAQuD,EAAa2jC,aAAe3jC,EAAaqQ,WAElDlnB,QAAO,SAACpvB,EAAGnH,GAAJ,OAAUA,EAAI,GAAM,KAC9B,MACF,QACE+lJ,EAAQ,QAqBZ,OAhBkB,UAAdxwB,IAEE0wB,EAAWE,EAAqB,IAClCA,EAAqBl0E,QAAQg0E,GAG3BC,EAAWC,EAAqBA,EAAqBlmJ,OAAS,IAChEkmJ,EAAqBroJ,KAAKooJ,GAGxBC,EAAqBlmJ,OAAS,GAAK,GACrCkmJ,EAAqB3hJ,OAKjBmoC,GACN,IAAK,MACL,IAAK,SACHo5G,EAAQI,EACL9hJ,KAAI,SAAC8C,EAAGnH,GAAJ,MAAW,CACd6sC,MAAO1lC,EACP2E,EAAGshC,EAAajmC,GAChBqF,EAAG,EACHo9B,MAAO7sB,KAAKC,IACVowB,EACEptC,EAAImmJ,EAAqBlmJ,OAAS,EAAIkmJ,EAAqBnmJ,EAAI,GAAKkmJ,GAClE94G,EAAajmC,IAEnB0iC,aAEDtT,QAAO,SAACpvB,EAAGnH,GAAJ,OAAUA,EAAI,GAAM,KAC9B,MACF,IAAK,OACL,IAAK,QACH+lJ,EAAQI,EACL9hJ,KAAI,SAAC8C,EAAGnH,GAAJ,MAAW,CACd6sC,MAAO1lC,EACP2E,EAAG,EACHU,EAAG4gC,EAAa+4G,EAAmC,UAAd5wB,EAAwBv1H,EAAI,EAAIA,IACrE4pC,QACAC,OAAQ9sB,KAAKC,IACXowB,EACEptC,EAAImmJ,EAAqBlmJ,OAAS,EAAIkmJ,EAAqBnmJ,EAAI,GAAKkmJ,GAClE94G,EAAajmC,QAGpBovB,QAAO,SAACpvB,EAAGnH,GAAJ,OAAUA,EAAI,GAAM,KAC9B,MACF,QACE+lJ,EAAQ,GAId,IAAMM,EAAgBN,EAAM1hJ,KAAI,SAAC8C,EAAGnH,GAClC,OAAO,oBAAM4H,IAAG,cAAS5H,GAAK8L,EAAG3E,EAAE2E,EAAGU,EAAGrF,EAAEqF,EAAGo9B,MAAOziC,EAAEyiC,MAAOC,OAAQ1iC,EAAE0iC,YAG1E,OACE,YAAC,IAAD,CAAOj6B,UAAU,oBAAoBjO,GAAG,eACrC0kJ,IAIPP,EAAYxqF,aAAepuB,I,UAEZ44G,EAAA,O,6FAzHTA,E,2VCKN,IAQIQ,EAAW,mBAYf,SAASvlJ,EAAMwU,EAAMgxI,EAAS3xI,GAC5B,OAAQA,EAAK3U,QACX,KAAK,EAAG,OAAOsV,EAAK/Y,KAAK+pJ,GACzB,KAAK,EAAG,OAAOhxI,EAAK/Y,KAAK+pJ,EAAS3xI,EAAK,IACvC,KAAK,EAAG,OAAOW,EAAK/Y,KAAK+pJ,EAAS3xI,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOW,EAAK/Y,KAAK+pJ,EAAS3xI,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOW,EAAKxU,MAAMwlJ,EAAS3xI,GAqC7B,IAPiBW,EAAMwzB,EAOnBy9G,EAAcnqJ,OAAOC,UAGrBC,EAAiBiqJ,EAAYjqJ,eAO7Bm5H,EAAiB8wB,EAAYt2I,SAG7BmvC,EAAuBmnG,EAAYnnG,qBAGnConG,GAvBalxI,EAuBQlZ,OAAO4J,KAvBT8iC,EAuBe1sC,OAtB7B,SAASgX,GACd,OAAOkC,EAAKwzB,EAAU11B,MAsBtBqzI,EAAY3pI,KAAKI,IAGjBwpI,GAAkBtnG,EAAqB7iD,KAAK,CAAE,QAAW,GAAK,WAUlE,SAASoqJ,EAAcpoJ,EAAOqoJ,GAG5B,IAAInjJ,EAAU0Q,EAAQ5V,IA2PxB,SAAqBA,GAEnB,OAmFF,SAA2BA,GACzB,OAgHF,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAjHlBsoJ,CAAatoJ,IAAUuoJ,EAAYvoJ,GApFnCwoJ,CAAkBxoJ,IAAUjC,EAAeC,KAAKgC,EAAO,aAC1D6gD,EAAqB7iD,KAAKgC,EAAO,WA5VzB,sBA4VsCk3H,EAAel5H,KAAKgC,IA9PtCyoJ,CAAYzoJ,GA1D9C,SAAmBsJ,EAAGo/I,GAIpB,IAHA,IAAIvoH,GAAS,EACTj7B,EAASoL,MAAMhH,KAEV62B,EAAQ72B,GACfpE,EAAOi7B,GAASuoH,EAASvoH,GAE3B,OAAOj7B,EAoDHyjJ,CAAU3oJ,EAAMyB,OAAQk2B,QACxB,GAEAl2B,EAASyD,EAAOzD,OAChBmnJ,IAAgBnnJ,EAEpB,IAAK,IAAI2H,KAAOpJ,GACTqoJ,IAAatqJ,EAAeC,KAAKgC,EAAOoJ,IACvCw/I,IAAuB,UAAPx/I,GAAmBy/I,EAAQz/I,EAAK3H,KACpDyD,EAAO5F,KAAK8J,GAGhB,OAAOlE,EAaT,SAAS4jJ,EAAYv/I,EAAQH,EAAKpJ,GAChC,IAAI+oJ,EAAWx/I,EAAOH,GAChBrL,EAAeC,KAAKuL,EAAQH,IAAQiwF,EAAG0vD,EAAU/oJ,UACxCuB,IAAVvB,GAAyBoJ,KAAOG,KACnCA,EAAOH,GAAOpJ,GA0HlB,SAAS6oJ,EAAQ7oJ,EAAOyB,GAEtB,SADAA,EAAmB,MAAVA,EA1PY,iBA0PwBA,KAE1B,iBAATzB,GAAqB8nJ,EAASr7I,KAAKzM,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQyB,EAkC7C,SAASunJ,EAAYhpJ,GACnB,IAAIipJ,EAAOjpJ,GAASA,EAAMkpC,YAG1B,OAAOlpC,KAFqB,mBAARipJ,GAAsBA,EAAKnrJ,WAAckqJ,GAqC/D,SAAS3uD,EAAGr5F,EAAO4zB,GACjB,OAAO5zB,IAAU4zB,GAAU5zB,GAAUA,GAAS4zB,GAAUA,EAkD1D,IAAIhe,EAAUtF,MAAMsF,QA2BpB,SAAS2yI,EAAYvoJ,GACnB,OAAgB,MAATA,GAkFT,SAAkBA,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAzeb,iBAqZGkpJ,CAASlpJ,EAAMyB,UAiDzC,SAAoBzB,GAGlB,IAAIyK,EAAMsO,EAAS/Y,GAASk3H,EAAel5H,KAAKgC,GAAS,GACzD,MAtcY,qBAscLyK,GArcI,8BAqccA,EArD0BmT,CAAW5d,GAgHhE,SAAS+Y,EAAS/Y,GAChB,IAAIiG,SAAcjG,EAClB,QAASA,IAAkB,UAARiG,GAA4B,YAARA,GA+DzC,IA/WwBkjJ,EA+WpB9kH,GA/WoB8kH,EA+WI,SAAS5/I,EAAQ83B,GAC3C,GAAI8mH,GAAkBa,EAAY3nH,IAAWknH,EAAYlnH,IAzY3D,SAAoBA,EAAQpqB,EAAO1N,EAAQ6/I,GACzC7/I,IAAWA,EAAS,IAKpB,IAHA,IAAI42B,GAAS,EACT1+B,EAASwV,EAAMxV,SAEV0+B,EAAQ1+B,GAAQ,CACvB,IAAI2H,EAAM6N,EAAMkpB,GAEZmjC,EAAW8lF,EACXA,EAAW7/I,EAAOH,GAAMi4B,EAAOj4B,GAAMA,EAAKG,EAAQ83B,QAClD9/B,EAEJunJ,EAAYv/I,EAAQH,OAAkB7H,IAAb+hE,EAAyBjiC,EAAOj4B,GAAOk6D,IA6XhE+lF,CAAWhoH,EAsCf,SAAc93B,GACZ,OAAOg/I,EAAYh/I,GAAU6+I,EAAc7+I,GAre7C,SAAkBA,GAChB,IAAKy/I,EAAYz/I,GACf,OAAO0+I,EAAW1+I,GAEpB,IAAIrE,EAAS,GACb,IAAK,IAAIkE,KAAOvL,OAAO0L,GACjBxL,EAAeC,KAAKuL,EAAQH,IAAe,eAAPA,GACtClE,EAAO5F,KAAK8J,GAGhB,OAAOlE,EA2d8CokJ,CAAS//I,GAvCzC9B,CAAK45B,GAAS93B,QAGnC,IAAK,IAAIH,KAAOi4B,EACVtjC,EAAeC,KAAKqjC,EAAQj4B,IAC9B0/I,EAAYv/I,EAAQH,EAAKi4B,EAAOj4B,KA9atC,SAAkB2N,EAAMooC,GAEtB,OADAA,EAAQ+oG,OAAoB3mJ,IAAV49C,EAAuBpoC,EAAKtV,OAAS,EAAK09C,EAAO,GAC5D,WAML,IALA,IAAI/oC,EAAO2B,UACPooB,GAAS,EACT1+B,EAASymJ,EAAU9xI,EAAK3U,OAAS09C,EAAO,GACxC3/B,EAAQlP,MAAM7O,KAET0+B,EAAQ1+B,GACf+d,EAAM2gB,GAAS/pB,EAAK+oC,EAAQhf,GAE9BA,GAAS,EAET,IADA,IAAIopH,EAAYj5I,MAAM6uC,EAAQ,KACrBhf,EAAQgf,GACfoqG,EAAUppH,GAAS/pB,EAAK+pB,GAG1B,OADAopH,EAAUpqG,GAAS3/B,EACZjd,EAAMwU,EAAM9U,KAAMsnJ,IAwCpBC,EAAS,SAASjgJ,EAAQkgJ,GAC/B,IAAItpH,GAAS,EACT1+B,EAASgoJ,EAAQhoJ,OACjB2nJ,EAAa3nJ,EAAS,EAAIgoJ,EAAQhoJ,EAAS,QAAKF,EAChDmoJ,EAAQjoJ,EAAS,EAAIgoJ,EAAQ,QAAKloJ,EAWtC,IATA6nJ,EAAcD,EAAS1nJ,OAAS,GAA0B,mBAAd2nJ,GACvC3nJ,IAAU2nJ,QACX7nJ,EAEAmoJ,GAwCR,SAAwB1pJ,EAAOmgC,EAAO52B,GACpC,IAAKwP,EAASxP,GACZ,OAAO,EAET,IAAItD,SAAck6B,EAClB,SAAY,UAARl6B,EACKsiJ,EAAYh/I,IAAWs/I,EAAQ1oH,EAAO52B,EAAO9H,QACrC,UAARwE,GAAoBk6B,KAAS52B,IAE7B8vF,EAAG9vF,EAAO42B,GAAQngC,GAjDZ2pJ,CAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDN,EAAa3nJ,EAAS,OAAIF,EAAY6nJ,EACtC3nJ,EAAS,GAEX8H,EAAS1L,OAAO0L,KACP42B,EAAQ1+B,GAAQ,CACvB,IAAI4/B,EAASooH,EAAQtpH,GACjBkB,GACF8nH,EAAS5/I,EAAQ83B,EAAQlB,EAAOipH,GAGpC,OAAO7/I,MAqYX/D,EAAOiD,QAAU47B,G,cClnBjB,IAQIyjH,EAAW,mBAYf,SAASvlJ,EAAMwU,EAAMgxI,EAAS3xI,GAC5B,OAAQA,EAAK3U,QACX,KAAK,EAAG,OAAOsV,EAAK/Y,KAAK+pJ,GACzB,KAAK,EAAG,OAAOhxI,EAAK/Y,KAAK+pJ,EAAS3xI,EAAK,IACvC,KAAK,EAAG,OAAOW,EAAK/Y,KAAK+pJ,EAAS3xI,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOW,EAAK/Y,KAAK+pJ,EAAS3xI,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOW,EAAKxU,MAAMwlJ,EAAS3xI,GAuB7B,IAAI4xI,EAAcnqJ,OAAOC,UAGrBC,EAAiBiqJ,EAAYjqJ,eAO7Bm5H,EAAiB8wB,EAAYt2I,SAG7BmvC,EAAuBmnG,EAAYnnG,qBAGnCqnG,EAAY3pI,KAAKI,IAUrB,SAASypI,EAAcpoJ,EAAOqoJ,GAG5B,IAAInjJ,EAAU0Q,EAAQ5V,IAkSxB,SAAqBA,GAEnB,OAmFF,SAA2BA,GACzB,OAgHF,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,EAjHlBsoJ,CAAatoJ,IAAUuoJ,EAAYvoJ,GApFnCwoJ,CAAkBxoJ,IAAUjC,EAAeC,KAAKgC,EAAO,aAC1D6gD,EAAqB7iD,KAAKgC,EAAO,WAjXzB,sBAiXsCk3H,EAAel5H,KAAKgC,IArStCyoJ,CAAYzoJ,GAxC9C,SAAmBsJ,EAAGo/I,GAIpB,IAHA,IAAIvoH,GAAS,EACTj7B,EAASoL,MAAMhH,KAEV62B,EAAQ72B,GACfpE,EAAOi7B,GAASuoH,EAASvoH,GAE3B,OAAOj7B,EAkCHyjJ,CAAU3oJ,EAAMyB,OAAQk2B,QACxB,GAEAl2B,EAASyD,EAAOzD,OAChBmnJ,IAAgBnnJ,EAEpB,IAAK,IAAI2H,KAAOpJ,GACTqoJ,IAAatqJ,EAAeC,KAAKgC,EAAOoJ,IACvCw/I,IAAuB,UAAPx/I,GAAmBy/I,EAAQz/I,EAAK3H,KACpDyD,EAAO5F,KAAK8J,GAGhB,OAAOlE,EAaT,SAAS0kJ,EAAiBb,EAAUc,EAAUzgJ,EAAKG,GACjD,YAAiBhI,IAAbwnJ,GACC1vD,EAAG0vD,EAAUf,EAAY5+I,MAAUrL,EAAeC,KAAKuL,EAAQH,GAC3DygJ,EAEFd,EAaT,SAASD,EAAYv/I,EAAQH,EAAKpJ,GAChC,IAAI+oJ,EAAWx/I,EAAOH,GAChBrL,EAAeC,KAAKuL,EAAQH,IAAQiwF,EAAG0vD,EAAU/oJ,UACxCuB,IAAVvB,GAAyBoJ,KAAOG,KACnCA,EAAOH,GAAOpJ,GAWlB,SAAS8pJ,EAAWvgJ,GAClB,IAAKwP,EAASxP,GACZ,OAqKJ,SAAsBA,GACpB,IAAIrE,EAAS,GACb,GAAc,MAAVqE,EACF,IAAK,IAAIH,KAAOvL,OAAO0L,GACrBrE,EAAO5F,KAAK8J,GAGhB,OAAOlE,EA5KE6kJ,CAAaxgJ,GAEtB,IAmJmBvJ,EACfipJ,EACAhuH,EArJA+uH,GAoJAf,GADejpJ,EAnJOuJ,IAoJNvJ,EAAMkpC,YACtBjO,EAAwB,mBAARguH,GAAsBA,EAAKnrJ,WAAckqJ,EAEtDhoJ,IAAUi7B,GAtJb/1B,EAAS,GAEb,IAAK,IAAIkE,KAAOG,GACD,eAAPH,IAAyB4gJ,GAAYjsJ,EAAeC,KAAKuL,EAAQH,KACrElE,EAAO5F,KAAK8J,GAGhB,OAAOlE,EAWT,SAASskJ,EAASzyI,EAAMooC,GAEtB,OADAA,EAAQ+oG,OAAoB3mJ,IAAV49C,EAAuBpoC,EAAKtV,OAAS,EAAK09C,EAAO,GAC5D,WAML,IALA,IAAI/oC,EAAO2B,UACPooB,GAAS,EACT1+B,EAASymJ,EAAU9xI,EAAK3U,OAAS09C,EAAO,GACxC3/B,EAAQlP,MAAM7O,KAET0+B,EAAQ1+B,GACf+d,EAAM2gB,GAAS/pB,EAAK+oC,EAAQhf,GAE9BA,GAAS,EAET,IADA,IAAIopH,EAAYj5I,MAAM6uC,EAAQ,KACrBhf,EAAQgf,GACfoqG,EAAUppH,GAAS/pB,EAAK+pB,GAG1B,OADAopH,EAAUpqG,GAAS3/B,EACZjd,EAAMwU,EAAM9U,KAAMsnJ,IAyE7B,SAASV,EAAQ7oJ,EAAOyB,GAEtB,SADAA,EAAmB,MAAVA,EA5PY,iBA4PwBA,KAE1B,iBAATzB,GAAqB8nJ,EAASr7I,KAAKzM,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQyB,EA4F7C,SAAS43F,EAAGr5F,EAAO4zB,GACjB,OAAO5zB,IAAU4zB,GAAU5zB,GAAUA,GAAS4zB,GAAUA,EAkD1D,IAAIhe,EAAUtF,MAAMsF,QA2BpB,SAAS2yI,EAAYvoJ,GACnB,OAAgB,MAATA,GAkFT,SAAkBA,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9fb,iBA0aGkpJ,CAASlpJ,EAAMyB,UAiDzC,SAAoBzB,GAGlB,IAAIyK,EAAMsO,EAAS/Y,GAASk3H,EAAel5H,KAAKgC,GAAS,GACzD,MA3dY,qBA2dLyK,GA1dI,8BA0dcA,EArD0BmT,CAAW5d,GAgHhE,SAAS+Y,EAAS/Y,GAChB,IAAIiG,SAAcjG,EAClB,QAASA,IAAkB,UAARiG,GAA4B,YAARA,GA4DzC,IA/XwBkjJ,EA+XpBc,GA/XoBd,EA+XU,SAAS5/I,EAAQ83B,EAAQ6oH,EAAUd,IAxZrE,SAAoB/nH,EAAQpqB,EAAO1N,EAAQ6/I,GACzC7/I,IAAWA,EAAS,IAKpB,IAHA,IAAI42B,GAAS,EACT1+B,EAASwV,EAAMxV,SAEV0+B,EAAQ1+B,GAAQ,CACvB,IAAI2H,EAAM6N,EAAMkpB,GAEZmjC,EAAW8lF,EACXA,EAAW7/I,EAAOH,GAAMi4B,EAAOj4B,GAAMA,EAAKG,EAAQ83B,QAClD9/B,EAEJunJ,EAAYv/I,EAAQH,OAAkB7H,IAAb+hE,EAAyBjiC,EAAOj4B,GAAOk6D,IA4YlE+lF,CAAWhoH,EAoDb,SAAgB93B,GACd,OAAOg/I,EAAYh/I,GAAU6+I,EAAc7+I,GAAQ,GAAQugJ,EAAWvgJ,GArDnD4gJ,CAAO9oH,GAAS93B,EAAQ6/I,IA/XpCI,GAAS,SAASjgJ,EAAQkgJ,GAC/B,IAAItpH,GAAS,EACT1+B,EAASgoJ,EAAQhoJ,OACjB2nJ,EAAa3nJ,EAAS,EAAIgoJ,EAAQhoJ,EAAS,QAAKF,EAChDmoJ,EAAQjoJ,EAAS,EAAIgoJ,EAAQ,QAAKloJ,EAWtC,IATA6nJ,EAAcD,EAAS1nJ,OAAS,GAA0B,mBAAd2nJ,GACvC3nJ,IAAU2nJ,QACX7nJ,EAEAmoJ,GAwCR,SAAwB1pJ,EAAOmgC,EAAO52B,GACpC,IAAKwP,EAASxP,GACZ,OAAO,EAET,IAAItD,SAAck6B,EAClB,SAAY,UAARl6B,EACKsiJ,EAAYh/I,IAAWs/I,EAAQ1oH,EAAO52B,EAAO9H,QACrC,UAARwE,GAAoBk6B,KAAS52B,IAE7B8vF,EAAG9vF,EAAO42B,GAAQngC,GAjDZ2pJ,CAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDN,EAAa3nJ,EAAS,OAAIF,EAAY6nJ,EACtC3nJ,EAAS,GAEX8H,EAAS1L,OAAO0L,KACP42B,EAAQ1+B,GAAQ,CACvB,IAAI4/B,EAASooH,EAAQtpH,GACjBkB,GACF8nH,EAAS5/I,EAAQ83B,EAAQlB,EAAOipH,GAGpC,OAAO7/I,MAkYP8mB,EAAWm5H,GAAS,SAASpzI,GAE/B,OADAA,EAAK9W,UAAKiC,EAAWqoJ,GACdrnJ,EAAM0nJ,OAAc1oJ,EAAW6U,MA8BxC5Q,EAAOiD,QAAU4nB,G,6BC3pBjB,mBAGI6B,EAAO,aAAS,SAASxQ,GAC3BA,EAAKwU,QAAQxU,EAAOA,EAAKyoC,kBAAoBzoC,EAAK+oC,aAAe,IAAiB/oC,EAAK6oC,aAAe,QACrG,SAAS7oC,EAAMu9B,GAChBv9B,EAAKwU,SAASxU,EAAOu9B,EAAO,QAC3B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAAS,OACtB,SAASz9B,GACV,OAAOA,EAAKqoC,cAGC,MACI73B,EAAKgtB,O,6BCdxB,mBAGI9rB,EAAS,aAAS,SAAS1R,GAC7BA,EAAKwU,QAAQxU,EAAOA,EAAKyoC,kBAAoBzoC,EAAK+oC,aAAe,QAChE,SAAS/oC,EAAMu9B,GAChBv9B,EAAKwU,SAASxU,EAAOu9B,EAAO,QAC3B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAAS,OACtB,SAASz9B,GACV,OAAOA,EAAK6oC,gBAGC,MACMn3B,EAAO8rB,O,6BCd5B,mBAGIgI,EAAS,aAAS,SAASxlC,GAC7BA,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+kC,WAAW/kC,EAAKoP,aAAemuB,MACnC,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAAS,OACtB,SAASz9B,GACV,OAAOA,EAAKoP,aAAe,KAGd,MACMo2B,EAAOhI,O,6BCd5B,mBAGImoB,EAAU,aAAS,SAAS3lD,GAC9BA,EAAKyO,cAAc,EAAG,EAAG,MACxB,SAASzO,EAAMu9B,GAChBv9B,EAAKwU,SAASxU,EAAOu9B,EAAO,QAC3B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAAS,OACtB,SAASz9B,GACV,OAAOA,EAAK6pC,iBAGC,MACO8b,EAAQnoB,O,6BCd9B,mBAGIooB,EAAY,aAAS,SAAS5lD,GAChCA,EAAK0oI,cAAc,EAAG,MACrB,SAAS1oI,EAAMu9B,GAChBv9B,EAAKwU,SAASxU,EAAOu9B,EAAO,QAC3B,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAAS,OACtB,SAASz9B,GACV,OAAOA,EAAK0O,mBAGC,MACSk3C,EAAUpoB,O,6BCdlC,YAEIqoB,EAAW,aAAS,SAAS7lD,GAC/BA,EAAK+kC,WAAW,GAChB/kC,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAKkmC,YAAYlmC,EAAKmP,cAAgBouB,MACrC,SAASE,EAAOG,GACjB,OAAOA,EAAIzuB,cAAgBsuB,EAAMtuB,cAAkE,IAAjDyuB,EAAI94B,iBAAmB24B,EAAM34B,qBAC9E,SAAS9E,GACV,OAAOA,EAAKmP,iBAGC,MACQ02C,EAASroB,O,6BCdhC,qDAGA,SAASsH,EAAWhlD,GAClB,OAAO,aAAS,SAASkgB,GACvBA,EAAK+kC,WAAW/kC,EAAKoP,cAAgBpP,EAAKoF,YAAc,EAAItlB,GAAK,GACjEkgB,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+kC,WAAW/kC,EAAKoP,aAAsB,EAAPmuB,MACnC,SAASE,EAAOG,GACjB,OAAQA,EAAMH,GAAS,OAIpB,IAAIwH,EAAYH,EAAW,GACvBI,EAAYJ,EAAW,GACvBK,EAAaL,EAAW,GACxBM,EAAeN,EAAW,GAC1BO,EAAcP,EAAW,GACzBQ,EAAYR,EAAW,GACvBS,EAAcT,EAAW,GAEZG,EAAUzH,MACV0H,EAAU1H,MACT2H,EAAW3H,MACT4H,EAAa5H,MACd6H,EAAY7H,MACd8H,EAAU9H,MACR+H,EAAY/H,O,6BC5BtC,YAEIyI,EAAU,aAAS,SAASjmC,GAC9BA,EAAKkmC,YAAY,EAAG,GACpBlmC,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+E,eAAe/E,EAAK8E,iBAAmBy4B,MAC3C,SAASE,EAAOG,GACjB,OAAOA,EAAI94B,iBAAmB24B,EAAM34B,oBACnC,SAAS9E,GACV,OAAOA,EAAK8E,oBAIdmhC,EAAQpI,MAAQ,SAASxxC,GACvB,OAAQsT,SAAStT,EAAIwQ,KAAK0C,MAAMlT,KAASA,EAAI,EAAY,aAAS,SAAS2T,GACzEA,EAAK+E,eAAelI,KAAK0C,MAAMS,EAAK8E,iBAAmBzY,GAAKA,GAC5D2T,EAAKkmC,YAAY,EAAG,GACpBlmC,EAAKglC,YAAY,EAAG,EAAG,EAAG,MACzB,SAAShlC,EAAMu9B,GAChBv9B,EAAK+E,eAAe/E,EAAK8E,iBAAmBy4B,EAAOlxC,MALH,MASrC,MACO45C,EAAQzI,O,gBCzB9B,IAAImrG,EAAW,EAAQ,KAiDvB,SAASC,EAAQvzI,EAAMi3F,GACrB,GAAmB,mBAARj3F,GAAmC,MAAZi3F,GAAuC,mBAAZA,EAC3D,MAAM,IAAI3N,UAhDQ,uBAkDpB,IAAIkqD,EAAW,WACb,IAAIn0I,EAAO2B,UACP3O,EAAM4kG,EAAWA,EAASzrG,MAAMN,KAAMmU,GAAQA,EAAK,GACnDtF,EAAQy5I,EAASz5I,MAErB,GAAIA,EAAM83B,IAAIx/B,GACZ,OAAO0H,EAAMhR,IAAIsJ,GAEnB,IAAIlE,EAAS6R,EAAKxU,MAAMN,KAAMmU,GAE9B,OADAm0I,EAASz5I,MAAQA,EAAM/Q,IAAIqJ,EAAKlE,IAAW4L,EACpC5L,GAGT,OADAqlJ,EAASz5I,MAAQ,IAAKw5I,EAAQE,OAASH,GAChCE,EAITD,EAAQE,MAAQH,EAEhB7kJ,EAAOiD,QAAU6hJ,G,qpDCjEXG,EAAoB,SAAC,GAerB,QAdJngH,KAAMogH,OAcF,MAdgB,EAchB,MAbJtgH,IAAKugH,OAaD,MAbc,EAad,MAZJ7yE,kBAYI,MAZS,GAYT,MAXJD,iBAWI,MAXQ,GAWR,MAVJG,eAUI,MAVM,EAUN,MATJC,eASI,MATM,EASN,EARJC,EAQI,EARJA,cACAC,EAOI,EAPJA,WACAsuB,EAMI,EANJA,KACAmkD,EAKI,EALJA,WAEArrJ,GAGI,EAJJsrJ,SAII,EAHJtrJ,UACAqtE,EAEI,EAFJA,MACG31D,EACC,OACAqzB,EAAOogH,EACPtgH,EAAMugH,EAIV,GAAIlkD,GAAQmkD,EAAY,CACtBtgH,EAGEwtC,EAAa2uB,EAAKj7D,MAAQo/G,EAAWp/G,OACpCjuC,QAAUu6E,EAAa2uB,EAAKj7D,MAAQjuC,OAAOqlD,WACxCtY,EAAOm8D,EAAKr7D,MAAQ0sC,EACpBxtC,EAAOwtC,EAEb1tC,EAGEytC,EAAY4uB,EAAKh7D,OAASm/G,EAAWn/G,QACpCluC,QAAUs6E,EAAY4uB,EAAKh7D,OAASluC,OAAOklD,YACxCrY,EAAMq8D,EAAKp7D,OAASwsC,EACpBztC,EAAMytC,EAEZ,IAAMizE,EAAerkD,EAAKp7D,OAOtB6sC,GAAiB9tC,EAAM0gH,GAJN,iBAAZ7yE,EACHA,EAECv2B,OAAOu2B,EAAQhsE,QAAQ,IAAK,KAAO,IAAO6+I,KAG/C1gH,EAAM+tC,EAAa2yE,GAOvB,OAHAxgH,EAAO/rB,KAAK6W,MAAMkV,GAClBF,EAAM7rB,KAAK6W,MAAMgV,GAGf,YAAC,IAAD,GACEwiC,MAAK,GACHK,SAAU,WACV7iC,IAAK,EACLG,UAAW,aAAF,OAAeD,EAAf,eAA0BF,EAA1B,0BAA+C4tC,EAA/C,wBAAsEC,EAAtE,MACNrL,IAED31D,GAEH1X,IAKDwrJ,EAAqBtxG,IAAUC,MAAM,CACzCtP,IAAKqP,IAAUt7B,OACfqtB,MAAOiO,IAAUt7B,OACjBstB,OAAQgO,IAAUt7B,OAClBmsB,KAAMmP,IAAUt7B,OAChBitB,MAAOqO,IAAUt7B,OACjBktB,OAAQoO,IAAUt7B,SAGd6sI,EAA6B,CACjCH,SAAUpxG,IAAU1iC,KACpB0vF,KAAMskD,EACNH,WAAYG,GAGdN,EAAkB5/G,UAAlB,SACKogH,IAAQpgH,WACRmgH,GAFL,IAGElzE,WAAYr+B,IAAUt7B,OACtB05D,UAAWp+B,IAAUt7B,OACrB65D,QAASv+B,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SAC1DsiE,QAASx+B,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAU9jC,SAC1DwiE,WAAY1+B,IAAUt7B,OACtB+5D,cAAez+B,IAAUt7B,S,UAGZ+sI,YAAkBT,GAAlB,O,6FA/FTA,E,2HAqEAM,E,4HASAC,E,6mBCzEAG,EAAkB,CACtBv2G,MAAO4wC,IACP3wC,OAAQ4wC,IACR3wC,MAAO4wC,IACP/wC,IAAK,MAGDy2G,EAAc,SAAC,GASf,IARJt+G,EAQI,EARJA,UACAzB,EAOI,EAPJA,OAEAhK,GAKI,EANJiK,OAMI,EALJjK,QACA0L,EAII,EAJJA,eACAC,EAGI,EAHJA,iBACAC,EAEI,EAFJA,eACAhnC,EACI,EADJA,KAEA,EAA2DgnC,EAAnD3/B,EAAG+9I,OAAX,MAA6B,EAA7B,IAA2Dp+G,EAA3Bj/B,EAAGs9I,OAAnC,MAAqD,EAArD,EAGMC,EAAmBlqH,GAAUA,EAAOx1B,MAAM,KAAKpK,QAAW,EAK1D+pJ,EAA2BngH,EAASigH,EAMpCG,EACJD,GAL4B1+G,EAAYE,EAAmB,GALxCA,EAAmBu+G,EAU4Bv+G,EAEpE,OACE,8BAEE,oBACEt1B,IAAKA,YAAF,aACYq1B,EADZ,kBAEcC,EAFd,MAGCu4C,IAHD,IAIC4lE,EAAgBllJ,GAJjB,wBAMHsxE,UAAA,wBAA0BtxE,EAA1B,WAECo7B,EACGA,EAAOx1B,MAAM,KAAKhG,KAAI,SAAC8J,EAAMnO,GAAP,OACpB,qBACE+1E,UAAA,wBAA0BtxE,EAA1B,yBAA+CzE,GAC/C4H,IAAG,wBAAmBnD,EAAnB,yBAAwCzE,GAC3C8L,EAAG+9I,EACHr9I,EAAGy9I,EAAqBjqJ,EAAIwrC,GAE3Br9B,MAGL,MAILm9B,GACC,oBACEp1B,IAAKA,YAAF,aACYq1B,EADZ,kBAEcC,EAFd,MAGCs4C,IAHD,wBAKH/N,UAAQ,mBAER,qBAAOjqE,EAAG+9I,EAAiBr9I,EAAGw9I,GAC3B1+G,MAQbs+G,EAAYvgH,UAAY8P,IACxBywG,EAAYtuF,aAAervB,I,UAEZ29G,EAAA,O,6FAlFTD,E,8HAOAC,E,yWCnBN,IAAIryI,EAAW,EAAQ,KACnB4X,EAAM,EAAQ,KACd+6H,EAAW,EAAQ,KAMnBxD,EAAY3pI,KAAKI,IACjBgtI,EAAYptI,KAAK2G,IAqLrB1f,EAAOiD,QA7HP,SAAkBsO,EAAMikE,EAAM51E,GAC5B,IAAIwmJ,EACAC,EACAC,EACA5mJ,EACA6mJ,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARr1I,EACT,MAAM,IAAIspF,UAzEQ,uBAmFpB,SAASgsD,EAAWlxH,GAClB,IAAI/kB,EAAOw1I,EACP7D,EAAU8D,EAKd,OAHAD,EAAWC,OAAWtqJ,EACtB0qJ,EAAiB9wH,EACjBj2B,EAAS6R,EAAKxU,MAAMwlJ,EAAS3xI,GAI/B,SAASk2I,EAAYnxH,GAMnB,OAJA8wH,EAAiB9wH,EAEjB4wH,EAAU5wE,WAAWoxE,EAAcvxE,GAE5BkxE,EAAUG,EAAWlxH,GAAQj2B,EAatC,SAASsnJ,EAAarxH,GACpB,IAAIsxH,EAAoBtxH,EAAO6wH,EAM/B,YAAyBzqJ,IAAjByqJ,GAA+BS,GAAqBzxE,GACzDyxE,EAAoB,GAAON,GANJhxH,EAAO8wH,GAM8BH,EAGjE,SAASS,IACP,IAAIpxH,EAAOxK,IACX,GAAI67H,EAAarxH,GACf,OAAOuxH,EAAavxH,GAGtB4wH,EAAU5wE,WAAWoxE,EA3BvB,SAAuBpxH,GACrB,IAEIwxH,EAAc3xE,GAFM7/C,EAAO6wH,GAI/B,OAAOG,EACHR,EAAUgB,EAAab,GAJD3wH,EAAO8wH,IAK7BU,EAoB+BC,CAAczxH,IAGnD,SAASuxH,EAAavxH,GAKpB,OAJA4wH,OAAUxqJ,EAIN6qJ,GAAYR,EACPS,EAAWlxH,IAEpBywH,EAAWC,OAAWtqJ,EACf2D,GAeT,SAAS2nJ,IACP,IAAI1xH,EAAOxK,IACPm8H,EAAaN,EAAarxH,GAM9B,GAJAywH,EAAW7zI,UACX8zI,EAAW5pJ,KACX+pJ,EAAe7wH,EAEX2xH,EAAY,CACd,QAAgBvrJ,IAAZwqJ,EACF,OAAOO,EAAYN,GAErB,GAAIG,EAIF,OAFAjxE,aAAa6wE,GACbA,EAAU5wE,WAAWoxE,EAAcvxE,GAC5BqxE,EAAWL,GAMtB,YAHgBzqJ,IAAZwqJ,IACFA,EAAU5wE,WAAWoxE,EAAcvxE,IAE9B91E,EAIT,OA3GA81E,EAAO0wE,EAAS1wE,IAAS,EACrBjiE,EAAS3T,KACX8mJ,IAAY9mJ,EAAQ8mJ,QAEpBJ,GADAK,EAAS,YAAa/mJ,GACH8iJ,EAAUwD,EAAStmJ,EAAQ0mJ,UAAY,EAAG9wE,GAAQ8wE,EACrEM,EAAW,aAAchnJ,IAAYA,EAAQgnJ,SAAWA,GAoG1DS,EAAUtzE,OApCV,gBACkBh4E,IAAZwqJ,GACF7wE,aAAa6wE,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUxqJ,GAgCjDsrJ,EAAUthJ,MA7BV,WACE,YAAmBhK,IAAZwqJ,EAAwB7mJ,EAASwnJ,EAAa/7H,MA6BhDk8H,I,8BC3LT,YAOA,IAAIE,EAAU,WACV,GAAmB,oBAARnzE,IACP,OAAOA,IASX,SAASozE,EAASzzI,EAAKnQ,GACnB,IAAIlE,GAAU,EAQd,OAPAqU,EAAIX,MAAK,SAAUkrI,EAAO3jH,GACtB,OAAI2jH,EAAM,KAAO16I,IACblE,EAASi7B,GACF,MAIRj7B,EAEX,OAAsB,WAClB,SAAS+nJ,IACLhrJ,KAAKirJ,YAAc,GAuEvB,OArEArvJ,OAAOoC,eAAegtJ,EAAQnvJ,UAAW,OAAQ,CAI7CgC,IAAK,WACD,OAAOmC,KAAKirJ,YAAYzrJ,QAE5B5B,YAAY,EACZD,cAAc,IAMlBqtJ,EAAQnvJ,UAAUgC,IAAM,SAAUsJ,GAC9B,IAAI+2B,EAAQ6sH,EAAS/qJ,KAAKirJ,YAAa9jJ,GACnC06I,EAAQ7hJ,KAAKirJ,YAAY/sH,GAC7B,OAAO2jH,GAASA,EAAM,IAO1BmJ,EAAQnvJ,UAAUiC,IAAM,SAAUqJ,EAAKpJ,GACnC,IAAImgC,EAAQ6sH,EAAS/qJ,KAAKirJ,YAAa9jJ,IAClC+2B,EACDl+B,KAAKirJ,YAAY/sH,GAAO,GAAKngC,EAG7BiC,KAAKirJ,YAAY5tJ,KAAK,CAAC8J,EAAKpJ,KAOpCitJ,EAAQnvJ,UAAU23I,OAAS,SAAUrsI,GACjC,IAAIy/B,EAAU5mC,KAAKirJ,YACf/sH,EAAQ6sH,EAASnkH,EAASz/B,IACzB+2B,GACD0I,EAAQ9mC,OAAOo+B,EAAO,IAO9B8sH,EAAQnvJ,UAAU8qC,IAAM,SAAUx/B,GAC9B,SAAU4jJ,EAAS/qJ,KAAKirJ,YAAa9jJ,IAKzC6jJ,EAAQnvJ,UAAUsxI,MAAQ,WACtBntI,KAAKirJ,YAAYnrJ,OAAO,IAO5BkrJ,EAAQnvJ,UAAU4J,QAAU,SAAUpG,EAAU6rJ,QAChC,IAARA,IAAkBA,EAAM,MAC5B,IAAK,IAAIp3I,EAAK,EAAG6N,EAAK3hB,KAAKirJ,YAAan3I,EAAK6N,EAAGniB,OAAQsU,IAAM,CAC1D,IAAI+tI,EAAQlgI,EAAG7N,GACfzU,EAAStD,KAAKmvJ,EAAKrJ,EAAM,GAAIA,EAAM,MAGpCmJ,EAzEU,GAtBX,GAsGV7tC,EAA8B,oBAAX7hH,QAA8C,oBAAbmH,UAA4BnH,OAAOmH,WAAaA,SAGpG0oJ,OACsB,IAAXv5D,GAA0BA,EAAOt1E,OAASA,KAC1Cs1E,EAES,oBAATnY,MAAwBA,KAAKn9D,OAASA,KACtCm9D,KAEW,oBAAXn+E,QAA0BA,OAAOghB,OAASA,KAC1ChhB,OAGJsgB,SAAS,cAATA,GASPwvI,EACqC,mBAA1BxxC,sBAIAA,sBAAsBxyG,KAAK+jJ,GAE/B,SAAU9rJ,GAAY,OAAO65E,YAAW,WAAc,OAAO75E,EAASgY,KAAKqX,SAAW,IAAO,KAqExG,IAGI28H,EAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,QAAS,SAAU,OAAQ,UAE/EC,EAAwD,oBAArBC,iBAInCC,EAA0C,WAM1C,SAASA,IAMLxrJ,KAAKyrJ,YAAa,EAMlBzrJ,KAAK0rJ,sBAAuB,EAM5B1rJ,KAAK2rJ,mBAAqB,KAM1B3rJ,KAAK4rJ,WAAa,GAClB5rJ,KAAK6rJ,iBAAmB7rJ,KAAK6rJ,iBAAiBzkJ,KAAKpH,MACnDA,KAAK0sI,QAjGb,SAAmBrtI,EAAUysJ,GACzB,IAAIC,GAAc,EAAOC,GAAe,EAAOjC,EAAe,EAO9D,SAASkC,IACDF,IACAA,GAAc,EACd1sJ,KAEA2sJ,GACAE,IAUR,SAASC,IACLf,EAAwBa,GAO5B,SAASC,IACL,IAAIE,EAAY/0I,KAAKqX,MACrB,GAAIq9H,EAAa,CAEb,GAAIK,EAAYrC,EA7CN,EA8CN,OAMJiC,GAAe,OAGfD,GAAc,EACdC,GAAe,EACf9yE,WAAWizE,EAAiBL,GAEhC/B,EAAeqC,EAEnB,OAAOF,EA6CYvqG,CAAS3hD,KAAK0sI,QAAQtlI,KAAKpH,MAzC9B,IAyMhB,OAxJAwrJ,EAAyB3vJ,UAAUwwJ,YAAc,SAAUjtB,IACjDp/H,KAAK4rJ,WAAWxuJ,QAAQgiI,IAC1Bp/H,KAAK4rJ,WAAWvuJ,KAAK+hI,GAGpBp/H,KAAKyrJ,YACNzrJ,KAAKssJ,YASbd,EAAyB3vJ,UAAU0wJ,eAAiB,SAAUntB,GAC1D,IAAIotB,EAAYxsJ,KAAK4rJ,WACjB1tH,EAAQsuH,EAAUpvJ,QAAQgiI,IAEzBlhG,GACDsuH,EAAU1sJ,OAAOo+B,EAAO,IAGvBsuH,EAAUhtJ,QAAUQ,KAAKyrJ,YAC1BzrJ,KAAKysJ,eASbjB,EAAyB3vJ,UAAU6wI,QAAU,WACnB1sI,KAAK0sJ,oBAIvB1sJ,KAAK0sI,WAWb8e,EAAyB3vJ,UAAU6wJ,iBAAmB,WAElD,IAAIC,EAAkB3sJ,KAAK4rJ,WAAW91H,QAAO,SAAUspG,GACnD,OAAOA,EAASwtB,eAAgBxtB,EAASytB,eAQ7C,OADAF,EAAgBlnJ,SAAQ,SAAU25H,GAAY,OAAOA,EAAS0tB,qBACvDH,EAAgBntJ,OAAS,GAQpCgsJ,EAAyB3vJ,UAAUywJ,SAAW,WAGrCnvC,IAAan9G,KAAKyrJ,aAMvBhpJ,SAASmiC,iBAAiB,gBAAiB5kC,KAAK6rJ,kBAChDvwJ,OAAOspC,iBAAiB,SAAU5kC,KAAK0sI,SACnC4e,GACAtrJ,KAAK2rJ,mBAAqB,IAAIJ,iBAAiBvrJ,KAAK0sI,SACpD1sI,KAAK2rJ,mBAAmBtsB,QAAQ58H,SAAU,CACtCg4F,YAAY,EACZsyD,WAAW,EACXC,eAAe,EACfC,SAAS,MAIbxqJ,SAASmiC,iBAAiB,qBAAsB5kC,KAAK0sI,SACrD1sI,KAAK0rJ,sBAAuB,GAEhC1rJ,KAAKyrJ,YAAa,IAQtBD,EAAyB3vJ,UAAU4wJ,YAAc,WAGxCtvC,GAAcn9G,KAAKyrJ,aAGxBhpJ,SAASm7D,oBAAoB,gBAAiB59D,KAAK6rJ,kBACnDvwJ,OAAOsiE,oBAAoB,SAAU59D,KAAK0sI,SACtC1sI,KAAK2rJ,oBACL3rJ,KAAK2rJ,mBAAmBuB,aAExBltJ,KAAK0rJ,sBACLjpJ,SAASm7D,oBAAoB,qBAAsB59D,KAAK0sI,SAE5D1sI,KAAK2rJ,mBAAqB,KAC1B3rJ,KAAK0rJ,sBAAuB,EAC5B1rJ,KAAKyrJ,YAAa,IAStBD,EAAyB3vJ,UAAUgwJ,iBAAmB,SAAUlqI,GAC5D,IAAIq/C,EAAKr/C,EAAGwrI,aAAcA,OAAsB,IAAPnsF,EAAgB,GAAKA,EAEvCqqF,EAAe10I,MAAK,SAAUxP,GACjD,SAAUgmJ,EAAa/vJ,QAAQ+J,OAG/BnH,KAAK0sI,WAQb8e,EAAyB4B,YAAc,WAInC,OAHKptJ,KAAKqtJ,YACNrtJ,KAAKqtJ,UAAY,IAAI7B,GAElBxrJ,KAAKqtJ,WAOhB7B,EAAyB6B,UAAY,KAC9B7B,EAhMkC,GA0MzC8B,EAAqB,SAAWtpH,EAAQhvB,GACxC,IAAK,IAAIlB,EAAK,EAAG6N,EAAK/lB,OAAO4J,KAAKwP,GAAQlB,EAAK6N,EAAGniB,OAAQsU,IAAM,CAC5D,IAAI3M,EAAMwa,EAAG7N,GACblY,OAAOoC,eAAegmC,EAAQ78B,EAAK,CAC/BpJ,MAAOiX,EAAM7N,GACbvJ,YAAY,EACZkqC,UAAU,EACVnqC,cAAc,IAGtB,OAAOqmC,GASPupH,EAAc,SAAWvpH,GAOzB,OAHkBA,GAAUA,EAAOwpH,eAAiBxpH,EAAOwpH,cAAcC,aAGnDtC,GAItBuC,EAAYC,EAAe,EAAG,EAAG,EAAG,GAOxC,SAASC,EAAQ7vJ,GACb,OAAO20B,WAAW30B,IAAU,EAShC,SAAS8vJ,EAAej/I,GAEpB,IADA,IAAIk/I,EAAY,GACPh6I,EAAK,EAAGA,EAAKgC,UAAUtW,OAAQsU,IACpCg6I,EAAUh6I,EAAK,GAAKgC,UAAUhC,GAElC,OAAOg6I,EAAUzvF,QAAO,SAAUrc,EAAMgpB,GAEpC,OAAOhpB,EAAO4rG,EADFh/I,EAAO,UAAYo8D,EAAW,aAE3C,GAmCP,SAAS+iF,EAA0B/pH,GAG/B,IAAI0c,EAAc1c,EAAO0c,YAAaH,EAAevc,EAAOuc,aAS5D,IAAKG,IAAgBH,EACjB,OAAOmtG,EAEX,IAAI9+I,EAAS2+I,EAAYvpH,GAAQk5C,iBAAiBl5C,GAC9CgqH,EA3CR,SAAqBp/I,GAGjB,IAFA,IACIo/I,EAAW,GACNl6I,EAAK,EAAGm6I,EAFD,CAAC,MAAO,QAAS,SAAU,QAEDn6I,EAAKm6I,EAAYzuJ,OAAQsU,IAAM,CACrE,IAAIk3D,EAAWijF,EAAYn6I,GACvB/V,EAAQ6Q,EAAO,WAAao8D,GAChCgjF,EAAShjF,GAAY4iF,EAAQ7vJ,GAEjC,OAAOiwJ,EAmCQE,CAAYt/I,GACvBu/I,EAAWH,EAAS3lH,KAAO2lH,EAASzkH,MACpC6kH,EAAUJ,EAAS7lH,IAAM6lH,EAASxkH,OAKlCL,EAAQykH,EAAQh/I,EAAOu6B,OAAQC,EAASwkH,EAAQh/I,EAAOw6B,QAqB3D,GAlByB,eAArBx6B,EAAOy/I,YAOH/xI,KAAK6W,MAAMgW,EAAQglH,KAAcztG,IACjCvX,GAAS0kH,EAAej/I,EAAQ,OAAQ,SAAWu/I,GAEnD7xI,KAAK6W,MAAMiW,EAASglH,KAAa7tG,IACjCnX,GAAUykH,EAAej/I,EAAQ,MAAO,UAAYw/I,KAoDhE,SAA2BpqH,GACvB,OAAOA,IAAWupH,EAAYvpH,GAAQvhC,SAAS69C,gBA9C1CguG,CAAkBtqH,GAAS,CAK5B,IAAIuqH,EAAgBjyI,KAAK6W,MAAMgW,EAAQglH,GAAYztG,EAC/C8tG,EAAiBlyI,KAAK6W,MAAMiW,EAASglH,GAAW7tG,EAMpB,IAA5BjkC,KAAKC,IAAIgyI,KACTplH,GAASolH,GAEoB,IAA7BjyI,KAAKC,IAAIiyI,KACTplH,GAAUolH,GAGlB,OAAOb,EAAeK,EAAS3lH,KAAM2lH,EAAS7lH,IAAKgB,EAAOC,GAQ9D,IAAIgiE,EAGkC,oBAAvBqjD,mBACA,SAAUzqH,GAAU,OAAOA,aAAkBupH,EAAYvpH,GAAQyqH,oBAKrE,SAAUzqH,GAAU,OAAQA,aAAkBupH,EAAYvpH,GAAQknE,YAC3C,mBAAnBlnE,EAAO0qH,SAiBtB,SAASC,EAAe3qH,GACpB,OAAKm5E,EAGD/R,EAAqBpnE,GAhH7B,SAA2BA,GACvB,IAAI4qH,EAAO5qH,EAAO0qH,UAClB,OAAOf,EAAe,EAAG,EAAGiB,EAAKzlH,MAAOylH,EAAKxlH,QA+GlCylH,CAAkB7qH,GAEtB+pH,EAA0B/pH,GALtB0pH,EAuCf,SAASC,EAAetiJ,EAAGU,EAAGo9B,EAAOC,GACjC,MAAO,CAAE/9B,EAAGA,EAAGU,EAAGA,EAAGo9B,MAAOA,EAAOC,OAAQA,GAO/C,IAAI0lH,EAAmC,WAMnC,SAASA,EAAkB9qH,GAMvBhkC,KAAK+uJ,eAAiB,EAMtB/uJ,KAAKgvJ,gBAAkB,EAMvBhvJ,KAAKivJ,aAAetB,EAAe,EAAG,EAAG,EAAG,GAC5C3tJ,KAAKgkC,OAASA,EA0BlB,OAlBA8qH,EAAkBjzJ,UAAUshI,SAAW,WACnC,IAAI34B,EAAOmqD,EAAe3uJ,KAAKgkC,QAE/B,OADAhkC,KAAKivJ,aAAezqD,EACZA,EAAKr7D,QAAUnpC,KAAK+uJ,gBACxBvqD,EAAKp7D,SAAWppC,KAAKgvJ,iBAQ7BF,EAAkBjzJ,UAAUqzJ,cAAgB,WACxC,IAAI1qD,EAAOxkG,KAAKivJ,aAGhB,OAFAjvJ,KAAK+uJ,eAAiBvqD,EAAKr7D,MAC3BnpC,KAAKgvJ,gBAAkBxqD,EAAKp7D,OACrBo7D,GAEJsqD,EAnD2B,GAsDlCK,EAOA,SAA6BnrH,EAAQorH,GACjC,IA/FoBztI,EACpBtW,EAAUU,EAAUo9B,EAAkBC,EAEtCimH,EACA7qD,EA2FI8qD,GA9FJjkJ,GADoBsW,EA+FiBytI,GA9F9B/jJ,EAAGU,EAAI4V,EAAG5V,EAAGo9B,EAAQxnB,EAAGwnB,MAAOC,EAASznB,EAAGynB,OAElDimH,EAAoC,oBAApBE,gBAAkCA,gBAAkB3zJ,OACpE4oG,EAAO5oG,OAAOsL,OAAOmoJ,EAAOxzJ,WAEhCyxJ,EAAmB9oD,EAAM,CACrBn5F,EAAGA,EAAGU,EAAGA,EAAGo9B,MAAOA,EAAOC,OAAQA,EAClCjB,IAAKp8B,EACLw9B,MAAOl+B,EAAI89B,EACXK,OAAQJ,EAASr9B,EACjBs8B,KAAMh9B,IAEHm5F,GAyFH8oD,EAAmBttJ,KAAM,CAAEgkC,OAAQA,EAAQsrH,YAAaA,KAK5DE,EAAmC,WAWnC,SAASA,EAAkBnwJ,EAAUowJ,EAAYC,GAc7C,GAPA1vJ,KAAK2vJ,oBAAsB,GAM3B3vJ,KAAK4vJ,cAAgB,IAAI9E,EACD,mBAAbzrJ,EACP,MAAM,IAAI++F,UAAU,2DAExBp+F,KAAK6vJ,UAAYxwJ,EACjBW,KAAK8vJ,YAAcL,EACnBzvJ,KAAK+vJ,aAAeL,EAoHxB,OA5GAF,EAAkB3zJ,UAAUwjI,QAAU,SAAUr7F,GAC5C,IAAKluB,UAAUtW,OACX,MAAM,IAAI4+F,UAAU,4CAGxB,GAAuB,oBAAZC,SAA6BA,mBAAmBziG,OAA3D,CAGA,KAAMooC,aAAkBupH,EAAYvpH,GAAQq6D,SACxC,MAAM,IAAID,UAAU,yCAExB,IAAI4xD,EAAehwJ,KAAK4vJ,cAEpBI,EAAarpH,IAAI3C,KAGrBgsH,EAAalyJ,IAAIkmC,EAAQ,IAAI8qH,EAAkB9qH,IAC/ChkC,KAAK8vJ,YAAYzD,YAAYrsJ,MAE7BA,KAAK8vJ,YAAYpjB,aAQrB8iB,EAAkB3zJ,UAAU4jI,UAAY,SAAUz7F,GAC9C,IAAKluB,UAAUtW,OACX,MAAM,IAAI4+F,UAAU,4CAGxB,GAAuB,oBAAZC,SAA6BA,mBAAmBziG,OAA3D,CAGA,KAAMooC,aAAkBupH,EAAYvpH,GAAQq6D,SACxC,MAAM,IAAID,UAAU,yCAExB,IAAI4xD,EAAehwJ,KAAK4vJ,cAEnBI,EAAarpH,IAAI3C,KAGtBgsH,EAAaxc,OAAOxvG,GACfgsH,EAAahuG,MACdhiD,KAAK8vJ,YAAYvD,eAAevsJ,SAQxCwvJ,EAAkB3zJ,UAAUqxJ,WAAa,WACrCltJ,KAAKiwJ,cACLjwJ,KAAK4vJ,cAAcziB,QACnBntI,KAAK8vJ,YAAYvD,eAAevsJ,OAQpCwvJ,EAAkB3zJ,UAAU+wJ,aAAe,WACvC,IAAIsD,EAAQlwJ,KACZA,KAAKiwJ,cACLjwJ,KAAK4vJ,cAAcnqJ,SAAQ,SAAU0qJ,GAC7BA,EAAYhzB,YACZ+yB,EAAMP,oBAAoBtyJ,KAAK8yJ,OAU3CX,EAAkB3zJ,UAAUixJ,gBAAkB,WAE1C,GAAK9sJ,KAAK6sJ,YAAV,CAGA,IAAI3B,EAAMlrJ,KAAK+vJ,aAEXnpH,EAAU5mC,KAAK2vJ,oBAAoB/rJ,KAAI,SAAUusJ,GACjD,OAAO,IAAIhB,EAAoBgB,EAAYnsH,OAAQmsH,EAAYjB,oBAEnElvJ,KAAK6vJ,UAAU9zJ,KAAKmvJ,EAAKtkH,EAASskH,GAClClrJ,KAAKiwJ,gBAOTT,EAAkB3zJ,UAAUo0J,YAAc,WACtCjwJ,KAAK2vJ,oBAAoB7vJ,OAAO,IAOpC0vJ,EAAkB3zJ,UAAUgxJ,UAAY,WACpC,OAAO7sJ,KAAK2vJ,oBAAoBnwJ,OAAS,GAEtCgwJ,EAlJ2B,GAwJlChD,EAA+B,oBAAZ4D,QAA0B,IAAIA,QAAY,IAAItF,EAKjEuF,EAOA,SAASA,EAAehxJ,GACpB,KAAMW,gBAAgBqwJ,GAClB,MAAM,IAAIjyD,UAAU,sCAExB,IAAKtoF,UAAUtW,OACX,MAAM,IAAI4+F,UAAU,4CAExB,IAAIqxD,EAAajE,EAAyB4B,cACtChuB,EAAW,IAAIowB,EAAkBnwJ,EAAUowJ,EAAYzvJ,MAC3DwsJ,EAAU1uJ,IAAIkC,KAAMo/H,IAK5B,CACI,UACA,YACA,cACF35H,SAAQ,SAAUw2F,GAChBo0D,EAAex0J,UAAUogG,GAAU,WAC/B,IAAIt6E,EACJ,OAAQA,EAAK6qI,EAAU3uJ,IAAImC,OAAOi8F,GAAQ37F,MAAMqhB,EAAI7L,eAI5D,IAAIooB,OAEuC,IAA5BitH,EAASkF,eACTlF,EAASkF,eAEbA,EAGI,Q,q3BCx5BTC,EAAa,SAAC,GAAuB,IAArBtsJ,EAAqB,EAArBA,KAASgR,EAAY,OAE1Bu7I,EAA8Bv7I,EAArCm0B,MAAwBqnH,EAAax7I,EAArBo0B,OAClBqnH,EAAU55G,YAAc05G,GACxBG,EAAW75G,YAAc25G,GAE/B,OACE,YAAC,IAAD,GACE/6I,IAAK4gE,KACDrhE,EAFN,CAGEhR,KAAMA,EACNmlC,MAAOsnH,EACPrnH,OAAQsnH,MAKdJ,EAAW1nH,UAAYyP,IACvBi4G,EAAWz1F,aAAe3vB,I,UAEXolH,EAAA,O,6FApBTA,E,grCCDAK,EAAc,SAAC,GAAD,IAAG3sJ,EAAH,EAAGA,KAASgR,EAAZ,cAClB,YAAC,IAAD,GACES,IAAK0gE,KACDnhE,EAFN,CAGEhR,KAAMA,MAIV2sJ,EAAY/nH,UAAYuP,IACxBw4G,EAAY91F,aAAezwB,I,UAEZumH,EAAA,O,6FAXTA,E,mrCCAAC,EAAa,SAAC,GAAD,IAAG5sJ,EAAH,EAAGA,KAASgR,EAAZ,cACjB,YAAC,IAAD,GACES,IAAK2gE,KACDphE,EAFN,CAGEhR,KAAMA,MAIV4sJ,EAAWhoH,UAAYwP,IACvBw4G,EAAW/1F,aAAe5vB,I,UAEX2lH,EAAA,O,6FAXTA,E,ioBCEOC,EAAoB,SAAC,GAAwE,EAAtEjlH,KAAsE,EAAhEC,KAAgE,IAA1DgB,EAA0D,EAA1DA,MAAOgO,EAAmD,EAAnDA,YAAa3O,EAAsC,EAAtCA,YAAaF,EAAyB,EAAzBA,SAAUkL,EAAe,EAAfA,SACzF,GAAoB,aAAhBhL,EACF,OAAO2O,EAAYj3C,KAAI,SAAC8C,EAAGnH,GACzB,IAAMuxJ,EAAarnE,YAAoB/iF,EAAG,CACxC6nE,WAAY,oBACZr3B,SAAUA,IACT9N,OACGisF,EAAwB,GAAby7B,EACX17B,EAAyB,GAAb07B,EACZC,EAAwB,GAAbD,EACXE,EAAmB,GAAVD,EAEf,GAAiB,SAAb/kH,EAAqB,CACvB,IAAMilH,EAAwB,IAAbH,EACXI,EAAwB,IAAbJ,EACjB,OACE,YAAC,IAAD,CAAO3pJ,IAAKT,EAAGyI,UAAU,UACvB,YAAC,IAAD,CACE65B,KAAM6D,EAAMnmC,GACZ2E,EAAG,EACHU,EAAGxM,GAAKuxJ,EAAaG,GACrB9nH,MAAOksF,EACPjsF,OAAQgsF,IAEV,YAAC,IAAD,CAAO/pH,EAAG6lJ,EAASnlJ,EAAIxM,GAAKuxJ,EAAaG,IAAa77B,EAAY67B,GAAU5yG,SAAU33C,KAI5F,GAAiB,WAAbslC,EAAuB,CACzB,IAAMilH,EAAwB,IAAbH,EACXI,EAAwB,EAAbJ,EACjB,OACE,YAAC,IAAD,CAAO3pJ,IAAKT,EAAGyI,UAAU,UACvB,YAAC,IAAD,CACE65B,KAAM6D,EAAMnmC,GACZ2P,GAAI26I,EACJt7B,GAAIn2H,GAAKuxJ,EAAaG,GAAWD,EACjCnqJ,EAAGmqJ,IAEL,YAAC,IAAD,CAAO3lJ,EAAG6lJ,EAASnlJ,EAAIxM,GAAKuxJ,EAAaG,IAAaF,EAAWE,GAAU5yG,SAAU33C,KAI3F,GAAiB,SAAbslC,EAAqB,CACvB,IAAMilH,EAAwB,IAAbH,EACXI,EAAwB,IAAbJ,EACjB,OACE,YAAC,IAAD,CAAO3pJ,IAAKT,EAAGyI,UAAU,UACvB,YAAC,IAAD,CACEmqC,OAAQzM,EAAMnmC,GACds7D,GAAI,EACJC,GAAI1iE,GAAKuxJ,EAAaG,GAAwB,GAAZ77B,EAClClzD,GAAImzD,EACJlzD,GAAI5iE,GAAKuxJ,EAAaG,GAAwB,GAAZ77B,IAEpC,YAAC,IAAD,CAAO/pH,EAAG6lJ,EAASnlJ,EAAIxM,GAAKuxJ,EAAaG,IAAa77B,EAAY67B,GAAU5yG,SAAU33C,SAShG,GAAoB,eAAhBwlC,EAA8B,CAChC,IACIilH,EADAC,EAAc,EAElB,OAAOv2G,EAAYj3C,KAAI,SAAC8C,EAAGnH,GACzB,IAAMuxJ,EAAarnE,YAAoB/iF,EAAG,CACxC6nE,WAAY,oBACZr3B,SAAUA,IAENm+E,EAA+B,GAApBy7B,EAAW1nH,OACtBgsF,EAAgC,GAApB07B,EAAW1nH,OACvB2nH,EAA+B,GAApBD,EAAW1nH,OACtB4nH,EAAoB,GAAXD,EAEf,GAAiB,SAAb/kH,EAAqB,CACvB,IAAMklH,EAAsB,IAAX77B,EACX47B,EAA+B,IAApBH,EAAW1nH,OACtBioH,EAAOD,EAGb,OAFAD,EAAaL,EAAW3nH,MACxBioH,EAAcA,EAAcF,EAAUC,EAAuB,GAAVD,EAEjD,YAAC,IAAD,CAAO/pJ,IAAKT,EAAGyI,UAAU,UACvB,YAAC,IAAD,CACE65B,KAAM6D,EAAMnmC,GACZ2E,EAAGgmJ,EACHtlJ,EAAG,EACHo9B,MAAOksF,EACPjsF,OAAQgsF,IAEV,YAAC,IAAD,CAAO/pH,EAAGgmJ,EAAOH,EAASnlJ,EAAGqpH,EAAY67B,EAAS5yG,SAAU33C,KAIlE,GAAiB,WAAbslC,EAAuB,CACzB,IAAMklH,EAAsB,IAAXH,EACXE,EAA+B,IAApBH,EAAW1nH,OACtBioH,EAAOD,EAGb,OAFAD,EAAaL,EAAW3nH,MACxBioH,EAAcA,EAAcF,EAAUC,EAAsB,IAATD,EAEjD,YAAC,IAAD,CAAO/pJ,IAAKT,EAAGyI,UAAU,UACvB,YAAC,IAAD,CAAQ65B,KAAM6D,EAAMnmC,GAAI2P,GAAIg7I,EAAM37B,GAAIs7B,EAAQnqJ,EAAGmqJ,IACjD,YAAC,IAAD,CAAO3lJ,EAAGgmJ,EAAOH,EAASnlJ,EAAGqpH,EAAY67B,EAAS5yG,SAAU33C,KAIlE,GAAiB,SAAbslC,EAAqB,CACvB,IAAMklH,EAAsB,IAAX77B,EACX47B,EAA+B,IAApBH,EAAW1nH,OACtBioH,EAAOD,EAGb,OAFAD,EAAaL,EAAW3nH,MACxBioH,EAAcA,EAAcF,EAAUC,EAAuB,GAAVD,EAEjD,YAAC,IAAD,CAAO/pJ,IAAKT,EAAGyI,UAAU,UACvB,YAAC,IAAD,CACEmqC,OAAQzM,EAAMnmC,GACds7D,GAAIqvF,EACJpvF,GAAkB,IAAZmzD,EACNlzD,GAAImvF,EAAOh8B,EACXlzD,GAAiB,IAAZizD,IAEP,YAAC,IAAD,CAAO/pH,EAAGgmJ,EAAOH,EAASnlJ,EAAGqpH,EAAY67B,EAAS5yG,SAAU33C,SAOtE,OAAO,MAETmqJ,EAAkBjoH,UAAY,CAC5BiE,MAAO2K,IAAU1iC,KAAKqlC,WACtBU,YAAarD,IAAUj6B,MAAM48B,WAC7BjO,YAAasL,IAAU9jC,OAAOymC,WAC9BnO,SAAUwL,IAAU9jC,OAAOymC,WAC3BjD,SAAUM,IAAUt7B,OAAOi+B,WAC3BkE,SAAU7G,IAAU9jC,Q,UAGPm9I,EAAA,O,6FA9IFA,E,wpBCDPS,EAAkB,SAAC,GAAoE,IAAlEp6G,EAAkE,EAAlEA,SAAU/N,EAAwD,EAAxDA,MAAO+C,EAAiD,EAAjDA,YAAa9C,EAAoC,EAApCA,OAAQyD,EAA4B,EAA5BA,MAAOd,EAAqB,EAArBA,OAAQI,EAAa,EAAbA,OACxEolH,EAAc,CAAC1kH,EAAM2W,SAAS,GAAI3W,EAAM2W,SAAS3W,EAAM2W,SAAShkD,OAAS,IACzEgyJ,EAAQ1N,YAAY,CACxBtgG,OAAQ,CAAC+tG,EAAY,GAAIA,EAAY,MAEjC12G,EAAchO,EAAM2W,SAE1B,MAAoB,eAAhBtX,GACEH,GACFylH,EAAMv0G,MAAM,CAAC9T,EAAO,IACpB0R,EAAYgJ,WAEZ2tG,EAAMv0G,MAAM,CAAC,EAAG9T,IAEX0R,EAAYj3C,KAAI,SAAC8C,EAAGnH,GACzB,GAAIA,EAAIs7C,EAAYr7C,OAAS,EAAG,CAC9B,IAAM61H,EAAWm8B,EAAM32G,EAAYt7C,EAAI,IAAMiyJ,EAAM9qJ,GACnD,OACE,iBAAGS,IAAKT,EAAGyI,UAAU,QACnB,YAAC,IAAD,CAAK9D,EAAGmmJ,EAAM9qJ,GAAIqF,EAAG,EAAGo9B,MAAOksF,EAAUjsF,OAAQ8N,EAAW,EAAGlO,KAAM6D,EAAMnmC,KAC3E,YAAC,IAAD,CAAMs7D,GAAIwvF,EAAM9qJ,GAAIu7D,GAAI,EAAGC,GAAIsvF,EAAM9qJ,GAAIy7D,GAAIjrB,IAC7C,YAAC,IAAD,CAAO7rC,EAAGmmJ,EAAM9qJ,GAAIqF,EAAc,EAAXmrC,EAAcmH,SAAU33C,EAAG43C,WAAW,YAInE,GAAI/+C,EAAI,IAAMs7C,EAAYr7C,OAAQ,CAEhC,GAAsB,iBAAX2sC,EACT,OACE,iBAAGhlC,IAAKT,EAAGyI,UAAU,QACnB,YAAC,IAAD,CAAM6yD,GAAIwvF,EAAM9qJ,GAAIu7D,GAAI,EAAGC,GAAIsvF,EAAM9qJ,GAAIy7D,GAAIjrB,IAC7C,YAAC,IAAD,CAAO7rC,EAAGmmJ,EAAM9qJ,GAAIqF,EAAc,EAAXmrC,EAAcmH,SAAU33C,EAAG43C,WAAW,YAInE,GAAsB,iBAAXnS,EACT,OACE,YAAC,IAAD,CAAOhlC,IAAKT,EAAGyI,UAAU,QACvB,YAAC,IAAD,CAAM6yD,GAAIwvF,EAAM9qJ,GAAIu7D,GAAI,EAAGC,GAAIsvF,EAAM9qJ,GAAIy7D,GAAIjrB,IAC7C,YAAC,IAAD,CAAO7rC,EAAGmmJ,EAAM9qJ,GAAIqF,EAAc,EAAXmrC,EAAcmH,SAAU33C,EAAG43C,WAAW,WAC7D,YAAC,IAAD,CACEnvC,UAAU,OACVsiJ,MAAO,EACPC,OAAQ,GACR1vG,KAAM9K,EAAW,IACjB43F,OAAQ,CAAEzjI,EAAGmmJ,EAAMrlH,GAASpgC,GAAImrC,EAAW,KAE7C,YAAC,IAAD,CACE7rC,EAAGmmJ,EAAMrlH,GACTpgC,GAAImrC,EACJmH,SAAQ,iBAAYlS,GACpBmS,WAAW,iBAUL,aAAhBpS,GACEH,GACFylH,EAAMv0G,MAAM,CAAC7T,EAAQ,IACrByR,EAAYgJ,WAEZ2tG,EAAMv0G,MAAM,CAAC,EAAG7T,IAEXyR,EAAYj3C,KAAI,SAAC8C,EAAGnH,GACzB,GAAIA,EAAIs7C,EAAYr7C,OAAS,EAAG,CAC9B,IAAM41H,EAAYo8B,EAAM32G,EAAYt7C,EAAI,IAAMiyJ,EAAM9qJ,GACpD,OACE,YAAC,IAAD,CAAOS,IAAKT,EAAGyI,UAAU,QACvB,YAAC,IAAD,CACE9D,EAAc,EAAX6rC,EACHnrC,EAAGylJ,EAAM9qJ,GACTyiC,MAAO+N,EAAW,EAClB9N,OAAQgsF,EACRpsF,KAAM6D,EAAMnmC,KAEd,YAAC,IAAD,CAAO2E,EAAc,IAAX6rC,EAAgBnrC,EAAGylJ,EAAM9qJ,GAAK,EAAG23C,SAAU33C,EAAG43C,WAAW,QACnE,YAAC,IAAD,CAAM0jB,GAAe,IAAX9qB,EAAgB+qB,GAAIuvF,EAAM9qJ,GAAIw7D,GAAe,IAAXhrB,EAAgBirB,GAAIqvF,EAAM9qJ,MAI5E,GAAInH,EAAI,IAAMs7C,EAAYr7C,OAAQ,CAChC,GAAsB,iBAAX2sC,EACT,OACE,YAAC,IAAD,CAAOhlC,IAAKT,EAAGyI,UAAU,QACvB,YAAC,IAAD,CAAO9D,EAAc,IAAX6rC,EAAgBnrC,EAAGylJ,EAAM9qJ,GAAK,EAAG23C,SAAU33C,EAAG43C,WAAW,QACnE,YAAC,IAAD,CACE0jB,GAAe,IAAX9qB,EACJ+qB,GAAIuvF,EAAM9qJ,GACVw7D,GAAe,IAAXhrB,EACJirB,GAAIqvF,EAAM9qJ,GACV4yC,OAAO,aAKf,GAAsB,iBAAXnN,EACT,OACE,YAAC,IAAD,CAAOhlC,IAAKT,EAAGyI,UAAU,QACvB,YAAC,IAAD,CAAO9D,EAAc,IAAX6rC,EAAgBnrC,EAAGylJ,EAAM9qJ,GAAK,EAAG23C,SAAU33C,EAAG43C,WAAW,QACnE,YAAC,IAAD,CACE0jB,GAAe,IAAX9qB,EACJ+qB,GAAIuvF,EAAM9qJ,GACVw7D,GAAe,IAAXhrB,EACJirB,GAAIqvF,EAAM9qJ,GACV4yC,OAAO,YAET,YAAC,IAAD,CACEnqC,UAAU,OACVsiJ,MAAO,EACPC,OAAQ,GACR1vG,KAAM9K,EAAW,IACjB43F,OAAQ,CAAEzjI,EAAc,EAAX6rC,EAAcnrC,EAAGylJ,EAAMrlH,MAEtC,YAAC,IAAD,CACE9gC,EAAc,IAAX6rC,EACHnrC,EAAGylJ,EAAMrlH,GAAqB,IAAX+K,EACnBmH,SAAQ,iBAAYlS,GACpBmS,WAAW,gBAWlB,MAGTgzG,EAAgB1oH,UAAY,CAC1BmD,OAAQyL,IAAUM,KAClBjL,MAAO2K,IAAU1iC,KAAKqlC,WACtBU,YAAarD,IAAUj6B,MAAM48B,WAC7BjO,YAAasL,IAAU9jC,OAAOymC,WAC9BnO,SAAUwL,IAAU9jC,OAAOymC,WAC3BjD,SAAUM,IAAUt7B,OAAOi+B,WAC3B9uC,EAAGmsC,IAAUt7B,OACbnQ,EAAGyrC,IAAUt7B,OACbitB,MAAOqO,IAAUt7B,OACjBktB,OAAQoO,IAAUt7B,OAClBiwB,OAAQqL,IAAUt7B,Q,UAELo1I,EAAA,O,6FArJTA,E,kpBCCAK,EAAkB,SAAC,GAA4C,IAA1C9kH,EAA0C,EAA1CA,MAAOgO,EAAmC,EAAnCA,YAAa3D,EAAsB,EAAtBA,SAAU9K,EAAY,EAAZA,MACjDmlH,EAAc9xD,YAAO5yD,EAAM2W,UAC3B81C,EAAOz+C,EAAYr7C,OAAS,EAC5BoyJ,EAAcp6B,YAAU,CAC5Bh0E,OAAQ,CAAC,EAAG+tG,EAAY,IACxBt0G,MAAO,CAAC,EAAGpQ,EAAMoQ,QAAQ,MAM3B,OAAOpC,EAAYj3C,KAAI,SAAC8C,EAAGnH,GACzB,OAAU,IAANA,EAEA,YAAC,IAAD,CAAO4H,IAAKT,GACV,YAAC,IAAD,CACE2P,GAPM,EAOQu7I,EAAYL,EAAY,IACtC77B,GATM,GASsC,EAA9Bk8B,EAAYL,EAAY,IAAUK,EAAY/2G,EAAYt7C,IACxEsH,EAAG+qJ,EAAY/2G,EAAYt7C,IAC3BypC,KAAK,SAEP,YAAC,IAAD,CACEg5B,GAbM,EAaQ4vF,EAAYL,EAAY,IACtCtvF,GAfM,GAesC,EAA9B2vF,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,IACxE2iE,GAfM,EAeQ0vF,EAAYL,EAAY,IAAMK,EAAYL,EAAY,IAAM,GAC1EpvF,GAjBM,GAiBsC,EAA9ByvF,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,MAE1E,YAAC,IAAD,CACE8L,EAnBM,EAmBOumJ,EAAYL,EAAY,IAAMK,EAAYL,EAAY,IAAM,GACzExlJ,EArBM,GAqBqC,EAA9B6lJ,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,IAAU,EACjF8+C,SAAQ,cAAS33C,KAEnB,YAAC,IAAD,CAAO2E,EAAG,EAAGU,EAAc,GAAXmrC,EAAgBmH,SAAS,sBACzC,YAAC,IAAD,CAAOhzC,EAAG,EAAGU,EAAc,IAAXmrC,EAAgBmH,SAAUjS,KAI5C7sC,IAAM+5F,GAAQz+C,EAAYt7C,KAAOgyJ,EAAY,GAE7C,YAAC,IAAD,CAAOpqJ,IAAKT,GACV,YAAC,IAAD,CACE2P,GAhCM,EAgCQu7I,EAAYL,EAAY,IACtC77B,GAlCM,GAkCsC,EAA9Bk8B,EAAYL,EAAY,IAAUK,EAAY/2G,EAAYt7C,IACxEsH,EAAG+qJ,EAAY/2G,EAAYt7C,MAE7B,YAAC,IAAD,CACEyiE,GArCM,EAqCQ4vF,EAAYL,EAAY,IACtCtvF,GAvCM,GAuCsC,EAA9B2vF,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,IACxE2iE,GAvCM,EAuCQ0vF,EAAYL,EAAY,IAAMK,EAAYL,EAAY,IAAM,GAC1EpvF,GAzCM,GAyCsC,EAA9ByvF,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,MAE1E,YAAC,IAAD,CACE8L,EA3CM,EA2COumJ,EAAYL,EAAY,IAAMK,EAAYL,EAAY,IAAM,GACzExlJ,EA7CM,GA6CqC,EAA9B6lJ,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,IAAU,EACjF8+C,SAAQ,cAAS33C,MAKrBnH,EAAI,GAAKs7C,EAAYt7C,KAAOgyJ,EAAY,GAExC,YAAC,IAAD,CAAOpqJ,IAAKT,GACV,YAAC,IAAD,CACE2P,GAtDM,EAsDQu7I,EAAYL,EAAY,IACtC77B,GAxDM,GAwDsC,EAA9Bk8B,EAAYL,EAAY,IAAUK,EAAY/2G,EAAYt7C,IACxEsH,EAAG+qJ,EAAY/2G,EAAYt7C,MAE7B,YAAC,IAAD,CACEyiE,GA3DM,EA2DQ4vF,EAAYL,EAAY,IACtCtvF,GA7DM,GA6DsC,EAA9B2vF,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,IACxE2iE,GA7DM,EA6DQ0vF,EAAYL,EAAY,IAAMK,EAAYL,EAAY,IAAM,GAC1EpvF,GA/DM,GA+DsC,EAA9ByvF,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,MAE1E,YAAC,IAAD,CACE8L,EAjEM,EAiEOumJ,EAAYL,EAAY,IAAMK,EAAYL,EAAY,IAAM,GACzExlJ,EAnEM,GAmEqC,EAA9B6lJ,EAAYL,EAAY,IAAwC,EAA9BK,EAAY/2G,EAAYt7C,IAAU,EACjF8+C,SAAU33C,UAjBlB,MAyBJirJ,EAAgB/oH,UAAY,CAC1BiE,MAAO2K,IAAU1iC,KAAKqlC,WACtBU,YAAarD,IAAUj6B,MAAM48B,WAC7BjD,SAAUM,IAAUt7B,OAAOi+B,WAC3B9uC,EAAGmsC,IAAUt7B,OAAOi+B,WACpBpuC,EAAGyrC,IAAUt7B,OAAOi+B,WACpB/N,MAAOoL,IAAU9jC,Q,UAGJi+I,EAAA,O,6FA7FTA,E,gwBCFAp7B,EAAO,SAAC,GAuBR,IAtBJptF,EAsBI,EAtBJA,MACAC,EAqBI,EArBJA,OAGAvoC,GAkBI,EApBJwoC,OAoBI,EAnBJC,QAmBI,EAlBJzoC,MACAg6C,EAiBI,EAjBJA,YAMAnN,GAWI,EAfJC,UAeI,EAdJE,UAcI,EAbJuE,aAaI,EAZJrE,cAYI,EAXJL,QACAE,EAUI,EAVJA,OACA4D,EASI,EATJA,mBACArD,EAQI,EARJA,UACAL,EAOI,EAPJA,WAGAM,GAII,EANJqM,gBAMI,EAJJrM,YACA78B,EAGI,EAHJA,QACAe,EAEI,EAFJA,YACAgoC,EACI,EADJA,YAEA5M,EAAOuP,MAAM,CAAC,EAAG9T,IACjByE,EAAOqP,MAAM,CAAC7T,EAAQ,IAEtB,IAAMyoH,EAAoB,SAAA9zJ,GAAK,OAAI6vC,EAAO4D,EAAqBA,EAAmBzzC,GAASA,IAE3F,OACE,YAAC,IAAD,KACG88C,EAAYj3C,KAAI,SAAA8tC,GAAU,OACzB,YAAC,IAAD,MACI7wC,EAAK6wC,IAAe,IAAI9tC,KAAI,WAA4BrE,GAA5B,EAAG6sC,MAAH,IAAU/gC,EAAV,EAAUA,EAAGU,EAAb,EAAaA,EAAGlF,EAAhB,EAAgBA,EAAGs8C,EAAnB,EAAmBA,MAAnB,OAC5B0uG,EAAkB9lJ,IAAM,EACtB,YAAC,IAAD,CACE5E,IAAG,iBAAYuqC,EAAZ,YAA0BrmC,EAA1B,YAA+BU,EAA/B,YAAoCxM,GACvC4P,UAAU,MACVkH,GAAIq3B,EAAOriC,GACXqqH,GAAIm8B,EAAkB9lJ,GACtBlF,EAAGsnC,EAAUtnC,GACbmiC,KAAMoF,EAAa,OAASN,EAAWqV,GACvC7J,OAAQgB,IAAgBlM,EAAaN,EAAWqV,GAAS,QACzD7wC,YAAaA,GAAe,EAC5BP,YAAaR,IAEb,cAQV2lH,EAAexhD,IAAM2O,KACzBkyC,GACA,SAACjyC,EAAWC,GAAZ,OAA0BtiF,KAAK47C,UAAUymC,KAAeriF,KAAK47C,UAAU0mC,MAGnE4yC,EAAqB,SAAC,GAAqD,IAAnDt8E,EAAmD,EAAnDA,YAAaN,EAAsC,EAAtCA,sBAA0BvlC,EAAY,SAC/E,EAA0D+uE,qBAAWl3B,KAA7D1jB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,OAAQC,EAAvB,EAAuBA,OAAQC,EAA/B,EAA+BA,QAASyrC,EAAxC,EAAwCA,cAElC0P,EAAkB,CACtBC,WAAY1vE,EAAM44B,OAAO5pC,KACzB2gF,aAAc3vE,EAAM44B,OAAO4V,SAC3BohC,YAAa5vE,EAAM44B,OAAOqP,QAC1B5L,WAAYr8B,EAAM04B,OAAO1pC,KACzB6gF,aAAc7vE,EAAM04B,OAAO8V,SAC3BshC,YAAa9vE,EAAM04B,OAAOuP,SAG5B,OACE,YAAC,IAAMqyB,SAAP,KACE,YAAC4nD,EAAD,OACMliH,EADN,CAEEm0B,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTuR,YAAaA,GAET4pC,IAEL1P,GACC,YAACmiD,EAAD,OACMliH,EADN,CAEEm0B,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTuR,YAAa,CAACk6B,GACdjnC,WAAYyM,GAERkqC,M,EAlCR0yC,E,uKA3DAZ,E,6FAsDAW,E,qGAKAC,E,2GA0CS,K,igCCpGTxB,EAAa,SAAC,GAA+C,IAA7CtqH,EAA6C,EAA7CA,EAAGU,EAA0C,EAA1CA,EAAGo9B,EAAuC,EAAvCA,MAAOH,EAAgC,EAAhCA,KAAMsQ,EAA0B,EAA1BA,OAAQhnC,EAAkB,EAAlBA,YACzCsjH,GAAazsF,EAAQ72B,GAAe,EAC1C,OACE,oBACE5L,EAAC,WAAM2E,EAAIuqH,EAAV,YAAuB7pH,EAAI6pH,EAA3B,aAAyCvqH,EAAIuqH,EAA7C,YAA0D7pH,EAAI6pH,EAA9D,aAA4EvqH,EAA5E,YAAiFU,EAChF6pH,EADD,MAED5sF,KAAMA,EACNsQ,OAAQA,EACRhnC,YAAaA,EAAc,EAC3B+7D,cAAc,WAKdjwB,EAAQ,SAAC,GAgBT,IAfJhS,EAeI,EAfJA,MACApD,EAcI,EAdJA,KACAzS,EAaI,EAbJA,OACA2gB,EAYI,EAZJA,SACAoD,EAWI,EAXJA,YACAhoC,EAUI,EAVJA,YACAjH,EASI,EATJA,EACAU,EAQI,EARJA,EACAqhE,EAOI,EAPJA,GACAE,EAMI,EANJA,GACAwkF,EAKI,EALJA,WACAC,EAII,EAJJA,gBACAloE,EAGI,EAHJA,UACAC,EAEI,EAFJA,WACG90E,EACC,SACJ,OACE,YAAC,IAAD,KACGslC,GACC,YAAC,IAAD,KACElO,MAAOA,EACPm1D,YAAahrE,EACburE,cAAe5qD,EACf0qD,UAAWtnD,EACX0nD,YAAa1nD,EACb9L,iBAAkBl8B,EAClB+uF,OAAQ,CAAC,CAAEh2F,IAAGU,MACd01F,QAASr0B,EACTu0B,QAASr0B,EACTh0B,OAAO,eACHtkC,IAGR,YAAC,IAAD,KACEo3B,MAAOA,EACPm1D,YAAahrE,EACburE,cAAe5qD,EACf0qD,UAAW54D,EACXg5D,YAAY,OACZX,OAAQ,CAAC,CAAEh2F,IAAGU,MACd01F,QAASr0B,EACTu0B,QAASr0B,EACTh0B,OAAQw4G,EACRx/I,YAAay/I,GACT/8I,IAEL60E,GACC,YAAC8rC,EAAD,CACEtqH,EAAGA,EACHU,EAAGA,EACHo9B,MAAO2gD,EACP9gD,KAAMA,EACNsQ,OAAQgB,EACRhoC,YAAaA,MAOvB8rC,EAAMyc,aAAe+uB,IAErB,IAAMooE,EAAS,SAAC,GAkBV,IAjBJ7oH,EAiBI,EAjBJA,MACAC,EAgBI,EAhBJA,OAGAvoC,GAaI,EAfJwoC,OAeI,EAdJC,QAcI,EAbJzoC,MACAg6C,EAYI,EAZJA,YACAwqC,EAWI,EAXJA,8BAKA33C,GAMI,EATJC,UASI,EARJE,UAQI,EAPJE,cAOI,EANJL,QACAE,EAKI,EALJA,OACA4D,EAII,EAJJA,mBACA1D,EAGI,EAHJA,WAEAo3G,GACI,EAFJ5qG,YAEI,EADJ4qG,iBAEAx3G,EAAOuP,MAAM,CAAC,EAAG9T,IACjByE,EAAOqP,MAAM,CAAC7T,EAAQ,IAEtB,IAAMyoH,EAAoB,SAAA9zJ,GAAK,OAAI6vC,EAAO4D,EAAqBA,EAAmBzzC,GAASA,IAErFk0J,EAAWp3G,EACdwjB,QAAO,SAACijB,EAAK5vC,GAAN,oBAAyB4vC,GAAzB,IAAiCzgF,EAAK6wC,OAAc,IAC3D9tC,KAAI,gBAAGmI,EAAH,EAAGA,EAAMmmJ,EAAT,gB,iWAAA,EAAuBnmJ,IAAGk4E,UAAW4tE,EAAkB9lJ,IAAOmmJ,MAC/DC,EAAmB9sE,EAAgCN,YAAiBktE,GAAYA,EAEtF,OACE,YAAC,IAAD,KACGE,EAAiBvuJ,KAAI,YAA2D,IAAxDyH,EAAwD,EAAxDA,EAAGU,EAAqD,EAArDA,EAAGk4E,EAAkD,EAAlDA,UAAW9gC,EAAuC,EAAvCA,MAAO/W,EAAgC,EAAhCA,MAAOg6C,EAAyB,EAAzBA,mBAChDyD,EAAYgoE,EAAkB9lJ,GAAK,EACnCqmJ,EAAqB1kH,EAAZm8C,EAAmBzD,EAA6B/6E,GACzDgnJ,EAASxoE,EAAY,EAAI5F,EAE/B,OACE,YAAC7lC,EAAD,KACEj3C,IAAKilC,EACL/gC,EAAG+mJ,EACHrmJ,EAAGsmJ,EACHrpH,KAAM8E,EAAWqV,GACjB/W,MAAOA,EACPy9C,UAAWA,GACPq7D,SAQVoN,EAAiB58E,IAAM2O,KAC3B2tE,GACA,SAAC1tE,EAAWC,GAAZ,OAA0BtiF,KAAK47C,UAAUymC,KAAeriF,KAAK47C,UAAU0mC,MAGnEguE,EAAuB,SAAC,GAAuD,IAArD13G,EAAqD,EAArDA,YAAaoqG,EAAwC,EAAxCA,wBAA4BjwI,EAAY,SACnF,EAA0D+uE,qBAAWl3B,KAA7D1jB,EAAR,EAAQA,MAAOC,EAAf,EAAeA,OAAQC,EAAvB,EAAuBA,OAAQC,EAA/B,EAA+BA,QAASyrC,EAAxC,EAAwCA,cAElC0P,EAAkB,CACtBC,WAAY1vE,EAAM44B,OAAO5pC,KACzB2gF,aAAc3vE,EAAM44B,OAAO4V,SAC3BohC,YAAa5vE,EAAM44B,OAAOqP,QAC1B5L,WAAYr8B,EAAM04B,OAAO1pC,KACzB6gF,aAAc7vE,EAAM04B,OAAO8V,SAC3BshC,YAAa9vE,EAAM04B,OAAOuP,SAG5B,OACE,YAAC,IAAMqyB,SAAP,KACE,YAACgjF,EAAD,OACMt9I,EADN,CAEEm0B,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTuR,YAAaA,GAET4pC,IAEL1P,GACC,YAACu9E,EAAD,OACMt9I,EADN,CAEEm0B,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,QAASA,EACTuR,YAAa,CAACk6B,GACdjnC,WAAYm3G,GAERxgE,EATN,CAUEY,+BAA+B,O,EAnCnCktE,E,uKAtIA58B,E,qGAcAv3E,E,gGA+DA4zG,E,iGAoDAM,E,yGAKAC,E,+GA2CS,K,quBCnLTC,EAAW,SAAC,GAA+D,IAA7D3N,EAA6D,EAA7DA,aAAc3jJ,EAA+C,EAA/CA,GAAI4jJ,EAA2C,EAA3CA,yBAA0BC,EAAiB,EAAjBA,WAC9D,EAA2ChhE,qBAAWl3B,KAA9CxjB,EAAR,EAAQA,OAAQC,EAAhB,EAAgBA,QAASH,EAAzB,EAAyBA,MAAOC,EAAhC,EAAgCA,OAC1Bf,EAAOgB,EAAOhB,KAAOiB,EAAQjB,KAC7BkB,EAAQF,EAAOE,MAAQD,EAAQC,MAC/BpB,EAAMkB,EAAOlB,IAAMmB,EAAQnB,IAC3BqB,EAASH,EAAOG,OAASF,EAAQE,OACjCipH,EAAYtpH,EAAQd,EAAOkB,EAC3BmpH,EAAatpH,EAASjB,EAAMqB,EAE5BmpH,E,iWAA6B,CAAH,CAC9BxqH,IAAK,WACLoB,MAAO,WACPC,OAAQ,WACRnB,KAAM,YACH08G,GAGL,OACE,YAAC,IAAMz1E,SAAP,KACE,wBACGu1E,EAAav/G,SAAS,QAA6C,aAAnCqtH,EAA2BxqH,KAC1D,8BACEjnC,GAAE,UAAKA,EAAL,wBACF8gE,GAAG,KACHC,GAAG,KACHC,GAAG,KACHC,GAAE,UACA9qB,YAAgBytG,EAAyB38G,KACrC28G,EAAyB38G,IACzB28G,EAHJ,MAMF,oBAAM1xH,OAAO,KAAKw/H,UAAU,QAAQ3gJ,YAAY,MAChD,oBAAMmhB,OAAO,OAAOw/H,UAAU,QAAQ3gJ,YAAY,OAIrD4yI,EAAav/G,SAAS,UAAiD,aAArCqtH,EAA2BppH,OAC5D,8BACEroC,GAAE,UAAKA,EAAL,0BACF8gE,GAAG,KACHC,GAAG,KACHC,GAAE,UACA7qB,YAAgBytG,EAAyBv7G,OACrCu7G,EAAyBv7G,MACzBu7G,EAHJ,KAKF3iF,GAAG,MAEH,oBAAM/uC,OAAO,KAAKw/H,UAAU,QAAQ3gJ,YAAY,MAChD,oBAAMmhB,OAAO,OAAOw/H,UAAU,QAAQ3gJ,YAAY,OAIrD4yI,EAAav/G,SAAS,WAAmD,aAAtCqtH,EAA2BnpH,QAC7D,8BACEtoC,GAAE,UAAKA,EAAL,2BACF8gE,GAAG,KACHC,GAAG,KACHC,GAAG,KACHC,GAAE,UACA9qB,YAAgBytG,EAAyBt7G,QACrCs7G,EAAyBt7G,OACzBs7G,EAHJ,MAMF,oBAAM1xH,OAAO,KAAKw/H,UAAU,QAAQ3gJ,YAAY,MAChD,oBAAMmhB,OAAO,OAAOw/H,UAAU,QAAQ3gJ,YAAY,OAIrD4yI,EAAav/G,SAAS,SAA+C,aAApCqtH,EAA2BtqH,MAC3D,8BACEnnC,GAAE,UAAKA,EAAL,yBACF8gE,GAAG,KACHC,GAAG,KACHC,GAAE,UACA7qB,YAAgBytG,EAAyBz8G,MACrCy8G,EAAyBz8G,KACzBy8G,EAHJ,KAKF3iF,GAAG,MAEH,oBAAM/uC,OAAO,KAAKw/H,UAAU,QAAQ3gJ,YAAY,MAChD,oBAAMmhB,OAAO,OAAOw/H,UAAU,QAAQ3gJ,YAAY,OAItD,oBAAM/Q,GAAIA,GACR,oBAAMmK,GAAIg9B,EAAMt8B,GAAIo8B,EAAKgB,MAAOspH,EAAWrpH,OAAQspH,EAAY1pH,KAAK,UACnE67G,EAAav/G,SAAS,QACrB,oBACEj6B,GAAIg9B,EACJt8B,GAAIo8B,EACJgB,MAAOspH,EACPrpH,OAAQjB,EACRa,KACqC,aAAnC2pH,EAA2BxqH,IAA3B,eACYjnC,EADZ,yBAEI,UAIT2jJ,EAAav/G,SAAS,UACrB,oBACEj6B,EAAG89B,EACHp9B,GAAIo8B,EACJgB,MAAOI,EACPH,OAAQspH,EACR1pH,KACuC,aAArC2pH,EAA2BppH,MAA3B,eACYroC,EADZ,2BAEI,UAIT2jJ,EAAav/G,SAAS,WACrB,oBACEj6B,GAAIg9B,EACJt8B,EAAGq9B,EACHD,MAAOspH,EACPrpH,OAAQI,EACRR,KACwC,aAAtC2pH,EAA2BnpH,OAA3B,eACYtoC,EADZ,4BAEI,UAIT2jJ,EAAav/G,SAAS,SACrB,oBACEj6B,GAAIg9B,EACJt8B,GAAIo8B,EACJgB,MAAOd,EACPe,OAAQspH,EACR1pH,KACsC,aAApC2pH,EAA2BtqH,KAA3B,eACYnnC,EADZ,0BAEI,c,EA1IdsxJ,E,kDAoJNA,EAAS5pH,UAAY,CACnB1nC,GAAIs2C,IAAU9jC,OAAOymC,WACrB0qG,aAAcrtG,IAAUS,QAAQT,IAAU9jC,QAAQymC,WAClD2qG,yBAA0BttG,IAAU3O,UAAU,CAAC2O,IAAUt7B,OAAQs7B,IAAUlwC,SAC3Ey9I,WAAYvtG,IAAUlwC,QAGxBkrJ,EAAS33F,aAAe,CACtBiqF,yBAA0B,CAAE38G,IAAK,GAAIoB,MAAO,GAAIC,OAAQ,GAAInB,KAAM,K,UAGrDmqH,EAAA,O,6FA/JTA,E,4kBCHA5N,EAAwB,SAAC,GAAqC,IAAnC12E,EAAmC,EAAnCA,eAAmBqlD,EAAgB,SAC5DS,EAAa9lD,EAAetkE,MAAM,KAAKhG,KAAI,SAAA2L,GAAG,OAAIA,EAAI5F,UACpDutC,EAAaq8E,EAAU5oD,MAAvBzzB,SACA7rC,EAAUkoH,EAAVloH,EAAGiiE,EAAOimD,EAAPjmD,GAEX,OACE,mBAAUimD,EACPS,EAAWpwH,KAAI,SAACivJ,EAAW30H,GAAZ,OACd,qBAAO7yB,EAAGA,EAAGiiE,GAAc,IAAVpvC,EAAcovC,EAAKp2B,GACjC27G,Q,EAOIjO,EAAA,O,6FAhBTA,E,olBCFAz2C,EAAgB,SAAhBA,EAAgBpwG,GACpB,OAAOsQ,MAAMsF,QAAQ5V,GAAS,EAAIue,KAAKI,IAAL,MAAAJ,KAAI,IAAQve,EAAM6F,IAAIuqG,KAAkB,G,EAG7DA,EAAA,O,6FAJTA,E,+QCAN5qG,EAAOiD,QAAU,6vc,cCAjBjD,EAAOiD,QAAU,wzD,cCAjBjD,EAAOiD,QAAU,iU,cCAjBjD,EAAOiD,QAAU,qf,cCAjBjD,EAAOiD,QAAU,oL,cCAjBjD,EAAOiD,QAAU,s+H,cCAjBjD,EAAOiD,QAAU,ugE,gBCkCfA,EAAQvJ,IAAM,SAAUoH,GACtB,OAAOA,I,6BCnCI,kBACb,IAAI4e,EACAvG,EACJ,QAAgBpd,IAAZwzJ,EACF,IAAK,MAAM/0J,KAAS8sB,EACL,MAAT9sB,SACUuB,IAAR2jB,EACEllB,GAASA,IAAOklB,EAAMvG,EAAM3e,IAE5BklB,EAAMllB,IAAOklB,EAAMllB,GACnB2e,EAAM3e,IAAO2e,EAAM3e,SAIxB,CACL,IAAImgC,GAAS,EACb,IAAK,IAAIngC,KAAS8sB,EACiC,OAA5C9sB,EAAQ+0J,EAAQ/0J,IAASmgC,EAAOrT,WACvBvrB,IAAR2jB,EACEllB,GAASA,IAAOklB,EAAMvG,EAAM3e,IAE5BklB,EAAMllB,IAAOklB,EAAMllB,GACnB2e,EAAM3e,IAAO2e,EAAM3e,KAK/B,MAAO,CAACklB,EAAKvG,K,6BCoDA,IA/EO,CAAC,CACrBsrF,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,OACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,OACV,CACD/qD,OAAQ,IACR+qD,UAAW,OACV,CACD/qD,OAAQ,IACR+qD,UAAW,QACV,CACD/qD,OAAQ,IACR+qD,UAAW,S,6BC7Eb,sFAEA,SAAShrH,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAMzS,IAAIk9I,EAAgB,CACzBhoF,SAAU,WACV+2C,gBAAiB,QACjB5+D,MAAO,UACP7Z,QAAS,cACT04E,aAAc,MACd9qE,SAAU,OACV+qE,UAAW,+BACX3wG,WAAY,MACZwkE,cAAe,QAEF,SAASkzE,EAAQ/gH,GAC9B,IAAI94B,EAAY84B,EAAK94B,UACjBg5B,EAAMF,EAAKE,IACXE,EAAOJ,EAAKI,KACZ4qH,EAAkBhrH,EAAK4tC,WACvBA,OAAiC,IAApBo9E,EAA6B,GAAKA,EAC/CC,EAAiBjrH,EAAK2tC,UACtBA,OAA+B,IAAnBs9E,EAA4B,GAAKA,EAC7CC,EAAalrH,EAAK0iC,MAClBA,OAAuB,IAAfwoF,EAAwBH,EAAgBG,EAChD71J,EAAW2qC,EAAK3qC,SAChB81J,EAAgBnrH,EAAKorH,SACrBA,OAA6B,IAAlBD,GAAmCA,EAC9CE,EAAwBrrH,EAAKsrH,mBAC7BA,OAA+C,IAA1BD,GAA2CA,EAChE9qH,EA9BN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EA8BxR2E,CAA8BV,EAAM,CAAC,YAAa,MAAO,OAAQ,aAAc,YAAa,QAAS,WAAY,WAAY,uBAE7I,OAAoB,IAAMvlC,cAAc,MAAOqlC,EAAS,CACtD54B,UAAW,IAAG,eAAgBA,GAC9Bw7D,MAAO5iC,EAAS,CACdI,IAAY,MAAPA,GAA4B,MAAbytC,EAAoBztC,EAAMA,EAAMytC,EACpDvtC,KAAc,MAARA,GAA8B,MAAdwtC,EAAqBxtC,EAAOA,EAAOwtC,GACxD09E,GAAsB,CACvBvoF,SAAU,aACRqoF,GAAY1oF,IACfniC,GAAYlrC,GAEjB0rJ,EAAQpgH,UAAY,CAClBtrC,SAAU,IAAIgR,KACda,UAAW,IAAIuE,OACf20B,KAAM,IAAInsB,OACV25D,WAAY,IAAI35D,OAChB05D,UAAW,IAAI15D,OACfisB,IAAK,IAAIjsB,OACTq3I,mBAAoB,IAAIz7G,KACxBu7G,SAAU,IAAIv7G,O,6BCtDhB,6CAEA,SAAS/P,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAGjS,SAAS88D,EAExB4gF,GACE,IAAIC,EAAY,mBAAS1rH,EAAS,CAChCirC,aAAa,GACZwgF,IACCE,EAAeD,EAAU,GACzBE,EAAkBF,EAAU,GAE5BG,EAAc,uBAAY,SAAUC,GACtC,OAAOF,EAAoC,mBAAbE,EAA0B,SAAU5rH,GAC9CA,EAAK+qC,YAAvB,IACIslC,EAjBV,SAAuCl5E,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAiBzR2E,CAA8BV,EAAM,CAAC,gBAEhD,OAAOF,EAAS,GAAI8rH,EAASv7C,GAAO,CAClCtlC,aAAa,KAEb,CACFA,aAAa,EACbF,YAAa+gF,EAAS/gF,YACtBC,WAAY8gF,EAAS9gF,WACrBF,YAAaghF,EAAShhF,gBAEvB,CAAC8gF,IACAG,EAAc,uBAAY,WAC5B,OAAOH,EAAgB,CACrB3gF,aAAa,EACbF,iBAAaxzE,EACbyzE,gBAAYzzE,EACZuzE,iBAAavzE,MAEd,CAACq0J,IACJ,MAAO,CACL3gF,YAAa0gF,EAAa1gF,YAC1BF,YAAa4gF,EAAa5gF,YAC1BC,WAAY2gF,EAAa3gF,WACzBF,YAAa6gF,EAAa7gF,YAC1BgM,cAAe80E,EACfC,YAAaA,EACbE,YAAaA,K,4FCxCjB,SAASC,EAAa5tF,GACpB,OAAO,SAAS96D,GACd,OAAOA,EAAI,GAAKiR,KAAKG,KAAKpR,EAAG86D,GAAY7pD,KAAKG,IAAIpR,EAAG86D,IAIzD,SAAS6tF,EAAc3oJ,GACrB,OAAOA,EAAI,GAAKiR,KAAK0nD,MAAM34D,GAAKiR,KAAK0nD,KAAK34D,GAG5C,SAAS4oJ,EAAgB5oJ,GACvB,OAAOA,EAAI,GAAKA,EAAIA,EAAIA,EAAIA,EAGvB,SAAS6oJ,EAAO5rH,GACrB,IAAIuE,EAAQvE,EAAU,IAAU,KAC5B69B,EAAW,EAEf,SAAS/hB,IACP,OAAoB,IAAb+hB,EAAiB79B,EAAU,IAAU,KACzB,KAAb69B,EAAmB79B,EAAU0rH,EAAeC,GAC5C3rH,EAAUyrH,EAAa5tF,GAAW4tF,EAAa,EAAI5tF,IAO3D,OAJAt5B,EAAMs5B,SAAW,SAASpmB,GACxB,OAAOjqC,UAAUtW,QAAU2mE,GAAYpmB,EAAGqE,KAAa+hB,GAGlD,OAAA5oB,EAAA,GAAU1Q,GAGJ,SAASpwB,IACtB,IAAIowB,EAAQqnH,EAAO,eAQnB,OANArnH,EAAM5I,KAAO,WACX,OAAO,YAAK4I,EAAOpwB,KAAO0pD,SAASt5B,EAAMs5B,aAG3C2S,EAAA,EAAUx4E,MAAMusC,EAAO/2B,WAEhB+2B,E,YC1CEsnH,EAAkB,OAAA9tF,EAAA,GAAc,SAAU,QAAS,UAAW,QAAS,cAAe,OAAQ,QAAS,QACnG,SAAS+tF,EAAgBp5I,GACtC,OAAOm5I,ED2CF,WACL,OAAO13I,EAAInc,MAAM,KAAMwV,WAAWqwD,SAAS,IC5CpB,GAAanrD,K,mGCJtC,SAAS+sB,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAOhT,IAAIu+I,EAAiB,CACnBhpJ,EAAG,EACHU,EAAG,GAEM,EAAW,SAAkBk8B,GACtC,IAAIqsH,EAAarsH,EAAKwpH,MAClBA,OAAuB,IAAf6C,EAAwB,EAAIA,EACpCC,EAAYtsH,EAAK+Z,KACjBA,OAAqB,IAAduyG,EAAuB,GAAKA,EACnCC,EAAcvsH,EAAK6mG,OACnBA,OAAyB,IAAhB0lB,EAAyBH,EAAiBG,EACnDC,EAAcxsH,EAAKypH,OACnBA,OAAyB,IAAhB+C,EAAyB,EAAIA,EAGtCC,ECtBwB,SAA0BC,GACtD,OAAOr4I,KAAK4mD,GAAK,IAAMyxF,EDqBTC,CADA,IAAMnD,EADTxpH,EAAK4sH,KACmBnD,GAEnC,MAAO,CACLrmJ,EAAGyjI,EAAOzjI,EAAI22C,EAAO1lC,KAAK4nD,IAAIwwF,GAC9B3oJ,EAAG+iI,EAAO/iI,EAAIi2C,EAAO1lC,KAAK6nD,IAAIuwF,KAkBnB,SAASI,EAAQttD,GAC9B,IAAIutD,EAAcvtD,EAAMiqD,MACpBA,OAAwB,IAAhBsD,EAAyB,EAAIA,EACrCC,EAAaxtD,EAAMxlD,KACnBA,OAAsB,IAAfgzG,EAAwB,GAAKA,EACpCC,EAAeztD,EAAMsnC,OACrBA,OAA0B,IAAjBmmB,EAA0BZ,EAAiBY,EACpDC,EAAe1tD,EAAMkqD,OACrBA,OAA0B,IAAjBwD,EAA0B,EAAIA,EACvC/lJ,EAAYq4F,EAAMr4F,UAClB7R,EAAWkqG,EAAMlqG,SACjBirC,EAAWi/D,EAAMj/D,SACjB84D,EAASmG,EAAMnG,OACf74D,EAtDN,SAAuCpJ,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAsDxR2E,CAA8B6+D,EAAO,CAAC,QAAS,OAAQ,SAAU,SAAU,YAAa,WAAY,WAAY,WAE5H2tD,EAAiB9zD,GA9BA,SAAmBrzB,GACxC,IAAIyjF,EAAQzjF,EAAMyjF,MACdzvG,EAAOgsB,EAAMhsB,KACb8sF,EAAS9gE,EAAM8gE,OACf4iB,EAAS1jF,EAAM0jF,OACnB,OAAO,IAAIrjJ,MAAMojJ,GAAOzoH,KAAK,GAAGplC,KAAI,SAAUm8C,EAAG80G,GAC/C,OAAO,EAAS,CACdpD,MAAOA,EACPzvG,KAAMA,EACN8sF,OAAQA,EACR4iB,OAAQA,EACRmD,KAAMA,OAmBqBO,CAAU,CACvC3D,MAAOA,EACPzvG,KAAMA,EACN8sF,OAAQA,EACR4iB,OAAQA,IACP9tJ,KAAI,SAAUyxJ,GAGf,MAAO,CAFCA,EAAMhqJ,EACNgqJ,EAAMtpJ,MAIhB,OAAIzO,EAA8B,IAAMoF,cAAc,IAAM4sE,SAAU,KAAMhyE,EAAS,CACnF+jG,OAAQ8zD,KAEU,IAAMzyJ,cAAc,UAAWqlC,EAAS,CAC1D9yB,IAAKszB,EACLp5B,UAAW,IAAG,eAAgBA,GAC9BkyF,OAAQ8zD,EAAerwJ,KAAK,MAC3B0jC,M,4EEzEHjlC,EAAOiD,QAAU,EAAQ,M,6BCHsE5K,OAAOoC,eAAewI,EAAQ,aAAa,CAACzI,OAAM,IAAK,IAAlHE,EAAsHy3E,GAAtHz3E,EAA4I,EAAQ,KAAvI,iBAAiBA,GAAG,YAAYA,EAAEA,EAAEqpC,QAAQrpC,EAAqG,SAASq3J,EAAar3J,GAAG,OAAOq3J,EAAaC,uBAAuBD,EAAaC,sBAAqB,EAAGh4J,QAAQyI,MAAM,wGAAwGzI,QAAQyI,MAAM,6DAA6D0vE,EAAMH,SAASigF,KAAKv3J,EAAEX,UAAUg4J,EAAaC,sBAAqB,EAAG,IAAIt4J,EAAI,SAASgB,IAAI,OAAOA,EAAEw3J,2BAA2B,SAASx3J,GAAG,OAAO,SAASoJ,GAAG,OAAOquE,EAAMhzE,cAAc4yJ,EAAa,KAAK5/E,EAAMhzE,cAAczE,EAAEoJ,MAAM,SAASpJ,GAAG,OAAOA,IAAIhB,EAAIw4J,4BAA2B,EAAwIjvJ,EAAQ8uJ,aAAaA,EAAa9uJ,EAAQvJ,IAAIA,EAAIuJ,EAAQkvJ,mBAAxK,SAASz3J,EAAEoJ,GAAG,OAAOpJ,IAAIoJ,GAAqLb,EAAQmvJ,UAAhL,aAAoMnvJ,EAAQovJ,KAA1L,SAAS33J,GAAG,OAAOA,GAAiLuI,EAAQqvJ,mBAAnK,c;;;;;;;;GCSx3B,IAAIp1J,EAAE,EAAQ,KAAiB4G,EAAE,mBAAoBP,QAAQA,OAAO40B,IAAIh6B,EAAE2F,EAAEP,OAAO40B,IAAI,iBAAiB,MAAMvwB,EAAE9D,EAAEP,OAAO40B,IAAI,gBAAgB,MAAM70B,EAAEQ,EAAEP,OAAO40B,IAAI,kBAAkB,MAAMj9B,EAAE4I,EAAEP,OAAO40B,IAAI,qBAAqB,MAAMxvB,EAAE7E,EAAEP,OAAO40B,IAAI,kBAAkB,MAAM3xB,EAAE1C,EAAEP,OAAO40B,IAAI,kBAAkB,MAAMtxB,EAAE/C,EAAEP,OAAO40B,IAAI,iBAAiB,MAAMrwB,EAAEhE,EAAEP,OAAO40B,IAAI,qBAAqB,MAAM3vB,EAAE1E,EAAEP,OAAO40B,IAAI,kBAAkB,MAAM9vB,EAAEvE,EAAEP,OAAO40B,IAAI,cAAc,MAAMpwB,EAAEjE,EAAEP,OAAO40B,IAAI,cACxe,MAAMlwB,EAAE,mBAAoB1E,QAAQA,OAAOujG,SAAS,SAASr+F,EAAE3H,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEhC,EAAE,EAAEA,EAAEyT,UAAUtW,OAAO6C,IAAIiC,GAAG,WAAW6/B,mBAAmBruB,UAAUzT,IAAI,MAAM,yBAAyBgC,EAAE,WAAWC,EAAE,iHAC/P,IAAIqH,EAAE,CAACmqJ,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAcppJ,EAAE,GAAG,SAAS5C,EAAE5F,EAAEC,EAAEjC,GAAGrC,KAAKgV,MAAM3Q,EAAErE,KAAKuN,QAAQjJ,EAAEtE,KAAKk2J,KAAKrpJ,EAAE7M,KAAKm2J,QAAQ9zJ,GAAGsJ,EACpN,SAASjB,KAA6B,SAASQ,EAAE7G,EAAEC,EAAEjC,GAAGrC,KAAKgV,MAAM3Q,EAAErE,KAAKuN,QAAQjJ,EAAEtE,KAAKk2J,KAAKrpJ,EAAE7M,KAAKm2J,QAAQ9zJ,GAAGsJ,EADsG1B,EAAEpO,UAAUu6J,iBAAiB,GAAGnsJ,EAAEpO,UAAUoxG,SAAS,SAAS5oG,EAAEC,GAAG,GAAG,iBAAkBD,GAAG,mBAAoBA,GAAG,MAAMA,EAAE,MAAMlD,MAAM6K,EAAE,KAAKhM,KAAKm2J,QAAQF,gBAAgBj2J,KAAKqE,EAAEC,EAAE,aAAa2F,EAAEpO,UAAUw6J,YAAY,SAAShyJ,GAAGrE,KAAKm2J,QAAQJ,mBAAmB/1J,KAAKqE,EAAE,gBACndqG,EAAE7O,UAAUoO,EAAEpO,UAAsF,IAAIsQ,EAAEjB,EAAErP,UAAU,IAAI6O,EAAEyB,EAAE86B,YAAY/7B,EAAEzK,EAAE0L,EAAElC,EAAEpO,WAAWsQ,EAAEmqJ,sBAAqB,EAAG,IAAIlqJ,EAAE,CAACiB,QAAQ,MAAMpB,EAAErQ,OAAOC,UAAUC,eAAeuO,EAAE,CAAClD,KAAI,EAAG8N,KAAI,EAAGshJ,QAAO,EAAGC,UAAS,GAChS,SAAS3qJ,EAAExH,EAAEC,EAAEjC,GAAG,IAAIpE,EAAEyI,EAAE,GAAG0E,EAAE,KAAKU,EAAE,KAAK,GAAG,MAAMxH,EAAE,IAAIrG,UAAK,IAASqG,EAAE2Q,MAAMnJ,EAAExH,EAAE2Q,UAAK,IAAS3Q,EAAE6C,MAAMiE,EAAE,GAAG9G,EAAE6C,KAAK7C,EAAE2H,EAAElQ,KAAKuI,EAAErG,KAAKoM,EAAEvO,eAAemC,KAAKyI,EAAEzI,GAAGqG,EAAErG,IAAI,IAAIoO,EAAEyJ,UAAUtW,OAAO,EAAE,GAAG,IAAI6M,EAAE3F,EAAEpJ,SAAS+E,OAAO,GAAG,EAAEgK,EAAE,CAAC,IAAI,IAAI/J,EAAE+L,MAAMhC,GAAG5F,EAAE,EAAEA,EAAE4F,EAAE5F,IAAInE,EAAEmE,GAAGqP,UAAUrP,EAAE,GAAGC,EAAEpJ,SAASgF,EAAE,GAAG+B,GAAGA,EAAEw2D,aAAa,IAAI58D,KAAKoO,EAAEhI,EAAEw2D,kBAAe,IAASn0D,EAAEzI,KAAKyI,EAAEzI,GAAGoO,EAAEpO,IAAI,MAAM,CAACw4J,SAAS/0J,EAAEsC,KAAKK,EAAE8C,IAAIiE,EAAE6J,IAAInJ,EAAEkJ,MAAMtO,EAAEgwJ,OAAOtqJ,EAAEiB,SACxU,SAASZ,EAAEpI,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEoyJ,WAAW/0J,EAA0G,IAAIwI,EAAE,OAAO6C,EAAE,GAAG,SAASjC,EAAEzG,EAAEC,EAAEjC,EAAEpE,GAAG,GAAG8O,EAAEvN,OAAO,CAAC,IAAIkH,EAAEqG,EAAEhJ,MAA8D,OAAxD2C,EAAEzD,OAAOoB,EAAEqC,EAAE20E,UAAU/2E,EAAEoC,EAAEoO,KAAKzS,EAAEqE,EAAE6G,QAAQtP,EAAEyI,EAAEm2C,MAAM,EAASn2C,EAAE,MAAM,CAACzD,OAAOoB,EAAEg3E,UAAU/2E,EAAEwQ,KAAKzS,EAAEkL,QAAQtP,EAAE4+C,MAAM,GAC5b,SAAStxC,EAAElH,GAAGA,EAAEpB,OAAO,KAAKoB,EAAEg3E,UAAU,KAAKh3E,EAAEyQ,KAAK,KAAKzQ,EAAEkJ,QAAQ,KAAKlJ,EAAEw4C,MAAM,EAAE,GAAG9vC,EAAEvN,QAAQuN,EAAE1P,KAAKgH,GAE2F,SAASuiD,EAAEviD,EAAEC,EAAEjC,GAAG,OAAO,MAAMgC,EAAE,EADlO,SAAS4I,EAAE5I,EAAEC,EAAEjC,EAAEpE,GAAG,IAAIyI,SAASrC,EAAK,cAAcqC,GAAG,YAAYA,IAAErC,EAAE,MAAK,IAAI+G,GAAE,EAAG,GAAG,OAAO/G,EAAE+G,GAAE,OAAQ,OAAO1E,GAAG,IAAK,SAAS,IAAK,SAAS0E,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO/G,EAAEoyJ,UAAU,KAAK/0J,EAAE,KAAKyJ,EAAEC,GAAE,GAAI,GAAGA,EAAE,OAAO/I,EAAEpE,EAAEoG,EAAE,KAAKC,EAAE,IAAImH,EAAEpH,EAAE,GAAGC,GAAG,EAAyB,GAAvB8G,EAAE,EAAE9G,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO+J,MAAMsF,QAAQtP,GAAG,IAAI,IAAIyH,EAAE,EAAEA,EAAEzH,EAAE7E,OAAOsM,IAAI,CAAQ,IAAIO,EAAE/H,EAAEmH,EAAf/E,EAAErC,EAAEyH,GAAeA,GAAGV,GAAG6B,EAAEvG,EAAE2F,EAAEhK,EAAEpE,QAAQ,GAAG,OAAOoG,GAAG,iBAAkBA,EAAEgI,EAAE,KAAiCA,EAAE,mBAA7BA,EAAEb,GAAGnH,EAAEmH,IAAInH,EAAE,eAAsCgI,EAAE,KAAM,mBAAoBA,EAAE,IAAIhI,EAAEgI,EAAEtQ,KAAKsI,GAAGyH,EACpf,IAAIpF,EAAErC,EAAEiL,QAAQkqE,MAA6BpuE,GAAG6B,EAA1BvG,EAAEA,EAAE3I,MAAMsO,EAAE/H,EAAEmH,EAAE/E,EAAEoF,KAAczJ,EAAEpE,QAAQ,GAAG,WAAWyI,EAAE,MAAMrE,EAAE,GAAGgC,EAAElD,MAAM6K,EAAE,GAAG,oBAAoB3J,EAAE,qBAAqBzG,OAAO4J,KAAKnB,GAAGS,KAAK,MAAM,IAAIzC,EAAE,KAAK,OAAO+I,EAAqC6B,CAAE5I,EAAE,GAAGC,EAAEjC,GAAG,SAASoJ,EAAEpH,EAAEC,GAAG,MAAM,iBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAE8C,IAH9I,SAAgB9C,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,KAAK,GAAGD,GAAG2F,QAAQ,SAAQ,SAAS3F,GAAG,OAAOC,EAAED,MAG+C+/B,CAAO//B,EAAE8C,KAAK7C,EAAEmL,SAAS,IAAI,SAAShG,EAAEpF,EAAEC,GAAGD,EAAEyQ,KAAK/Y,KAAKsI,EAAEkJ,QAAQjJ,EAAED,EAAEw4C,SACxX,SAASpyC,EAAGpG,EAAEC,EAAEjC,GAAG,IAAIpE,EAAEoG,EAAEpB,OAAOyD,EAAErC,EAAEg3E,UAAUh3E,EAAEA,EAAEyQ,KAAK/Y,KAAKsI,EAAEkJ,QAAQjJ,EAAED,EAAEw4C,SAASxuC,MAAMsF,QAAQtP,GAAGqF,EAAErF,EAAEpG,EAAEoE,GAAE,SAASgC,GAAG,OAAOA,KAAI,MAAMA,IAAIoI,EAAEpI,KAAKA,EAJtJ,SAAWA,EAAEC,GAAG,MAAM,CAACmyJ,SAAS/0J,EAAEsC,KAAKK,EAAEL,KAAKmD,IAAI7C,EAAE2Q,IAAI5Q,EAAE4Q,IAAID,MAAM3Q,EAAE2Q,MAAM0hJ,OAAOryJ,EAAEqyJ,QAImEpqJ,CAAEjI,EAAEqC,IAAIrC,EAAE8C,KAAK7C,GAAGA,EAAE6C,MAAM9C,EAAE8C,IAAI,IAAI,GAAG9C,EAAE8C,KAAK6C,QAAQE,EAAE,OAAO,KAAK7H,IAAIpE,EAAEZ,KAAKgH,IAAI,SAASqF,EAAErF,EAAEC,EAAEjC,EAAEpE,EAAEyI,GAAG,IAAI0E,EAAE,GAAG,MAAM/I,IAAI+I,GAAG,GAAG/I,GAAG2H,QAAQE,EAAE,OAAO,KAAkB08C,EAAEviD,EAAEoG,EAAjBnG,EAAEwG,EAAExG,EAAE8G,EAAEnN,EAAEyI,IAAa6E,EAAEjH,GAAG,IAAIsI,EAAE,CAACS,QAAQ,MAAM,SAASvD,IAAI,IAAIzF,EAAEuI,EAAES,QAAQ,GAAG,OAAOhJ,EAAE,MAAMlD,MAAM6K,EAAE,MAAM,OAAO3H,EACxa,IAAIsG,EAAG,CAACgsJ,uBAAuB/pJ,EAAEgqJ,wBAAwB,CAACC,SAAS,MAAMC,kBAAkB1qJ,EAAE2qJ,qBAAqB,CAAC1pJ,SAAQ,GAAI+0B,OAAO3hC,GAAG+F,EAAQ+uE,SAAS,CAAC3xE,IAAI,SAASS,EAAEC,EAAEjC,GAAG,GAAG,MAAMgC,EAAE,OAAOA,EAAE,IAAIpG,EAAE,GAAmB,OAAhByL,EAAErF,EAAEpG,EAAE,KAAKqG,EAAEjC,GAAUpE,GAAGwH,QAAQ,SAASpB,EAAEC,EAAEjC,GAAG,GAAG,MAAMgC,EAAE,OAAOA,EAAqBuiD,EAAEviD,EAAEoF,EAAvBnF,EAAEwG,EAAE,KAAK,KAAKxG,EAAEjC,IAAYkJ,EAAEjH,IAAIu4C,MAAM,SAASx4C,GAAG,OAAOuiD,EAAEviD,GAAE,WAAW,OAAO,OAAM,OAAO42B,QAAQ,SAAS52B,GAAG,IAAIC,EAAE,GAAqC,OAAlCoF,EAAErF,EAAEC,EAAE,MAAK,SAASD,GAAG,OAAOA,KAAWC,GAAGkxJ,KAAK,SAASnxJ,GAAG,IAAIoI,EAAEpI,GAAG,MAAMlD,MAAM6K,EAAE,MAAM,OAAO3H,IAC9emC,EAAQwwJ,UAAU/sJ,EAAEzD,EAAQ8oE,SAASzoE,EAAEL,EAAQywJ,SAAS/qJ,EAAE1F,EAAQ0wJ,cAAchsJ,EAAE1E,EAAQ2wJ,WAAW14J,EAAE+H,EAAQ4wJ,SAASrrJ,EAAEvF,EAAQ6wJ,mDAAmD1sJ,EACrLnE,EAAQivE,aAAa,SAASpxE,EAAEC,EAAEjC,GAAG,GAAG,MAAOgC,EAAc,MAAMlD,MAAM6K,EAAE,IAAI3H,IAAI,IAAIpG,EAAEwC,EAAE,GAAG4D,EAAE2Q,OAAOtO,EAAErC,EAAE8C,IAAIiE,EAAE/G,EAAE4Q,IAAInJ,EAAEzH,EAAEqyJ,OAAO,GAAG,MAAMpyJ,EAAE,CAAoE,QAAnE,IAASA,EAAE2Q,MAAM7J,EAAE9G,EAAE2Q,IAAInJ,EAAEM,EAAEiB,cAAS,IAAS/I,EAAE6C,MAAMT,EAAE,GAAGpC,EAAE6C,KAAQ9C,EAAEL,MAAMK,EAAEL,KAAK62D,aAAa,IAAIxuD,EAAEhI,EAAEL,KAAK62D,aAAa,IAAIv4D,KAAKgC,EAAE2H,EAAElQ,KAAKuI,EAAEhC,KAAK+H,EAAEvO,eAAewG,KAAKrE,EAAEqE,QAAG,IAASgC,EAAEhC,SAAI,IAAS+J,EAAEA,EAAE/J,GAAGgC,EAAEhC,IAAI,IAAIA,EAAEwT,UAAUtW,OAAO,EAAE,GAAG,IAAI8C,EAAErE,EAAEX,SAAS+E,OAAO,GAAG,EAAEC,EAAE,CAAC+J,EAAEgC,MAAM/L,GAAG,IAAI,IAAImE,EAAE,EAAEA,EAAEnE,EAAEmE,IAAI4F,EAAE5F,GAAGqP,UAAUrP,EAAE,GAAGxI,EAAEX,SAAS+O,EAAE,MAAM,CAACoqJ,SAAS/0J,EAAEsC,KAAKK,EAAEL,KACxfmD,IAAIT,EAAEuO,IAAI7J,EAAE4J,MAAM/W,EAAEy4J,OAAO5qJ,IAAItF,EAAQsmD,cAAc,SAASzoD,EAAEC,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMD,EAAE,CAACoyJ,SAASrsJ,EAAEktJ,sBAAsBhzJ,EAAEizJ,cAAclzJ,EAAEmzJ,eAAenzJ,EAAEozJ,aAAa,EAAE5iJ,SAAS,KAAKK,SAAS,OAAQL,SAAS,CAAC4hJ,SAAS1sJ,EAAE26F,SAASrgG,GAAUA,EAAE6Q,SAAS7Q,GAAGmC,EAAQ9D,cAAcmJ,EAAErF,EAAQkxJ,cAAc,SAASrzJ,GAAG,IAAIC,EAAEuH,EAAEzE,KAAK,KAAK/C,GAAY,OAATC,EAAEN,KAAKK,EAASC,GAAGkC,EAAQmxJ,UAAU,WAAW,MAAM,CAACtqJ,QAAQ,OAAO7G,EAAQo1G,WAAW,SAASv3G,GAAG,MAAM,CAACoyJ,SAASprJ,EAAE0J,OAAO1Q,IAAImC,EAAQgvE,eAAe/oE,EAC3ejG,EAAQoxJ,KAAK,SAASvzJ,GAAG,MAAM,CAACoyJ,SAASnrJ,EAAEusJ,MAAMxzJ,EAAEyzJ,SAAS,EAAEC,QAAQ,OAAOvxJ,EAAQ69E,KAAK,SAAShgF,EAAEC,GAAG,MAAM,CAACmyJ,SAAS7qJ,EAAE5H,KAAKK,EAAE2zJ,aAAQ,IAAS1zJ,EAAE,KAAKA,IAAIkC,EAAQs4E,YAAY,SAASz6E,EAAEC,GAAG,OAAOwF,IAAIg1E,YAAYz6E,EAAEC,IAAIkC,EAAQu9E,WAAW,SAAS1/E,EAAEC,GAAG,OAAOwF,IAAIi6E,WAAW1/E,EAAEC,IAAIkC,EAAQyxJ,cAAc,aAAazxJ,EAAQy5E,UAAU,SAAS57E,EAAEC,GAAG,OAAOwF,IAAIm2E,UAAU57E,EAAEC,IAAIkC,EAAQ0xJ,oBAAoB,SAAS7zJ,EAAEC,EAAEjC,GAAG,OAAOyH,IAAIouJ,oBAAoB7zJ,EAAEC,EAAEjC,IACtcmE,EAAQo3G,gBAAgB,SAASv5G,EAAEC,GAAG,OAAOwF,IAAI8zG,gBAAgBv5G,EAAEC,IAAIkC,EAAQ23G,QAAQ,SAAS95G,EAAEC,GAAG,OAAOwF,IAAIq0G,QAAQ95G,EAAEC,IAAIkC,EAAQ0sE,WAAW,SAAS7uE,EAAEC,EAAEjC,GAAG,OAAOyH,IAAIopE,WAAW7uE,EAAEC,EAAEjC,IAAImE,EAAQoqF,OAAO,SAASvsF,GAAG,OAAOyF,IAAI8mF,OAAOvsF,IAAImC,EAAQs5E,SAAS,SAASz7E,GAAG,OAAOyF,IAAIg2E,SAASz7E,IAAImC,EAAQg8B,QAAQ,W,44BCV/Su7D,EAAct7F,SAASooE,eAAe,QAG5C,cAAC,4BAAAxmE,EAAA,8FAIsB23F,MAAM,kBAJ5B,8BAI+CG,OAJ/C,mBAGS5uF,GAHT,mBAOGjS,OAAOiS,QAAUA,EAEbwwF,EAAYo6D,gBACdC,kBAAQ,YAAC,IAAQ98J,OAAOiS,SAAawwF,GAErChpF,iBAAO,YAAC,IAAQzZ,OAAOiS,SAAawwF,GAZzC,kDAeGxgG,QAAQyI,MAAR,MAfH,yDAAD,I,4FAHM+3F,E,qLCPN,IAAIs6D,EAAW,SAAU7xJ,GACvB,aAEA,IAAI8xJ,EAAK18J,OAAOC,UACZqrC,EAASoxH,EAAGx8J,eAEZy8J,EAA4B,mBAAXzxJ,OAAwBA,OAAS,GAClD0xJ,EAAiBD,EAAQluD,UAAY,aACrCouD,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQxxJ,aAAe,gBAE/C,SAASq9D,EAAO3wD,EAAKtM,EAAKpJ,GAOxB,OANAnC,OAAOoC,eAAeyV,EAAKtM,EAAK,CAC9BpJ,MAAOA,EACPH,YAAY,EACZD,cAAc,EACdmqC,UAAU,IAELr0B,EAAItM,GAEb,IAEEi9D,EAAO,GAAI,IACX,MAAO9lE,GACP8lE,EAAS,SAAS3wD,EAAKtM,EAAKpJ,GAC1B,OAAO0V,EAAItM,GAAOpJ,GAItB,SAASm6G,EAAK0gD,EAASC,EAASp/E,EAAMq/E,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQh9J,qBAAqBm9J,EAAYH,EAAUG,EAC/EC,EAAYr9J,OAAOsL,OAAO6xJ,EAAel9J,WACzC0R,EAAU,IAAIq8D,EAAQkvF,GAAe,IAMzC,OAFAG,EAAUC,QAuMZ,SAA0BN,EAASn/E,EAAMlsE,GACvC,IAAImyD,EAhLuB,iBAkL3B,OAAO,SAAgBu8B,EAAQrpF,GAC7B,GAjLoB,cAiLhB8sD,EACF,MAAM,IAAIv+D,MAAM,gCAGlB,GApLoB,cAoLhBu+D,EAA6B,CAC/B,GAAe,UAAXu8B,EACF,MAAMrpF,EAKR,OAAOumJ,IAMT,IAHA5rJ,EAAQ0uF,OAASA,EACjB1uF,EAAQqF,IAAMA,IAED,CACX,IAAImrH,EAAWxwH,EAAQwwH,SACvB,GAAIA,EAAU,CACZ,IAAIq7B,EAAiBC,EAAoBt7B,EAAUxwH,GACnD,GAAI6rJ,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAuB,SAAnB7rJ,EAAQ0uF,OAGV1uF,EAAQgsJ,KAAOhsJ,EAAQisJ,MAAQjsJ,EAAQqF,SAElC,GAAuB,UAAnBrF,EAAQ0uF,OAAoB,CACrC,GApNqB,mBAoNjBv8B,EAEF,MADAA,EAlNc,YAmNRnyD,EAAQqF,IAGhBrF,EAAQksJ,kBAAkBlsJ,EAAQqF,SAEN,WAAnBrF,EAAQ0uF,QACjB1uF,EAAQmsJ,OAAO,SAAUnsJ,EAAQqF,KAGnC8sD,EA7NkB,YA+NlB,IAAIi6F,EAASC,EAAShB,EAASn/E,EAAMlsE,GACrC,GAAoB,WAAhBosJ,EAAO31J,KAAmB,CAO5B,GAJA07D,EAAQnyD,EAAQisE,KAlOA,YAFK,iBAwOjBmgF,EAAO/mJ,MAAQ0mJ,EACjB,SAGF,MAAO,CACLv7J,MAAO47J,EAAO/mJ,IACd4mE,KAAMjsE,EAAQisE,MAGS,UAAhBmgF,EAAO31J,OAChB07D,EAhPgB,YAmPhBnyD,EAAQ0uF,OAAS,QACjB1uF,EAAQqF,IAAM+mJ,EAAO/mJ,OA/QPinJ,CAAiBjB,EAASn/E,EAAMlsE,GAE7C0rJ,EAcT,SAASW,EAAS78J,EAAI0W,EAAKb,GACzB,IACE,MAAO,CAAE5O,KAAM,SAAU4O,IAAK7V,EAAGhB,KAAK0X,EAAKb,IAC3C,MAAOtU,GACP,MAAO,CAAE0F,KAAM,QAAS4O,IAAKtU,IAhBjCkI,EAAQ0xG,KAAOA,EAoBf,IAOIohD,EAAmB,GAMvB,SAASN,KACT,SAASc,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxB51F,EAAO41F,EAAmBxB,GAAgB,WACxC,OAAOx4J,QAGT,IAAIi6J,EAAWr+J,OAAOs+J,eAClBC,EAA0BF,GAAYA,EAASA,EAASpvI,EAAO,MAC/DsvI,GACAA,IAA4B7B,GAC5BpxH,EAAOnrC,KAAKo+J,EAAyB3B,KAGvCwB,EAAoBG,GAGtB,IAAIC,EAAKL,EAA2Bl+J,UAClCm9J,EAAUn9J,UAAYD,OAAOsL,OAAO8yJ,GAYtC,SAASK,EAAsBx+J,GAC7B,CAAC,OAAQ,QAAS,UAAU4J,SAAQ,SAASw2F,GAC3C73B,EAAOvoE,EAAWogG,GAAQ,SAASrpF,GACjC,OAAO5S,KAAKk5J,QAAQj9D,EAAQrpF,SAkClC,SAAS0nJ,EAAcrB,EAAWsB,GAgChC,IAAIC,EAgCJx6J,KAAKk5J,QA9BL,SAAiBj9D,EAAQrpF,GACvB,SAAS6nJ,IACP,OAAO,IAAIF,GAAY,SAASj5J,EAASC,IAnC7C,SAASm5J,EAAOz+D,EAAQrpF,EAAKtR,EAASC,GACpC,IAAIo4J,EAASC,EAASX,EAAUh9D,GAASg9D,EAAWrmJ,GACpD,GAAoB,UAAhB+mJ,EAAO31J,KAEJ,CACL,IAAIf,EAAS02J,EAAO/mJ,IAChB7U,EAAQkF,EAAOlF,MACnB,OAAIA,GACiB,iBAAVA,GACPmpC,EAAOnrC,KAAKgC,EAAO,WACdw8J,EAAYj5J,QAAQvD,EAAM48J,SAASv8J,MAAK,SAASL,GACtD28J,EAAO,OAAQ38J,EAAOuD,EAASC,MAC9B,SAASjD,GACVo8J,EAAO,QAASp8J,EAAKgD,EAASC,MAI3Bg5J,EAAYj5J,QAAQvD,GAAOK,MAAK,SAASw8J,GAI9C33J,EAAOlF,MAAQ68J,EACft5J,EAAQ2B,MACP,SAAS+C,GAGV,OAAO00J,EAAO,QAAS10J,EAAO1E,EAASC,MAvBzCA,EAAOo4J,EAAO/mJ,KAiCZ8nJ,CAAOz+D,EAAQrpF,EAAKtR,EAASC,MAIjC,OAAOi5J,EAaLA,EAAkBA,EAAgBp8J,KAChCq8J,EAGAA,GACEA,KAkHV,SAASpB,EAAoBt7B,EAAUxwH,GACrC,IAAI0uF,EAAS8hC,EAAS1zB,SAAS98F,EAAQ0uF,QACvC,QA3TE38F,IA2TE28F,EAAsB,CAKxB,GAFA1uF,EAAQwwH,SAAW,KAEI,UAAnBxwH,EAAQ0uF,OAAoB,CAE9B,GAAI8hC,EAAS1zB,SAAiB,SAG5B98F,EAAQ0uF,OAAS,SACjB1uF,EAAQqF,SAtUZtT,EAuUI+5J,EAAoBt7B,EAAUxwH,GAEP,UAAnBA,EAAQ0uF,QAGV,OAAOq9D,EAIX/rJ,EAAQ0uF,OAAS,QACjB1uF,EAAQqF,IAAM,IAAIwrF,UAChB,kDAGJ,OAAOk7D,EAGT,IAAIK,EAASC,EAAS39D,EAAQ8hC,EAAS1zB,SAAU98F,EAAQqF,KAEzD,GAAoB,UAAhB+mJ,EAAO31J,KAIT,OAHAuJ,EAAQ0uF,OAAS,QACjB1uF,EAAQqF,IAAM+mJ,EAAO/mJ,IACrBrF,EAAQwwH,SAAW,KACZu7B,EAGT,IAAI//E,EAAOogF,EAAO/mJ,IAElB,OAAM2mE,EAOFA,EAAKC,MAGPjsE,EAAQwwH,EAAS88B,YAActhF,EAAKx7E,MAGpCwP,EAAQ+B,KAAOyuH,EAAS+8B,QAQD,WAAnBvtJ,EAAQ0uF,SACV1uF,EAAQ0uF,OAAS,OACjB1uF,EAAQqF,SA1XVtT,GAoYFiO,EAAQwwH,SAAW,KACZu7B,GANE//E,GA3BPhsE,EAAQ0uF,OAAS,QACjB1uF,EAAQqF,IAAM,IAAIwrF,UAAU,oCAC5B7wF,EAAQwwH,SAAW,KACZu7B,GAoDX,SAASyB,EAAaC,GACpB,IAAInZ,EAAQ,CAAEoZ,OAAQD,EAAK,IAEvB,KAAKA,IACPnZ,EAAMqZ,SAAWF,EAAK,IAGpB,KAAKA,IACPnZ,EAAMsZ,WAAaH,EAAK,GACxBnZ,EAAMuZ,SAAWJ,EAAK,IAGxBh7J,KAAKq7J,WAAWh+J,KAAKwkJ,GAGvB,SAASyZ,EAAczZ,GACrB,IAAI8X,EAAS9X,EAAM0Z,YAAc,GACjC5B,EAAO31J,KAAO,gBACP21J,EAAO/mJ,IACdivI,EAAM0Z,WAAa5B,EAGrB,SAAS/vF,EAAQkvF,GAIf94J,KAAKq7J,WAAa,CAAC,CAAEJ,OAAQ,SAC7BnC,EAAYrzJ,QAAQs1J,EAAc/6J,MAClCA,KAAKw7J,OAAM,GA8Bb,SAAS3wI,EAAO4wI,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EACF,OAAOA,EAAe3/J,KAAK0/J,GAG7B,GAA6B,mBAAlBA,EAASnsJ,KAClB,OAAOmsJ,EAGT,IAAKliJ,MAAMkiJ,EAASj8J,QAAS,CAC3B,IAAID,GAAK,EAAG+P,EAAO,SAASA,IAC1B,OAAS/P,EAAIk8J,EAASj8J,QACpB,GAAI0nC,EAAOnrC,KAAK0/J,EAAUl8J,GAGxB,OAFA+P,EAAKvR,MAAQ09J,EAASl8J,GACtB+P,EAAKkqE,MAAO,EACLlqE,EAOX,OAHAA,EAAKvR,WA1eTuB,EA2eIgQ,EAAKkqE,MAAO,EAELlqE,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAM6pJ,GAIjB,SAASA,IACP,MAAO,CAAEp7J,WA1fPuB,EA0fyBk6E,MAAM,GA+MnC,OA7mBAsgF,EAAkBj+J,UAAYk+J,EAC9B31F,EAAOg2F,EAAI,cAAeL,GAC1B31F,EAAO21F,EAA4B,cAAeD,GAClDA,EAAkB7vF,YAAc7F,EAC9B21F,EACApB,EACA,qBAaFnyJ,EAAQm1J,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAO30H,YAClD,QAAO40H,IACHA,IAAS/B,GAG2B,uBAAnC+B,EAAK5xF,aAAe4xF,EAAKn+J,QAIhC8I,EAAQ4+H,KAAO,SAASw2B,GAQtB,OAPIhgK,OAAO8L,eACT9L,OAAO8L,eAAek0J,EAAQ7B,IAE9B6B,EAAOj0J,UAAYoyJ,EACnB31F,EAAOw3F,EAAQjD,EAAmB,sBAEpCiD,EAAO//J,UAAYD,OAAOsL,OAAOkzJ,GAC1BwB,GAOTp1J,EAAQs1J,MAAQ,SAASlpJ,GACvB,MAAO,CAAE+nJ,QAAS/nJ,IAsEpBynJ,EAAsBC,EAAcz+J,WACpCuoE,EAAOk2F,EAAcz+J,UAAW48J,GAAqB,WACnD,OAAOz4J,QAETwG,EAAQ8zJ,cAAgBA,EAKxB9zJ,EAAQwjI,MAAQ,SAAS4uB,EAASC,EAASp/E,EAAMq/E,EAAayB,QACxC,IAAhBA,IAAwBA,EAAcl5J,SAE1C,IAAI06J,EAAO,IAAIzB,EACbpiD,EAAK0gD,EAASC,EAASp/E,EAAMq/E,GAC7ByB,GAGF,OAAO/zJ,EAAQm1J,oBAAoB9C,GAC/BkD,EACAA,EAAKzsJ,OAAOlR,MAAK,SAAS6E,GACxB,OAAOA,EAAOu2E,KAAOv2E,EAAOlF,MAAQg+J,EAAKzsJ,WAuKjD+qJ,EAAsBD,GAEtBh2F,EAAOg2F,EAAIzB,EAAmB,aAO9Bv0F,EAAOg2F,EAAI5B,GAAgB,WACzB,OAAOx4J,QAGTokE,EAAOg2F,EAAI,YAAY,WACrB,MAAO,wBAkCT5zJ,EAAQhB,KAAO,SAAS8B,GACtB,IAAI9B,EAAO,GACX,IAAK,IAAI2B,KAAOG,EACd9B,EAAKnI,KAAK8J,GAMZ,OAJA3B,EAAKq+C,UAIE,SAASv0C,IACd,KAAO9J,EAAKhG,QAAQ,CAClB,IAAI2H,EAAM3B,EAAKzB,MACf,GAAIoD,KAAOG,EAGT,OAFAgI,EAAKvR,MAAQoJ,EACbmI,EAAKkqE,MAAO,EACLlqE,EAQX,OADAA,EAAKkqE,MAAO,EACLlqE,IAsCX9I,EAAQqkB,OAASA,EAMjB++C,EAAQ/tE,UAAY,CAClBorC,YAAa2iC,EAEb4xF,MAAO,SAASQ,GAcd,GAbAh8J,KAAKorI,KAAO,EACZprI,KAAKsP,KAAO,EAGZtP,KAAKu5J,KAAOv5J,KAAKw5J,WArgBjBl6J,EAsgBAU,KAAKw5E,MAAO,EACZx5E,KAAK+9H,SAAW,KAEhB/9H,KAAKi8F,OAAS,OACdj8F,KAAK4S,SA1gBLtT,EA4gBAU,KAAKq7J,WAAW51J,QAAQ61J,IAEnBU,EACH,IAAK,IAAIt+J,KAAQsC,KAEQ,MAAnBtC,EAAK6O,OAAO,IACZ26B,EAAOnrC,KAAKiE,KAAMtC,KACjB6b,OAAO7b,EAAK4H,MAAM,MACrBtF,KAAKtC,QAphBX4B,IA0hBF69C,KAAM,WACJn9C,KAAKw5E,MAAO,EAEZ,IACIyiF,EADYj8J,KAAKq7J,WAAW,GACLE,WAC3B,GAAwB,UAApBU,EAAWj4J,KACb,MAAMi4J,EAAWrpJ,IAGnB,OAAO5S,KAAKk8J,MAGdzC,kBAAmB,SAAS0C,GAC1B,GAAIn8J,KAAKw5E,KACP,MAAM2iF,EAGR,IAAI5uJ,EAAUvN,KACd,SAAS09F,EAAO0+D,EAAKC,GAYnB,OAXA1C,EAAO31J,KAAO,QACd21J,EAAO/mJ,IAAMupJ,EACb5uJ,EAAQ+B,KAAO8sJ,EAEXC,IAGF9uJ,EAAQ0uF,OAAS,OACjB1uF,EAAQqF,SArjBZtT,KAwjBY+8J,EAGZ,IAAK,IAAI98J,EAAIS,KAAKq7J,WAAW77J,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIsiJ,EAAQ7hJ,KAAKq7J,WAAW97J,GACxBo6J,EAAS9X,EAAM0Z,WAEnB,GAAqB,SAAjB1Z,EAAMoZ,OAIR,OAAOv9D,EAAO,OAGhB,GAAImkD,EAAMoZ,QAAUj7J,KAAKorI,KAAM,CAC7B,IAAIkxB,EAAWp1H,EAAOnrC,KAAK8lJ,EAAO,YAC9B0a,EAAar1H,EAAOnrC,KAAK8lJ,EAAO,cAEpC,GAAIya,GAAYC,EAAY,CAC1B,GAAIv8J,KAAKorI,KAAOyW,EAAMqZ,SACpB,OAAOx9D,EAAOmkD,EAAMqZ,UAAU,GACzB,GAAIl7J,KAAKorI,KAAOyW,EAAMsZ,WAC3B,OAAOz9D,EAAOmkD,EAAMsZ,iBAGjB,GAAImB,GACT,GAAIt8J,KAAKorI,KAAOyW,EAAMqZ,SACpB,OAAOx9D,EAAOmkD,EAAMqZ,UAAU,OAG3B,KAAIqB,EAMT,MAAM,IAAIp7J,MAAM,0CALhB,GAAInB,KAAKorI,KAAOyW,EAAMsZ,WACpB,OAAOz9D,EAAOmkD,EAAMsZ,gBAU9BzB,OAAQ,SAAS11J,EAAM4O,GACrB,IAAK,IAAIrT,EAAIS,KAAKq7J,WAAW77J,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIsiJ,EAAQ7hJ,KAAKq7J,WAAW97J,GAC5B,GAAIsiJ,EAAMoZ,QAAUj7J,KAAKorI,MACrBlkG,EAAOnrC,KAAK8lJ,EAAO,eACnB7hJ,KAAKorI,KAAOyW,EAAMsZ,WAAY,CAChC,IAAIqB,EAAe3a,EACnB,OAIA2a,IACU,UAATx4J,GACS,aAATA,IACDw4J,EAAavB,QAAUroJ,GACvBA,GAAO4pJ,EAAarB,aAGtBqB,EAAe,MAGjB,IAAI7C,EAAS6C,EAAeA,EAAajB,WAAa,GAItD,OAHA5B,EAAO31J,KAAOA,EACd21J,EAAO/mJ,IAAMA,EAET4pJ,GACFx8J,KAAKi8F,OAAS,OACdj8F,KAAKsP,KAAOktJ,EAAarB,WAClB7B,GAGFt5J,KAAK2qF,SAASgvE,IAGvBhvE,SAAU,SAASgvE,EAAQyB,GACzB,GAAoB,UAAhBzB,EAAO31J,KACT,MAAM21J,EAAO/mJ,IAcf,MAXoB,UAAhB+mJ,EAAO31J,MACS,aAAhB21J,EAAO31J,KACThE,KAAKsP,KAAOqqJ,EAAO/mJ,IACM,WAAhB+mJ,EAAO31J,MAChBhE,KAAKk8J,KAAOl8J,KAAK4S,IAAM+mJ,EAAO/mJ,IAC9B5S,KAAKi8F,OAAS,SACdj8F,KAAKsP,KAAO,OACa,WAAhBqqJ,EAAO31J,MAAqBo3J,IACrCp7J,KAAKsP,KAAO8rJ,GAGP9B,GAGTmD,OAAQ,SAAStB,GACf,IAAK,IAAI57J,EAAIS,KAAKq7J,WAAW77J,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIsiJ,EAAQ7hJ,KAAKq7J,WAAW97J,GAC5B,GAAIsiJ,EAAMsZ,aAAeA,EAGvB,OAFAn7J,KAAK2qF,SAASk3D,EAAM0Z,WAAY1Z,EAAMuZ,UACtCE,EAAczZ,GACPyX,IAKb,MAAS,SAAS2B,GAChB,IAAK,IAAI17J,EAAIS,KAAKq7J,WAAW77J,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIsiJ,EAAQ7hJ,KAAKq7J,WAAW97J,GAC5B,GAAIsiJ,EAAMoZ,SAAWA,EAAQ,CAC3B,IAAItB,EAAS9X,EAAM0Z,WACnB,GAAoB,UAAhB5B,EAAO31J,KAAkB,CAC3B,IAAI04J,EAAS/C,EAAO/mJ,IACpB0oJ,EAAczZ,GAEhB,OAAO6a,GAMX,MAAM,IAAIv7J,MAAM,0BAGlBw7J,cAAe,SAASlB,EAAUZ,EAAYC,GAa5C,OAZA96J,KAAK+9H,SAAW,CACd1zB,SAAUx/E,EAAO4wI,GACjBZ,WAAYA,EACZC,QAASA,GAGS,SAAhB96J,KAAKi8F,SAGPj8F,KAAK4S,SA9rBPtT,GAisBOg6J,IAQJ9yJ,EA9sBK,CAqtBiBjD,EAAOiD,SAGtC,IACEo2J,mBAAqBvE,EACrB,MAAOwE,GAWmB,iBAAfC,WACTA,WAAWF,mBAAqBvE,EAEhCz8I,SAAS,IAAK,yBAAdA,CAAwCy8I,K;;;;;;;;GCnuB/B,IAAI5tJ,EAAG,EAAQ,GAASpD,EAAE,EAAQ,KAAiBR,EAAE,EAAQ,KAAa,SAASqF,EAAE7H,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEhC,EAAE,EAAEA,EAAEyT,UAAUtW,OAAO6C,IAAIiC,GAAG,WAAW6/B,mBAAmBruB,UAAUzT,IAAI,MAAM,yBAAyBgC,EAAE,WAAWC,EAAE,iHAAiH,IAAImG,EAAG,MAAMtJ,MAAM+K,EAAE,MACxa,SAASvB,EAAGtG,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,EAAEjB,EAAE9I,EAAEwJ,GAAG,IAAIrL,EAAE4N,MAAMxS,UAAUyJ,MAAMvJ,KAAK+Z,UAAU,GAAG,IAAIxR,EAAEhE,MAAM+B,EAAE5B,GAAG,MAAMgG,GAAGzG,KAAK+8J,QAAQt2J,IAAI,IAAIiG,GAAG,EAAG1B,EAAG,KAAK2B,GAAG,EAAGG,EAAG,KAAKjD,EAAG,CAACkzJ,QAAQ,SAAS14J,GAAGqI,GAAG,EAAG1B,EAAG3G,IAAI,SAASiG,EAAGjG,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,EAAEjB,EAAE9I,EAAEwJ,GAAGY,GAAG,EAAG1B,EAAG,KAAKL,EAAGrK,MAAMuJ,EAAGiM,WAAmJ,IAAIlL,EAAG,KAAKC,EAAG,KAAKE,EAAG,KACha,SAASE,EAAG5G,EAAEC,EAAEjC,GAAG,IAAIqE,EAAErC,EAAEL,MAAM,gBAAgBK,EAAE+6E,cAAcr0E,EAAG1I,GAD6L,SAAYgC,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,EAAEjB,EAAE9I,EAAEwJ,GAA4B,GAAzBxB,EAAGhK,MAAMN,KAAK8V,WAAcpJ,EAAG,CAAC,IAAGA,EAAgC,MAAMvL,MAAM+K,EAAE,MAA1C,IAAIzL,EAAEuK,EAAG0B,GAAG,EAAG1B,EAAG,KAA8B2B,IAAKA,GAAG,EAAGG,EAAGrM,IAC9T8J,CAAG7D,EAAEpC,OAAE,EAAOD,GAAGA,EAAE+6E,cAAc,KAAK,IAAI49E,EAAG,KAAKC,EAAG,GAC5H,SAASC,IAAK,GAAGF,EAAG,IAAI,IAAI34J,KAAK44J,EAAG,CAAC,IAAI34J,EAAE24J,EAAG54J,GAAGhC,EAAE26J,EAAG5/J,QAAQiH,GAAG,MAAM,EAAEhC,GAAG,MAAMlB,MAAM+K,EAAE,GAAG7H,IAAI,IAAI84J,EAAG96J,GAAG,CAAC,IAAIiC,EAAE84J,cAAc,MAAMj8J,MAAM+K,EAAE,GAAG7H,IAA2B,IAAI,IAAIqC,KAA/By2J,EAAG96J,GAAGiC,EAAEjC,EAAEiC,EAAE+4J,WAA0B,CAAC,IAAIp/J,OAAE,EAAWoO,EAAEhK,EAAEqE,GAAG0E,EAAE9G,EAAEhC,EAAEoE,EAAE,GAAG42J,EAAGxhK,eAAewG,GAAG,MAAMnB,MAAM+K,EAAE,GAAG5J,IAAIg7J,EAAGh7J,GAAG+J,EAAE,IAAIP,EAAEO,EAAEkxJ,wBAAwB,GAAGzxJ,EAAE,CAAC,IAAI7N,KAAK6N,EAAEA,EAAEhQ,eAAemC,IAAIu/J,EAAG1xJ,EAAE7N,GAAGmN,EAAE9I,GAAGrE,GAAE,OAAQoO,EAAEoxJ,kBAAkBD,EAAGnxJ,EAAEoxJ,iBAAiBryJ,EAAE9I,GAAGrE,GAAE,GAAIA,GAAE,EAAG,IAAIA,EAAE,MAAMkD,MAAM+K,EAAE,GAAGxF,EAAErC,OACjc,SAASm5J,EAAGn5J,EAAEC,EAAEjC,GAAG,GAAGq7J,EAAGr5J,GAAG,MAAMlD,MAAM+K,EAAE,IAAI7H,IAAIq5J,EAAGr5J,GAAGC,EAAEq5J,EAAGt5J,GAAGC,EAAE+4J,WAAWh7J,GAAGu7J,aAAa,IAAIT,EAAG,GAAGG,EAAG,GAAGI,EAAG,GAAGC,EAAG,GAAG,SAASE,EAAGx5J,GAAG,IAAShC,EAALiC,GAAE,EAAK,IAAIjC,KAAKgC,EAAE,GAAGA,EAAEvI,eAAeuG,GAAG,CAAC,IAAIqE,EAAErC,EAAEhC,GAAG,IAAI46J,EAAGnhK,eAAeuG,IAAI46J,EAAG56J,KAAKqE,EAAE,CAAC,GAAGu2J,EAAG56J,GAAG,MAAMlB,MAAM+K,EAAE,IAAI7J,IAAI46J,EAAG56J,GAAGqE,EAAEpC,GAAE,GAAIA,GAAG44J,IAAK,IAAIY,IAAK,oBAAqBxiK,aAAQ,IAAqBA,OAAOmH,eAAU,IAAqBnH,OAAOmH,SAASC,eAAeq7J,EAAG,KAAKC,EAAG,KAAKC,EAAG,KAC9a,SAASC,EAAG75J,GAAG,GAAGA,EAAEwG,EAAGxG,GAAG,CAAC,GAAG,mBAAoB05J,EAAG,MAAM58J,MAAM+K,EAAE,MAAM,IAAI5H,EAAED,EAAE85J,UAAU75J,IAAIA,EAAEsG,EAAGtG,GAAGy5J,EAAG15J,EAAE85J,UAAU95J,EAAEL,KAAKM,KAAK,SAAS85J,EAAG/5J,GAAG25J,EAAGC,EAAGA,EAAG5gK,KAAKgH,GAAG45J,EAAG,CAAC55J,GAAG25J,EAAG35J,EAAE,SAASg6J,IAAK,GAAGL,EAAG,CAAC,IAAI35J,EAAE25J,EAAG15J,EAAE25J,EAAoB,GAAjBA,EAAGD,EAAG,KAAKE,EAAG75J,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAE9E,OAAO6E,IAAI65J,EAAG55J,EAAED,KAAK,SAASi6J,EAAGj6J,EAAEC,GAAG,OAAOD,EAAEC,GAAG,SAASi6J,EAAGl6J,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,OAAOoG,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,SAASugK,KAAM,IAAIC,EAAGH,EAAGI,GAAG,EAAGC,GAAG,EAAG,SAASC,IAAQ,OAAOZ,GAAI,OAAOC,IAAGO,IAAKH,KAC9Z,SAASQ,EAAGx6J,EAAEC,EAAEjC,GAAG,GAAGs8J,EAAG,OAAOt6J,EAAEC,EAAEjC,GAAGs8J,GAAG,EAAG,IAAI,OAAOF,EAAGp6J,EAAEC,EAAEjC,GAAG,QAAQs8J,GAAG,EAAGC,KAAM,IAAIE,EAAG,8VAA8VC,EAAGnjK,OAAOC,UAAUC,eAAekjK,EAAG,GAAGC,EAAG,GAE/Q,SAASl1J,EAAE1F,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAGrM,KAAKk/J,gBAAgB,IAAI56J,GAAG,IAAIA,GAAG,IAAIA,EAAEtE,KAAKm/J,cAAcz4J,EAAE1G,KAAKo/J,mBAAmBnhK,EAAE+B,KAAKq/J,gBAAgBh9J,EAAErC,KAAKmtJ,aAAa9oJ,EAAErE,KAAKgE,KAAKM,EAAEtE,KAAKs/J,YAAYjzJ,EAAE,IAAIL,EAAE,GACxZ,uIAAuIpC,MAAM,KAAKnE,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeoB,SAAQ,SAASpB,GAAG,IAAIC,EAAED,EAAE,GAAG2H,EAAE1H,GAAG,IAAIyF,EAAEzF,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAASoB,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAEyO,cAAc,MAAK,MAC9d,CAAC,cAAc,4BAA4B,YAAY,iBAAiBrN,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,wNAAwNuF,MAAM,KAAKnE,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAEyO,cAAc,MAAK,MACzZ,CAAC,UAAU,WAAW,QAAQ,YAAYrN,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,YAAYoB,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQoB,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,SAASoB,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAEyO,cAAc,MAAK,MAAM,IAAIysJ,EAAG,gBAAgB,SAASC,EAAGn7J,GAAG,OAAOA,EAAE,GAAGw6B,cAC/X,0jCAA0jCj1B,MAAM,KAAKnE,SAAQ,SAASpB,GAAG,IAAIC,EAAED,EAAE2F,QAAQu1J,EACzmCC,GAAIxzJ,EAAE1H,GAAG,IAAIyF,EAAEzF,EAAE,GAAE,EAAGD,EAAE,MAAK,MAAM,2EAA2EuF,MAAM,KAAKnE,SAAQ,SAASpB,GAAG,IAAIC,EAAED,EAAE2F,QAAQu1J,EAAGC,GAAIxzJ,EAAE1H,GAAG,IAAIyF,EAAEzF,EAAE,GAAE,EAAGD,EAAE,gCAA+B,MAAM,CAAC,WAAW,WAAW,aAAaoB,SAAQ,SAASpB,GAAG,IAAIC,EAAED,EAAE2F,QAAQu1J,EAAGC,GAAIxzJ,EAAE1H,GAAG,IAAIyF,EAAEzF,EAAE,GAAE,EAAGD,EAAE,wCAAuC,MAAM,CAAC,WAAW,eAAeoB,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAEyO,cAAc,MAAK,MACnc9G,EAAEyzJ,UAAU,IAAI11J,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAI,CAAC,MAAM,OAAO,SAAS,cAActE,SAAQ,SAASpB,GAAG2H,EAAE3H,GAAG,IAAI0F,EAAE1F,EAAE,GAAE,EAAGA,EAAEyO,cAAc,MAAK,MAAM,IAAI4sJ,EAAGj1J,EAAG4sJ,mDACnM,SAASsI,EAAGt7J,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAE+N,EAAElQ,eAAewI,GAAG0H,EAAE1H,GAAG,MAAW,OAAOrG,EAAE,IAAIA,EAAE+F,MAAK0C,IAAO,EAAEpC,EAAE9E,SAAS,MAAM8E,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYD,EAAEC,EAAEjC,EAAEqE,GAAG,GAAG,MAAOpC,GADoF,SAAYD,EAAEC,EAAEjC,EAAEqE,GAAG,GAAG,OAAOrE,GAAG,IAAIA,EAAE2B,KAAK,OAAM,EAAG,cAAcM,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGoC,IAAc,OAAOrE,GAASA,EAAE68J,gBAAmD,WAAnC76J,EAAEA,EAAEyO,cAAcxN,MAAM,EAAE,KAAsB,UAAUjB,GAAE,QAAQ,OAAM,GACnTu7J,CAAGv7J,EAAEC,EAAEjC,EAAEqE,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOrE,EAAE,OAAOA,EAAE2B,MAAM,KAAK,EAAE,OAAOM,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOiV,MAAMjV,GAAG,KAAK,EAAE,OAAOiV,MAAMjV,IAAI,EAAEA,EAAE,OAAM,EAOrDu7J,CAAGv7J,EAAEjC,EAAEpE,EAAEyI,KAAKrE,EAAE,MAAMqE,GAAG,OAAOzI,EARhM,SAAYoG,GAAG,QAAG06J,EAAGhjK,KAAKkjK,EAAG56J,KAAe06J,EAAGhjK,KAAKijK,EAAG36J,KAAey6J,EAAGt0J,KAAKnG,GAAU46J,EAAG56J,IAAG,GAAG26J,EAAG36J,IAAG,GAAS,IAQkFy7J,CAAGx7J,KAAK,OAAOjC,EAAEgC,EAAEiuG,gBAAgBhuG,GAAGD,EAAEoE,aAAanE,EAAE,GAAGjC,IAAIpE,EAAEohK,gBAAgBh7J,EAAEpG,EAAEkvJ,cAAc,OAAO9qJ,EAAE,IAAIpE,EAAE+F,MAAQ,GAAG3B,GAAGiC,EAAErG,EAAEkhK,cAAcz4J,EAAEzI,EAAEmhK,mBAAmB,OAAO/8J,EAAEgC,EAAEiuG,gBAAgBhuG,IAAajC,EAAE,KAAXpE,EAAEA,EAAE+F,OAAc,IAAI/F,IAAG,IAAKoE,EAAE,GAAG,GAAGA,EAAEqE,EAAErC,EAAE07J,eAAer5J,EAAEpC,EAAEjC,GAAGgC,EAAEoE,aAAanE,EAAEjC,MADtOq9J,EAAG5jK,eAAe,4BAA4B4jK,EAAG/I,uBAAuB,CAACtpJ,QAAQ,OAAOqyJ,EAAG5jK,eAAe,6BAA6B4jK,EAAG9I,wBAAwB,CAACC,SAAS,OAEla,IAAImJ,EAAG,cAAcnzJ,EAAE,mBAAoB/F,QAAQA,OAAO40B,IAAIukI,GAAGpzJ,EAAE/F,OAAO40B,IAAI,iBAAiB,MAAMwkI,GAAGrzJ,EAAE/F,OAAO40B,IAAI,gBAAgB,MAAMykI,GAAGtzJ,EAAE/F,OAAO40B,IAAI,kBAAkB,MAAM0kI,GAAGvzJ,EAAE/F,OAAO40B,IAAI,qBAAqB,MAAMr4B,GAAGwJ,EAAE/F,OAAO40B,IAAI,kBAAkB,MAAM2kI,GAAGxzJ,EAAE/F,OAAO40B,IAAI,kBAAkB,MAAM4kI,GAAGzzJ,EAAE/F,OAAO40B,IAAI,iBAAiB,MAAM6kI,GAAG1zJ,EAAE/F,OAAO40B,IAAI,yBAAyB,MAAM8kI,GAAG3zJ,EAAE/F,OAAO40B,IAAI,qBAAqB,MAAM+kI,GAAG5zJ,EAAE/F,OAAO40B,IAAI,kBAAkB,MAAMglI,GAAG7zJ,EAAE/F,OAAO40B,IAAI,uBACve,MAAMilI,GAAG9zJ,EAAE/F,OAAO40B,IAAI,cAAc,MAAMklI,GAAG/zJ,EAAE/F,OAAO40B,IAAI,cAAc,MAAMmlI,GAAGh0J,EAAE/F,OAAO40B,IAAI,eAAe,MAAMolI,GAAG,mBAAoBh6J,QAAQA,OAAOujG,SAAS,SAAS5nD,GAAGp+C,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAwC,mBAAnCA,EAAEy8J,IAAIz8J,EAAEy8J,KAAKz8J,EAAE,eAA0CA,EAAE,KACzR,SAAS08J,GAAG18J,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAE4lE,aAAa5lE,EAAE3G,MAAM,KAAK,GAAG,iBAAkB2G,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK87J,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,SAAS,KAAK78J,GAAG,MAAM,WAAW,KAAK+8J,GAAG,MAAM,aAAa,KAAKK,GAAG,MAAM,WAAW,KAAKC,GAAG,MAAM,eAAe,GAAG,iBAAkBr8J,EAAE,OAAOA,EAAEoyJ,UAAU,KAAK6J,GAAG,MAAM,mBAAmB,KAAKD,GAAG,MAAM,mBAAmB,KAAKG,GAAG,IAAIl8J,EAAED,EAAE0Q,OAAmC,OAA5BzQ,EAAEA,EAAE2lE,aAAa3lE,EAAE5G,MAAM,GAAU2G,EAAE4lE,cAAc,KAAK3lE,EAAE,cAAcA,EAAE,IACnf,cAAc,KAAKq8J,GAAG,OAAOI,GAAG18J,EAAEL,MAAM,KAAK68J,GAAG,OAAOE,GAAG18J,EAAE0Q,QAAQ,KAAK6rJ,GAAG,GAAGv8J,EAAE,IAAIA,EAAEyzJ,QAAQzzJ,EAAE0zJ,QAAQ,KAAK,OAAOgJ,GAAG18J,GAAG,OAAO,KAAK,SAAS28J,GAAG38J,GAAG,IAAIC,EAAE,GAAG,EAAE,CAACD,EAAE,OAAOA,EAAEmE,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,IAAInG,EAAE,GAAG,MAAMgC,EAAE,QAAQ,IAAIqC,EAAErC,EAAE48J,YAAYhjK,EAAEoG,EAAE68J,aAAa70J,EAAE00J,GAAG18J,EAAEL,MAAM3B,EAAE,KAAKqE,IAAIrE,EAAE0+J,GAAGr6J,EAAE1C,OAAO0C,EAAE2F,EAAEA,EAAE,GAAGpO,EAAEoO,EAAE,QAAQpO,EAAEkjK,SAASn3J,QAAQg2J,EAAG,IAAI,IAAI/hK,EAAEmjK,WAAW,IAAI/+J,IAAIgK,EAAE,gBAAgBhK,EAAE,KAAKA,EAAE,aAAaqE,GAAG,WAAW2F,EAAE/H,GAAGjC,EAAEgC,EAAEA,EAAEg9J,aAAah9J,GAAG,OAAOC,EACje,SAASg9J,GAAGj9J,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,IAAI,SAASk9J,GAAGl9J,GAAG,IAAIC,EAAED,EAAEL,KAAK,OAAOK,EAAEA,EAAEm0E,WAAW,UAAUn0E,EAAEyO,gBAAgB,aAAaxO,GAAG,UAAUA,GAEzN,SAASk9J,GAAGn9J,GAAGA,EAAEo9J,gBAAgBp9J,EAAEo9J,cADvD,SAAYp9J,GAAG,IAAIC,EAAEi9J,GAAGl9J,GAAG,UAAU,QAAQhC,EAAEzG,OAAO8lK,yBAAyBr9J,EAAE4iC,YAAYprC,UAAUyI,GAAGoC,EAAE,GAAGrC,EAAEC,GAAG,IAAID,EAAEvI,eAAewI,SAAI,IAAqBjC,GAAG,mBAAoBA,EAAExE,KAAK,mBAAoBwE,EAAEvE,IAAI,CAAC,IAAIG,EAAEoE,EAAExE,IAAIwO,EAAEhK,EAAEvE,IAAiL,OAA7KlC,OAAOoC,eAAeqG,EAAEC,EAAE,CAAC3G,cAAa,EAAGE,IAAI,WAAW,OAAOI,EAAElC,KAAKiE,OAAOlC,IAAI,SAASuG,GAAGqC,EAAE,GAAGrC,EAAEgI,EAAEtQ,KAAKiE,KAAKqE,MAAMzI,OAAOoC,eAAeqG,EAAEC,EAAE,CAAC1G,WAAWyE,EAAEzE,aAAmB,CAACmgD,SAAS,WAAW,OAAOr3C,GAAGo3C,SAAS,SAASz5C,GAAGqC,EAAE,GAAGrC,GAAGs9J,aAAa,WAAWt9J,EAAEo9J,cACxf,YAAYp9J,EAAEC,MAAuDs9J,CAAGv9J,IAAI,SAASw9J,GAAGx9J,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEo9J,cAAc,IAAIn9J,EAAE,OAAM,EAAG,IAAIjC,EAAEiC,EAAEy5C,WAAer3C,EAAE,GAAqD,OAAlDrC,IAAIqC,EAAE66J,GAAGl9J,GAAGA,EAAEszG,QAAQ,OAAO,QAAQtzG,EAAEtG,QAAOsG,EAAEqC,KAAarE,IAAGiC,EAAEw5C,SAASz5C,IAAG,GAAO,SAASy9J,GAAGz9J,EAAEC,GAAG,IAAIjC,EAAEiC,EAAEqzG,QAAQ,OAAOtwG,EAAE,GAAG/C,EAAE,CAACy9J,oBAAe,EAAO3jD,kBAAa,EAAOrgH,WAAM,EAAO45G,QAAQ,MAAMt1G,EAAEA,EAAEgC,EAAE29J,cAAcC,iBACzY,SAASC,GAAG79J,EAAEC,GAAG,IAAIjC,EAAE,MAAMiC,EAAE85G,aAAa,GAAG95G,EAAE85G,aAAa13G,EAAE,MAAMpC,EAAEqzG,QAAQrzG,EAAEqzG,QAAQrzG,EAAEy9J,eAAe1/J,EAAEi/J,GAAG,MAAMh9J,EAAEvG,MAAMuG,EAAEvG,MAAMsE,GAAGgC,EAAE29J,cAAc,CAACC,eAAev7J,EAAEy7J,aAAa9/J,EAAE+/J,WAAW,aAAa99J,EAAEN,MAAM,UAAUM,EAAEN,KAAK,MAAMM,EAAEqzG,QAAQ,MAAMrzG,EAAEvG,OAAO,SAASskK,GAAGh+J,EAAEC,GAAe,OAAZA,EAAEA,EAAEqzG,UAAiBgoD,EAAGt7J,EAAE,UAAUC,GAAE,GACjU,SAASg+J,GAAGj+J,EAAEC,GAAG+9J,GAAGh+J,EAAEC,GAAG,IAAIjC,EAAEi/J,GAAGh9J,EAAEvG,OAAO2I,EAAEpC,EAAEN,KAAK,GAAG,MAAM3B,EAAK,WAAWqE,GAAM,IAAIrE,GAAG,KAAKgC,EAAEtG,OAAOsG,EAAEtG,OAAOsE,KAAEgC,EAAEtG,MAAM,GAAGsE,GAAOgC,EAAEtG,QAAQ,GAAGsE,IAAIgC,EAAEtG,MAAM,GAAGsE,QAAQ,GAAG,WAAWqE,GAAG,UAAUA,EAA8B,YAA3BrC,EAAEiuG,gBAAgB,SAAgBhuG,EAAExI,eAAe,SAASymK,GAAGl+J,EAAEC,EAAEN,KAAK3B,GAAGiC,EAAExI,eAAe,iBAAiBymK,GAAGl+J,EAAEC,EAAEN,KAAKs9J,GAAGh9J,EAAE85G,eAAe,MAAM95G,EAAEqzG,SAAS,MAAMrzG,EAAEy9J,iBAAiB19J,EAAE09J,iBAAiBz9J,EAAEy9J,gBACnZ,SAASS,GAAGn+J,EAAEC,EAAEjC,GAAG,GAAGiC,EAAExI,eAAe,UAAUwI,EAAExI,eAAe,gBAAgB,CAAC,IAAI4K,EAAEpC,EAAEN,KAAK,KAAK,WAAW0C,GAAG,UAAUA,QAAG,IAASpC,EAAEvG,OAAO,OAAOuG,EAAEvG,OAAO,OAAOuG,EAAE,GAAGD,EAAE29J,cAAcG,aAAa9/J,GAAGiC,IAAID,EAAEtG,QAAQsG,EAAEtG,MAAMuG,GAAGD,EAAE+5G,aAAa95G,EAAW,MAATjC,EAAEgC,EAAE3G,QAAc2G,EAAE3G,KAAK,IAAI2G,EAAE09J,iBAAiB19J,EAAE29J,cAAcC,eAAe,KAAK5/J,IAAIgC,EAAE3G,KAAK2E,GACvV,SAASkgK,GAAGl+J,EAAEC,EAAEjC,GAAM,WAAWiC,GAAGD,EAAEmpJ,cAAciV,gBAAgBp+J,IAAE,MAAMhC,EAAEgC,EAAE+5G,aAAa,GAAG/5G,EAAE29J,cAAcG,aAAa99J,EAAE+5G,eAAe,GAAG/7G,IAAIgC,EAAE+5G,aAAa,GAAG/7G,IAAwF,SAASqgK,GAAGr+J,EAAEC,GAA6D,OAA1DD,EAAEgD,EAAE,CAAC/J,cAAS,GAAQgH,IAAMA,EAAlI,SAAYD,GAAG,IAAIC,EAAE,GAAuD,OAApDmG,EAAG8qE,SAAS9vE,QAAQpB,GAAE,SAASA,GAAG,MAAMA,IAAIC,GAAGD,MAAYC,EAAiDq+J,CAAGr+J,EAAEhH,aAAU+G,EAAE/G,SAASgH,GAASD,EACjV,SAASu+J,GAAGv+J,EAAEC,EAAEjC,EAAEqE,GAAe,GAAZrC,EAAEA,EAAElB,QAAWmB,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIrG,EAAE,EAAEA,EAAEoE,EAAE7C,OAAOvB,IAAIqG,EAAE,IAAIjC,EAAEpE,KAAI,EAAG,IAAIoE,EAAE,EAAEA,EAAEgC,EAAE7E,OAAO6C,IAAIpE,EAAEqG,EAAExI,eAAe,IAAIuI,EAAEhC,GAAGtE,OAAOsG,EAAEhC,GAAGigE,WAAWrkE,IAAIoG,EAAEhC,GAAGigE,SAASrkE,GAAGA,GAAGyI,IAAIrC,EAAEhC,GAAGwgK,iBAAgB,OAAQ,CAAmB,IAAlBxgK,EAAE,GAAGi/J,GAAGj/J,GAAGiC,EAAE,KAASrG,EAAE,EAAEA,EAAEoG,EAAE7E,OAAOvB,IAAI,CAAC,GAAGoG,EAAEpG,GAAGF,QAAQsE,EAAiD,OAA9CgC,EAAEpG,GAAGqkE,UAAS,OAAG57D,IAAIrC,EAAEpG,GAAG4kK,iBAAgB,IAAW,OAAOv+J,GAAGD,EAAEpG,GAAGykE,WAAWp+D,EAAED,EAAEpG,IAAI,OAAOqG,IAAIA,EAAEg+D,UAAS,IACpY,SAASwgG,GAAGz+J,EAAEC,GAAG,GAAG,MAAMA,EAAEozF,wBAAwB,MAAMv2F,MAAM+K,EAAE,KAAK,OAAO7E,EAAE,GAAG/C,EAAE,CAACvG,WAAM,EAAOqgH,kBAAa,EAAO9gH,SAAS,GAAG+G,EAAE29J,cAAcG,eAAe,SAASY,GAAG1+J,EAAEC,GAAG,IAAIjC,EAAEiC,EAAEvG,MAAM,GAAG,MAAMsE,EAAE,CAA+B,GAA9BA,EAAEiC,EAAEhH,SAASgH,EAAEA,EAAE85G,aAAgB,MAAM/7G,EAAE,CAAC,GAAG,MAAMiC,EAAE,MAAMnD,MAAM+K,EAAE,KAAK,GAAGmC,MAAMsF,QAAQtR,GAAG,CAAC,KAAK,GAAGA,EAAE7C,QAAQ,MAAM2B,MAAM+K,EAAE,KAAK7J,EAAEA,EAAE,GAAGiC,EAAEjC,EAAE,MAAMiC,IAAIA,EAAE,IAAIjC,EAAEiC,EAAED,EAAE29J,cAAc,CAACG,aAAab,GAAGj/J,IAC/Y,SAAS2gK,GAAG3+J,EAAEC,GAAG,IAAIjC,EAAEi/J,GAAGh9J,EAAEvG,OAAO2I,EAAE46J,GAAGh9J,EAAE85G,cAAc,MAAM/7G,KAAIA,EAAE,GAAGA,KAAMgC,EAAEtG,QAAQsG,EAAEtG,MAAMsE,GAAG,MAAMiC,EAAE85G,cAAc/5G,EAAE+5G,eAAe/7G,IAAIgC,EAAE+5G,aAAa/7G,IAAI,MAAMqE,IAAIrC,EAAE+5G,aAAa,GAAG13G,GAAG,SAASu8J,GAAG5+J,GAAG,IAAIC,EAAED,EAAE4mE,YAAY3mE,IAAID,EAAE29J,cAAcG,cAAc,KAAK79J,GAAG,OAAOA,IAAID,EAAEtG,MAAMuG,GAAG,IAAI4+J,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAG9+J,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAAgC,SAAS++J,GAAG/+J,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAE8+J,GAAG7+J,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,EAC3U,IAAIg/J,GAAGC,GAAG,SAASj/J,GAAG,MAAM,oBAAqBk/J,OAAOA,MAAMC,wBAAwB,SAASl/J,EAAEjC,EAAEqE,EAAEzI,GAAGslK,MAAMC,yBAAwB,WAAW,OAAOn/J,EAAEC,EAAEjC,OAAUgC,EAA5J,EAA+J,SAASA,EAAEC,GAAG,GAAGD,EAAEo/J,eAAeP,IAAQ,cAAc7+J,EAAEA,EAAEw1E,UAAUv1E,MAAM,CAA2F,KAA1F++J,GAAGA,IAAI5gK,SAASC,cAAc,QAAUm3E,UAAU,QAAQv1E,EAAEmT,UAAUhI,WAAW,SAAanL,EAAE++J,GAAGtmD,WAAW14G,EAAE04G,YAAY14G,EAAEmF,YAAYnF,EAAE04G,YAAY,KAAKz4G,EAAEy4G,YAAY14G,EAAEvB,YAAYwB,EAAEy4G,gBACjb,SAAS2mD,GAAGr/J,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIjC,EAAEgC,EAAE04G,WAAW,GAAG16G,GAAGA,IAAIgC,EAAEosI,WAAW,IAAIpuI,EAAEk2E,SAAwB,YAAdl2E,EAAE26G,UAAU14G,GAAUD,EAAE4mE,YAAY3mE,EAAE,SAASq/J,GAAGt/J,EAAEC,GAAG,IAAIjC,EAAE,GAAkF,OAA/EA,EAAEgC,EAAEyO,eAAexO,EAAEwO,cAAczQ,EAAE,SAASgC,GAAG,SAASC,EAAEjC,EAAE,MAAMgC,GAAG,MAAMC,EAASjC,EAAE,IAAIuhK,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,GAAGC,GAAG,GAC1M,SAASC,GAAG9/J,GAAG,GAAG4/J,GAAG5/J,GAAG,OAAO4/J,GAAG5/J,GAAG,IAAIu/J,GAAGv/J,GAAG,OAAOA,EAAE,IAAYhC,EAARiC,EAAEs/J,GAAGv/J,GAAK,IAAIhC,KAAKiC,EAAE,GAAGA,EAAExI,eAAeuG,IAAIA,KAAK6hK,GAAG,OAAOD,GAAG5/J,GAAGC,EAAEjC,GAAG,OAAOgC,EAA9Xy5J,IAAKoG,GAAGzhK,SAASC,cAAc,OAAOioE,MAAM,mBAAmBrvE,gBAAgBsoK,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoB9oK,eAAesoK,GAAGI,cAAcK,YACxO,IAAIC,GAAGH,GAAG,gBAAgBI,GAAGJ,GAAG,sBAAsBK,GAAGL,GAAG,kBAAkBM,GAAGN,GAAG,iBAAiBO,GAAG,sNAAsN96J,MAAM,KAAK+6J,GAAG,IAAK,mBAAoBvU,QAAQA,QAAQz4E,KAAK,SAASitF,GAAGvgK,GAAG,IAAIC,EAAEqgK,GAAG9mK,IAAIwG,GAAuC,YAApC,IAASC,IAAIA,EAAE,IAAIqzE,IAAIgtF,GAAG7mK,IAAIuG,EAAEC,IAAWA,EACpc,SAASugK,GAAGxgK,GAAG,IAAIC,EAAED,EAAEhC,EAAEgC,EAAE,GAAGA,EAAEygK,UAAU,KAAKxgK,EAAE+8J,QAAQ/8J,EAAEA,EAAE+8J,WAAW,CAACh9J,EAAEC,EAAE,GAAO,IAAiB,MAArBA,EAAED,GAAS0gK,aAAkB1iK,EAAEiC,EAAE+8J,QAAQh9J,EAAEC,EAAE+8J,aAAah9J,GAAG,OAAO,IAAIC,EAAEkE,IAAInG,EAAE,KAAK,SAAS2iK,GAAG3gK,GAAG,GAAG,KAAKA,EAAEmE,IAAI,CAAC,IAAIlE,EAAED,EAAE4gK,cAAsE,GAAxD,OAAO3gK,IAAkB,QAAdD,EAAEA,EAAEygK,aAAqBxgK,EAAED,EAAE4gK,gBAAmB,OAAO3gK,EAAE,OAAOA,EAAE4gK,WAAW,OAAO,KAAK,SAASC,GAAG9gK,GAAG,GAAGwgK,GAAGxgK,KAAKA,EAAE,MAAMlD,MAAM+K,EAAE,MAEhK,SAASk5J,GAAG/gK,GAAW,KAARA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAEygK,UAAU,IAAIxgK,EAAE,CAAS,GAAG,QAAXA,EAAEugK,GAAGxgK,IAAe,MAAMlD,MAAM+K,EAAE,MAAM,OAAO5H,IAAID,EAAE,KAAKA,EAAE,IAAI,IAAIhC,EAAEgC,EAAEqC,EAAEpC,IAAI,CAAC,IAAIrG,EAAEoE,EAAEg/J,OAAO,GAAG,OAAOpjK,EAAE,MAAM,IAAIoO,EAAEpO,EAAE6mK,UAAU,GAAG,OAAOz4J,EAAE,CAAY,GAAG,QAAd3F,EAAEzI,EAAEojK,QAAmB,CAACh/J,EAAEqE,EAAE,SAAS,MAAM,GAAGzI,EAAE8H,QAAQsG,EAAEtG,MAAM,CAAC,IAAIsG,EAAEpO,EAAE8H,MAAMsG,GAAG,CAAC,GAAGA,IAAIhK,EAAE,OAAO8iK,GAAGlnK,GAAGoG,EAAE,GAAGgI,IAAI3F,EAAE,OAAOy+J,GAAGlnK,GAAGqG,EAAE+H,EAAEA,EAAEg5J,QAAQ,MAAMlkK,MAAM+K,EAAE,MAAO,GAAG7J,EAAEg/J,SAAS36J,EAAE26J,OAAOh/J,EAAEpE,EAAEyI,EAAE2F,MAAM,CAAC,IAAI,IAAIjB,GAAE,EAAG9I,EAAErE,EAAE8H,MAAMzD,GAAG,CAAC,GAAGA,IAAID,EAAE,CAAC+I,GAAE,EAAG/I,EAAEpE,EAAEyI,EAAE2F,EAAE,MAAM,GAAG/J,IAAIoE,EAAE,CAAC0E,GAAE,EAAG1E,EAAEzI,EAAEoE,EAAEgK,EAAE,MAAM/J,EAAEA,EAAE+iK,QAAQ,IAAIj6J,EAAE,CAAC,IAAI9I,EAAE+J,EAAEtG,MAAMzD,GAAG,CAAC,GAAGA,IAC5fD,EAAE,CAAC+I,GAAE,EAAG/I,EAAEgK,EAAE3F,EAAEzI,EAAE,MAAM,GAAGqE,IAAIoE,EAAE,CAAC0E,GAAE,EAAG1E,EAAE2F,EAAEhK,EAAEpE,EAAE,MAAMqE,EAAEA,EAAE+iK,QAAQ,IAAIj6J,EAAE,MAAMjK,MAAM+K,EAAE,OAAQ,GAAG7J,EAAEyiK,YAAYp+J,EAAE,MAAMvF,MAAM+K,EAAE,MAAO,GAAG,IAAI7J,EAAEmG,IAAI,MAAMrH,MAAM+K,EAAE,MAAM,OAAO7J,EAAE87J,UAAU9wJ,UAAUhL,EAAEgC,EAAEC,EAAmBghK,CAAGjhK,IAAS,OAAO,KAAK,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAG,IAAIC,EAAEkE,KAAK,IAAIlE,EAAEkE,IAAI,OAAOlE,EAAE,GAAGA,EAAEyB,MAAMzB,EAAEyB,MAAMs7J,OAAO/8J,EAAEA,EAAEA,EAAEyB,UAAU,CAAC,GAAGzB,IAAID,EAAE,MAAM,MAAMC,EAAE+gK,SAAS,CAAC,IAAI/gK,EAAE+8J,QAAQ/8J,EAAE+8J,SAASh9J,EAAE,OAAO,KAAKC,EAAEA,EAAE+8J,OAAO/8J,EAAE+gK,QAAQhE,OAAO/8J,EAAE+8J,OAAO/8J,EAAEA,EAAE+gK,SAAS,OAAO,KAC5c,SAASE,GAAGlhK,EAAEC,GAAG,GAAG,MAAMA,EAAE,MAAMnD,MAAM+K,EAAE,KAAK,OAAG,MAAM7H,EAASC,EAAK+J,MAAMsF,QAAQtP,GAAOgK,MAAMsF,QAAQrP,IAAUD,EAAEhH,KAAKiD,MAAM+D,EAAEC,GAAGD,IAAEA,EAAEhH,KAAKiH,GAAUD,GAASgK,MAAMsF,QAAQrP,GAAG,CAACD,GAAGF,OAAOG,GAAG,CAACD,EAAEC,GAAG,SAASkhK,GAAGnhK,EAAEC,EAAEjC,GAAGgM,MAAMsF,QAAQtP,GAAGA,EAAEoB,QAAQnB,EAAEjC,GAAGgC,GAAGC,EAAEvI,KAAKsG,EAAEgC,GAAG,IAAIohK,GAAG,KAC/Q,SAASC,GAAGrhK,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAED,EAAEshK,mBAAmBtjK,EAAEgC,EAAEuhK,mBAAmB,GAAGv3J,MAAMsF,QAAQrP,GAAG,IAAI,IAAIoC,EAAE,EAAEA,EAAEpC,EAAE9E,SAAS6E,EAAEwhK,uBAAuBn/J,IAAIuE,EAAG5G,EAAEC,EAAEoC,GAAGrE,EAAEqE,SAASpC,GAAG2G,EAAG5G,EAAEC,EAAEjC,GAAGgC,EAAEshK,mBAAmB,KAAKthK,EAAEuhK,mBAAmB,KAAKvhK,EAAEyhK,gBAAgBzhK,EAAE4iC,YAAY8+H,QAAQ1hK,IAAI,SAAS2hK,GAAG3hK,GAAwC,GAArC,OAAOA,IAAIohK,GAAGF,GAAGE,GAAGphK,IAAIA,EAAEohK,GAAGA,GAAG,KAAQphK,EAAE,CAAU,GAATmhK,GAAGnhK,EAAEqhK,IAAOD,GAAG,MAAMtkK,MAAM+K,EAAE,KAAK,GAAGS,EAAG,MAAMtI,EAAEyI,EAAGH,GAAG,EAAGG,EAAG,KAAKzI,GAC9Y,SAAS4hK,GAAG5hK,GAA6F,OAA1FA,EAAEA,EAAE2/B,QAAQ3/B,EAAEi5F,YAAYhiG,QAASmjG,0BAA0Bp6F,EAAEA,EAAEo6F,yBAAgC,IAAIp6F,EAAEk0E,SAASl0E,EAAEkF,WAAWlF,EAAE,SAAS6hK,GAAG7hK,GAAG,IAAIy5J,EAAG,OAAM,EAAY,IAAIx5J,GAAbD,EAAE,KAAKA,KAAa5B,SAAqG,OAA5F6B,KAAIA,EAAE7B,SAASC,cAAc,QAAS+F,aAAapE,EAAE,WAAWC,EAAE,mBAAoBA,EAAED,IAAWC,EAAE,IAAImjF,GAAG,GAAG,SAAS0+E,GAAG9hK,GAAGA,EAAE+hK,aAAa,KAAK/hK,EAAEmnG,YAAY,KAAKnnG,EAAEgiK,WAAW,KAAKhiK,EAAEiiK,UAAU9mK,OAAO,EAAE,GAAGioF,GAAGjoF,QAAQioF,GAAGpqF,KAAKgH,GAC5a,SAASkiK,GAAGliK,EAAEC,EAAEjC,EAAEqE,GAAG,GAAG+gF,GAAGjoF,OAAO,CAAC,IAAIvB,EAAEwpF,GAAG1jF,MAA2E,OAArE9F,EAAEmoK,aAAa/hK,EAAEpG,EAAEuoK,iBAAiB9/J,EAAEzI,EAAEutG,YAAYlnG,EAAErG,EAAEooK,WAAWhkK,EAASpE,EAAE,MAAM,CAACmoK,aAAa/hK,EAAEmiK,iBAAiB9/J,EAAE8kG,YAAYlnG,EAAE+hK,WAAWhkK,EAAEikK,UAAU,IAC9M,SAASG,GAAGpiK,GAAG,IAAIC,EAAED,EAAEgiK,WAAWhkK,EAAEiC,EAAE,EAAE,CAAC,IAAIjC,EAAE,CAACgC,EAAEiiK,UAAUjpK,KAAKgF,GAAG,MAAM,IAAIqE,EAAErE,EAAE,GAAG,IAAIqE,EAAE8B,IAAI9B,EAAEA,EAAEy3J,UAAUuI,kBAAkB,CAAC,KAAKhgK,EAAE26J,QAAQ36J,EAAEA,EAAE26J,OAAO36J,EAAE,IAAIA,EAAE8B,IAAI,KAAK9B,EAAEy3J,UAAUuI,cAAc,IAAIhgK,EAAE,MAAc,KAARpC,EAAEjC,EAAEmG,MAAW,IAAIlE,GAAGD,EAAEiiK,UAAUjpK,KAAKgF,GAAGA,EAAEskK,GAAGjgK,SAASrE,GAAG,IAAIA,EAAE,EAAEA,EAAEgC,EAAEiiK,UAAU9mK,OAAO6C,IAAI,CAACiC,EAAED,EAAEiiK,UAAUjkK,GAAG,IAAIpE,EAAEgoK,GAAG5hK,EAAEmnG,aAAa9kG,EAAErC,EAAE+hK,aAAa,IAAI/5J,EAAEhI,EAAEmnG,YAAYpgG,EAAE/G,EAAEmiK,iBAAiB,IAAInkK,IAAI+I,GAAG,IAAI,IAAI,IAAI9I,EAAE,KAAKwJ,EAAE,EAAEA,EAAEqxJ,EAAG39J,OAAOsM,IAAI,CAAC,IAAIrL,EAAE08J,EAAGrxJ,GAAGrL,IAAIA,EAAEA,EAAE28J,cAAc12J,EAAEpC,EAAE+H,EAAEpO,EAAEmN,MAAM9I,EACpfijK,GAAGjjK,EAAE7B,IAAIulK,GAAG1jK,IAAI,SAASskK,GAAGviK,EAAEC,EAAEjC,GAAG,IAAIA,EAAEskC,IAAItiC,GAAG,CAAC,OAAOA,GAAG,IAAK,SAASwiK,GAAGviK,EAAE,UAAS,GAAI,MAAM,IAAK,QAAQ,IAAK,OAAOuiK,GAAGviK,EAAE,SAAQ,GAAIuiK,GAAGviK,EAAE,QAAO,GAAIjC,EAAEvE,IAAI,OAAO,MAAMuE,EAAEvE,IAAI,QAAQ,MAAM,MAAM,IAAK,SAAS,IAAK,QAAQooK,GAAG7hK,IAAIwiK,GAAGviK,EAAED,GAAE,GAAI,MAAM,IAAK,UAAU,IAAK,SAAS,IAAK,QAAQ,MAAM,SAAS,IAAIqgK,GAAGtnK,QAAQiH,IAAI4F,GAAE5F,EAAEC,GAAGjC,EAAEvE,IAAIuG,EAAE,OACtV,IAAIyiK,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAI3vF,IAAI4vF,GAAG,IAAI5vF,IAAI6vF,GAAG,GAAGC,GAAG,0QAA0Q79J,MAAM,KAAK89J,GAAG,gHAAgH99J,MAAM,KAC3X,SAAS+9J,GAAGtjK,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,MAAM,CAAC2pK,UAAUvjK,EAAE+hK,aAAa9hK,EAAEkiK,iBAAmB,GAAFnkK,EAAKmpG,YAAYvtG,EAAEiK,UAAUxB,GAC1M,SAASmhK,GAAGxjK,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,IAAK,OAAO8iK,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAG9zB,OAAOlvI,EAAEwjK,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBP,GAAG/zB,OAAOlvI,EAAEwjK,YAAY,SAASC,GAAG1jK,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAG,OAAG,OAAOhI,GAAGA,EAAEmnG,cAAcn/F,GAAShI,EAAEsjK,GAAGrjK,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAG,OAAO/H,IAAY,QAARA,EAAE0jK,GAAG1jK,KAAayiK,GAAGziK,IAAID,IAAEA,EAAEmiK,kBAAkB9/J,EAASrC,GAEhc,SAAS4jK,GAAG5jK,GAAG,IAAIC,EAAEqiK,GAAGtiK,EAAE2/B,QAAQ,GAAG,OAAO1/B,EAAE,CAAC,IAAIjC,EAAEwiK,GAAGvgK,GAAG,GAAG,OAAOjC,EAAE,GAAW,MAARiC,EAAEjC,EAAEmG,MAAY,GAAW,QAARlE,EAAE0gK,GAAG3iK,IAAoF,OAAvEgC,EAAEujK,UAAUtjK,OAAEuC,EAAEqhK,yBAAyB7jK,EAAEsa,UAAS,WAAWqoJ,GAAG3kK,WAAkB,GAAG,IAAIiC,GAAGjC,EAAE87J,UAAU/F,QAA8D,YAArD/zJ,EAAEujK,UAAU,IAAIvlK,EAAEmG,IAAInG,EAAE87J,UAAUuI,cAAc,MAAariK,EAAEujK,UAAU,KAAK,SAASO,GAAG9jK,GAAG,GAAG,OAAOA,EAAEujK,UAAU,OAAM,EAAG,IAAItjK,EAAE8jK,GAAG/jK,EAAE+hK,aAAa/hK,EAAEmiK,iBAAiBniK,EAAE6D,UAAU7D,EAAEmnG,aAAa,GAAG,OAAOlnG,EAAE,CAAC,IAAIjC,EAAE2lK,GAAG1jK,GAAiC,OAA9B,OAAOjC,GAAG0kK,GAAG1kK,GAAGgC,EAAEujK,UAAUtjK,GAAQ,EAAG,OAAM,EAC1e,SAAS+jK,GAAGhkK,EAAEC,EAAEjC,GAAG8lK,GAAG9jK,IAAIhC,EAAEmxI,OAAOlvI,GAAG,SAASgkK,KAAK,IAAIrB,IAAG,EAAG,EAAEC,GAAG1nK,QAAQ,CAAC,IAAI6E,EAAE6iK,GAAG,GAAG,GAAG,OAAO7iK,EAAEujK,UAAU,CAAmB,QAAlBvjK,EAAE2jK,GAAG3jK,EAAEujK,aAAqBd,GAAGziK,GAAG,MAAM,IAAIC,EAAE8jK,GAAG/jK,EAAE+hK,aAAa/hK,EAAEmiK,iBAAiBniK,EAAE6D,UAAU7D,EAAEmnG,aAAa,OAAOlnG,EAAED,EAAEujK,UAAUtjK,EAAE4iK,GAAGzoI,QAAQ,OAAO0oI,IAAIgB,GAAGhB,MAAMA,GAAG,MAAM,OAAOC,IAAIe,GAAGf,MAAMA,GAAG,MAAM,OAAOC,IAAIc,GAAGd,MAAMA,GAAG,MAAMC,GAAG7hK,QAAQ4iK,IAAId,GAAG9hK,QAAQ4iK,IAAI,SAASE,GAAGlkK,EAAEC,GAAGD,EAAEujK,YAAYtjK,IAAID,EAAEujK,UAAU,KAAKX,KAAKA,IAAG,EAAGpgK,EAAE2hK,0BAA0B3hK,EAAE4hK,wBAAwBH,MACze,SAASI,GAAGrkK,GAAG,SAASC,EAAEA,GAAG,OAAOikK,GAAGjkK,EAAED,GAAG,GAAG,EAAE6iK,GAAG1nK,OAAO,CAAC+oK,GAAGrB,GAAG,GAAG7iK,GAAG,IAAI,IAAIhC,EAAE,EAAEA,EAAE6kK,GAAG1nK,OAAO6C,IAAI,CAAC,IAAIqE,EAAEwgK,GAAG7kK,GAAGqE,EAAEkhK,YAAYvjK,IAAIqC,EAAEkhK,UAAU,OAA+F,IAAxF,OAAOT,IAAIoB,GAAGpB,GAAG9iK,GAAG,OAAO+iK,IAAImB,GAAGnB,GAAG/iK,GAAG,OAAOgjK,IAAIkB,GAAGlB,GAAGhjK,GAAGijK,GAAG7hK,QAAQnB,GAAGijK,GAAG9hK,QAAQnB,GAAOjC,EAAE,EAAEA,EAAEmlK,GAAGhoK,OAAO6C,KAAIqE,EAAE8gK,GAAGnlK,IAAKulK,YAAYvjK,IAAIqC,EAAEkhK,UAAU,MAAM,KAAK,EAAEJ,GAAGhoK,QAAiB,QAAR6C,EAAEmlK,GAAG,IAAYI,WAAYK,GAAG5lK,GAAG,OAAOA,EAAEulK,WAAWJ,GAAG/oI,QAC/X,IAAIkqI,GAAG,GAAGC,GAAG,IAAIjxF,IAAIkxF,GAAG,IAAIlxF,IAAImxF,GAAG,CAAC,QAAQ,QAAQxE,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAAY,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UACpf,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASsE,GAAG1kK,EAAEC,GAAG,IAAI,IAAIjC,EAAE,EAAEA,EAAEgC,EAAE7E,OAAO6C,GAAG,EAAE,CAAC,IAAIqE,EAAErC,EAAEhC,GAAGpE,EAAEoG,EAAEhC,EAAE,GAAGgK,EAAE,MAAMpO,EAAE,GAAG4gC,cAAc5gC,EAAEqH,MAAM,IAAI+G,EAAE,CAACkxJ,wBAAwB,CAACyL,QAAQ38J,EAAE48J,SAAS58J,EAAE,WAAWuxJ,aAAa,CAACl3J,GAAGwiK,cAAc5kK,GAAGukK,GAAG/qK,IAAI4I,EAAEpC,GAAGskK,GAAG9qK,IAAI4I,EAAE2F,GAAGs8J,GAAG1qK,GAAGoO,GACzV08J,GAAG,6iBAA6iBn/J,MAAM,KAAK,GAC3jBm/J,GAAG,oRAAoRn/J,MAAM,KAAK,GAAGm/J,GAAGD,GAAG,GAAG,IAAI,IAAIK,GAAG,qFAAqFv/J,MAAM,KAAKw/J,GAAG,EAAEA,GAAGD,GAAG3pK,OAAO4pK,KAAKP,GAAG/qK,IAAIqrK,GAAGC,IAAI,GAC9b,IAAIv/I,GAAGhjB,EAAEwiK,8BAA8BC,GAAGziK,EAAEqhK,yBAAyBqB,IAAG,EAAG,SAASt/J,GAAE5F,EAAEC,GAAGuiK,GAAGviK,EAAED,GAAE,GAAI,SAASwiK,GAAGxiK,EAAEC,EAAEjC,GAAG,IAAIqE,EAAEmiK,GAAGhrK,IAAIyG,GAAG,YAAO,IAASoC,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAE8iK,GAAGpiK,KAAK,KAAK9C,EAAE,EAAED,GAAG,MAAM,KAAK,EAAEqC,EAAE+iK,GAAGriK,KAAK,KAAK9C,EAAE,EAAED,GAAG,MAAM,QAAQqC,EAAExF,GAAGkG,KAAK,KAAK9C,EAAE,EAAED,GAAGhC,EAAEgC,EAAEugC,iBAAiBtgC,EAAEoC,GAAE,GAAIrC,EAAEugC,iBAAiBtgC,EAAEoC,GAAE,GAAI,SAAS8iK,GAAGnlK,EAAEC,EAAEjC,EAAEqE,GAAGg4J,GAAIF,IAAK,IAAIvgK,EAAEiD,GAAGmL,EAAEqyJ,EAAGA,GAAG,EAAG,IAAIH,EAAGtgK,EAAEoG,EAAEC,EAAEjC,EAAEqE,GAAG,SAASg4J,EAAGryJ,IAAIuyJ,KAAM,SAAS6K,GAAGplK,EAAEC,EAAEjC,EAAEqE,GAAG4iK,GAAGz/I,GAAG3oB,GAAGkG,KAAK,KAAK/C,EAAEC,EAAEjC,EAAEqE,IACpc,SAASxF,GAAGmD,EAAEC,EAAEjC,EAAEqE,GAAG,GAAG6iK,GAAG,GAAG,EAAErC,GAAG1nK,SAAS,EAAEioK,GAAGrqK,QAAQiH,GAAGA,EAAEsjK,GAAG,KAAKtjK,EAAEC,EAAEjC,EAAEqE,GAAGwgK,GAAG7pK,KAAKgH,OAAO,CAAC,IAAIpG,EAAEmqK,GAAG/jK,EAAEC,EAAEjC,EAAEqE,GAAG,GAAG,OAAOzI,EAAE4pK,GAAGxjK,EAAEqC,QAAQ,IAAI,EAAE+gK,GAAGrqK,QAAQiH,GAAGA,EAAEsjK,GAAG1pK,EAAEoG,EAAEC,EAAEjC,EAAEqE,GAAGwgK,GAAG7pK,KAAKgH,QAAQ,IAT9L,SAAYA,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,OAAOqG,GAAG,IAAK,QAAQ,OAAO6iK,GAAGY,GAAGZ,GAAG9iK,EAAEC,EAAEjC,EAAEqE,EAAEzI,IAAG,EAAG,IAAK,YAAY,OAAOmpK,GAAGW,GAAGX,GAAG/iK,EAAEC,EAAEjC,EAAEqE,EAAEzI,IAAG,EAAG,IAAK,YAAY,OAAOopK,GAAGU,GAAGV,GAAGhjK,EAAEC,EAAEjC,EAAEqE,EAAEzI,IAAG,EAAG,IAAK,cAAc,IAAIoO,EAAEpO,EAAE6pK,UAAkD,OAAxCR,GAAGxpK,IAAIuO,EAAE07J,GAAGT,GAAGzpK,IAAIwO,IAAI,KAAKhI,EAAEC,EAAEjC,EAAEqE,EAAEzI,KAAU,EAAG,IAAK,oBAAoB,OAAOoO,EAAEpO,EAAE6pK,UAAUP,GAAGzpK,IAAIuO,EAAE07J,GAAGR,GAAG1pK,IAAIwO,IAAI,KAAKhI,EAAEC,EAAEjC,EAAEqE,EAAEzI,KAAI,EAAG,OAAM,EAS7JyrK,CAAGzrK,EAAEoG,EAAEC,EAAEjC,EAAEqE,GAAG,CAACmhK,GAAGxjK,EAAEqC,GAAGrC,EAAEkiK,GAAGliK,EAAEqC,EAAE,KAAKpC,GAAG,IAAIu6J,EAAG4H,GAAGpiK,GAAG,QAAQ8hK,GAAG9hK,MAClQ,SAAS+jK,GAAG/jK,EAAEC,EAAEjC,EAAEqE,GAAmB,GAAG,QAAXrE,EAAEskK,GAAVtkK,EAAE4jK,GAAGv/J,KAAuB,CAAC,IAAIzI,EAAE4mK,GAAGxiK,GAAG,GAAG,OAAOpE,EAAEoE,EAAE,SAAS,CAAC,IAAIgK,EAAEpO,EAAEuK,IAAI,GAAG,KAAK6D,EAAE,CAAS,GAAG,QAAXhK,EAAE2iK,GAAG/mK,IAAe,OAAOoE,EAAEA,EAAE,UAAU,GAAG,IAAIgK,EAAE,CAAC,GAAGpO,EAAEkgK,UAAU/F,QAAQ,OAAO,IAAIn6J,EAAEuK,IAAIvK,EAAEkgK,UAAUuI,cAAc,KAAKrkK,EAAE,UAAUpE,IAAIoE,IAAIA,EAAE,OAAOgC,EAAEkiK,GAAGliK,EAAEqC,EAAErE,EAAEiC,GAAG,IAAIu6J,EAAG4H,GAAGpiK,GAAG,QAAQ8hK,GAAG9hK,GAAG,OAAO,KACpT,IAAIslK,GAAG,CAACj6J,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGo5J,UAAS,EAAGn5J,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGK,YAAW,EAAGw4J,WAAU,EAAGv4J,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGC,MAAK,EAAGE,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIw3J,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAG1lK,EAAEC,EAAEjC,GAAG,OAAO,MAAMiC,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAGjC,GAAG,iBAAkBiC,GAAG,IAAIA,GAAGqlK,GAAG7tK,eAAeuI,IAAIslK,GAAGtlK,IAAI,GAAGC,GAAGqF,OAAOrF,EAAE,KAC9Z,SAASo7H,GAAGr7H,EAAEC,GAAa,IAAI,IAAIjC,KAAlBgC,EAAEA,EAAEsmE,MAAmBrmE,EAAE,GAAGA,EAAExI,eAAeuG,GAAG,CAAC,IAAIqE,EAAE,IAAIrE,EAAEjF,QAAQ,MAAMa,EAAE8rK,GAAG1nK,EAAEiC,EAAEjC,GAAGqE,GAAG,UAAUrE,IAAIA,EAAE,YAAYqE,EAAErC,EAAE2lK,YAAY3nK,EAAEpE,GAAGoG,EAAEhC,GAAGpE,GADTrC,OAAO4J,KAAKmkK,IAAIlkK,SAAQ,SAASpB,GAAGylK,GAAGrkK,SAAQ,SAASnB,GAAGA,EAAEA,EAAED,EAAEkI,OAAO,GAAGsyB,cAAcx6B,EAAE8F,UAAU,GAAGw/J,GAAGrlK,GAAGqlK,GAAGtlK,SACrG,IAAI4lK,GAAG5iK,EAAE,CAAC6iK,UAAS,GAAI,CAAC7nF,MAAK,EAAG1tD,MAAK,EAAGw1I,IAAG,EAAGC,KAAI,EAAGtoC,OAAM,EAAGuoC,IAAG,EAAGtzF,KAAI,EAAGlgE,OAAM,EAAGyzJ,QAAO,EAAGt6D,MAAK,EAAGrkB,MAAK,EAAGvZ,OAAM,EAAGhzC,QAAO,EAAGq8B,OAAM,EAAG8uG,KAAI,IAClT,SAASC,GAAGnmK,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG2lK,GAAG5lK,KAAK,MAAMC,EAAEhH,UAAU,MAAMgH,EAAEozF,yBAAyB,MAAMv2F,MAAM+K,EAAE,IAAI7H,EAAE,KAAK,GAAG,MAAMC,EAAEozF,wBAAwB,CAAC,GAAG,MAAMpzF,EAAEhH,SAAS,MAAM6D,MAAM+K,EAAE,KAAK,GAAK,iBAAkB5H,EAAEozF,2BAAyB,WAAWpzF,EAAEozF,yBAAyB,MAAMv2F,MAAM+K,EAAE,KAAM,GAAG,MAAM5H,EAAEqmE,OAAO,iBAAkBrmE,EAAEqmE,MAAM,MAAMxpE,MAAM+K,EAAE,GAAG,MAClW,SAASu+J,GAAGpmK,EAAEC,GAAG,IAAI,IAAID,EAAEjH,QAAQ,KAAK,MAAM,iBAAkBkH,EAAEw/B,GAAG,OAAOz/B,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,GAAI,IAAIqmK,GAAGxH,GAAQ,SAASyH,GAAGtmK,EAAEC,GAAuD,IAAIjC,EAAEuiK,GAA1DvgK,EAAE,IAAIA,EAAEk0E,UAAU,KAAKl0E,EAAEk0E,SAASl0E,EAAEA,EAAEmpJ,eAA0BlpJ,EAAEq5J,EAAGr5J,GAAG,IAAI,IAAIoC,EAAE,EAAEA,EAAEpC,EAAE9E,OAAOkH,IAAIkgK,GAAGtiK,EAAEoC,GAAGrC,EAAEhC,GAAG,SAASuoK,MAC5a,SAASC,GAAGxmK,GAAwD,QAAG,KAAxDA,EAAEA,IAAI,oBAAqB5B,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO4B,EAAEo+J,eAAep+J,EAAE87C,KAAK,MAAM77C,GAAG,OAAOD,EAAE87C,MAAM,SAAS2qH,GAAGzmK,GAAG,KAAKA,GAAGA,EAAE04G,YAAY14G,EAAEA,EAAE04G,WAAW,OAAO14G,EAAE,SAAS0mK,GAAG1mK,EAAEC,GAAG,IAAwBoC,EAApBrE,EAAEyoK,GAAGzmK,GAAO,IAAJA,EAAE,EAAYhC,GAAG,CAAC,GAAG,IAAIA,EAAEk2E,SAAS,CAA0B,GAAzB7xE,EAAErC,EAAEhC,EAAE4oE,YAAYzrE,OAAU6E,GAAGC,GAAGoC,GAAGpC,EAAE,MAAM,CAACgK,KAAKjM,EAAE+wB,OAAO9uB,EAAED,GAAGA,EAAEqC,EAAErC,EAAE,CAAC,KAAKhC,GAAG,CAAC,GAAGA,EAAEuG,YAAY,CAACvG,EAAEA,EAAEuG,YAAY,MAAMvE,EAAEhC,EAAEA,EAAEkH,WAAWlH,OAAE,EAAOA,EAAEyoK,GAAGzoK,IAC3P,SAAS2oK,KAAK,IAAI,IAAI3mK,EAAE/I,OAAOgJ,EAAEumK,KAAKvmK,aAAaD,EAAE4mK,mBAAmB,CAAC,IAAI,IAAI5oK,EAAE,iBAAkBiC,EAAE2mI,cAActsE,SAASkyC,KAAK,MAAMnqG,GAAGrE,GAAE,EAAG,IAAGA,EAAyB,MAAMiC,EAAEumK,IAA/BxmK,EAAEC,EAAE2mI,eAAgCxoI,UAAU,OAAO6B,EAC5Y,SAAS4mK,GAAG7mK,GAAG,IAAIC,EAAED,GAAGA,EAAEm0E,UAAUn0E,EAAEm0E,SAAS1lE,cAAc,OAAOxO,IAAI,UAAUA,IAAI,SAASD,EAAEL,MAAM,WAAWK,EAAEL,MAAM,QAAQK,EAAEL,MAAM,QAAQK,EAAEL,MAAM,aAAaK,EAAEL,OAAO,aAAaM,GAAG,SAASD,EAAE8mK,iBAAiB,IAAmCC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGjnK,EAAEC,GAAG,OAAOD,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQC,EAAEinK,UAAU,OAAM,EAC7X,SAASC,GAAGnnK,EAAEC,GAAG,MAAM,aAAaD,GAAG,WAAWA,GAAG,aAAaA,GAAG,iBAAkBC,EAAEhH,UAAU,iBAAkBgH,EAAEhH,UAAU,iBAAkBgH,EAAEozF,yBAAyB,OAAOpzF,EAAEozF,yBAAyB,MAAMpzF,EAAEozF,wBAAwBC,OAAO,IAAI8zE,GAAG,mBAAoBvyF,WAAWA,gBAAW,EAAOwyF,GAAG,mBAAoBzyF,aAAaA,kBAAa,EAAO,SAAS0yF,GAAGtnK,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEuE,YAAY,CAAC,IAAItE,EAAED,EAAEk0E,SAAS,GAAG,IAAIj0E,GAAG,IAAIA,EAAE,MAAM,OAAOD,EAClc,SAASunK,GAAGvnK,GAAGA,EAAEA,EAAEwnK,gBAAgB,IAAI,IAAIvnK,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEk0E,SAAS,CAAC,IAAIl2E,EAAEgC,EAAExD,KAAK,GAFgJ,MAE7IwB,GAFoK,OAE5JA,GAFoJ,OAE5IA,EAAO,CAAC,GAAG,IAAIiC,EAAE,OAAOD,EAAEC,QAF0G,OAEjGjC,GAAQiC,IAAID,EAAEA,EAAEwnK,gBAAgB,OAAO,KAAK,IAAIC,GAAGxvJ,KAAKq5D,SAASlmE,SAAS,IAAInK,MAAM,GAAGymK,GAAG,2BAA2BD,GAAGE,GAAG,wBAAwBF,GAAGG,GAAG,qBAAqBH,GACvT,SAASnF,GAAGtiK,GAAG,IAAIC,EAAED,EAAE0nK,IAAI,GAAGznK,EAAE,OAAOA,EAAE,IAAI,IAAIjC,EAAEgC,EAAEkF,WAAWlH,GAAG,CAAC,GAAGiC,EAAEjC,EAAE4pK,KAAK5pK,EAAE0pK,IAAI,CAAe,GAAd1pK,EAAEiC,EAAEwgK,UAAa,OAAOxgK,EAAEyB,OAAO,OAAO1D,GAAG,OAAOA,EAAE0D,MAAM,IAAI1B,EAAEunK,GAAGvnK,GAAG,OAAOA,GAAG,CAAC,GAAGhC,EAAEgC,EAAE0nK,IAAI,OAAO1pK,EAAEgC,EAAEunK,GAAGvnK,GAAG,OAAOC,EAAMjC,GAAJgC,EAAEhC,GAAMkH,WAAW,OAAO,KAAK,SAASy+J,GAAG3jK,GAAkB,QAAfA,EAAEA,EAAE0nK,KAAK1nK,EAAE4nK,MAAc,IAAI5nK,EAAEmE,KAAK,IAAInE,EAAEmE,KAAK,KAAKnE,EAAEmE,KAAK,IAAInE,EAAEmE,IAAI,KAAKnE,EAAE,SAAS6nK,GAAG7nK,GAAG,GAAG,IAAIA,EAAEmE,KAAK,IAAInE,EAAEmE,IAAI,OAAOnE,EAAE85J,UAAU,MAAMh9J,MAAM+K,EAAE,KAAM,SAASigK,GAAG9nK,GAAG,OAAOA,EAAE2nK,KAAK,KAClb,SAASI,GAAG/nK,GAAG,GAAGA,EAAEA,EAAEg9J,aAAah9J,GAAG,IAAIA,EAAEmE,KAAK,OAAOnE,GAAI,KAC5D,SAASgoK,GAAGhoK,EAAEC,GAAG,IAAIjC,EAAEgC,EAAE85J,UAAU,IAAI97J,EAAE,OAAO,KAAK,IAAIqE,EAAEkE,EAAGvI,GAAG,IAAIqE,EAAE,OAAO,KAAKrE,EAAEqE,EAAEpC,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBoC,GAAGA,EAAEg8D,YAAqBh8D,IAAI,YAAbrC,EAAEA,EAAEL,OAAuB,UAAUK,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGqC,EAAE,MAAMrC,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGhC,GAAG,mBAAoBA,EAAE,MAAMlB,MAAM+K,EAAE,IACjgB5H,SAASjC,IAAI,OAAOA,EAAE,SAASiqK,GAAGjoK,EAAEC,EAAEjC,IAAMiC,EAAE+nK,GAAGhoK,EAAEhC,EAAEkqK,eAAehP,wBAAwBj5J,OAAIjC,EAAEsjK,mBAAmBJ,GAAGljK,EAAEsjK,mBAAmBrhK,GAAGjC,EAAEujK,mBAAmBL,GAAGljK,EAAEujK,mBAAmBvhK,IAAG,SAASmoK,GAAGnoK,GAAG,GAAGA,GAAGA,EAAEkoK,eAAehP,wBAAwB,CAAC,IAAI,IAAIj5J,EAAED,EAAEooK,YAAYpqK,EAAE,GAAGiC,GAAGjC,EAAEhF,KAAKiH,GAAGA,EAAE8nK,GAAG9nK,GAAG,IAAIA,EAAEjC,EAAE7C,OAAO,EAAE8E,KAAKgoK,GAAGjqK,EAAEiC,GAAG,WAAWD,GAAG,IAAIC,EAAE,EAAEA,EAAEjC,EAAE7C,OAAO8E,IAAIgoK,GAAGjqK,EAAEiC,GAAG,UAAUD,IACtY,SAASqoK,GAAGroK,EAAEC,EAAEjC,GAAGgC,GAAGhC,GAAGA,EAAEkqK,eAAe9O,mBAAmBn5J,EAAE+nK,GAAGhoK,EAAEhC,EAAEkqK,eAAe9O,qBAAqBp7J,EAAEsjK,mBAAmBJ,GAAGljK,EAAEsjK,mBAAmBrhK,GAAGjC,EAAEujK,mBAAmBL,GAAGljK,EAAEujK,mBAAmBvhK,IAAI,SAASsoK,GAAGtoK,GAAGA,GAAGA,EAAEkoK,eAAe9O,kBAAkBiP,GAAGroK,EAAEooK,YAAY,KAAKpoK,GAAG,SAASuoK,GAAGvoK,GAAGmhK,GAAGnhK,EAAEmoK,IAAI,IAAIK,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxU,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI1oK,EAAkBqC,EAAhBpC,EAAEwoK,GAAGzqK,EAAEiC,EAAE9E,OAASvB,EAAE,UAAU4uK,GAAGA,GAAG9uK,MAAM8uK,GAAG5hG,YAAY5+D,EAAEpO,EAAEuB,OAAO,IAAI6E,EAAE,EAAEA,EAAEhC,GAAGiC,EAAED,KAAKpG,EAAEoG,GAAGA,KAAK,IAAI+G,EAAE/I,EAAEgC,EAAE,IAAIqC,EAAE,EAAEA,GAAG0E,GAAG9G,EAAEjC,EAAEqE,KAAKzI,EAAEoO,EAAE3F,GAAGA,KAAK,OAAOqmK,GAAG9uK,EAAEqH,MAAMjB,EAAE,EAAEqC,EAAE,EAAEA,OAAE,GAAQ,SAASumK,KAAK,OAAM,EAAG,SAASC,KAAK,OAAM,EAClQ,SAASxiK,GAAErG,EAAEC,EAAEjC,EAAEqE,GAA4F,IAAI,IAAIzI,KAAjG+B,KAAKusK,eAAeloK,EAAErE,KAAKysK,YAAYnoK,EAAEtE,KAAKwrG,YAAYnpG,EAAEgC,EAAErE,KAAKinC,YAAYkmI,UAAyB9oK,EAAEvI,eAAemC,MAAMqG,EAAED,EAAEpG,IAAI+B,KAAK/B,GAAGqG,EAAEjC,GAAG,WAAWpE,EAAE+B,KAAKgkC,OAAOt9B,EAAE1G,KAAK/B,GAAGoE,EAAEpE,IAAgI,OAA5H+B,KAAKotK,oBAAoB,MAAM/qK,EAAEgrK,iBAAiBhrK,EAAEgrK,kBAAiB,IAAKhrK,EAAEirK,aAAaL,GAAGC,GAAGltK,KAAK6lK,qBAAqBqH,GAAUltK,KAGrF,SAASutK,GAAGlpK,EAAEC,EAAEjC,EAAEqE,GAAG,GAAG1G,KAAKwtK,UAAUhuK,OAAO,CAAC,IAAIvB,EAAE+B,KAAKwtK,UAAUzpK,MAA2B,OAArB/D,KAAKjE,KAAKkC,EAAEoG,EAAEC,EAAEjC,EAAEqE,GAAUzI,EAAE,OAAO,IAAI+B,KAAKqE,EAAEC,EAAEjC,EAAEqE,GAC7X,SAAS+mK,GAAGppK,GAAG,KAAKA,aAAarE,MAAM,MAAMmB,MAAM+K,EAAE,MAAM7H,EAAEqpK,aAAa,GAAG1tK,KAAKwtK,UAAUhuK,QAAQQ,KAAKwtK,UAAUnwK,KAAKgH,GAAG,SAASspK,GAAGtpK,GAAGA,EAAEmpK,UAAU,GAAGnpK,EAAEupK,UAAUL,GAAGlpK,EAAE0hK,QAAQ0H,GAHlLpmK,EAAEqD,GAAE7O,UAAU,CAACuhG,eAAe,WAAWp9F,KAAKqtK,kBAAiB,EAAG,IAAIhpK,EAAErE,KAAKwrG,YAAYnnG,IAAIA,EAAE+4F,eAAe/4F,EAAE+4F,iBAAiB,kBAAmB/4F,EAAEipK,cAAcjpK,EAAEipK,aAAY,GAAIttK,KAAKotK,mBAAmBH,KAAKr8D,gBAAgB,WAAW,IAAIvsG,EAAErE,KAAKwrG,YAAYnnG,IAAIA,EAAEusG,gBAAgBvsG,EAAEusG,kBAAkB,kBAAmBvsG,EAAEwpK,eAAexpK,EAAEwpK,cAAa,GAAI7tK,KAAK6lK,qBAAqBoH,KAAKa,QAAQ,WAAW9tK,KAAK8lK,aAAamH,IAAInH,aAAaoH,GAAGQ,WAAW,WAAW,IACpdppK,EADwdD,EAAErE,KAAKinC,YAAYkmI,UACze,IAAI7oK,KAAKD,EAAErE,KAAKsE,GAAG,KAAKtE,KAAKwrG,YAAYxrG,KAAKysK,YAAYzsK,KAAKusK,eAAe,KAAKvsK,KAAK6lK,qBAAqB7lK,KAAKotK,mBAAmBF,GAAGltK,KAAK4lK,mBAAmB5lK,KAAK2lK,mBAAmB,QAAQj7J,GAAEyiK,UAAU,CAACnpK,KAAK,KAAKggC,OAAO,KAAKo7C,cAAc,WAAW,OAAO,MAAMsf,WAAW,KAAKt5D,QAAQ,KAAKqgG,WAAW,KAAK2mB,UAAU,SAAS/nJ,GAAG,OAAOA,EAAE+nJ,WAAW/0I,KAAKqX,OAAO2+I,iBAAiB,KAAKU,UAAU,MAC9YrjK,GAAE8M,OAAO,SAASnT,GAAG,SAASC,KAAK,SAASjC,IAAI,OAAOqE,EAAEpG,MAAMN,KAAK8V,WAAW,IAAIpP,EAAE1G,KAAKsE,EAAEzI,UAAU6K,EAAE7K,UAAU,IAAIoC,EAAE,IAAIqG,EAAmH,OAAjH+C,EAAEpJ,EAAEoE,EAAExG,WAAWwG,EAAExG,UAAUoC,EAAEoE,EAAExG,UAAUorC,YAAY5kC,EAAEA,EAAE8qK,UAAU9lK,EAAE,GAAGX,EAAEymK,UAAU9oK,GAAGhC,EAAEmV,OAAO9Q,EAAE8Q,OAAOm2J,GAAGtrK,GAAUA,GAAGsrK,GAAGjjK,IACvE,IAAIsjK,GAAGtjK,GAAE8M,OAAO,CAAC3W,KAAK,OAAOotK,GAAGvjK,GAAE8M,OAAO,CAAC3W,KAAK,OAAOqtK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGrQ,GAAI,qBAAqBxiK,OAAO8yK,GAAG,KAAKtQ,GAAI,iBAAiBr7J,WAAW2rK,GAAG3rK,SAASq0E,cAClV,IAAIu3F,GAAGvQ,GAAI,cAAcxiK,SAAS8yK,GAAGxxK,GAAGkhK,KAAMqQ,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIE,GAAG54I,OAAO+7C,aAAa,IAAI88F,GAAG,CAACC,YAAY,CAACjR,wBAAwB,CAACyL,QAAQ,gBAAgBC,SAAS,wBAAwBrL,aAAa,CAAC,iBAAiB,WAAW,YAAY,UAAU6Q,eAAe,CAAClR,wBAAwB,CAACyL,QAAQ,mBAAmBC,SAAS,2BAA2BrL,aAAa,uDAAuDh0J,MAAM,MAAM8kK,iBAAiB,CAACnR,wBAAwB,CAACyL,QAAQ,qBAC7eC,SAAS,6BAA6BrL,aAAa,yDAAyDh0J,MAAM,MAAM+kK,kBAAkB,CAACpR,wBAAwB,CAACyL,QAAQ,sBAAsBC,SAAS,8BAA8BrL,aAAa,0DAA0Dh0J,MAAM,OAAOglK,IAAG,EAChU,SAASC,GAAGxqK,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAI6pK,GAAG9wK,QAAQkH,EAAE6tF,SAAS,IAAK,UAAU,OAAO,MAAM7tF,EAAE6tF,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO,OAAM,EAAG,QAAQ,OAAM,GAAI,SAASs1B,GAAGpjH,GAAc,MAAM,iBAAjBA,EAAEA,EAAE4gC,SAAkC,SAAS5gC,EAAEA,EAAExD,KAAK,KAAK,IAAIiuK,IAAG,EAE1Q,IAAIC,GAAG,CAAC1R,WAAWkR,GAAGnR,cAAc,SAAS/4J,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAE,GAAGkwK,GAAG7pK,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIgI,EAAEkiK,GAAGG,iBAAiB,MAAMpqK,EAAE,IAAK,iBAAiB+H,EAAEkiK,GAAGE,eAAe,MAAMnqK,EAAE,IAAK,oBAAoB+H,EAAEkiK,GAAGI,kBAAkB,MAAMrqK,EAAE+H,OAAE,OAAYyiK,GAAGD,GAAGxqK,EAAEhC,KAAKgK,EAAEkiK,GAAGE,gBAAgB,YAAYpqK,GAAG,MAAMhC,EAAE8vF,UAAU9lF,EAAEkiK,GAAGG,kBAClL,OADoMriK,GAAGzP,IAAI,OAAOyF,EAAEuV,SAASk3J,IAAIziK,IAAIkiK,GAAGG,iBAAiBriK,IAAIkiK,GAAGE,gBAAgBK,KAAK7wK,EAAE+uK,OAAYF,GAAG,UAARD,GAAGnmK,GAAkBmmK,GAAG9uK,MAAM8uK,GAAG5hG,YAAY6jG,IAAG,IAAKziK,EAAE2hK,GAAGJ,UAAUvhK,EACzf/H,EAAEjC,EAAEqE,GAAGzI,EAAEoO,EAAExL,KAAK5C,EAAW,QAARA,EAAEwpH,GAAGplH,MAAcgK,EAAExL,KAAK5C,GAAI2uK,GAAGvgK,GAAGpO,EAAEoO,GAAGpO,EAAE,MAAMoG,EAAEgqK,GAHuM,SAAYhqK,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAOojH,GAAGnjH,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAE0qK,MAAa,MAAKJ,IAAG,EAAUN,IAAG,IAAK,YAAY,OAAOjqK,EAAEC,EAAEzD,QAASytK,IAAIM,GAAG,KAAKvqK,EAAE,QAAQ,OAAO,MAGhY4qK,CAAG5qK,EAAEhC,GAF9E,SAAYgC,EAAEC,GAAG,GAAGwqK,GAAG,MAAM,mBAAmBzqK,IAAI8pK,IAAIU,GAAGxqK,EAAEC,IAAID,EAAE2oK,KAAKD,GAAGD,GAAGD,GAAG,KAAKiC,IAAG,EAAGzqK,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAQ,OAAO,KAAK,IAAK,WAAW,KAAKC,EAAE4qK,SAAS5qK,EAAE6qK,QAAQ7qK,EAAE8qK,UAAU9qK,EAAE4qK,SAAS5qK,EAAE6qK,OAAO,CAAC,GAAG7qK,EAAE0nH,MAAM,EAAE1nH,EAAE0nH,KAAKxsH,OAAO,OAAO8E,EAAE0nH,KAAK,GAAG1nH,EAAE0qK,MAAM,OAAOt5I,OAAO+7C,aAAantE,EAAE0qK,OAAO,OAAO,KAAK,IAAK,iBAAiB,OAAOpyK,IAAI,OAAO0H,EAAEsT,OAAO,KAAKtT,EAAEzD,KAAK,QAAQ,OAAO,MAEjTwuK,CAAGhrK,EAAEhC,MAAKiC,EAAE2pK,GAAGL,UAAUW,GAAGC,YAAYlqK,EAAEjC,EAAEqE,IAAK7F,KAAKwD,EAAEuoK,GAAGtoK,IAAIA,EAAE,KAAY,OAAOrG,EAAEqG,EAAE,OAAOA,EAAErG,EAAE,CAACA,EAAEqG,KAAKgrK,GAAG,CAACnsH,OAAM,EAAG1jC,MAAK,EAAGm1B,UAAS,EAAG,kBAAiB,EAAG2zB,OAAM,EAAG/oD,OAAM,EAAGtD,QAAO,EAAGqzJ,UAAS,EAAGtyH,OAAM,EAAG4hB,QAAO,EAAG2wG,KAAI,EAAGtxF,MAAK,EAAGhlD,MAAK,EAAGioC,KAAI,EAAGp8C,MAAK,GAAI,SAAS0qJ,GAAGprK,GAAG,IAAIC,EAAED,GAAGA,EAAEm0E,UAAUn0E,EAAEm0E,SAAS1lE,cAAc,MAAM,UAAUxO,IAAIgrK,GAAGjrK,EAAEL,MAAM,aAAaM,EAC5b,IAAIorK,GAAG,CAACpwC,OAAO,CAACi+B,wBAAwB,CAACyL,QAAQ,WAAWC,SAAS,mBAAmBrL,aAAa,8DAA8Dh0J,MAAM,OAAO,SAAS+lK,GAAGtrK,EAAEC,EAAEjC,GAA8D,OAA3DgC,EAAEqG,GAAEkjK,UAAU8B,GAAGpwC,OAAOj7H,EAAEC,EAAEjC,IAAK2B,KAAK,SAASo6J,EAAG/7J,GAAGuqK,GAAGvoK,GAAUA,EAAE,IAAIurK,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGzrK,GAAG2hK,GAAG3hK,GAAG,SAAS0rK,GAAG1rK,GAAe,GAAGw9J,GAATqK,GAAG7nK,IAAY,OAAOA,EAAE,SAAS2rK,GAAG3rK,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,EAAE,IAAI2rK,IAAG,EAC9Y,SAASC,KAAKN,KAAKA,GAAGO,YAAY,mBAAmBC,IAAIP,GAAGD,GAAG,MAAM,SAASQ,GAAG/rK,GAAG,GAAG,UAAUA,EAAE8oJ,cAAc4iB,GAAGF,IAAI,GAAGxrK,EAAEsrK,GAAGE,GAAGxrK,EAAE4hK,GAAG5hK,IAAIq6J,EAAGsH,GAAG3hK,OAAO,CAACq6J,GAAG,EAAG,IAAIJ,EAAGwR,GAAGzrK,GAAG,QAAQq6J,GAAG,EAAGE,MAAO,SAASyR,GAAGhsK,EAAEC,EAAEjC,GAAG,UAAUgC,GAAG6rK,KAAUL,GAAGxtK,GAARutK,GAAGtrK,GAAUugC,YAAY,mBAAmBurI,KAAK,SAAS/rK,GAAG6rK,KAAK,SAASI,GAAGjsK,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAO0rK,GAAGF,IAAI,SAASU,GAAGlsK,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAO0rK,GAAGzrK,GAAG,SAASksK,GAAGnsK,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAO0rK,GAAGzrK,GAD/Ew5J,IAAKmS,GAAG/J,GAAG,YAAYzjK,SAASq0E,cAAc,EAAEr0E,SAASq0E,eAE1c,IAAI25F,GAAG,CAACpT,WAAWqS,GAAGgB,uBAAuBT,GAAG7S,cAAc,SAAS/4J,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAEqG,EAAE4nK,GAAG5nK,GAAGhJ,OAAO+Q,EAAEpO,EAAEu6E,UAAUv6E,EAAEu6E,SAAS1lE,cAAc,GAAG,WAAWzG,GAAG,UAAUA,GAAG,SAASpO,EAAE+F,KAAK,IAAIoH,EAAE4kK,QAAQ,GAAGP,GAAGxxK,GAAG,GAAGgyK,GAAG7kK,EAAEolK,OAAO,CAACplK,EAAEklK,GAAG,IAAIhuK,EAAE+tK,QAAQhkK,EAAEpO,EAAEu6E,WAAW,UAAUnsE,EAAEyG,gBAAgB,aAAa7U,EAAE+F,MAAM,UAAU/F,EAAE+F,QAAQoH,EAAEmlK,IAAI,GAAGnlK,IAAIA,EAAEA,EAAE/G,EAAEC,IAAI,OAAOqrK,GAAGvkK,EAAE/I,EAAEqE,GAAGpE,GAAGA,EAAE+B,EAAEpG,EAAEqG,GAAG,SAASD,IAAIA,EAAEpG,EAAE+jK,gBAAgB39J,EAAE+9J,YAAY,WAAWnkK,EAAE+F,MAAMu+J,GAAGtkK,EAAE,SAASA,EAAEF,SAAS4yK,GAAGjmK,GAAE8M,OAAO,CAACk9F,KAAK,KAAKzvE,OAAO,OACrf2rI,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAG5sK,GAAG,IAAIC,EAAEtE,KAAKwrG,YAAY,OAAOlnG,EAAE4sK,iBAAiB5sK,EAAE4sK,iBAAiB7sK,MAAIA,EAAEusK,GAAGvsK,OAAMC,EAAED,GAAM,SAAS8sK,KAAK,OAAOF,GACnM,IAAIG,GAAG,EAAEC,GAAG,EAAEC,IAAG,EAAGC,IAAG,EAAGC,GAAGb,GAAGn5J,OAAO,CAACi6J,QAAQ,KAAKC,QAAQ,KAAKC,QAAQ,KAAKC,QAAQ,KAAKC,MAAM,KAAKC,MAAM,KAAK5C,QAAQ,KAAKr3D,SAAS,KAAKs3D,OAAO,KAAKC,QAAQ,KAAK8B,iBAAiBC,GAAGlgE,OAAO,KAAK+qB,QAAQ,KAAKnB,cAAc,SAASx2H,GAAG,OAAOA,EAAEw2H,gBAAgBx2H,EAAE0tK,cAAc1tK,EAAEi5F,WAAWj5F,EAAE2tK,UAAU3tK,EAAE0tK,cAAcE,UAAU,SAAS5tK,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAE4tK,UAAU,IAAI3tK,EAAE8sK,GAAgB,OAAbA,GAAG/sK,EAAEotK,QAAeH,GAAG,cAAcjtK,EAAEL,KAAKK,EAAEotK,QAAQntK,EAAE,GAAGgtK,IAAG,EAAG,IAAIY,UAAU,SAAS7tK,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAE6tK,UAC3f,IAAI5tK,EAAE+sK,GAAgB,OAAbA,GAAGhtK,EAAEqtK,QAAeH,GAAG,cAAcltK,EAAEL,KAAKK,EAAEqtK,QAAQptK,EAAE,GAAGitK,IAAG,EAAG,MAAMY,GAAGX,GAAGh6J,OAAO,CAACswJ,UAAU,KAAK3+H,MAAM,KAAKC,OAAO,KAAKgpI,SAAS,KAAKC,mBAAmB,KAAKC,MAAM,KAAKC,MAAM,KAAKC,MAAM,KAAKC,YAAY,KAAKC,UAAU,OAAOC,GAAG,CAACC,WAAW,CAACnV,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAciV,WAAW,CAACpV,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAckV,aAAa,CAACrV,iBAAiB,iBAAiBG,aAAa,CAAC,aAAa,gBAAgBmV,aAAa,CAACtV,iBAAiB,iBACjhBG,aAAa,CAAC,aAAa,iBAAiBoV,GAAG,CAAC3V,WAAWsV,GAAGvV,cAAc,SAAS/4J,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,IAAIoO,EAAE,cAAchI,GAAG,gBAAgBA,EAAE+G,EAAE,aAAa/G,GAAG,eAAeA,EAAE,GAAGgI,GAAG,IAAO,GAAFpO,KAAQoE,EAAEw4H,eAAex4H,EAAE0vK,eAAe3mK,IAAIiB,EAAE,OAAO,MAAKA,EAAE3F,EAAEpL,SAASoL,EAAEA,GAAG2F,EAAE3F,EAAE8mJ,eAAenhJ,EAAEohJ,aAAaphJ,EAAE4mK,aAAa33K,OAAU8P,IAAMA,EAAE9G,EAAgD,QAA9CA,GAAGA,EAAEjC,EAAEw4H,eAAex4H,EAAE2vK,WAAWrL,GAAGriK,GAAG,QAA8BA,IAATugK,GAAGvgK,IAAa,IAAIA,EAAEkE,KAAK,IAAIlE,EAAEkE,OAAIlE,EAAE,OAAW8G,EAAE,KAAK,GAAGA,IAAI9G,EAAE,OAAO,KAAK,GAAG,aAAaD,GAAG,cACzeA,EAAG,IAAIyH,EAAE0lK,GAAO/wK,EAAEkyK,GAAGE,WAAepsK,EAAEksK,GAAGC,WAAelxK,EAAE,YAAgB,eAAe2C,GAAG,gBAAgBA,IAAEyH,EAAEqmK,GAAG1xK,EAAEkyK,GAAGI,aAAatsK,EAAEksK,GAAGG,aAAapxK,EAAE,WAAgM,GAAtL2C,EAAE,MAAM+G,EAAEiB,EAAE6/J,GAAG9gK,GAAGiB,EAAE,MAAM/H,EAAE+H,EAAE6/J,GAAG5nK,IAAG7D,EAAEqL,EAAE8hK,UAAUntK,EAAE2K,EAAE/I,EAAEqE,IAAK1C,KAAKtC,EAAE,QAAQjB,EAAEujC,OAAO3/B,EAAE5D,EAAEo6H,cAAcxuH,GAAEhK,EAAEyJ,EAAE8hK,UAAUnnK,EAAEnC,EAAEjC,EAAEqE,IAAK1C,KAAKtC,EAAE,QAAQW,EAAE2hC,OAAO33B,EAAEhK,EAAEw4H,cAAcx2H,EAAM3C,EAAE4C,GAANoC,EAAE0E,IAAY1J,EAAE2C,EAAE,CAAa,IAARoC,EAAE/E,EAAE0J,EAAE,EAAM/G,EAAhByH,EAAEpF,EAAkBrC,EAAEA,EAAE+nK,GAAG/nK,GAAG+G,IAAQ,IAAJ/G,EAAE,EAAMC,EAAEmC,EAAEnC,EAAEA,EAAE8nK,GAAG9nK,GAAGD,IAAI,KAAK,EAAE+G,EAAE/G,GAAGyH,EAAEsgK,GAAGtgK,GAAGV,IAAI,KAAK,EAAE/G,EAAE+G,GAAG3E,EAAE2lK,GAAG3lK,GAAGpC,IAAI,KAAK+G,KAAK,CAAC,GAAGU,IAAIrF,GAAGqF,IAAIrF,EAAEq+J,UAAU,MAAMzgK,EAC3fyH,EAAEsgK,GAAGtgK,GAAGrF,EAAE2lK,GAAG3lK,GAAGqF,EAAE,UAAUA,EAAE,KAAS,IAAJrF,EAAEqF,EAAMA,EAAE,GAAGpF,GAAGA,IAAID,IAAqB,QAAjB2E,EAAE1E,EAAEo+J,YAAuB15J,IAAI3E,IAAQqF,EAAEzO,KAAKqJ,GAAGA,EAAE0lK,GAAG1lK,GAAG,IAAIA,EAAE,GAAGhF,GAAGA,IAAI+E,IAAqB,QAAjB2E,EAAE1J,EAAEojK,YAAuB15J,IAAI3E,IAAQC,EAAErJ,KAAKqE,GAAGA,EAAE0qK,GAAG1qK,GAAG,IAAIA,EAAE,EAAEA,EAAEoK,EAAEtM,OAAOkC,IAAIgrK,GAAG5gK,EAAEpK,GAAG,UAAUjB,GAAG,IAAIiB,EAAEgF,EAAElH,OAAO,EAAEkC,KAAKgrK,GAAGhmK,EAAEhF,GAAG,WAAWW,GAAG,OAAO,IAAO,GAAFpE,GAAM,CAACwC,GAAG,CAACA,EAAE4B,KAAqE,IAAI6wK,GAAG,mBAAoBt3K,OAAOkoC,GAAGloC,OAAOkoC,GAA5G,SAAYz/B,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,GAAI,EAAEC,IAAID,GAAIA,GAAGC,GAAIA,GAAoD6uK,GAAGv3K,OAAOC,UAAUC,eAC7b,SAASs3K,GAAG/uK,EAAEC,GAAG,GAAG4uK,GAAG7uK,EAAEC,GAAG,OAAM,EAAG,GAAG,iBAAkBD,GAAG,OAAOA,GAAG,iBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIjC,EAAEzG,OAAO4J,KAAKnB,GAAGqC,EAAE9K,OAAO4J,KAAKlB,GAAG,GAAGjC,EAAE7C,SAASkH,EAAElH,OAAO,OAAM,EAAG,IAAIkH,EAAE,EAAEA,EAAErE,EAAE7C,OAAOkH,IAAI,IAAIysK,GAAGp3K,KAAKuI,EAAEjC,EAAEqE,MAAMwsK,GAAG7uK,EAAEhC,EAAEqE,IAAIpC,EAAEjC,EAAEqE,KAAK,OAAM,EAAG,OAAM,EACpQ,IAAI2sK,GAAGvV,GAAI,iBAAiBr7J,UAAU,IAAIA,SAASq0E,aAAaw8F,GAAG,CAACC,OAAO,CAAChW,wBAAwB,CAACyL,QAAQ,WAAWC,SAAS,mBAAmBrL,aAAa,iFAAiFh0J,MAAM,OAAO4pK,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC1R,SAASC,GAAGvvK,EAAEC,GAAG,IAAIjC,EAAEiC,EAAEhJ,SAASgJ,EAAEA,EAAE7B,SAAS,IAAI6B,EAAEi0E,SAASj0E,EAAEA,EAAEkpJ,cAAc,OAAGmmB,IAAI,MAAMH,IAAIA,KAAK3I,GAAGxoK,GAAU,MAAU,mBAALA,EAAEmxK,KAAyBtI,GAAG7oK,GAAGA,EAAE,CAAC66C,MAAM76C,EAAEwxK,eAAex2H,IAAIh7C,EAAEyxK,cAAuFzxK,EAAE,CAAC0xK,YAA3E1xK,GAAGA,EAAEmrJ,eAAenrJ,EAAEmrJ,cAAcC,aAAanyJ,QAAQ04K,gBAA+BD,WAAWE,aAAa5xK,EAAE4xK,aAAaC,UAAU7xK,EAAE6xK,UAAUC,YAAY9xK,EAAE8xK,aAAqBT,IAAIN,GAAGM,GAAGrxK,GAAG,MAAMqxK,GAAGrxK,GAAEgC,EAAEqG,GAAEkjK,UAAU0F,GAAGC,OAAOE,GAAGpvK,EAAEC,IAAKN,KAAK,SAASK,EAAE2/B,OAAOwvI,GAAG5G,GAAGvoK,GAAGA,IAC1d,IAAI+vK,GAAG,CAAC/W,WAAWiW,GAAGlW,cAAc,SAAS/4J,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAmE,KAAKA,IAArEpO,EAAEoO,IAAI3F,EAAEpL,SAASoL,EAAEA,EAAEjE,SAAS,IAAIiE,EAAE6xE,SAAS7xE,EAAEA,EAAE8mJ,iBAA0B,CAACnpJ,EAAE,CAACpG,EAAE2mK,GAAG3mK,GAAGoO,EAAEsxJ,EAAG0W,SAAS,IAAI,IAAIjpK,EAAE,EAAEA,EAAEiB,EAAE7M,OAAO4L,IAAI,IAAInN,EAAE0oC,IAAIt6B,EAAEjB,IAAI,CAACnN,GAAE,EAAG,MAAMoG,EAAEpG,GAAE,EAAGoO,GAAGpO,EAAE,GAAGoO,EAAE,OAAO,KAAsB,OAAjBpO,EAAEqG,EAAE4nK,GAAG5nK,GAAGhJ,OAAc+I,GAAG,IAAK,SAAWorK,GAAGxxK,IAAI,SAASA,EAAEktK,mBAAgBqI,GAAGv1K,EAAEw1K,GAAGnvK,EAAEovK,GAAG,MAAK,MAAM,IAAK,OAAOA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAU,OAAOA,IAAG,EAAGC,GAAGvxK,EAAEqE,GAAG,IAAK,kBAAkB,GAAG2sK,GAAG,MACxf,IAAK,UAAU,IAAK,QAAQ,OAAOO,GAAGvxK,EAAEqE,GAAG,OAAO,OAAO4tK,GAAG5pK,GAAE8M,OAAO,CAAC+8J,cAAc,KAAKC,YAAY,KAAKC,cAAc,OAAOC,GAAGhqK,GAAE8M,OAAO,CAACm9J,cAAc,SAAStwK,GAAG,MAAM,kBAAkBA,EAAEA,EAAEswK,cAAcr5K,OAAOq5K,iBAAiBC,GAAGjE,GAAGn5J,OAAO,CAACqjH,cAAc,OAAO,SAASg6C,GAAGxwK,GAAG,IAAIC,EAAED,EAAE8tF,QAA+E,MAAvE,aAAa9tF,EAAgB,KAAbA,EAAEA,EAAEywK,WAAgB,KAAKxwK,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,EACxY,IAAI0wK,GAAG,CAACC,IAAI,SAASC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC5nD,EAAE,YAAYC,EAAE,MAAMsE,GAAG,QAAQC,GAAG,QAAQqjD,GAAG,QAAQC,GAAG,UAAUC,GAAG,MAAMC,GAAG,QAAQrnD,GAAG,WAAWsnD,GAAG,SAASC,GAAG,IAAIC,GAAG,SAASC,GAAG,WAAWC,GAAG,MAAMC,GAAG,OAAOC,GAAG,YAAYC,GAAG,UAAUC,GAAG,aAAa9kD,GAAG,YAAY+kD,GAAG,SAASC,GAAG,SAASC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAChfC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,KAAKC,IAAI,MAAMC,IAAI,MAAMC,IAAI,MAAMC,IAAI,UAAUC,IAAI,aAAaC,IAAI,QAAQC,GAAGhH,GAAGn5J,OAAO,CAACrQ,IAAI,SAAS9C,GAAG,GAAGA,EAAE8C,IAAI,CAAC,IAAI7C,EAAEywK,GAAG1wK,EAAE8C,MAAM9C,EAAE8C,IAAI,GAAG,iBAAiB7C,EAAE,OAAOA,EAAE,MAAM,aAAaD,EAAEL,KAAc,MAARK,EAAEwwK,GAAGxwK,IAAU,QAAQqxB,OAAO+7C,aAAaptE,GAAI,YAAYA,EAAEL,MAAM,UAAUK,EAAEL,KAAK4xK,GAAGvxK,EAAE8tF,UAAU,eAAe,IAAIxzB,SAAS,KAAKuwG,QAAQ,KAAKr3D,SAAS,KAAKs3D,OAAO,KAAKC,QAAQ,KAAKwI,OAAO,KAAKhgK,OAAO,KAAKs5J,iBAAiBC,GAAG2D,SAAS,SAASzwK,GAAG,MAAM,aAC9eA,EAAEL,KAAK6wK,GAAGxwK,GAAG,GAAG8tF,QAAQ,SAAS9tF,GAAG,MAAM,YAAYA,EAAEL,MAAM,UAAUK,EAAEL,KAAKK,EAAE8tF,QAAQ,GAAG68E,MAAM,SAAS3qK,GAAG,MAAM,aAAaA,EAAEL,KAAK6wK,GAAGxwK,GAAG,YAAYA,EAAEL,MAAM,UAAUK,EAAEL,KAAKK,EAAE8tF,QAAQ,KAAKmgD,GAAGk/B,GAAGh6J,OAAO,CAACqgK,aAAa,OAAOC,GAAGnH,GAAGn5J,OAAO,CAACugK,QAAQ,KAAKC,cAAc,KAAKC,eAAe,KAAK9I,OAAO,KAAKC,QAAQ,KAAKF,QAAQ,KAAKr3D,SAAS,KAAKq5D,iBAAiBC,KAAK+G,GAAGxtK,GAAE8M,OAAO,CAAC21I,aAAa,KAAKqnB,YAAY,KAAKC,cAAc,OAAO0D,GAAG3G,GAAGh6J,OAAO,CAAC4gK,OAAO,SAAS/zK,GAAG,MAAM,WAAWA,EAAEA,EAAE+zK,OAAO,gBAClf/zK,GAAGA,EAAEg0K,YAAY,GAAGC,OAAO,SAASj0K,GAAG,MAAM,WAAWA,EAAEA,EAAEi0K,OAAO,gBAAgBj0K,GAAGA,EAAEk0K,YAAY,eAAel0K,GAAGA,EAAEm0K,WAAW,GAAGC,OAAO,KAAKC,UAAU,OAAOC,GAAG,CAACtb,WAAWsL,GAAGvL,cAAc,SAAS/4J,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAE2qK,GAAG/qK,IAAIwG,GAAG,IAAIpG,EAAE,OAAO,KAAK,OAAOoG,GAAG,IAAK,WAAW,GAAG,IAAIwwK,GAAGxyK,GAAG,OAAO,KAAK,IAAK,UAAU,IAAK,QAAQgC,EAAEszK,GAAG,MAAM,IAAK,OAAO,IAAK,QAAQtzK,EAAEuwK,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIvyK,EAAE4uG,OAAO,OAAO,KAAK,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc5sG,EACniBmtK,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOntK,EAAEiuI,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAajuI,EAAEyzK,GAAG,MAAM,KAAKxT,GAAG,KAAKC,GAAG,KAAKC,GAAGngK,EAAEiwK,GAAG,MAAM,KAAK7P,GAAGpgK,EAAE6zK,GAAG,MAAM,IAAK,SAAS7zK,EAAEssK,GAAG,MAAM,IAAK,QAAQtsK,EAAE8zK,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ9zK,EAAEqwK,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYrwK,EACzhB8tK,GAAG,MAAM,QAAQ9tK,EAAEqG,GAA+B,OAANkiK,GAAvBtoK,EAAED,EAAEupK,UAAU3vK,EAAEqG,EAAEjC,EAAEqE,IAAgBpC,IAAI,GAAG04J,EAAG,MAAM77J,MAAM+K,EAAE,MAAM8wJ,EAAG3uJ,MAAMxS,UAAUyJ,MAAMvJ,KAAK,0HAA0H6N,MAAM,MAAMszJ,IAAetyJ,EAAGuhK,GAAGthK,EAATm9J,GAAej9J,EAAGmhK,GAAGrO,EAAG,CAAC+a,kBAAkBD,GAAGE,sBAAsB7F,GAAG8F,kBAAkBrI,GAAGsI,kBAAkB3E,GAAG4E,uBAAuBjK,KAAK,IAAIkK,GAAG,GAAGC,IAAI,EAAE,SAAShuK,GAAE7G,GAAG,EAAE60K,KAAK70K,EAAEgJ,QAAQ4rK,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MACtd,SAAS/sK,GAAE9H,EAAEC,GAAG40K,KAAKD,GAAGC,IAAI70K,EAAEgJ,QAAQhJ,EAAEgJ,QAAQ/I,EAAE,IAAI60K,GAAG,GAAG/sK,GAAE,CAACiB,QAAQ8rK,IAAIltK,GAAE,CAACoB,SAAQ,GAAI+rK,GAAGD,GAAG,SAASE,GAAGh1K,EAAEC,GAAG,IAAIjC,EAAEgC,EAAEL,KAAKs1K,aAAa,IAAIj3K,EAAE,OAAO82K,GAAG,IAAIzyK,EAAErC,EAAE85J,UAAU,GAAGz3J,GAAGA,EAAE6yK,8CAA8Cj1K,EAAE,OAAOoC,EAAE8yK,0CAA0C,IAASntK,EAALpO,EAAE,GAAK,IAAIoO,KAAKhK,EAAEpE,EAAEoO,GAAG/H,EAAE+H,GAAoH,OAAjH3F,KAAIrC,EAAEA,EAAE85J,WAAYob,4CAA4Cj1K,EAAED,EAAEm1K,0CAA0Cv7K,GAAUA,EAAE,SAASoM,GAAEhG,GAAyB,OAAO,OAA7BA,EAAEA,EAAEo1K,mBACpc,SAASC,KAAKxuK,GAAEe,IAAGf,GAAEkB,IAAG,SAASutK,GAAGt1K,EAAEC,EAAEjC,GAAG,GAAG+J,GAAEiB,UAAU8rK,GAAG,MAAMh4K,MAAM+K,EAAE,MAAMC,GAAEC,GAAE9H,GAAG6H,GAAEF,GAAE5J,GAAG,SAASu3K,GAAGv1K,EAAEC,EAAEjC,GAAG,IAAIqE,EAAErC,EAAE85J,UAAgC,GAAtB95J,EAAEC,EAAEm1K,kBAAqB,mBAAoB/yK,EAAEmzK,gBAAgB,OAAOx3K,EAAwB,IAAI,IAAIpE,KAA9ByI,EAAEA,EAAEmzK,kBAAiC,KAAK57K,KAAKoG,GAAG,MAAMlD,MAAM+K,EAAE,IAAI60J,GAAGz8J,IAAI,UAAUrG,IAAI,OAAOoJ,EAAE,GAAGhF,EAAE,GAAGqE,GAAG,SAASozK,GAAGz1K,GAAyG,OAAtGA,GAAGA,EAAEA,EAAE85J,YAAY95J,EAAE01K,2CAA2CZ,GAAGC,GAAGhtK,GAAEiB,QAAQlB,GAAEC,GAAE/H,GAAG8H,GAAEF,GAAEA,GAAEoB,UAAe,EACpb,SAAS2sK,GAAG31K,EAAEC,EAAEjC,GAAG,IAAIqE,EAAErC,EAAE85J,UAAU,IAAIz3J,EAAE,MAAMvF,MAAM+K,EAAE,MAAM7J,GAAGgC,EAAEu1K,GAAGv1K,EAAEC,EAAE80K,IAAI1yK,EAAEqzK,0CAA0C11K,EAAE6G,GAAEe,IAAGf,GAAEkB,IAAGD,GAAEC,GAAE/H,IAAI6G,GAAEe,IAAGE,GAAEF,GAAE5J,GACxJ,IAAI43K,GAAGpzK,EAAEqhK,yBAAyBgS,GAAGrzK,EAAE2hK,0BAA0B2R,GAAGtzK,EAAEuzK,wBAAwBC,GAAGxzK,EAAEyzK,sBAAsBC,GAAG1zK,EAAE2zK,aAAaC,GAAG5zK,EAAE6zK,iCAAiCC,GAAG9zK,EAAE+zK,2BAA2BC,GAAGh0K,EAAEwiK,8BAA8ByR,GAAGj0K,EAAE4hK,wBAAwBsS,GAAGl0K,EAAEm0K,qBAAqBC,GAAGp0K,EAAEq0K,sBAAsBC,GAAG,GAAGC,GAAGv0K,EAAEw0K,qBAAqBC,QAAG,IAASjB,GAAGA,GAAG,aAAakB,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGnB,KAAKoB,GAAG,IAAID,GAAGnB,GAAG,WAAW,OAAOA,KAAKmB,IACvc,SAASE,KAAK,OAAOnB,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAM95K,MAAM+K,EAAE,OAAQ,SAAS2vK,GAAGx3K,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOs2K,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAM95K,MAAM+K,EAAE,OAAQ,SAAS4vK,GAAGz3K,EAAEC,GAAW,OAARD,EAAEw3K,GAAGx3K,GAAU41K,GAAG51K,EAAEC,GAAG,SAASy3K,GAAG13K,EAAEC,EAAEjC,GAAW,OAARgC,EAAEw3K,GAAGx3K,GAAU61K,GAAG71K,EAAEC,EAAEjC,GAAG,SAAS25K,GAAG33K,GAA8C,OAA3C,OAAOk3K,IAAIA,GAAG,CAACl3K,GAAGm3K,GAAGtB,GAAGS,GAAGsB,KAAKV,GAAGl+K,KAAKgH,GAAU82K,GAAG,SAAS3rJ,KAAK,GAAG,OAAOgsJ,GAAG,CAAC,IAAIn3K,EAAEm3K,GAAGA,GAAG,KAAKrB,GAAG91K,GAAG43K,KAC/e,SAASA,KAAK,IAAIR,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIp3K,EAAE,EAAE,IAAI,IAAIC,EAAEi3K,GAAGO,GAAG,IAAG,WAAW,KAAKz3K,EAAEC,EAAE9E,OAAO6E,IAAI,CAAC,IAAIhC,EAAEiC,EAAED,GAAG,GAAGhC,EAAEA,GAAE,SAAU,OAAOA,OAAMk5K,GAAG,KAAK,MAAMl5K,GAAG,MAAM,OAAOk5K,KAAKA,GAAGA,GAAGj2K,MAAMjB,EAAE,IAAI61K,GAAGS,GAAGnrJ,IAAIntB,EAAG,QAAQo5K,IAAG,IAAK,SAASS,GAAG73K,EAAEC,EAAEjC,GAAS,OAAO,YAAsC,IAAxB,WAAWgC,EAAEC,EAAE,KAA1CjC,GAAG,IAA6C,IAAMA,EAAE,SAAS85K,GAAG93K,EAAEC,GAAG,GAAGD,GAAGA,EAAEw2D,aAAyC,IAAI,IAAIx4D,KAAnCiC,EAAE+C,EAAE,GAAG/C,GAAGD,EAAEA,EAAEw2D,kBAA4B,IAASv2D,EAAEjC,KAAKiC,EAAEjC,GAAGgC,EAAEhC,IAAI,OAAOiC,EAAE,IAAI83K,GAAG,CAAC/uK,QAAQ,MAAMgvK,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,KACle,SAASI,GAAGp4K,GAAG,IAAIC,EAAE83K,GAAG/uK,QAAQnC,GAAEkxK,IAAI/3K,EAAEL,KAAK0gG,SAAS6yD,cAAcjzJ,EAAE,SAASo4K,GAAGr4K,EAAEC,GAAG,KAAK,OAAOD,GAAG,CAAC,IAAIhC,EAAEgC,EAAEygK,UAAU,GAAGzgK,EAAEs4K,oBAAoBr4K,EAAED,EAAEs4K,oBAAoBr4K,EAAE,OAAOjC,GAAGA,EAAEs6K,oBAAoBr4K,IAAIjC,EAAEs6K,oBAAoBr4K,OAAQ,MAAG,OAAOjC,GAAGA,EAAEs6K,oBAAoBr4K,GAA+B,MAA7BjC,EAAEs6K,oBAAoBr4K,EAAaD,EAAEA,EAAEg9J,QAAQ,SAASub,GAAGv4K,EAAEC,GAAG+3K,GAAGh4K,EAAEk4K,GAAGD,GAAG,KAAsB,QAAjBj4K,EAAEA,EAAEu5J,eAAuB,OAAOv5J,EAAEw4K,eAAex4K,EAAEy4K,gBAAgBx4K,IAAIy4K,IAAG,GAAI14K,EAAEw4K,aAAa,MAClc,SAASG,GAAG34K,EAAEC,GAAG,GAAGi4K,KAAKl4K,IAAG,IAAKC,GAAG,IAAIA,EAAmG,GAA7F,iBAAkBA,GAAG,aAAaA,IAAEi4K,GAAGl4K,EAAEC,EAAE,YAAWA,EAAE,CAACiJ,QAAQlJ,EAAE44K,aAAa34K,EAAEgL,KAAK,MAAS,OAAOgtK,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMl7K,MAAM+K,EAAE,MAAMowK,GAAGh4K,EAAE+3K,GAAGze,aAAa,CAACkf,eAAe,EAAED,aAAav4K,EAAE44K,WAAW,WAAWZ,GAAGA,GAAGhtK,KAAKhL,EAAE,OAAOD,EAAEkzJ,cAAc,IAAI4lB,IAAG,EAAG,SAASC,GAAG/4K,GAAGA,EAAEg5K,YAAY,CAACC,UAAUj5K,EAAE4gK,cAAcsY,UAAU,KAAKC,OAAO,CAACC,QAAQ,MAAM57H,QAAQ,MACzZ,SAAS67H,GAAGr5K,EAAEC,GAAGD,EAAEA,EAAEg5K,YAAY/4K,EAAE+4K,cAAch5K,IAAIC,EAAE+4K,YAAY,CAACC,UAAUj5K,EAAEi5K,UAAUC,UAAUl5K,EAAEk5K,UAAUC,OAAOn5K,EAAEm5K,OAAO37H,QAAQx9C,EAAEw9C,UAAU,SAAS87H,GAAGt5K,EAAEC,GAAoF,OAAjFD,EAAE,CAACy4K,eAAez4K,EAAEu5K,eAAet5K,EAAEkE,IAAI,EAAEq1K,QAAQ,KAAKx+K,SAAS,KAAKiQ,KAAK,OAAeA,KAAKjL,EAAE,SAASy5K,GAAGz5K,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAEg5K,aAAwB,CAAY,IAAIh7K,GAAfgC,EAAEA,EAAEm5K,QAAeC,QAAQ,OAAOp7K,EAAEiC,EAAEgL,KAAKhL,GAAGA,EAAEgL,KAAKjN,EAAEiN,KAAKjN,EAAEiN,KAAKhL,GAAGD,EAAEo5K,QAAQn5K,GACpY,SAASy5K,GAAG15K,EAAEC,GAAG,IAAIjC,EAAEgC,EAAEygK,UAAU,OAAOziK,GAAGq7K,GAAGr7K,EAAEgC,GAAiC,QAAdhC,GAAhBgC,EAAEA,EAAEg5K,aAAgBE,YAAoBl5K,EAAEk5K,UAAUj5K,EAAEgL,KAAKhL,EAAEA,EAAEgL,KAAKhL,IAAIA,EAAEgL,KAAKjN,EAAEiN,KAAKjN,EAAEiN,KAAKhL,GAClJ,SAAS05K,GAAG35K,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAEoG,EAAEg5K,YAAYF,IAAG,EAAG,IAAI9wK,EAAEpO,EAAEs/K,UAAUnyK,EAAEnN,EAAEu/K,OAAOC,QAAQ,GAAG,OAAOryK,EAAE,CAAC,GAAG,OAAOiB,EAAE,CAAC,IAAI/J,EAAE+J,EAAEiD,KAAKjD,EAAEiD,KAAKlE,EAAEkE,KAAKlE,EAAEkE,KAAKhN,EAAE+J,EAAEjB,EAAEnN,EAAEu/K,OAAOC,QAAQ,KAAmB,QAAdn7K,EAAE+B,EAAEygK,aAAqC,QAAhBxiK,EAAEA,EAAE+6K,eAAuB/6K,EAAEi7K,UAAUnyK,IAAI,GAAG,OAAOiB,EAAE,CAAC/J,EAAE+J,EAAEiD,KAAK,IAAIxD,EAAE7N,EAAEq/K,UAAU78K,EAAE,EAAEgG,EAAE,KAAK/E,EAAE,KAAK2J,EAAE,KAAK,GAAG,OAAO/I,EAAW,IAAR,IAAIsJ,EAAEtJ,IAAI,CAAoB,IAAnB8I,EAAEQ,EAAEkxK,gBAAoBp2K,EAAE,CAAC,IAAI8F,EAAG,CAACswK,eAAelxK,EAAEkxK,eAAec,eAAehyK,EAAEgyK,eAAep1K,IAAIoD,EAAEpD,IAAIq1K,QAAQjyK,EAAEiyK,QAAQx+K,SAASuM,EAAEvM,SAASiQ,KAAK,MAAM,OAAOjE,GAAG3J,EAAE2J,EACnfmB,EAAG/F,EAAEqF,GAAGT,EAAEA,EAAEiE,KAAK9C,EAAGpB,EAAE3K,IAAIA,EAAE2K,OAAO,CAAC,OAAOC,IAAIA,EAAEA,EAAEiE,KAAK,CAACwtK,eAAe,WAAWc,eAAehyK,EAAEgyK,eAAep1K,IAAIoD,EAAEpD,IAAIq1K,QAAQjyK,EAAEiyK,QAAQx+K,SAASuM,EAAEvM,SAASiQ,KAAK,OAAO2uK,GAAG7yK,EAAEQ,EAAEgyK,gBAAgBv5K,EAAE,CAAC,IAAIsH,EAAEtH,EAAE5F,EAAEmN,EAAW,OAATR,EAAE9G,EAAEkI,EAAGnK,EAAS5D,EAAE+J,KAAK,KAAK,EAAc,GAAG,mBAAfmD,EAAElN,EAAEo/K,SAAiC,CAAC/xK,EAAEH,EAAE5P,KAAKyQ,EAAGV,EAAEV,GAAG,MAAM/G,EAAEyH,EAAEH,EAAE,MAAMtH,EAAE,KAAK,EAAEsH,EAAEo5J,WAAuB,KAAbp5J,EAAEo5J,UAAgB,GAAG,KAAK,EAAuD,GAAG,OAA5C35J,EAAE,mBAAdO,EAAElN,EAAEo/K,SAAgClyK,EAAE5P,KAAKyQ,EAAGV,EAAEV,GAAGO,GAA0B,MAAMtH,EAAEyH,EAAEzE,EAAE,GAAGyE,EAAEV,GAAG,MAAM/G,EAAE,KAAK,EAAE84K,IAAG,GAAI,OAAOvxK,EAAEvM,WAC5egF,EAAE0gK,WAAW,GAAe,QAAZ35J,EAAEnN,EAAE4jD,SAAiB5jD,EAAE4jD,QAAQ,CAACj2C,GAAGR,EAAE/N,KAAKuO,IAAa,GAAG,QAAZA,EAAEA,EAAE0D,OAAkB1D,IAAItJ,EAAE,IAAsB,QAAnB8I,EAAEnN,EAAEu/K,OAAOC,SAAiB,MAAW7xK,EAAES,EAAEiD,KAAKlE,EAAEkE,KAAKlE,EAAEkE,KAAKhN,EAAErE,EAAEs/K,UAAUlxK,EAAEjB,EAAEnN,EAAEu/K,OAAOC,QAAQ,MAAc,OAAOpyK,EAAE5E,EAAEqF,EAAET,EAAEiE,KAAK5N,EAAEzD,EAAEq/K,UAAU72K,EAAExI,EAAEs/K,UAAUlyK,EAAE6yK,GAAGz9K,GAAG4D,EAAEy4K,eAAer8K,EAAE4D,EAAE4gK,cAAcn5J,GACxS,SAASqyK,GAAG95K,EAAEC,EAAEjC,GAA8B,GAA3BgC,EAAEC,EAAEu9C,QAAQv9C,EAAEu9C,QAAQ,KAAQ,OAAOx9C,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAE7E,OAAO8E,IAAI,CAAC,IAAIoC,EAAErC,EAAEC,GAAGrG,EAAEyI,EAAErH,SAAS,GAAG,OAAOpB,EAAE,CAAyB,GAAxByI,EAAErH,SAAS,KAAKqH,EAAEzI,EAAEA,EAAEoE,EAAK,mBAAoBqE,EAAE,MAAMvF,MAAM+K,EAAE,IAAIxF,IAAIA,EAAE3K,KAAKkC,KAAK,IAAImgL,GAAG1e,EAAG9I,wBAAwBynB,IAAG,IAAK5zK,EAAGusJ,WAAWd,KAAK,SAASooB,GAAGj6K,EAAEC,EAAEjC,EAAEqE,GAA8BrE,EAAE,OAAXA,EAAEA,EAAEqE,EAAtBpC,EAAED,EAAE4gK,gBAA8C3gK,EAAE+C,EAAE,GAAG/C,EAAEjC,GAAGgC,EAAE4gK,cAAc5iK,EAAE,IAAIgC,EAAEy4K,iBAAiBz4K,EAAEg5K,YAAYC,UAAUj7K,GAC3Z,IAAIk8K,GAAG,CAACzoB,UAAU,SAASzxJ,GAAG,SAAOA,EAAEA,EAAEm6K,sBAAqB3Z,GAAGxgK,KAAKA,GAAM4xJ,gBAAgB,SAAS5xJ,EAAEC,EAAEjC,GAAGgC,EAAEA,EAAEm6K,oBAAoB,IAAI93K,EAAE+3K,KAAKxgL,EAAEmgL,GAAGvnB,UAAqB54J,EAAE0/K,GAAdj3K,EAAEg4K,GAAGh4K,EAAErC,EAAEpG,GAAUA,IAAK4/K,QAAQv5K,EAAE,MAASjC,IAAcpE,EAAEoB,SAASgD,GAAGy7K,GAAGz5K,EAAEpG,GAAG0gL,GAAGt6K,EAAEqC,IAAIsvJ,oBAAoB,SAAS3xJ,EAAEC,EAAEjC,GAAGgC,EAAEA,EAAEm6K,oBAAoB,IAAI93K,EAAE+3K,KAAKxgL,EAAEmgL,GAAGvnB,UAAqB54J,EAAE0/K,GAAdj3K,EAAEg4K,GAAGh4K,EAAErC,EAAEpG,GAAUA,IAAKuK,IAAI,EAAEvK,EAAE4/K,QAAQv5K,EAAE,MAASjC,IAAcpE,EAAEoB,SAASgD,GAAGy7K,GAAGz5K,EAAEpG,GAAG0gL,GAAGt6K,EAAEqC,IAAIqvJ,mBAAmB,SAAS1xJ,EAAEC,GAAGD,EAAEA,EAAEm6K,oBAAoB,IAAIn8K,EAAEo8K,KAAK/3K,EAAE03K,GAAGvnB,UACvenwJ,EAAEi3K,GAAdt7K,EAAEq8K,GAAGr8K,EAAEgC,EAAEqC,GAAUA,IAAK8B,IAAI,EAAE,MAASlE,IAAcoC,EAAErH,SAASiF,GAAGw5K,GAAGz5K,EAAEqC,GAAGi4K,GAAGt6K,EAAEhC,KAAK,SAASu8K,GAAGv6K,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,EAAEjB,GAAiB,MAAM,mBAApB/G,EAAEA,EAAE85J,WAAsC0gB,sBAAsBx6K,EAAEw6K,sBAAsBn4K,EAAE2F,EAAEjB,IAAG9G,EAAEzI,YAAWyI,EAAEzI,UAAUy6J,wBAAsB8c,GAAG/wK,EAAEqE,KAAK0sK,GAAGn1K,EAAEoO,IAC7Q,SAASyyK,GAAGz6K,EAAEC,EAAEjC,GAAG,IAAIqE,GAAE,EAAGzI,EAAEk7K,GAAO9sK,EAAE/H,EAAEy6K,YAA8W,MAAlW,iBAAkB1yK,GAAG,OAAOA,EAAEA,EAAE2wK,GAAG3wK,IAAIpO,EAAEoM,GAAE/F,GAAG80K,GAAGhtK,GAAEiB,QAAyBhB,GAAG3F,EAAE,OAAtBA,EAAEpC,EAAEg1K,eAAwCD,GAAGh1K,EAAEpG,GAAGk7K,IAAI70K,EAAE,IAAIA,EAAEjC,EAAEgK,GAAGhI,EAAE4gK,cAAc,OAAO3gK,EAAEo7D,YAAO,IAASp7D,EAAEo7D,MAAMp7D,EAAEo7D,MAAM,KAAKp7D,EAAE6xJ,QAAQooB,GAAGl6K,EAAE85J,UAAU75J,EAAEA,EAAEk6K,oBAAoBn6K,EAAEqC,KAAIrC,EAAEA,EAAE85J,WAAYob,4CAA4Ct7K,EAAEoG,EAAEm1K,0CAA0CntK,GAAU/H,EAC9Z,SAAS06K,GAAG36K,EAAEC,EAAEjC,EAAEqE,GAAGrC,EAAEC,EAAEo7D,MAAM,mBAAoBp7D,EAAE26K,2BAA2B36K,EAAE26K,0BAA0B58K,EAAEqE,GAAG,mBAAoBpC,EAAE46K,kCAAkC56K,EAAE46K,iCAAiC78K,EAAEqE,GAAGpC,EAAEo7D,QAAQr7D,GAAGk6K,GAAGvoB,oBAAoB1xJ,EAAEA,EAAEo7D,MAAM,MAC/P,SAASy/G,GAAG96K,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAEoG,EAAE85J,UAAUlgK,EAAE+W,MAAM3S,EAAEpE,EAAEyhE,MAAMr7D,EAAE4gK,cAAchnK,EAAEi4J,KAAKmoB,GAAGjB,GAAG/4K,GAAG,IAAIgI,EAAE/H,EAAEy6K,YAAY,iBAAkB1yK,GAAG,OAAOA,EAAEpO,EAAEsP,QAAQyvK,GAAG3wK,IAAIA,EAAEhC,GAAE/F,GAAG80K,GAAGhtK,GAAEiB,QAAQpP,EAAEsP,QAAQ8rK,GAAGh1K,EAAEgI,IAAI2xK,GAAG35K,EAAEhC,EAAEpE,EAAEyI,GAAGzI,EAAEyhE,MAAMr7D,EAAE4gK,cAA2C,mBAA7B54J,EAAE/H,EAAE86K,4BAAiDd,GAAGj6K,EAAEC,EAAE+H,EAAEhK,GAAGpE,EAAEyhE,MAAMr7D,EAAE4gK,eAAe,mBAAoB3gK,EAAE86K,0BAA0B,mBAAoBnhL,EAAEohL,yBAAyB,mBAAoBphL,EAAEqhL,2BAA2B,mBAAoBrhL,EAAEshL,qBACtej7K,EAAErG,EAAEyhE,MAAM,mBAAoBzhE,EAAEshL,oBAAoBthL,EAAEshL,qBAAqB,mBAAoBthL,EAAEqhL,2BAA2BrhL,EAAEqhL,4BAA4Bh7K,IAAIrG,EAAEyhE,OAAO6+G,GAAGvoB,oBAAoB/3J,EAAEA,EAAEyhE,MAAM,MAAMs+G,GAAG35K,EAAEhC,EAAEpE,EAAEyI,GAAGzI,EAAEyhE,MAAMr7D,EAAE4gK,eAAe,mBAAoBhnK,EAAEuhL,oBAAoBn7K,EAAE0gK,WAAW,GAAG,IAAI0a,GAAGpxK,MAAMsF,QAC3T,SAAS+rK,GAAGr7K,EAAEC,EAAEjC,GAAW,GAAG,QAAXgC,EAAEhC,EAAE4S,MAAiB,mBAAoB5Q,GAAG,iBAAkBA,EAAE,CAAC,GAAGhC,EAAEq0J,OAAO,CAAY,GAAXr0J,EAAEA,EAAEq0J,OAAY,CAAC,GAAG,IAAIr0J,EAAEmG,IAAI,MAAMrH,MAAM+K,EAAE,MAAM,IAAIxF,EAAErE,EAAE87J,UAAU,IAAIz3J,EAAE,MAAMvF,MAAM+K,EAAE,IAAI7H,IAAI,IAAIpG,EAAE,GAAGoG,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE2Q,KAAK,mBAAoB3Q,EAAE2Q,KAAK3Q,EAAE2Q,IAAI0qK,aAAa1hL,EAASqG,EAAE2Q,MAAI3Q,EAAE,SAASD,GAAG,IAAIC,EAAEoC,EAAEwvJ,KAAK5xJ,IAAI+5K,KAAK/5K,EAAEoC,EAAEwvJ,KAAK,IAAI,OAAO7xJ,SAASC,EAAErG,GAAGqG,EAAErG,GAAGoG,IAAKs7K,WAAW1hL,EAASqG,GAAE,GAAG,iBAAkBD,EAAE,MAAMlD,MAAM+K,EAAE,MAAM,IAAI7J,EAAEq0J,OAAO,MAAMv1J,MAAM+K,EAAE,IAAI7H,IAAK,OAAOA,EAChe,SAASu7K,GAAGv7K,EAAEC,GAAG,GAAG,aAAaD,EAAEL,KAAK,MAAM7C,MAAM+K,EAAE,GAAG,oBAAoBtQ,OAAOC,UAAU4T,SAAS1T,KAAKuI,GAAG,qBAAqB1I,OAAO4J,KAAKlB,GAAGQ,KAAK,MAAM,IAAIR,EAAE,KACpK,SAASu7K,GAAGx7K,GAAG,SAASC,EAAEA,EAAEjC,GAAG,GAAGgC,EAAE,CAAC,IAAIqC,EAAEpC,EAAEw7K,WAAW,OAAOp5K,GAAGA,EAAEq5K,WAAW19K,EAAEiC,EAAEw7K,WAAWz9K,GAAGiC,EAAE07K,YAAY17K,EAAEw7K,WAAWz9K,EAAEA,EAAE09K,WAAW,KAAK19K,EAAE0iK,UAAU,GAAG,SAAS1iK,EAAEA,EAAEqE,GAAG,IAAIrC,EAAE,OAAO,KAAK,KAAK,OAAOqC,GAAGpC,EAAEjC,EAAEqE,GAAGA,EAAEA,EAAE2+J,QAAQ,OAAO,KAAK,SAAS3+J,EAAErC,EAAEC,GAAG,IAAID,EAAE,IAAIszE,IAAI,OAAOrzE,GAAG,OAAOA,EAAE6C,IAAI9C,EAAEvG,IAAIwG,EAAE6C,IAAI7C,GAAGD,EAAEvG,IAAIwG,EAAE45B,MAAM55B,GAAGA,EAAEA,EAAE+gK,QAAQ,OAAOhhK,EAAE,SAASpG,EAAEoG,EAAEC,GAAsC,OAAnCD,EAAE47K,GAAG57K,EAAEC,IAAK45B,MAAM,EAAE75B,EAAEghK,QAAQ,KAAYhhK,EAAE,SAASgI,EAAE/H,EAAEjC,EAAEqE,GAAa,OAAVpC,EAAE45B,MAAMx3B,EAAMrC,EAA4B,QAAjBqC,EAAEpC,EAAEwgK,YAA6Bp+J,EAAEA,EAAEw3B,OAAQ77B,GAAGiC,EAAEygK,UAClf,EAAE1iK,GAAGqE,GAAEpC,EAAEygK,UAAU,EAAS1iK,GADkaA,EACha,SAAS+I,EAAE9G,GAA0C,OAAvCD,GAAG,OAAOC,EAAEwgK,YAAYxgK,EAAEygK,UAAU,GAAUzgK,EAAE,SAAShC,EAAE+B,EAAEC,EAAEjC,EAAEqE,GAAG,OAAG,OAAOpC,GAAG,IAAIA,EAAEkE,MAAWlE,EAAE47K,GAAG79K,EAAEgC,EAAE3F,KAAKgI,IAAK26J,OAAOh9J,EAAEC,KAAEA,EAAErG,EAAEqG,EAAEjC,IAAKg/J,OAAOh9J,EAASC,GAAE,SAASwH,EAAEzH,EAAEC,EAAEjC,EAAEqE,GAAG,OAAG,OAAOpC,GAAGA,EAAE67K,cAAc99K,EAAE2B,OAAY0C,EAAEzI,EAAEqG,EAAEjC,EAAE2S,QAASC,IAAIyqK,GAAGr7K,EAAEC,EAAEjC,GAAGqE,EAAE26J,OAAOh9J,EAAEqC,KAAEA,EAAE05K,GAAG/9K,EAAE2B,KAAK3B,EAAE8E,IAAI9E,EAAE2S,MAAM,KAAK3Q,EAAE3F,KAAKgI,IAAKuO,IAAIyqK,GAAGr7K,EAAEC,EAAEjC,GAAGqE,EAAE26J,OAAOh9J,EAASqC,GAAE,SAASjG,EAAE4D,EAAEC,EAAEjC,EAAEqE,GAAG,OAAG,OAAOpC,GAAG,IAAIA,EAAEkE,KAAKlE,EAAE65J,UAAUuI,gBAAgBrkK,EAAEqkK,eAAepiK,EAAE65J,UAAUkiB,iBACteh+K,EAAEg+K,iBAAsB/7K,EAAEg8K,GAAGj+K,EAAEgC,EAAE3F,KAAKgI,IAAK26J,OAAOh9J,EAAEC,KAAEA,EAAErG,EAAEqG,EAAEjC,EAAE/E,UAAU,KAAM+jK,OAAOh9J,EAASC,GAAE,SAASmC,EAAEpC,EAAEC,EAAEjC,EAAEqE,EAAE2F,GAAG,OAAG,OAAO/H,GAAG,IAAIA,EAAEkE,MAAWlE,EAAEi8K,GAAGl+K,EAAEgC,EAAE3F,KAAKgI,EAAE2F,IAAKg1J,OAAOh9J,EAAEC,KAAEA,EAAErG,EAAEqG,EAAEjC,IAAKg/J,OAAOh9J,EAASC,GAAE,SAAS5C,EAAE2C,EAAEC,EAAEjC,GAAG,GAAG,iBAAkBiC,GAAG,iBAAkBA,EAAE,OAAOA,EAAE47K,GAAG,GAAG57K,EAAED,EAAE3F,KAAK2D,IAAKg/J,OAAOh9J,EAAEC,EAAE,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEmyJ,UAAU,KAAKwJ,GAAG,OAAO59J,EAAE+9K,GAAG97K,EAAEN,KAAKM,EAAE6C,IAAI7C,EAAE0Q,MAAM,KAAK3Q,EAAE3F,KAAK2D,IAAK4S,IAAIyqK,GAAGr7K,EAAE,KAAKC,GAAGjC,EAAEg/J,OAAOh9J,EAAEhC,EAAE,KAAK69J,GAAG,OAAO57J,EAAEg8K,GAAGh8K,EAAED,EAAE3F,KAAK2D,IAAKg/J,OAAOh9J,EAAEC,EAAE,GAAGm7K,GAAGn7K,IACvfm+C,GAAGn+C,GAAG,OAAOA,EAAEi8K,GAAGj8K,EAAED,EAAE3F,KAAK2D,EAAE,OAAQg/J,OAAOh9J,EAAEC,EAAEs7K,GAAGv7K,EAAEC,GAAG,OAAO,KAAK,SAAS+G,EAAEhH,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAE,OAAOqG,EAAEA,EAAE6C,IAAI,KAAK,GAAG,iBAAkB9E,GAAG,iBAAkBA,EAAE,OAAO,OAAOpE,EAAE,KAAKqE,EAAE+B,EAAEC,EAAE,GAAGjC,EAAEqE,GAAG,GAAG,iBAAkBrE,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEo0J,UAAU,KAAKwJ,GAAG,OAAO59J,EAAE8E,MAAMlJ,EAAEoE,EAAE2B,OAAOm8J,GAAG15J,EAAEpC,EAAEC,EAAEjC,EAAE2S,MAAM1X,SAASoJ,EAAEzI,GAAG6N,EAAEzH,EAAEC,EAAEjC,EAAEqE,GAAG,KAAK,KAAKw5J,GAAG,OAAO79J,EAAE8E,MAAMlJ,EAAEwC,EAAE4D,EAAEC,EAAEjC,EAAEqE,GAAG,KAAK,GAAG+4K,GAAGp9K,IAAIogD,GAAGpgD,GAAG,OAAO,OAAOpE,EAAE,KAAKwI,EAAEpC,EAAEC,EAAEjC,EAAEqE,EAAE,MAAMk5K,GAAGv7K,EAAEhC,GAAG,OAAO,KAAK,SAASuJ,EAAEvH,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,GAAG,iBAAkByI,GAAG,iBAAkBA,EAAE,OAC5epE,EAAEgC,EADifD,EAClgBA,EAAExG,IAAIwE,IAAI,KAAW,GAAGqE,EAAEzI,GAAG,GAAG,iBAAkByI,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+vJ,UAAU,KAAKwJ,GAAG,OAAO57J,EAAEA,EAAExG,IAAI,OAAO6I,EAAES,IAAI9E,EAAEqE,EAAES,MAAM,KAAKT,EAAE1C,OAAOm8J,GAAG15J,EAAEnC,EAAED,EAAEqC,EAAEsO,MAAM1X,SAASW,EAAEyI,EAAES,KAAK2E,EAAExH,EAAED,EAAEqC,EAAEzI,GAAG,KAAKiiK,GAAG,OAA2Cz/J,EAAE6D,EAAtCD,EAAEA,EAAExG,IAAI,OAAO6I,EAAES,IAAI9E,EAAEqE,EAAES,MAAM,KAAWT,EAAEzI,GAAG,GAAGwhL,GAAG/4K,IAAI+7C,GAAG/7C,GAAG,OAAwBD,EAAEnC,EAAnBD,EAAEA,EAAExG,IAAIwE,IAAI,KAAWqE,EAAEzI,EAAE,MAAM2hL,GAAGt7K,EAAEoC,GAAG,OAAO,KAAK,SAAS8F,EAAGvO,EAAEmN,EAAE9I,EAAEwJ,GAAG,IAAI,IAAIrL,EAAE,KAAKhC,EAAE,KAAKgI,EAAE2E,EAAEW,EAAEX,EAAE,EAAEE,EAAE,KAAK,OAAO7E,GAAGsF,EAAEzJ,EAAE9C,OAAOuM,IAAI,CAACtF,EAAEy3B,MAAMnyB,GAAGT,EAAE7E,EAAEA,EAAE,MAAM6E,EAAE7E,EAAE4+J,QAAQ,IAAIl6J,EAAEE,EAAEpN,EAAEwI,EAAEnE,EAAEyJ,GAAGD,GAAG,GAAG,OAAOX,EAAE,CAAC,OAAO1E,IAAIA,EAAE6E,GAAG,MAAMjH,GACtfoC,GAAG,OAAO0E,EAAE25J,WAAWxgK,EAAErG,EAAEwI,GAAG2E,EAAEiB,EAAElB,EAAEC,EAAEW,GAAG,OAAOtN,EAAEgC,EAAE0K,EAAE1M,EAAE4mK,QAAQl6J,EAAE1M,EAAE0M,EAAE1E,EAAE6E,EAAE,GAAGS,IAAIzJ,EAAE9C,OAAO,OAAO6C,EAAEpE,EAAEwI,GAAGhG,EAAE,GAAG,OAAOgG,EAAE,CAAC,KAAKsF,EAAEzJ,EAAE9C,OAAOuM,IAAkB,QAAdtF,EAAE/E,EAAEzD,EAAEqE,EAAEyJ,GAAGD,MAAcV,EAAEiB,EAAE5F,EAAE2E,EAAEW,GAAG,OAAOtN,EAAEgC,EAAEgG,EAAEhI,EAAE4mK,QAAQ5+J,EAAEhI,EAAEgI,GAAG,OAAOhG,EAAE,IAAIgG,EAAEC,EAAEzI,EAAEwI,GAAGsF,EAAEzJ,EAAE9C,OAAOuM,IAAsB,QAAlBT,EAAEM,EAAEnF,EAAExI,EAAE8N,EAAEzJ,EAAEyJ,GAAGD,MAAczH,GAAG,OAAOiH,EAAEw5J,WAAWr+J,EAAE+sI,OAAO,OAAOloI,EAAEnE,IAAI4E,EAAET,EAAEnE,KAAKiE,EAAEiB,EAAEf,EAAEF,EAAEW,GAAG,OAAOtN,EAAEgC,EAAE6K,EAAE7M,EAAE4mK,QAAQ/5J,EAAE7M,EAAE6M,GAA4C,OAAzCjH,GAAGoC,EAAEhB,SAAQ,SAASpB,GAAG,OAAOC,EAAErG,EAAEoG,MAAY5D,EAAE,SAASkL,EAAE1N,EAAEmN,EAAE9I,EAAE7B,GAAG,IAAIqL,EAAE22C,GAAGngD,GAAG,GAAG,mBAAoBwJ,EAAE,MAAM3K,MAAM+K,EAAE,MACve,GAAG,OAD0e5J,EAAEwJ,EAAE/P,KAAKuG,IAC3e,MAAMnB,MAAM+K,EAAE,MAAM,IAAI,IAAIzF,EAAEqF,EAAE,KAAKrN,EAAE2M,EAAEW,EAAEX,EAAE,EAAEE,EAAE,KAAKH,EAAE7I,EAAEgN,OAAO,OAAO7Q,IAAI0M,EAAEquE,KAAKztE,IAAIZ,EAAE7I,EAAEgN,OAAO,CAAC7Q,EAAEy/B,MAAMnyB,GAAGT,EAAE7M,EAAEA,EAAE,MAAM6M,EAAE7M,EAAE4mK,QAAQ,IAAI15J,EAAEN,EAAEpN,EAAEQ,EAAE0M,EAAEpN,MAAM0C,GAAG,GAAG,OAAOkL,EAAE,CAAC,OAAOlN,IAAIA,EAAE6M,GAAG,MAAMjH,GAAG5F,GAAG,OAAOkN,EAAEm5J,WAAWxgK,EAAErG,EAAEQ,GAAG2M,EAAEiB,EAAEV,EAAEP,EAAEW,GAAG,OAAOtF,EAAEqF,EAAEH,EAAElF,EAAE4+J,QAAQ15J,EAAElF,EAAEkF,EAAElN,EAAE6M,EAAE,GAAGH,EAAEquE,KAAK,OAAOn3E,EAAEpE,EAAEQ,GAAGqN,EAAE,GAAG,OAAOrN,EAAE,CAAC,MAAM0M,EAAEquE,KAAKztE,IAAIZ,EAAE7I,EAAEgN,OAAwB,QAAjBnE,EAAEzJ,EAAEzD,EAAEkN,EAAEpN,MAAM0C,MAAc2K,EAAEiB,EAAElB,EAAEC,EAAEW,GAAG,OAAOtF,EAAEqF,EAAEX,EAAE1E,EAAE4+J,QAAQl6J,EAAE1E,EAAE0E,GAAG,OAAOW,EAAE,IAAIrN,EAAEiI,EAAEzI,EAAEQ,IAAI0M,EAAEquE,KAAKztE,IAAIZ,EAAE7I,EAAEgN,OAA4B,QAArBnE,EAAES,EAAEnN,EAAER,EAAE8N,EAAEZ,EAAEpN,MAAM0C,MAAc4D,GAAG,OAChf8G,EAAE25J,WAAWrmK,EAAE+0I,OAAO,OAAOroI,EAAEhE,IAAI4E,EAAEZ,EAAEhE,KAAKiE,EAAEiB,EAAElB,EAAEC,EAAEW,GAAG,OAAOtF,EAAEqF,EAAEX,EAAE1E,EAAE4+J,QAAQl6J,EAAE1E,EAAE0E,GAA4C,OAAzC9G,GAAG5F,EAAEgH,SAAQ,SAASpB,GAAG,OAAOC,EAAErG,EAAEoG,MAAYyH,EAAE,OAAO,SAASzH,EAAEqC,EAAE2F,EAAE/J,GAAG,IAAIwJ,EAAE,iBAAkBO,GAAG,OAAOA,GAAGA,EAAErI,OAAOm8J,IAAI,OAAO9zJ,EAAElF,IAAI2E,IAAIO,EAAEA,EAAE2I,MAAM1X,UAAU,IAAImD,EAAE,iBAAkB4L,GAAG,OAAOA,EAAE,GAAG5L,EAAE,OAAO4L,EAAEoqJ,UAAU,KAAKwJ,GAAG57J,EAAE,CAAS,IAAR5D,EAAE4L,EAAElF,IAAQ2E,EAAEpF,EAAE,OAAOoF,GAAG,CAAC,GAAGA,EAAE3E,MAAM1G,EAAE,CAAC,OAAOqL,EAAEtD,KAAK,KAAK,EAAE,GAAG6D,EAAErI,OAAOm8J,GAAG,CAAC99J,EAAEgC,EAAEyH,EAAEu5J,UAAS3+J,EAAEzI,EAAE6N,EAAEO,EAAE2I,MAAM1X,WAAY+jK,OAAOh9J,EAAEA,EAAEqC,EAAE,MAAMrC,EAAE,MAAM,QAAQ,GAAGyH,EAAEq0K,cAAc9zK,EAAErI,KAAK,CAAC3B,EAAEgC,EACrfyH,EAAEu5J,UAAS3+J,EAAEzI,EAAE6N,EAAEO,EAAE2I,QAASC,IAAIyqK,GAAGr7K,EAAEyH,EAAEO,GAAG3F,EAAE26J,OAAOh9J,EAAEA,EAAEqC,EAAE,MAAMrC,GAAGhC,EAAEgC,EAAEyH,GAAG,MAAWxH,EAAED,EAAEyH,GAAGA,EAAEA,EAAEu5J,QAAQh5J,EAAErI,OAAOm8J,KAAIz5J,EAAE65K,GAAGl0K,EAAE2I,MAAM1X,SAAS+G,EAAE3F,KAAK4D,EAAE+J,EAAElF,MAAOk6J,OAAOh9J,EAAEA,EAAEqC,KAAIpE,EAAE89K,GAAG/zK,EAAErI,KAAKqI,EAAElF,IAAIkF,EAAE2I,MAAM,KAAK3Q,EAAE3F,KAAK4D,IAAK2S,IAAIyqK,GAAGr7K,EAAEqC,EAAE2F,GAAG/J,EAAE++J,OAAOh9J,EAAEA,EAAE/B,GAAG,OAAO8I,EAAE/G,GAAG,KAAK67J,GAAG77J,EAAE,CAAC,IAAIyH,EAAEO,EAAElF,IAAI,OAAOT,GAAG,CAAC,GAAGA,EAAES,MAAM2E,EAAE,IAAG,IAAIpF,EAAE8B,KAAK9B,EAAEy3J,UAAUuI,gBAAgBr6J,EAAEq6J,eAAehgK,EAAEy3J,UAAUkiB,iBAAiBh0K,EAAEg0K,eAAe,CAACh+K,EAAEgC,EAAEqC,EAAE2+J,UAAS3+J,EAAEzI,EAAEyI,EAAE2F,EAAE/O,UAAU,KAAM+jK,OAAOh9J,EAAEA,EAAEqC,EAAE,MAAMrC,EAAOhC,EAAEgC,EAAEqC,GAAG,MAAWpC,EAAED,EAAEqC,GAAGA,EACnfA,EAAE2+J,SAAQ3+J,EAAE45K,GAAGj0K,EAAEhI,EAAE3F,KAAK4D,IAAK++J,OAAOh9J,EAAEA,EAAEqC,EAAE,OAAO0E,EAAE/G,GAAG,GAAG,iBAAkBgI,GAAG,iBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAO3F,GAAG,IAAIA,EAAE8B,KAAKnG,EAAEgC,EAAEqC,EAAE2+J,UAAS3+J,EAAEzI,EAAEyI,EAAE2F,IAAKg1J,OAAOh9J,EAAEA,EAAEqC,IAAIrE,EAAEgC,EAAEqC,IAAGA,EAAEw5K,GAAG7zK,EAAEhI,EAAE3F,KAAK4D,IAAK++J,OAAOh9J,EAAEA,EAAEqC,GAAG0E,EAAE/G,GAAG,GAAGo7K,GAAGpzK,GAAG,OAAOG,EAAGnI,EAAEqC,EAAE2F,EAAE/J,GAAG,GAAGmgD,GAAGp2C,GAAG,OAAOV,EAAEtH,EAAEqC,EAAE2F,EAAE/J,GAAc,GAAX7B,GAAGm/K,GAAGv7K,EAAEgI,QAAM,IAAqBA,IAAIP,EAAE,OAAOzH,EAAEmE,KAAK,KAAK,EAAE,KAAK,EAAE,MAAMnE,EAAEA,EAAEL,KAAK7C,MAAM+K,EAAE,IAAI7H,EAAE4lE,aAAa5lE,EAAE3G,MAAM,cAAe,OAAO2E,EAAEgC,EAAEqC,IAAI,IAAI85K,GAAGX,IAAG,GAAIY,GAAGZ,IAAG,GAAIa,GAAG,GAAGC,GAAG,CAACtzK,QAAQqzK,IAAIE,GAAG,CAACvzK,QAAQqzK,IAAIG,GAAG,CAACxzK,QAAQqzK,IACjf,SAASI,GAAGz8K,GAAG,GAAGA,IAAIq8K,GAAG,MAAMv/K,MAAM+K,EAAE,MAAM,OAAO7H,EAAE,SAAS08K,GAAG18K,EAAEC,GAAyC,OAAtC6H,GAAE00K,GAAGv8K,GAAG6H,GAAEy0K,GAAGv8K,GAAG8H,GAAEw0K,GAAGD,IAAIr8K,EAAEC,EAAEi0E,UAAmB,KAAK,EAAE,KAAK,GAAGj0E,GAAGA,EAAEA,EAAEg8C,iBAAiBh8C,EAAEm/J,aAAaL,GAAG,KAAK,IAAI,MAAM,QAAkE9+J,EAAE8+J,GAArC9+J,GAAvBD,EAAE,IAAIA,EAAEC,EAAEiF,WAAWjF,GAAMm/J,cAAc,KAAKp/J,EAAEA,EAAEw5F,SAAkB3yF,GAAEy1K,IAAIx0K,GAAEw0K,GAAGr8K,GAAG,SAAS08K,KAAK91K,GAAEy1K,IAAIz1K,GAAE01K,IAAI11K,GAAE21K,IAAI,SAASI,GAAG58K,GAAGy8K,GAAGD,GAAGxzK,SAAS,IAAI/I,EAAEw8K,GAAGH,GAAGtzK,SAAahL,EAAE+gK,GAAG9+J,EAAED,EAAEL,MAAMM,IAAIjC,IAAI8J,GAAEy0K,GAAGv8K,GAAG8H,GAAEw0K,GAAGt+K,IAAI,SAAS6+K,GAAG78K,GAAGu8K,GAAGvzK,UAAUhJ,IAAI6G,GAAEy1K,IAAIz1K,GAAE01K,KAAK,IAAI/0K,GAAE,CAACwB,QAAQ,GACpd,SAASuc,GAAGvlB,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAEkE,IAAI,CAAC,IAAInG,EAAEiC,EAAE2gK,cAAc,GAAG,OAAO5iK,IAAmB,QAAfA,EAAEA,EAAE6iK,aAzEqJ,OAyEhI7iK,EAAExB,MAzEsI,OAyE3HwB,EAAExB,MAAW,OAAOyD,OAAO,GAAG,KAAKA,EAAEkE,UAAK,IAASlE,EAAE68K,cAAcC,aAAa,GAAG,IAAiB,GAAZ98K,EAAEygK,WAAc,OAAOzgK,OAAO,GAAG,OAAOA,EAAEyB,MAAM,CAACzB,EAAEyB,MAAMs7J,OAAO/8J,EAAEA,EAAEA,EAAEyB,MAAM,SAAS,GAAGzB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE+gK,SAAS,CAAC,GAAG,OAAO/gK,EAAE+8J,QAAQ/8J,EAAE+8J,SAASh9J,EAAE,OAAO,KAAKC,EAAEA,EAAE+8J,OAAO/8J,EAAE+gK,QAAQhE,OAAO/8J,EAAE+8J,OAAO/8J,EAAEA,EAAE+gK,QAAQ,OAAO,KAAK,SAASgc,GAAGh9K,EAAEC,GAAG,MAAM,CAACg9K,UAAUj9K,EAAE2Q,MAAM1Q,GACve,IAAIi9K,GAAG7hB,EAAG/I,uBAAuB6qB,GAAG9hB,EAAG9I,wBAAwB6qB,GAAG,EAAEn1K,GAAE,KAAKG,GAAE,KAAKvC,GAAE,KAAKw3K,IAAG,EAAG,SAAS30K,KAAI,MAAM5L,MAAM+K,EAAE,MAAO,SAASy1K,GAAGt9K,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIjC,EAAE,EAAEA,EAAEiC,EAAE9E,QAAQ6C,EAAEgC,EAAE7E,OAAO6C,IAAI,IAAI6wK,GAAG7uK,EAAEhC,GAAGiC,EAAEjC,IAAI,OAAM,EAAG,OAAM,EAC/O,SAASu/K,GAAGv9K,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAkI,GAA/Ho1K,GAAGp1K,EAAEC,GAAEhI,EAAEA,EAAE2gK,cAAc,KAAK3gK,EAAE+4K,YAAY,KAAK/4K,EAAEw4K,eAAe,EAAEyE,GAAGl0K,QAAQ,OAAOhJ,GAAG,OAAOA,EAAE4gK,cAAc4c,GAAGC,GAAGz9K,EAAEhC,EAAEqE,EAAEzI,GAAMqG,EAAEw4K,iBAAiB2E,GAAG,CAACp1K,EAAE,EAAE,EAAE,CAAoB,GAAnB/H,EAAEw4K,eAAe,IAAO,GAAGzwK,GAAG,MAAMlL,MAAM+K,EAAE,MAAMG,GAAG,EAAEnC,GAAEuC,GAAE,KAAKnI,EAAE+4K,YAAY,KAAKkE,GAAGl0K,QAAQ00K,GAAG19K,EAAEhC,EAAEqE,EAAEzI,SAASqG,EAAEw4K,iBAAiB2E,IAAkE,GAA9DF,GAAGl0K,QAAQ20K,GAAG19K,EAAE,OAAOmI,IAAG,OAAOA,GAAE6C,KAAKmyK,GAAG,EAAEv3K,GAAEuC,GAAEH,GAAE,KAAKo1K,IAAG,EAAMp9K,EAAE,MAAMnD,MAAM+K,EAAE,MAAM,OAAO7H,EAC9Z,SAAS89B,KAAK,IAAI99B,EAAE,CAAC4gK,cAAc,KAAKqY,UAAU,KAAKC,UAAU,KAAK55K,MAAM,KAAK2L,KAAK,MAA8C,OAAxC,OAAOpF,GAAEoC,GAAE24J,cAAc/6J,GAAE7F,EAAE6F,GAAEA,GAAEoF,KAAKjL,EAAS6F,GAAE,SAAS+3K,KAAK,GAAG,OAAOx1K,GAAE,CAAC,IAAIpI,EAAEiI,GAAEw4J,UAAUzgK,EAAE,OAAOA,EAAEA,EAAE4gK,cAAc,UAAU5gK,EAAEoI,GAAE6C,KAAK,IAAIhL,EAAE,OAAO4F,GAAEoC,GAAE24J,cAAc/6J,GAAEoF,KAAK,GAAG,OAAOhL,EAAE4F,GAAE5F,EAAEmI,GAAEpI,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMlD,MAAM+K,EAAE,MAAU7H,EAAE,CAAC4gK,eAAPx4J,GAAEpI,GAAqB4gK,cAAcqY,UAAU7wK,GAAE6wK,UAAUC,UAAU9wK,GAAE8wK,UAAU55K,MAAM8I,GAAE9I,MAAM2L,KAAK,MAAM,OAAOpF,GAAEoC,GAAE24J,cAAc/6J,GAAE7F,EAAE6F,GAAEA,GAAEoF,KAAKjL,EAAE,OAAO6F,GAChe,SAASg4K,GAAG79K,EAAEC,GAAG,MAAM,mBAAoBA,EAAEA,EAAED,GAAGC,EAClD,SAAS69K,GAAG99K,GAAG,IAAIC,EAAE29K,KAAK5/K,EAAEiC,EAAEX,MAAM,GAAG,OAAOtB,EAAE,MAAMlB,MAAM+K,EAAE,MAAM7J,EAAE+/K,oBAAoB/9K,EAAE,IAAIqC,EAAE+F,GAAExO,EAAEyI,EAAE62K,UAAUlxK,EAAEhK,EAAEo7K,QAAQ,GAAG,OAAOpxK,EAAE,CAAC,GAAG,OAAOpO,EAAE,CAAC,IAAImN,EAAEnN,EAAEqR,KAAKrR,EAAEqR,KAAKjD,EAAEiD,KAAKjD,EAAEiD,KAAKlE,EAAE1E,EAAE62K,UAAUt/K,EAAEoO,EAAEhK,EAAEo7K,QAAQ,KAAK,GAAG,OAAOx/K,EAAE,CAACA,EAAEA,EAAEqR,KAAK5I,EAAEA,EAAE42K,UAAU,IAAIh7K,EAAE8I,EAAEiB,EAAE,KAAKP,EAAE7N,EAAE,EAAE,CAAC,IAAIwC,EAAEqL,EAAEgxK,eAAe,GAAGr8K,EAAEghL,GAAG,CAAC,IAAIh7K,EAAE,CAACq2K,eAAehxK,EAAEgxK,eAAec,eAAe9xK,EAAE8xK,eAAe5wF,OAAOlhF,EAAEkhF,OAAOq1F,aAAav2K,EAAEu2K,aAAaC,WAAWx2K,EAAEw2K,WAAWhzK,KAAK,MAAM,OAAOhN,GAAG8I,EAAE9I,EAAEmE,EAAE4F,EAAE3F,GAAGpE,EAAEA,EAAEgN,KAAK7I,EAAEhG,EAAE6L,GAAEwwK,iBAC9exwK,GAAEwwK,eAAer8K,EAAEy9K,GAAGz9K,SAAS,OAAO6B,IAAIA,EAAEA,EAAEgN,KAAK,CAACwtK,eAAe,WAAWc,eAAe9xK,EAAE8xK,eAAe5wF,OAAOlhF,EAAEkhF,OAAOq1F,aAAav2K,EAAEu2K,aAAaC,WAAWx2K,EAAEw2K,WAAWhzK,KAAK,OAAO2uK,GAAGx9K,EAAEqL,EAAE8xK,gBAAgBl3K,EAAEoF,EAAEu2K,eAAeh+K,EAAEyH,EAAEw2K,WAAWj+K,EAAEqC,EAAEoF,EAAEkhF,QAAQlhF,EAAEA,EAAEwD,WAAW,OAAOxD,GAAGA,IAAI7N,GAAG,OAAOqE,EAAE+J,EAAE3F,EAAEpE,EAAEgN,KAAKlE,EAAE8nK,GAAGxsK,EAAEpC,EAAE2gK,iBAAiB8X,IAAG,GAAIz4K,EAAE2gK,cAAcv+J,EAAEpC,EAAEg5K,UAAUjxK,EAAE/H,EAAEi5K,UAAUj7K,EAAED,EAAEkgL,kBAAkB77K,EAAE,MAAM,CAACpC,EAAE2gK,cAAc5iK,EAAEmgL,UACxb,SAASC,GAAGp+K,GAAG,IAAIC,EAAE29K,KAAK5/K,EAAEiC,EAAEX,MAAM,GAAG,OAAOtB,EAAE,MAAMlB,MAAM+K,EAAE,MAAM7J,EAAE+/K,oBAAoB/9K,EAAE,IAAIqC,EAAErE,EAAEmgL,SAASvkL,EAAEoE,EAAEo7K,QAAQpxK,EAAE/H,EAAE2gK,cAAc,GAAG,OAAOhnK,EAAE,CAACoE,EAAEo7K,QAAQ,KAAK,IAAIryK,EAAEnN,EAAEA,EAAEqR,KAAK,GAAGjD,EAAEhI,EAAEgI,EAAEjB,EAAE4hF,QAAQ5hF,EAAEA,EAAEkE,WAAWlE,IAAInN,GAAGi1K,GAAG7mK,EAAE/H,EAAE2gK,iBAAiB8X,IAAG,GAAIz4K,EAAE2gK,cAAc54J,EAAE,OAAO/H,EAAEi5K,YAAYj5K,EAAEg5K,UAAUjxK,GAAGhK,EAAEkgL,kBAAkBl2K,EAAE,MAAM,CAACA,EAAE3F,GACnV,SAASg8K,GAAGr+K,GAAG,IAAIC,EAAE69B,KAAmL,MAA9K,mBAAoB99B,IAAIA,EAAEA,KAAKC,EAAE2gK,cAAc3gK,EAAEg5K,UAAUj5K,EAAoFA,GAAlFA,EAAEC,EAAEX,MAAM,CAAC85K,QAAQ,KAAK+E,SAAS,KAAKJ,oBAAoBF,GAAGK,kBAAkBl+K,IAAOm+K,SAASG,GAAGv7K,KAAK,KAAKkF,GAAEjI,GAAS,CAACC,EAAE2gK,cAAc5gK,GAAG,SAASu+K,GAAGv+K,EAAEC,EAAEjC,EAAEqE,GAAkO,OAA/NrC,EAAE,CAACmE,IAAInE,EAAE6C,OAAO5C,EAAE05C,QAAQ37C,EAAEk7G,KAAK72G,EAAE4I,KAAK,MAAsB,QAAhBhL,EAAEgI,GAAE+wK,cAAsB/4K,EAAE,CAACw7K,WAAW,MAAMxzK,GAAE+wK,YAAY/4K,EAAEA,EAAEw7K,WAAWz7K,EAAEiL,KAAKjL,GAAmB,QAAfhC,EAAEiC,EAAEw7K,YAAoBx7K,EAAEw7K,WAAWz7K,EAAEiL,KAAKjL,GAAGqC,EAAErE,EAAEiN,KAAKjN,EAAEiN,KAAKjL,EAAEA,EAAEiL,KAAK5I,EAAEpC,EAAEw7K,WAAWz7K,GAAWA,EAC7d,SAASw+K,KAAK,OAAOZ,KAAKhd,cAAc,SAAS6d,GAAGz+K,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAEkkC,KAAK71B,GAAEy4J,WAAW1gK,EAAEpG,EAAEgnK,cAAc2d,GAAG,EAAEt+K,EAAEjC,OAAE,OAAO,IAASqE,EAAE,KAAKA,GAAG,SAASq8K,GAAG1+K,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAEgkL,KAAKv7K,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI2F,OAAE,EAAO,GAAG,OAAOI,GAAE,CAAC,IAAIrB,EAAEqB,GAAEw4J,cAA0B,GAAZ54J,EAAEjB,EAAE4yC,QAAW,OAAOt3C,GAAGi7K,GAAGj7K,EAAE0E,EAAEmyG,MAAmB,YAAZqlE,GAAGt+K,EAAEjC,EAAEgK,EAAE3F,GAAW4F,GAAEy4J,WAAW1gK,EAAEpG,EAAEgnK,cAAc2d,GAAG,EAAEt+K,EAAEjC,EAAEgK,EAAE3F,GAAG,SAASs8K,GAAG3+K,EAAEC,GAAG,OAAOw+K,GAAG,IAAI,EAAEz+K,EAAEC,GAAG,SAAS2+K,GAAG5+K,EAAEC,GAAG,OAAOy+K,GAAG,IAAI,EAAE1+K,EAAEC,GAAG,SAAS4+K,GAAG7+K,EAAEC,GAAG,OAAOy+K,GAAG,EAAE,EAAE1+K,EAAEC,GACnc,SAAS6+K,GAAG9+K,EAAEC,GAAG,MAAG,mBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,QAAU,MAAOA,GAAqBD,EAAEA,IAAIC,EAAE+I,QAAQhJ,EAAE,WAAWC,EAAE+I,QAAQ,YAAtE,EAA4E,SAAS+1K,GAAG/+K,EAAEC,EAAEjC,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE8B,OAAO,CAACE,IAAI,KAAY0+K,GAAG,EAAE,EAAEI,GAAG/7K,KAAK,KAAK9C,EAAED,GAAGhC,GAAG,SAASghL,MAAM,SAASC,GAAGj/K,EAAEC,GAA4C,OAAzC69B,KAAK8iI,cAAc,CAAC5gK,OAAE,IAASC,EAAE,KAAKA,GAAUD,EAAE,SAASk/K,GAAGl/K,EAAEC,GAAG,IAAIjC,EAAE4/K,KAAK39K,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIoC,EAAErE,EAAE4iK,cAAc,OAAG,OAAOv+J,GAAG,OAAOpC,GAAGq9K,GAAGr9K,EAAEoC,EAAE,IAAWA,EAAE,IAAGrE,EAAE4iK,cAAc,CAAC5gK,EAAEC,GAAUD,GAC/d,SAASm/K,GAAGn/K,EAAEC,GAAG,IAAIjC,EAAE4/K,KAAK39K,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIoC,EAAErE,EAAE4iK,cAAc,OAAG,OAAOv+J,GAAG,OAAOpC,GAAGq9K,GAAGr9K,EAAEoC,EAAE,IAAWA,EAAE,IAAGrC,EAAEA,IAAIhC,EAAE4iK,cAAc,CAAC5gK,EAAEC,GAAUD,GAAE,SAASo/K,GAAGp/K,EAAEC,EAAEjC,GAAG,IAAIqE,EAAEk1K,KAAKE,GAAG,GAAGp1K,EAAE,GAAGA,GAAE,WAAWrC,GAAE,MAAMy3K,GAAG,GAAGp1K,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAE86K,GAAG3qB,SAAS2qB,GAAG3qB,cAAS,IAASvyJ,EAAE,KAAKA,EAAE,IAAID,GAAE,GAAIhC,IAAI,QAAQm/K,GAAG3qB,SAASnwJ,MACjU,SAASi8K,GAAGt+K,EAAEC,EAAEjC,GAAG,IAAIqE,EAAE+3K,KAAKxgL,EAAEmgL,GAAGvnB,SAAqB54J,EAAE,CAAC6+K,eAAfp2K,EAAEg4K,GAAGh4K,EAAErC,EAAEpG,GAAuB2/K,eAAe3/K,EAAE+uF,OAAO3qF,EAAEggL,aAAa,KAAKC,WAAW,KAAKhzK,KAAK,MAAM,IAAIjD,EAAE/H,EAAEm5K,QAA6E,GAArE,OAAOpxK,EAAEpO,EAAEqR,KAAKrR,GAAGA,EAAEqR,KAAKjD,EAAEiD,KAAKjD,EAAEiD,KAAKrR,GAAGqG,EAAEm5K,QAAQx/K,EAAEoO,EAAEhI,EAAEygK,UAAazgK,IAAIiI,IAAG,OAAOD,GAAGA,IAAIC,GAAEo1K,IAAG,EAAGzjL,EAAE6+K,eAAe2E,GAAGn1K,GAAEwwK,eAAe2E,OAAO,CAAC,GAAG,IAAIp9K,EAAEy4K,iBAAiB,OAAOzwK,GAAG,IAAIA,EAAEywK,iBAA0C,QAAxBzwK,EAAE/H,EAAE89K,qBAA8B,IAAI,IAAIh3K,EAAE9G,EAAEi+K,kBAAkBjgL,EAAE+J,EAAEjB,EAAE/I,GAAmC,GAAhCpE,EAAEokL,aAAah2K,EAAEpO,EAAEqkL,WAAWhgL,EAAK4wK,GAAG5wK,EAAE8I,GAAG,OAAO,MAAMU,IAAa6yK,GAAGt6K,EAClgBqC,IACA,IAAIs7K,GAAG,CAAC0B,YAAY1G,GAAGl+F,YAAY/xE,GAAEg3E,WAAWh3E,GAAEkzE,UAAUlzE,GAAEmrJ,oBAAoBnrJ,GAAE6wG,gBAAgB7wG,GAAEoxG,QAAQpxG,GAAEmmE,WAAWnmE,GAAE6jF,OAAO7jF,GAAE+yE,SAAS/yE,GAAEkrJ,cAAclrJ,GAAE42K,aAAa52K,GAAE62K,iBAAiB72K,GAAE82K,cAAc92K,IAAG80K,GAAG,CAAC6B,YAAY1G,GAAGl+F,YAAYwkG,GAAGv/F,WAAWi5F,GAAG/8F,UAAU+iG,GAAG9qB,oBAAoB,SAAS7zJ,EAAEC,EAAEjC,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE8B,OAAO,CAACE,IAAI,KAAYy+K,GAAG,EAAE,EAAEK,GAAG/7K,KAAK,KAAK9C,EAAED,GAAGhC,IAAIu7G,gBAAgB,SAASv5G,EAAEC,GAAG,OAAOw+K,GAAG,EAAE,EAAEz+K,EAAEC,IAAI65G,QAAQ,SAAS95G,EAAEC,GAAG,IAAIjC,EAAE8/B,KAC9c,OADmd79B,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIhC,EAAE4iK,cAAc,CAAC5gK,EACjgBC,GAAUD,GAAG6uE,WAAW,SAAS7uE,EAAEC,EAAEjC,GAAG,IAAIqE,EAAEy7B,KAAuK,OAAlK79B,OAAE,IAASjC,EAAEA,EAAEiC,GAAGA,EAAEoC,EAAEu+J,cAAcv+J,EAAE42K,UAAUh5K,EAAmFD,GAAjFA,EAAEqC,EAAE/C,MAAM,CAAC85K,QAAQ,KAAK+E,SAAS,KAAKJ,oBAAoB/9K,EAAEk+K,kBAAkBj+K,IAAOk+K,SAASG,GAAGv7K,KAAK,KAAKkF,GAAEjI,GAAS,CAACqC,EAAEu+J,cAAc5gK,IAAIusF,OAAO,SAASvsF,GAA4B,OAAdA,EAAE,CAACgJ,QAAQhJ,GAAhB89B,KAA4B8iI,cAAc5gK,GAAGy7E,SAAS4iG,GAAGzqB,cAAcorB,GAAGM,aAAatC,GAAGuC,iBAAiB,SAASv/K,EAAEC,GAAG,IAAIjC,EAAEqgL,GAAGr+K,GAAGqC,EAAErE,EAAE,GAAGpE,EAAEoE,EAAE,GAC9Y,OADiZ2gL,IAAG,WAAW,IAAI3gL,EAAEm/K,GAAG3qB,SAAS2qB,GAAG3qB,cAAS,IAASvyJ,EAAE,KAAKA,EAAE,IAAIrG,EAAEoG,GAAG,QAAQm9K,GAAG3qB,SAC9ex0J,KAAI,CAACgC,EAAEC,IAAWoC,GAAGm9K,cAAc,SAASx/K,GAAG,IAAIC,EAAEo+K,IAAG,GAAIrgL,EAAEiC,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAACg/K,GAAGG,GAAGr8K,KAAK,KAAK9C,EAAED,GAAG,CAACC,EAAED,IAAIhC,KAAKy/K,GAAG,CAAC4B,YAAY1G,GAAGl+F,YAAYykG,GAAGx/F,WAAWi5F,GAAG/8F,UAAUgjG,GAAG/qB,oBAAoBkrB,GAAGxlE,gBAAgBslE,GAAG/kE,QAAQqlE,GAAGtwG,WAAWivG,GAAGvxF,OAAOiyF,GAAG/iG,SAAS,WAAW,OAAOqiG,GAAGD,KAAKjqB,cAAcorB,GAAGM,aAAatC,GAAGuC,iBAAiB,SAASv/K,EAAEC,GAAG,IAAIjC,EAAE8/K,GAAGD,IAAIx7K,EAAErE,EAAE,GAAGpE,EAAEoE,EAAE,GAAyG,OAAtG4gL,IAAG,WAAW,IAAI5gL,EAAEm/K,GAAG3qB,SAAS2qB,GAAG3qB,cAAS,IAASvyJ,EAAE,KAAKA,EAAE,IAAIrG,EAAEoG,GAAG,QAAQm9K,GAAG3qB,SAASx0J,KAAI,CAACgC,EAAEC,IAAWoC,GAAGm9K,cAAc,SAASx/K,GAAG,IAAIC,EACxgB69K,GAAGD,IAAI7/K,EAAEiC,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAACi/K,GAAGE,GAAGr8K,KAAK,KAAK9C,EAAED,GAAG,CAACC,EAAED,IAAIhC,KAAK0/K,GAAG,CAAC2B,YAAY1G,GAAGl+F,YAAYykG,GAAGx/F,WAAWi5F,GAAG/8F,UAAUgjG,GAAG/qB,oBAAoBkrB,GAAGxlE,gBAAgBslE,GAAG/kE,QAAQqlE,GAAGtwG,WAAWuvG,GAAG7xF,OAAOiyF,GAAG/iG,SAAS,WAAW,OAAO2iG,GAAGP,KAAKjqB,cAAcorB,GAAGM,aAAatC,GAAGuC,iBAAiB,SAASv/K,EAAEC,GAAG,IAAIjC,EAAEogL,GAAGP,IAAIx7K,EAAErE,EAAE,GAAGpE,EAAEoE,EAAE,GAAyG,OAAtG4gL,IAAG,WAAW,IAAI5gL,EAAEm/K,GAAG3qB,SAAS2qB,GAAG3qB,cAAS,IAASvyJ,EAAE,KAAKA,EAAE,IAAIrG,EAAEoG,GAAG,QAAQm9K,GAAG3qB,SAASx0J,KAAI,CAACgC,EAAEC,IAAWoC,GAAGm9K,cAAc,SAASx/K,GAAG,IAAIC,EAAEm+K,GAAGP,IAAI7/K,EAAEiC,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAACi/K,GAAGE,GAAGr8K,KAAK,KAC5f9C,EAAED,GAAG,CAACC,EAAED,IAAIhC,KAAKyhL,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAG,SAASC,GAAG5/K,EAAEC,GAAG,IAAIjC,EAAE6hL,GAAG,EAAE,KAAK,KAAK,GAAG7hL,EAAE89K,YAAY,UAAU99K,EAAE2B,KAAK,UAAU3B,EAAE87J,UAAU75J,EAAEjC,EAAEg/J,OAAOh9J,EAAEhC,EAAE0iK,UAAU,EAAE,OAAO1gK,EAAEy7K,YAAYz7K,EAAEy7K,WAAWC,WAAW19K,EAAEgC,EAAEy7K,WAAWz9K,GAAGgC,EAAE27K,YAAY37K,EAAEy7K,WAAWz9K,EAC1P,SAAS8hL,GAAG9/K,EAAEC,GAAG,OAAOD,EAAEmE,KAAK,KAAK,EAAE,IAAInG,EAAEgC,EAAEL,KAAyE,OAAO,QAA3EM,EAAE,IAAIA,EAAEi0E,UAAUl2E,EAAEyQ,gBAAgBxO,EAAEk0E,SAAS1lE,cAAc,KAAKxO,KAAmBD,EAAE85J,UAAU75J,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKD,EAAE+/K,cAAc,IAAI9/K,EAAEi0E,SAAS,KAAKj0E,KAAYD,EAAE85J,UAAU75J,GAAE,GAAO,KAAK,GAAY,QAAQ,OAAM,GACtR,SAAS+/K,GAAGhgL,GAAG,GAAG2/K,GAAG,CAAC,IAAI1/K,EAAEy/K,GAAG,GAAGz/K,EAAE,CAAC,IAAIjC,EAAEiC,EAAE,IAAI6/K,GAAG9/K,EAAEC,GAAG,CAAqB,KAApBA,EAAEqnK,GAAGtpK,EAAEuG,gBAAqBu7K,GAAG9/K,EAAEC,GAA+C,OAA3CD,EAAE0gK,WAAuB,KAAb1gK,EAAE0gK,UAAgB,EAAEif,IAAG,OAAGF,GAAGz/K,GAAS4/K,GAAGH,GAAGzhL,GAAGyhL,GAAGz/K,EAAE0/K,GAAGpY,GAAGrnK,EAAEy4G,iBAAiB14G,EAAE0gK,WAAuB,KAAb1gK,EAAE0gK,UAAgB,EAAEif,IAAG,EAAGF,GAAGz/K,GAAG,SAASigL,GAAGjgL,GAAG,IAAIA,EAAEA,EAAEg9J,OAAO,OAAOh9J,GAAG,IAAIA,EAAEmE,KAAK,IAAInE,EAAEmE,KAAK,KAAKnE,EAAEmE,KAAKnE,EAAEA,EAAEg9J,OAAOyiB,GAAGz/K,EAC5T,SAASkgL,GAAGlgL,GAAG,GAAGA,IAAIy/K,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOM,GAAGjgL,GAAG2/K,IAAG,GAAG,EAAG,IAAI1/K,EAAED,EAAEL,KAAK,GAAG,IAAIK,EAAEmE,KAAK,SAASlE,GAAG,SAASA,IAAIknK,GAAGlnK,EAAED,EAAE88K,eAAe,IAAI78K,EAAEy/K,GAAGz/K,GAAG2/K,GAAG5/K,EAAEC,GAAGA,EAAEqnK,GAAGrnK,EAAEsE,aAAmB,GAAN07K,GAAGjgL,GAAM,KAAKA,EAAEmE,IAAI,CAAgD,KAA7BnE,EAAE,QAApBA,EAAEA,EAAE4gK,eAAyB5gK,EAAE6gK,WAAW,MAAW,MAAM/jK,MAAM+K,EAAE,MAAM7H,EAAE,CAAiB,IAAhBA,EAAEA,EAAEuE,YAAgBtE,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEk0E,SAAS,CAAC,IAAIl2E,EAAEgC,EAAExD,KAAK,GA9FpG,OA8FuGwB,EAAO,CAAC,GAAG,IAAIiC,EAAE,CAACy/K,GAAGpY,GAAGtnK,EAAEuE,aAAa,MAAMvE,EAAEC,QA9F7J,MA8FsKjC,GA9F/I,OA8FuJA,GA9F/J,OA8FuKA,GAAQiC,IAAID,EAAEA,EAAEuE,YAAYm7K,GAAG,WAAWA,GAAGD,GAAGnY,GAAGtnK,EAAE85J,UAAUv1J,aAAa,KAAK,OAAM,EAChf,SAAS47K,KAAKT,GAAGD,GAAG,KAAKE,IAAG,EAAG,IAAIS,GAAG/kB,EAAG5I,kBAAkBimB,IAAG,EAAG,SAASjyK,GAAEzG,EAAEC,EAAEjC,EAAEqE,GAAGpC,EAAEyB,MAAM,OAAO1B,EAAEo8K,GAAGn8K,EAAE,KAAKjC,EAAEqE,GAAG85K,GAAGl8K,EAAED,EAAE0B,MAAM1D,EAAEqE,GAAG,SAASg+K,GAAGrgL,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAGoE,EAAEA,EAAE0S,OAAO,IAAI1I,EAAE/H,EAAE2Q,IAA8B,OAA1B2nK,GAAGt4K,EAAErG,GAAGyI,EAAEk7K,GAAGv9K,EAAEC,EAAEjC,EAAEqE,EAAE2F,EAAEpO,GAAM,OAAOoG,GAAI04K,IAA4Gz4K,EAAEygK,WAAW,EAAEj6J,GAAEzG,EAAEC,EAAEoC,EAAEzI,GAAUqG,EAAEyB,QAArIzB,EAAE+4K,YAAYh5K,EAAEg5K,YAAY/4K,EAAEygK,YAAY,IAAI1gK,EAAEy4K,gBAAgB7+K,IAAIoG,EAAEy4K,eAAe,GAAG6H,GAAGtgL,EAAEC,EAAErG,IACtU,SAAS2mL,GAAGvgL,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAG,GAAG,OAAOhI,EAAE,CAAC,IAAI+G,EAAE/I,EAAE2B,KAAK,MAAG,mBAAoBoH,GAAI23C,GAAG33C,SAAI,IAASA,EAAEyvD,cAAc,OAAOx4D,EAAE21J,cAAS,IAAS31J,EAAEw4D,eAAsDx2D,EAAE+7K,GAAG/9K,EAAE2B,KAAK,KAAK0C,EAAE,KAAKpC,EAAE5F,KAAK2N,IAAK4I,IAAI3Q,EAAE2Q,IAAI5Q,EAAEg9J,OAAO/8J,EAASA,EAAEyB,MAAM1B,IAA1GC,EAAEkE,IAAI,GAAGlE,EAAEN,KAAKoH,EAAEy5K,GAAGxgL,EAAEC,EAAE8G,EAAE1E,EAAEzI,EAAEoO,IAAuF,OAAVjB,EAAE/G,EAAE0B,MAAS9H,EAAEoO,IAAIpO,EAAEmN,EAAE+1K,eAA0B9+K,EAAE,QAAdA,EAAEA,EAAE21J,SAAmB31J,EAAE+wK,IAAKn1K,EAAEyI,IAAIrC,EAAE4Q,MAAM3Q,EAAE2Q,KAAY0vK,GAAGtgL,EAAEC,EAAE+H,IAAG/H,EAAEygK,WAAW,GAAE1gK,EAAE47K,GAAG70K,EAAE1E,IAAKuO,IAAI3Q,EAAE2Q,IAAI5Q,EAAEg9J,OAAO/8J,EAASA,EAAEyB,MAAM1B,GACnb,SAASwgL,GAAGxgL,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAG,OAAO,OAAOhI,GAAG+uK,GAAG/uK,EAAE88K,cAAcz6K,IAAIrC,EAAE4Q,MAAM3Q,EAAE2Q,MAAM8nK,IAAG,EAAG9+K,EAAEoO,IAAI/H,EAAEw4K,eAAez4K,EAAEy4K,eAAe6H,GAAGtgL,EAAEC,EAAE+H,IAAIy4K,GAAGzgL,EAAEC,EAAEjC,EAAEqE,EAAE2F,GAAG,SAAS04K,GAAG1gL,EAAEC,GAAG,IAAIjC,EAAEiC,EAAE2Q,KAAO,OAAO5Q,GAAG,OAAOhC,GAAG,OAAOgC,GAAGA,EAAE4Q,MAAM5S,KAAEiC,EAAEygK,WAAW,KAAI,SAAS+f,GAAGzgL,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,IAAIoO,EAAEhC,GAAEhI,GAAG+2K,GAAGhtK,GAAEiB,QAA4C,OAApChB,EAAEgtK,GAAG/0K,EAAE+H,GAAGuwK,GAAGt4K,EAAErG,GAAGoE,EAAEu/K,GAAGv9K,EAAEC,EAAEjC,EAAEqE,EAAE2F,EAAEpO,GAAM,OAAOoG,GAAI04K,IAA4Gz4K,EAAEygK,WAAW,EAAEj6J,GAAEzG,EAAEC,EAAEjC,EAAEpE,GAAUqG,EAAEyB,QAArIzB,EAAE+4K,YAAYh5K,EAAEg5K,YAAY/4K,EAAEygK,YAAY,IAAI1gK,EAAEy4K,gBAAgB7+K,IAAIoG,EAAEy4K,eAAe,GAAG6H,GAAGtgL,EAAEC,EAAErG,IAC3b,SAAS+mL,GAAG3gL,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,GAAGoM,GAAEhI,GAAG,CAAC,IAAIgK,GAAE,EAAGytK,GAAGx1K,QAAQ+H,GAAE,EAAW,GAARuwK,GAAGt4K,EAAErG,GAAM,OAAOqG,EAAE65J,UAAU,OAAO95J,IAAIA,EAAEygK,UAAU,KAAKxgK,EAAEwgK,UAAU,KAAKxgK,EAAEygK,WAAW,GAAG+Z,GAAGx6K,EAAEjC,EAAEqE,GAAGy4K,GAAG76K,EAAEjC,EAAEqE,EAAEzI,GAAGyI,GAAE,OAAQ,GAAG,OAAOrC,EAAE,CAAC,IAAI+G,EAAE9G,EAAE65J,UAAU77J,EAAEgC,EAAE68K,cAAc/1K,EAAE4J,MAAM1S,EAAE,IAAIwJ,EAAEV,EAAEmC,QAAQ9M,EAAE4B,EAAE08K,YAAY,iBAAkBt+K,GAAG,OAAOA,EAAEA,EAAEu8K,GAAGv8K,GAAwBA,EAAE44K,GAAG/0K,EAAzB7D,EAAE4J,GAAEhI,GAAG+2K,GAAGhtK,GAAEiB,SAAmB,IAAI5G,EAAEpE,EAAE+8K,yBAAyB19K,EAAE,mBAAoB+E,GAAG,mBAAoB2E,EAAEi0K,wBAAwB39K,GAAG,mBAAoB0J,EAAE8zK,kCACtd,mBAAoB9zK,EAAE6zK,4BAA4B38K,IAAIoE,GAAGoF,IAAIrL,IAAIu+K,GAAG16K,EAAE8G,EAAE1E,EAAEjG,GAAG08K,IAAG,EAAG,IAAI9xK,EAAE/G,EAAE2gK,cAAc75J,EAAEs0D,MAAMr0D,EAAE2yK,GAAG15K,EAAEoC,EAAE0E,EAAEnN,GAAG6N,EAAExH,EAAE2gK,cAAc3iK,IAAIoE,GAAG2E,IAAIS,GAAGG,GAAEoB,SAAS8vK,IAAI,mBAAoB12K,IAAI63K,GAAGh6K,EAAEjC,EAAEoE,EAAEC,GAAGoF,EAAExH,EAAE2gK,gBAAgB3iK,EAAE66K,IAAIyB,GAAGt6K,EAAEjC,EAAEC,EAAEoE,EAAE2E,EAAES,EAAErL,KAAKiB,GAAG,mBAAoB0J,EAAEk0K,2BAA2B,mBAAoBl0K,EAAEm0K,qBAAqB,mBAAoBn0K,EAAEm0K,oBAAoBn0K,EAAEm0K,qBAAqB,mBAAoBn0K,EAAEk0K,2BAA2Bl0K,EAAEk0K,6BAA6B,mBACzel0K,EAAEo0K,oBAAoBl7K,EAAEygK,WAAW,KAAK,mBAAoB35J,EAAEo0K,oBAAoBl7K,EAAEygK,WAAW,GAAGzgK,EAAE68K,cAAcz6K,EAAEpC,EAAE2gK,cAAcn5J,GAAGV,EAAE4J,MAAMtO,EAAE0E,EAAEs0D,MAAM5zD,EAAEV,EAAEmC,QAAQ9M,EAAEiG,EAAEpE,IAAI,mBAAoB8I,EAAEo0K,oBAAoBl7K,EAAEygK,WAAW,GAAGr+J,GAAE,QAAS0E,EAAE9G,EAAE65J,UAAUuf,GAAGr5K,EAAEC,GAAGhC,EAAEgC,EAAE68K,cAAc/1K,EAAE4J,MAAM1Q,EAAEN,OAAOM,EAAE67K,YAAY79K,EAAE65K,GAAG73K,EAAEN,KAAK1B,GAAGwJ,EAAEV,EAAEmC,QAAwB,iBAAhB9M,EAAE4B,EAAE08K,cAAiC,OAAOt+K,EAAEA,EAAEu8K,GAAGv8K,GAAwBA,EAAE44K,GAAG/0K,EAAzB7D,EAAE4J,GAAEhI,GAAG+2K,GAAGhtK,GAAEiB,UAAiD3L,EAAE,mBAAhC+E,EAAEpE,EAAE+8K,2BAAmD,mBACjeh0K,EAAEi0K,0BAA0B,mBAAoBj0K,EAAE8zK,kCAAkC,mBAAoB9zK,EAAE6zK,4BAA4B38K,IAAIoE,GAAGoF,IAAIrL,IAAIu+K,GAAG16K,EAAE8G,EAAE1E,EAAEjG,GAAG08K,IAAG,EAAGrxK,EAAExH,EAAE2gK,cAAc75J,EAAEs0D,MAAM5zD,EAAEkyK,GAAG15K,EAAEoC,EAAE0E,EAAEnN,GAAGoN,EAAE/G,EAAE2gK,cAAc3iK,IAAIoE,GAAGoF,IAAIT,GAAGY,GAAEoB,SAAS8vK,IAAI,mBAAoB12K,IAAI63K,GAAGh6K,EAAEjC,EAAEoE,EAAEC,GAAG2E,EAAE/G,EAAE2gK,gBAAgBx+J,EAAE02K,IAAIyB,GAAGt6K,EAAEjC,EAAEC,EAAEoE,EAAEoF,EAAET,EAAE5K,KAAKiB,GAAG,mBAAoB0J,EAAE65K,4BAA4B,mBAAoB75K,EAAE85K,sBAAsB,mBAAoB95K,EAAE85K,qBAAqB95K,EAAE85K,oBAAoBx+K,EACzf2E,EAAE5K,GAAG,mBAAoB2K,EAAE65K,4BAA4B75K,EAAE65K,2BAA2Bv+K,EAAE2E,EAAE5K,IAAI,mBAAoB2K,EAAE+5K,qBAAqB7gL,EAAEygK,WAAW,GAAG,mBAAoB35J,EAAEi0K,0BAA0B/6K,EAAEygK,WAAW,OAAO,mBAAoB35J,EAAE+5K,oBAAoB7iL,IAAI+B,EAAE88K,eAAer1K,IAAIzH,EAAE4gK,gBAAgB3gK,EAAEygK,WAAW,GAAG,mBAAoB35J,EAAEi0K,yBAAyB/8K,IAAI+B,EAAE88K,eAAer1K,IAAIzH,EAAE4gK,gBAAgB3gK,EAAEygK,WAAW,KAAKzgK,EAAE68K,cAAcz6K,EAAEpC,EAAE2gK,cAAc55J,GAAGD,EAAE4J,MAAMtO,EAAE0E,EAAEs0D,MAAMr0D,EAAED,EAAEmC,QAAQ9M,EAAEiG,EAAED,IAClf,mBAAoB2E,EAAE+5K,oBAAoB7iL,IAAI+B,EAAE88K,eAAer1K,IAAIzH,EAAE4gK,gBAAgB3gK,EAAEygK,WAAW,GAAG,mBAAoB35J,EAAEi0K,yBAAyB/8K,IAAI+B,EAAE88K,eAAer1K,IAAIzH,EAAE4gK,gBAAgB3gK,EAAEygK,WAAW,KAAKr+J,GAAE,GAAI,OAAO0+K,GAAG/gL,EAAEC,EAAEjC,EAAEqE,EAAE2F,EAAEpO,GAC5O,SAASmnL,GAAG/gL,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAG04K,GAAG1gL,EAAEC,GAAG,IAAI8G,EAAE,IAAiB,GAAZ9G,EAAEygK,WAAc,IAAIr+J,IAAI0E,EAAE,OAAOnN,GAAG+7K,GAAG11K,EAAEjC,GAAE,GAAIsiL,GAAGtgL,EAAEC,EAAE+H,GAAG3F,EAAEpC,EAAE65J,UAAUsmB,GAAGp3K,QAAQ/I,EAAE,IAAIhC,EAAE8I,GAAG,mBAAoB/I,EAAEgjL,yBAAyB,KAAK3+K,EAAEqO,SAA2I,OAAlIzQ,EAAEygK,WAAW,EAAE,OAAO1gK,GAAG+G,GAAG9G,EAAEyB,MAAMy6K,GAAGl8K,EAAED,EAAE0B,MAAM,KAAKsG,GAAG/H,EAAEyB,MAAMy6K,GAAGl8K,EAAE,KAAKhC,EAAE+J,IAAIvB,GAAEzG,EAAEC,EAAEhC,EAAE+J,GAAG/H,EAAE2gK,cAAcv+J,EAAEg5D,MAAMzhE,GAAG+7K,GAAG11K,EAAEjC,GAAE,GAAWiC,EAAEyB,MAAM,SAASu/K,GAAGjhL,GAAG,IAAIC,EAAED,EAAE85J,UAAU75J,EAAEihL,eAAe5L,GAAGt1K,EAAEC,EAAEihL,eAAejhL,EAAEihL,iBAAiBjhL,EAAEiJ,SAASjJ,EAAEiJ,SAASosK,GAAGt1K,EAAEC,EAAEiJ,SAAQ,GAAIwzK,GAAG18K,EAAEC,EAAEoiK,eACpe,IAOoX8e,GAAMljF,GAAGmjF,GAPzXhjK,GAAG,CAACyiJ,WAAW,KAAKwgB,UAAU,GAClC,SAASC,GAAGthL,EAAEC,EAAEjC,GAAG,IAA+CC,EAA3CoE,EAAEpC,EAAE5F,KAAKT,EAAEqG,EAAE8/K,aAAa/3K,EAAER,GAAEwB,QAAQjC,GAAE,EAAqN,IAA/M9I,EAAE,IAAiB,GAAZgC,EAAEygK,cAAiBziK,EAAE,IAAO,EAAF+J,KAAO,OAAOhI,GAAG,OAAOA,EAAE4gK,gBAAgB3iK,GAAG8I,GAAE,EAAG9G,EAAEygK,YAAY,IAAI,OAAO1gK,GAAG,OAAOA,EAAE4gK,oBAAe,IAAShnK,EAAE2nL,WAAU,IAAK3nL,EAAE4nL,6BAA6Bx5K,GAAG,GAAGF,GAAEN,GAAI,EAAFQ,GAAQ,OAAOhI,EAAE,CAA4B,QAA3B,IAASpG,EAAE2nL,UAAUvB,GAAG//K,GAAM8G,EAAE,CAA6C,GAA5CA,EAAEnN,EAAE2nL,UAAS3nL,EAAEsiL,GAAG,KAAK75K,EAAE,EAAE,OAAQ26J,OAAO/8J,EAAK,IAAY,EAAPA,EAAE5F,MAAQ,IAAI2F,EAAE,OAAOC,EAAE2gK,cAAc3gK,EAAEyB,MAAMA,MAAMzB,EAAEyB,MAAM9H,EAAE8H,MAAM1B,EAAE,OAAOA,GAAGA,EAAEg9J,OAAOpjK,EAAEoG,EAAEA,EAAEghK,QAC3a,OADmbhjK,EAAEk+K,GAAGn1K,EAAE1E,EAAErE,EAAE,OAAQg/J,OACjf/8J,EAAErG,EAAEonK,QAAQhjK,EAAEiC,EAAE2gK,cAAcxiJ,GAAGne,EAAEyB,MAAM9H,EAASoE,EAAoC,OAAlCqE,EAAEzI,EAAEX,SAASgH,EAAE2gK,cAAc,KAAY3gK,EAAEyB,MAAM06K,GAAGn8K,EAAE,KAAKoC,EAAErE,GAAG,GAAG,OAAOgC,EAAE4gK,cAAc,CAAuB,GAAZv+J,GAAVrC,EAAEA,EAAE0B,OAAUs/J,QAAWj6J,EAAE,CAAgD,GAA/CnN,EAAEA,EAAE2nL,UAASvjL,EAAE49K,GAAG57K,EAAEA,EAAE+/K,eAAgB/iB,OAAO/8J,EAAK,IAAY,EAAPA,EAAE5F,QAAU0M,EAAE,OAAO9G,EAAE2gK,cAAc3gK,EAAEyB,MAAMA,MAAMzB,EAAEyB,SAAU1B,EAAE0B,MAAO,IAAI1D,EAAE0D,MAAMqF,EAAE,OAAOA,GAAGA,EAAEi2J,OAAOh/J,EAAE+I,EAAEA,EAAEi6J,QAA8F,OAAtF3+J,EAAEu5K,GAAGv5K,EAAEzI,IAAKojK,OAAO/8J,EAAEjC,EAAEgjK,QAAQ3+J,EAAErE,EAAEs6K,oBAAoB,EAAEr4K,EAAE2gK,cAAcxiJ,GAAGne,EAAEyB,MAAM1D,EAASqE,EAAoD,OAAlDrE,EAAEm+K,GAAGl8K,EAAED,EAAE0B,MAAM9H,EAAEX,SAAS+E,GAAGiC,EAAE2gK,cAAc,KAAY3gK,EAAEyB,MACnf1D,EAAY,GAAVgC,EAAEA,EAAE0B,MAASqF,EAAE,CAA8E,GAA7EA,EAAEnN,EAAE2nL,UAAS3nL,EAAEsiL,GAAG,KAAK75K,EAAE,EAAE,OAAQ26J,OAAO/8J,EAAErG,EAAE8H,MAAM1B,EAAE,OAAOA,IAAIA,EAAEg9J,OAAOpjK,GAAM,IAAY,EAAPqG,EAAE5F,MAAQ,IAAI2F,EAAE,OAAOC,EAAE2gK,cAAc3gK,EAAEyB,MAAMA,MAAMzB,EAAEyB,MAAM9H,EAAE8H,MAAM1B,EAAE,OAAOA,GAAGA,EAAEg9J,OAAOpjK,EAAEoG,EAAEA,EAAEghK,QAAoH,OAA5GhjK,EAAEk+K,GAAGn1K,EAAE1E,EAAErE,EAAE,OAAQg/J,OAAO/8J,EAAErG,EAAEonK,QAAQhjK,EAAEA,EAAE0iK,WAAW,EAAE9mK,EAAE0+K,oBAAoB,EAAEr4K,EAAE2gK,cAAcxiJ,GAAGne,EAAEyB,MAAM9H,EAASoE,EAAuB,OAArBiC,EAAE2gK,cAAc,KAAY3gK,EAAEyB,MAAMy6K,GAAGl8K,EAAED,EAAEpG,EAAEX,SAAS+E,GAC1X,SAASyjL,GAAGzhL,EAAEC,GAAGD,EAAEy4K,eAAex4K,IAAID,EAAEy4K,eAAex4K,GAAG,IAAIjC,EAAEgC,EAAEygK,UAAU,OAAOziK,GAAGA,EAAEy6K,eAAex4K,IAAIjC,EAAEy6K,eAAex4K,GAAGo4K,GAAGr4K,EAAEg9J,OAAO/8J,GAAG,SAASyhL,GAAG1hL,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAG,IAAIjB,EAAE/G,EAAE4gK,cAAc,OAAO75J,EAAE/G,EAAE4gK,cAAc,CAAC+gB,YAAY1hL,EAAE8wI,UAAU,KAAK6wC,mBAAmB,EAAE3sF,KAAK5yF,EAAE2vF,KAAKh0F,EAAE6jL,eAAe,EAAEC,SAASloL,EAAE6hL,WAAWzzK,IAAIjB,EAAE46K,YAAY1hL,EAAE8G,EAAEgqI,UAAU,KAAKhqI,EAAE66K,mBAAmB,EAAE76K,EAAEkuF,KAAK5yF,EAAE0E,EAAEirF,KAAKh0F,EAAE+I,EAAE86K,eAAe,EAAE96K,EAAE+6K,SAASloL,EAAEmN,EAAE00K,WAAWzzK,GACzb,SAAS+5K,GAAG/hL,EAAEC,EAAEjC,GAAG,IAAIqE,EAAEpC,EAAE8/K,aAAanmL,EAAEyI,EAAE06K,YAAY/0K,EAAE3F,EAAE2vF,KAAqC,GAAhCvrF,GAAEzG,EAAEC,EAAEoC,EAAEpJ,SAAS+E,GAAkB,IAAO,GAAtBqE,EAAEmF,GAAEwB,UAAqB3G,EAAI,EAAFA,EAAI,EAAEpC,EAAEygK,WAAW,OAAO,CAAC,GAAG,OAAO1gK,GAAG,IAAiB,GAAZA,EAAE0gK,WAAc1gK,EAAE,IAAIA,EAAEC,EAAEyB,MAAM,OAAO1B,GAAG,CAAC,GAAG,KAAKA,EAAEmE,IAAI,OAAOnE,EAAE4gK,eAAe6gB,GAAGzhL,EAAEhC,QAAQ,GAAG,KAAKgC,EAAEmE,IAAIs9K,GAAGzhL,EAAEhC,QAAQ,GAAG,OAAOgC,EAAE0B,MAAM,CAAC1B,EAAE0B,MAAMs7J,OAAOh9J,EAAEA,EAAEA,EAAE0B,MAAM,SAAS,GAAG1B,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEghK,SAAS,CAAC,GAAG,OAAOhhK,EAAEg9J,QAAQh9J,EAAEg9J,SAAS/8J,EAAE,MAAMD,EAAEA,EAAEA,EAAEg9J,OAAOh9J,EAAEghK,QAAQhE,OAAOh9J,EAAEg9J,OAAOh9J,EAAEA,EAAEghK,QAAQ3+J,GAAG,EAAS,GAAPyF,GAAEN,GAAEnF,GAAM,IAAY,EAAPpC,EAAE5F,MAAQ4F,EAAE2gK,cAChf,UAAU,OAAOhnK,GAAG,IAAK,WAAqB,IAAVoE,EAAEiC,EAAEyB,MAAU9H,EAAE,KAAK,OAAOoE,GAAiB,QAAdgC,EAAEhC,EAAEyiK,YAAoB,OAAOl7I,GAAGvlB,KAAKpG,EAAEoE,GAAGA,EAAEA,EAAEgjK,QAAY,QAAJhjK,EAAEpE,IAAYA,EAAEqG,EAAEyB,MAAMzB,EAAEyB,MAAM,OAAO9H,EAAEoE,EAAEgjK,QAAQhjK,EAAEgjK,QAAQ,MAAM0gB,GAAGzhL,GAAE,EAAGrG,EAAEoE,EAAEgK,EAAE/H,EAAEw7K,YAAY,MAAM,IAAK,YAA6B,IAAjBz9K,EAAE,KAAKpE,EAAEqG,EAAEyB,MAAUzB,EAAEyB,MAAM,KAAK,OAAO9H,GAAG,CAAe,GAAG,QAAjBoG,EAAEpG,EAAE6mK,YAAuB,OAAOl7I,GAAGvlB,GAAG,CAACC,EAAEyB,MAAM9H,EAAE,MAAMoG,EAAEpG,EAAEonK,QAAQpnK,EAAEonK,QAAQhjK,EAAEA,EAAEpE,EAAEA,EAAEoG,EAAE0hL,GAAGzhL,GAAE,EAAGjC,EAAE,KAAKgK,EAAE/H,EAAEw7K,YAAY,MAAM,IAAK,WAAWiG,GAAGzhL,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAEw7K,YAAY,MAAM,QAAQx7K,EAAE2gK,cAAc,KAAK,OAAO3gK,EAAEyB,MAC/f,SAAS4+K,GAAGtgL,EAAEC,EAAEjC,GAAG,OAAOgC,IAAIC,EAAEs5J,aAAav5J,EAAEu5J,cAAc,IAAIl3J,EAAEpC,EAAEw4K,eAA4B,GAAb,IAAIp2K,GAAGw3K,GAAGx3K,GAAMpC,EAAEq4K,oBAAoBt6K,EAAE,OAAO,KAAK,GAAG,OAAOgC,GAAGC,EAAEyB,QAAQ1B,EAAE0B,MAAM,MAAM5E,MAAM+K,EAAE,MAAM,GAAG,OAAO5H,EAAEyB,MAAM,CAA4C,IAAjC1D,EAAE49K,GAAZ57K,EAAEC,EAAEyB,MAAa1B,EAAE+/K,cAAc9/K,EAAEyB,MAAM1D,EAAMA,EAAEg/J,OAAO/8J,EAAE,OAAOD,EAAEghK,SAAShhK,EAAEA,EAAEghK,SAAQhjK,EAAEA,EAAEgjK,QAAQ4a,GAAG57K,EAAEA,EAAE+/K,eAAgB/iB,OAAO/8J,EAAEjC,EAAEgjK,QAAQ,KAAK,OAAO/gK,EAAEyB,MAK5T,SAASsgL,GAAGhiL,EAAEC,GAAG,OAAOD,EAAE8hL,UAAU,IAAK,SAAS7hL,EAAED,EAAEgyF,KAAK,IAAI,IAAIh0F,EAAE,KAAK,OAAOiC,GAAG,OAAOA,EAAEwgK,YAAYziK,EAAEiC,GAAGA,EAAEA,EAAE+gK,QAAQ,OAAOhjK,EAAEgC,EAAEgyF,KAAK,KAAKh0F,EAAEgjK,QAAQ,KAAK,MAAM,IAAK,YAAYhjK,EAAEgC,EAAEgyF,KAAK,IAAI,IAAI3vF,EAAE,KAAK,OAAOrE,GAAG,OAAOA,EAAEyiK,YAAYp+J,EAAErE,GAAGA,EAAEA,EAAEgjK,QAAQ,OAAO3+J,EAAEpC,GAAG,OAAOD,EAAEgyF,KAAKhyF,EAAEgyF,KAAK,KAAKhyF,EAAEgyF,KAAKgvE,QAAQ,KAAK3+J,EAAE2+J,QAAQ,MAC/W,SAASr+D,GAAG3iG,EAAEC,EAAEjC,GAAG,IAAIqE,EAAEpC,EAAE8/K,aAAa,OAAO9/K,EAAEkE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAAE,OAAO6B,GAAE/F,EAAEN,OAAO01K,KAAK,KAAK,KAAK,EAAE,OAAOsH,KAAK91K,GAAEe,IAAGf,GAAEkB,KAAG/J,EAAEiC,EAAE65J,WAAYonB,iBAAiBljL,EAAEkL,QAAQlL,EAAEkjL,eAAeljL,EAAEkjL,eAAe,MAAM,OAAOlhL,GAAG,OAAOA,EAAE0B,QAAQw+K,GAAGjgL,KAAKA,EAAEygK,WAAW,GAAS,KAAK,KAAK,EAAEmc,GAAG58K,GAAGjC,EAAEy+K,GAAGD,GAAGxzK,SAAS,IAAIpP,EAAEqG,EAAEN,KAAK,GAAG,OAAOK,GAAG,MAAMC,EAAE65J,UAAU77D,GAAGj+F,EAAEC,EAAErG,EAAEyI,EAAErE,GAAGgC,EAAE4Q,MAAM3Q,EAAE2Q,MAAM3Q,EAAEygK,WAAW,SAAS,CAAC,IAAIr+J,EAAE,CAAC,GAAG,OAAOpC,EAAE65J,UAAU,MAAMh9J,MAAM+K,EAAE,MACxgB,OAAO,KAAsB,GAAjB7H,EAAEy8K,GAAGH,GAAGtzK,SAAYk3K,GAAGjgL,GAAG,CAACoC,EAAEpC,EAAE65J,UAAUlgK,EAAEqG,EAAEN,KAAK,IAAIqI,EAAE/H,EAAE68K,cAA8B,OAAhBz6K,EAAEqlK,IAAIznK,EAAEoC,EAAEslK,IAAI3/J,EAASpO,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQgM,GAAE,OAAOvD,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIrC,EAAE,EAAEA,EAAEqgK,GAAGllK,OAAO6E,IAAI4F,GAAEy6J,GAAGrgK,GAAGqC,GAAG,MAAM,IAAK,SAASuD,GAAE,QAAQvD,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOuD,GAAE,QAAQvD,GAAGuD,GAAE,OAAOvD,GAAG,MAAM,IAAK,OAAOuD,GAAE,QAAQvD,GAAGuD,GAAE,SAASvD,GAAG,MAAM,IAAK,UAAUuD,GAAE,SAASvD,GAAG,MAAM,IAAK,QAAQw7J,GAAGx7J,EAAE2F,GAAGpC,GAAE,UAAUvD,GAAGikK,GAAGtoK,EAAE,YAAY,MAAM,IAAK,SAASqE,EAAEs7J,cAC3e,CAACskB,cAAcj6K,EAAEo7H,UAAUx9H,GAAE,UAAUvD,GAAGikK,GAAGtoK,EAAE,YAAY,MAAM,IAAK,WAAW0gK,GAAGr8J,EAAE2F,GAAGpC,GAAE,UAAUvD,GAAGikK,GAAGtoK,EAAE,YAA2B,IAAI,IAAI+I,KAAvBo/J,GAAGvsK,EAAEoO,GAAGhI,EAAE,KAAkBgI,EAAE,GAAGA,EAAEvQ,eAAesP,GAAG,CAAC,IAAI9I,EAAE+J,EAAEjB,GAAG,aAAaA,EAAE,iBAAkB9I,EAAEoE,EAAEukE,cAAc3oE,IAAI+B,EAAE,CAAC,WAAW/B,IAAI,iBAAkBA,GAAGoE,EAAEukE,cAAc,GAAG3oE,IAAI+B,EAAE,CAAC,WAAW,GAAG/B,IAAIo7J,EAAG5hK,eAAesP,IAAI,MAAM9I,GAAGqoK,GAAGtoK,EAAE+I,GAAG,OAAOnN,GAAG,IAAK,QAAQujK,GAAG96J,GAAG87J,GAAG97J,EAAE2F,GAAE,GAAI,MAAM,IAAK,WAAWm1J,GAAG96J,GAAGu8J,GAAGv8J,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,mBAAoB2F,EAAEg0E,UAC1f35E,EAAE01H,QAAQwuC,IAAIvoK,EAAEgC,EAAEC,EAAE+4K,YAAYh7K,EAAE,OAAOA,IAAIiC,EAAEygK,WAAW,OAAO,CAAuY,OAAtY35J,EAAE,IAAI/I,EAAEk2E,SAASl2E,EAAEA,EAAEmrJ,cAAcnpJ,IAAIqmK,KAAKrmK,EAAE8+J,GAAGllK,IAAIoG,IAAIqmK,GAAG,WAAWzsK,IAAGoG,EAAE+G,EAAE1I,cAAc,QAASm3E,UAAU,qBAAuBx1E,EAAEA,EAAEmF,YAAYnF,EAAE04G,aAAa,iBAAkBr2G,EAAEo9B,GAAGz/B,EAAE+G,EAAE1I,cAAczE,EAAE,CAAC6lC,GAAGp9B,EAAEo9B,MAAMz/B,EAAE+G,EAAE1I,cAAczE,GAAG,WAAWA,IAAImN,EAAE/G,EAAEqC,EAAE+gI,SAASr8H,EAAEq8H,UAAS,EAAG/gI,EAAEs7C,OAAO52C,EAAE42C,KAAKt7C,EAAEs7C,QAAQ39C,EAAE+G,EAAE2/D,gBAAgB1mE,EAAEpG,GAAGoG,EAAE0nK,IAAIznK,EAAED,EAAE2nK,IAAItlK,EAAE8+K,GAAGnhL,EAAEC,GAASA,EAAE65J,UAAU95J,EAAE+G,EAAEq/J,GAAGxsK,EAAEyI,GAAUzI,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQgM,GAAE,OAC9f5F,GAAG/B,EAAEoE,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIpE,EAAE,EAAEA,EAAEoiK,GAAGllK,OAAO8C,IAAI2H,GAAEy6J,GAAGpiK,GAAG+B,GAAG/B,EAAEoE,EAAE,MAAM,IAAK,SAASuD,GAAE,QAAQ5F,GAAG/B,EAAEoE,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOuD,GAAE,QAAQ5F,GAAG4F,GAAE,OAAO5F,GAAG/B,EAAEoE,EAAE,MAAM,IAAK,OAAOuD,GAAE,QAAQ5F,GAAG4F,GAAE,SAAS5F,GAAG/B,EAAEoE,EAAE,MAAM,IAAK,UAAUuD,GAAE,SAAS5F,GAAG/B,EAAEoE,EAAE,MAAM,IAAK,QAAQw7J,GAAG79J,EAAEqC,GAAGpE,EAAEw/J,GAAGz9J,EAAEqC,GAAGuD,GAAE,UAAU5F,GAAGsmK,GAAGtoK,EAAE,YAAY,MAAM,IAAK,SAASC,EAAEogK,GAAGr+J,EAAEqC,GAAG,MAAM,IAAK,SAASrC,EAAE29J,cAAc,CAACskB,cAAc5/K,EAAE+gI,UAAUnlI,EAAE+E,EAAE,GAAGX,EAAE,CAAC3I,WAAM,IAASkM,GAAE,UAAU5F,GAAGsmK,GAAGtoK,EAAE,YAAY,MAAM,IAAK,WAAW0gK,GAAG1+J,EACtgBqC,GAAGpE,EAAEwgK,GAAGz+J,EAAEqC,GAAGuD,GAAE,UAAU5F,GAAGsmK,GAAGtoK,EAAE,YAAY,MAAM,QAAQC,EAAEoE,EAAE8jK,GAAGvsK,EAAEqE,GAAG,IAAIwJ,EAAExJ,EAAE,IAAI+J,KAAKP,EAAE,GAAGA,EAAEhQ,eAAeuQ,GAAG,CAAC,IAAI5L,EAAEqL,EAAEO,GAAG,UAAUA,EAAEqzH,GAAGr7H,EAAE5D,GAAG,4BAA4B4L,EAAuB,OAApB5L,EAAEA,EAAEA,EAAEk3F,YAAO,IAAgB2rE,GAAGj/J,EAAE5D,GAAI,aAAa4L,EAAE,iBAAkB5L,GAAG,aAAaxC,GAAG,KAAKwC,IAAIijK,GAAGr/J,EAAE5D,GAAG,iBAAkBA,GAAGijK,GAAGr/J,EAAE,GAAG5D,GAAG,mCAAmC4L,GAAG,6BAA6BA,GAAG,cAAcA,IAAIqxJ,EAAG5hK,eAAeuQ,GAAG,MAAM5L,GAAGkqK,GAAGtoK,EAAEgK,GAAG,MAAM5L,GAAGk/J,EAAGt7J,EAAEgI,EAAE5L,EAAE2K,IAAI,OAAOnN,GAAG,IAAK,QAAQujK,GAAGn9J,GAAGm+J,GAAGn+J,EAAEqC,GAAE,GACnf,MAAM,IAAK,WAAW86J,GAAGn9J,GAAG4+J,GAAG5+J,GAAG,MAAM,IAAK,SAAS,MAAMqC,EAAE3I,OAAOsG,EAAEoE,aAAa,QAAQ,GAAG64J,GAAG56J,EAAE3I,QAAQ,MAAM,IAAK,SAASsG,EAAEojI,WAAW/gI,EAAE+gI,SAAmB,OAAVplI,EAAEqE,EAAE3I,OAAc6kK,GAAGv+J,IAAIqC,EAAE+gI,SAASplI,GAAE,GAAI,MAAMqE,EAAE03G,cAAcwkD,GAAGv+J,IAAIqC,EAAE+gI,SAAS/gI,EAAE03G,cAAa,GAAI,MAAM,QAAQ,mBAAoB97G,EAAE+9E,UAAUh8E,EAAE+3H,QAAQwuC,IAAIU,GAAGrtK,EAAEyI,KAAKpC,EAAEygK,WAAW,GAAG,OAAOzgK,EAAE2Q,MAAM3Q,EAAEygK,WAAW,KAAK,OAAO,KAAK,KAAK,EAAE,GAAG1gK,GAAG,MAAMC,EAAE65J,UAAUsnB,GAAGphL,EAAEC,EAAED,EAAE88K,cAAcz6K,OAAO,CAAC,GAAG,iBAAkBA,GAAG,OAAOpC,EAAE65J,UAAU,MAAMh9J,MAAM+K,EAAE,MACvf7J,EAAEy+K,GAAGD,GAAGxzK,SAASyzK,GAAGH,GAAGtzK,SAASk3K,GAAGjgL,IAAIjC,EAAEiC,EAAE65J,UAAUz3J,EAAEpC,EAAE68K,cAAc9+K,EAAE0pK,IAAIznK,EAAEjC,EAAE26G,YAAYt2G,IAAIpC,EAAEygK,WAAW,MAAK1iK,GAAG,IAAIA,EAAEk2E,SAASl2E,EAAEA,EAAEmrJ,eAAe9kJ,eAAehC,IAAKqlK,IAAIznK,EAAEA,EAAE65J,UAAU97J,GAAG,OAAO,KAAK,KAAK,GAA0B,OAAvB6I,GAAEW,IAAGnF,EAAEpC,EAAE2gK,cAAiB,IAAiB,GAAZ3gK,EAAEygK,YAAqBzgK,EAAEw4K,eAAez6K,EAAEiC,IAAEjC,EAAE,OAAOqE,EAAEA,GAAE,EAAG,OAAOrC,OAAE,IAASC,EAAE68K,cAAcyE,UAAUrB,GAAGjgL,IAAsBoC,EAAE,QAApBzI,EAAEoG,EAAE4gK,eAAyB5iK,GAAG,OAAOpE,GAAsB,QAAlBA,EAAEoG,EAAE0B,MAAMs/J,WAAmC,QAAhBh5J,EAAE/H,EAAE07K,cAAsB17K,EAAE07K,YAAY/hL,EAAEA,EAAE8hL,WAAW1zK,IAAI/H,EAAE07K,YAAY17K,EAAEw7K,WACtf7hL,EAAEA,EAAE8hL,WAAW,MAAM9hL,EAAE8mK,UAAU,IAAQ1iK,IAAIqE,GAAG,IAAY,EAAPpC,EAAE5F,QAAW,OAAO2F,IAAG,IAAKC,EAAE68K,cAAc0E,4BAA4B,IAAe,EAAVh6K,GAAEwB,SAAW9B,KAAIg7K,KAAKh7K,GAAEi7K,KAAYj7K,KAAIg7K,IAAIh7K,KAAIi7K,KAAGj7K,GAAEs6F,IAAG,IAAI4gF,IAAI,OAAOx5K,KAAIy5K,GAAGz5K,GAAExB,IAAGk7K,GAAG15K,GAAEw5K,QAAQpkL,GAAGqE,KAAEpC,EAAEygK,WAAW,GAAS,MAAK,KAAK,EAAE,OAAOic,KAAW,KAAK,KAAK,GAAG,OAAOvE,GAAGn4K,GAAG,KAAK,KAAK,GAAG,OAAO+F,GAAE/F,EAAEN,OAAO01K,KAAK,KAAK,KAAK,GAA0B,GAAvBxuK,GAAEW,IAAwB,QAArBnF,EAAEpC,EAAE2gK,eAA0B,OAAO,KAA0C,GAArChnK,EAAE,IAAiB,GAAZqG,EAAEygK,WAA+B,QAAjB14J,EAAE3F,EAAE0uI,YAAsB,GAAGn3I,EAAEooL,GAAG3/K,GAAE,QAAS,GAAG6E,KAAIg7K,IAAI,OAAOliL,GAAG,IAC9e,GADmfA,EAAE0gK,WACjf,IAAI14J,EAAE/H,EAAEyB,MAAM,OAAOsG,GAAG,CAAS,GAAG,QAAXhI,EAAEulB,GAAGvd,IAAe,CAAyJ,IAAxJ/H,EAAEygK,WAAW,GAAGshB,GAAG3/K,GAAE,GAAoB,QAAhBzI,EAAEoG,EAAEg5K,eAAuB/4K,EAAE+4K,YAAYp/K,EAAEqG,EAAEygK,WAAW,GAAG,OAAOr+J,EAAEo5K,aAAax7K,EAAE07K,YAAY,MAAM17K,EAAEw7K,WAAWp5K,EAAEo5K,WAAep5K,EAAEpC,EAAEyB,MAAM,OAAOW,GAAO2F,EAAEhK,GAANpE,EAAEyI,GAAQq+J,WAAW,EAAE9mK,EAAE8hL,WAAW,KAAK9hL,EAAE+hL,YAAY,KAAK/hL,EAAE6hL,WAAW,KAAmB,QAAdz7K,EAAEpG,EAAE6mK,YAAoB7mK,EAAE0+K,oBAAoB,EAAE1+K,EAAE6+K,eAAezwK,EAAEpO,EAAE8H,MAAM,KAAK9H,EAAEkjL,cAAc,KAAKljL,EAAEgnK,cAAc,KAAKhnK,EAAEo/K,YAAY,KAAKp/K,EAAE2/J,aAAa,OAAO3/J,EAAE0+K,oBAAoBt4K,EAAEs4K,oBAC3e1+K,EAAE6+K,eAAez4K,EAAEy4K,eAAe7+K,EAAE8H,MAAM1B,EAAE0B,MAAM9H,EAAEkjL,cAAc98K,EAAE88K,cAAcljL,EAAEgnK,cAAc5gK,EAAE4gK,cAAchnK,EAAEo/K,YAAYh5K,EAAEg5K,YAAYhxK,EAAEhI,EAAEu5J,aAAa3/J,EAAE2/J,aAAa,OAAOvxJ,EAAE,KAAK,CAACywK,eAAezwK,EAAEywK,eAAeD,aAAaxwK,EAAEwwK,aAAaK,WAAW7wK,EAAE6wK,aAAax2K,EAAEA,EAAE2+J,QAA2B,OAAnBl5J,GAAEN,GAAY,EAAVA,GAAEwB,QAAU,GAAU/I,EAAEyB,MAAMsG,EAAEA,EAAEg5J,aAAa,CAAC,IAAIpnK,EAAE,GAAW,QAARoG,EAAEulB,GAAGvd,KAAa,GAAG/H,EAAEygK,WAAW,GAAG9mK,GAAE,EAAmB,QAAhBoE,EAAEgC,EAAEg5K,eAAuB/4K,EAAE+4K,YAAYh7K,EAAEiC,EAAEygK,WAAW,GAAGshB,GAAG3/K,GAAE,GAAI,OAAOA,EAAE2vF,MAAM,WAAW3vF,EAAEy/K,WAAW95K,EAAEy4J,UAAU,OACne,QAD0exgK,EACpgBA,EAAEw7K,WAAWp5K,EAAEo5K,cAAsBx7K,EAAEy7K,WAAW,MAAM,UAAU,EAAEpE,KAAKj1K,EAAEu/K,mBAAmBv/K,EAAEw/K,gBAAgB,EAAE7jL,IAAIiC,EAAEygK,WAAW,GAAG9mK,GAAE,EAAGooL,GAAG3/K,GAAE,GAAIpC,EAAEw4K,eAAex4K,EAAEq4K,oBAAoBt6K,EAAE,GAAGqE,EAAEs/K,aAAa35K,EAAEg5J,QAAQ/gK,EAAEyB,MAAMzB,EAAEyB,MAAMsG,IAAa,QAAThK,EAAEqE,EAAE4yF,MAAcj3F,EAAEgjK,QAAQh5J,EAAE/H,EAAEyB,MAAMsG,EAAE3F,EAAE4yF,KAAKjtF,GAAG,OAAO,OAAO3F,EAAE2vF,MAAM,IAAI3vF,EAAEw/K,iBAAiBx/K,EAAEw/K,eAAevK,KAAK,KAAKt5K,EAAEqE,EAAE2vF,KAAK3vF,EAAE0uI,UAAU/yI,EAAEqE,EAAE2vF,KAAKh0F,EAAEgjK,QAAQ3+J,EAAEo5K,WAAWx7K,EAAEw7K,WAAWp5K,EAAEu/K,mBAAmBtK,KAAKt5K,EAAEgjK,QAAQ,KAAK/gK,EAAEuH,GAAEwB,QAAQlB,GAAEN,GAAE5N,EAAI,EAAFqG,EAAI,EAAI,EAAFA,GAAKjC,GAAG,KAAK,MAAMlB,MAAM+K,EAAE,IACrgB5H,EAAEkE,MAAO,SAASo+K,GAAGviL,GAAG,OAAOA,EAAEmE,KAAK,KAAK,EAAE6B,GAAEhG,EAAEL,OAAO01K,KAAK,IAAIp1K,EAAED,EAAE0gK,UAAU,OAAS,KAAFzgK,GAAQD,EAAE0gK,WAAa,KAAHzgK,EAAQ,GAAGD,GAAG,KAAK,KAAK,EAA+B,GAA7B28K,KAAK91K,GAAEe,IAAGf,GAAEkB,IAAoB,IAAO,IAAxB9H,EAAED,EAAE0gK,YAAwB,MAAM5jK,MAAM+K,EAAE,MAA6B,OAAvB7H,EAAE0gK,WAAa,KAAHzgK,EAAQ,GAAUD,EAAE,KAAK,EAAE,OAAO68K,GAAG78K,GAAG,KAAK,KAAK,GAAG,OAAO6G,GAAEW,IAAmB,MAAhBvH,EAAED,EAAE0gK,YAAkB1gK,EAAE0gK,WAAa,KAAHzgK,EAAQ,GAAGD,GAAG,KAAK,KAAK,GAAG,OAAO6G,GAAEW,IAAG,KAAK,KAAK,EAAE,OAAOm1K,KAAK,KAAK,KAAK,GAAG,OAAOvE,GAAGp4K,GAAG,KAAK,QAAQ,OAAO,MAAM,SAASwiL,GAAGxiL,EAAEC,GAAG,MAAM,CAACvG,MAAMsG,EAAE+6B,OAAO96B,EAAEkX,MAAMwlJ,GAAG18J,IAjBvdkhL,GAAG,SAASnhL,EAAEC,GAAG,IAAI,IAAIjC,EAAEiC,EAAEyB,MAAM,OAAO1D,GAAG,CAAC,GAAG,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,IAAInE,EAAEvB,YAAYT,EAAE87J,gBAAgB,GAAG,IAAI97J,EAAEmG,KAAK,OAAOnG,EAAE0D,MAAM,CAAC1D,EAAE0D,MAAMs7J,OAAOh/J,EAAEA,EAAEA,EAAE0D,MAAM,SAAS,GAAG1D,IAAIiC,EAAE,MAAM,KAAK,OAAOjC,EAAEgjK,SAAS,CAAC,GAAG,OAAOhjK,EAAEg/J,QAAQh/J,EAAEg/J,SAAS/8J,EAAE,OAAOjC,EAAEA,EAAEg/J,OAAOh/J,EAAEgjK,QAAQhE,OAAOh/J,EAAEg/J,OAAOh/J,EAAEA,EAAEgjK,UAChS/iE,GAAG,SAASj+F,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,IAAIoO,EAAEhI,EAAE88K,cAAc,GAAG90K,IAAI3F,EAAE,CAAC,IAAsWpE,EAAEwJ,EAApWV,EAAE9G,EAAE65J,UAAgC,OAAtB2iB,GAAGH,GAAGtzK,SAAShJ,EAAE,KAAYhC,GAAG,IAAK,QAAQgK,EAAEy1J,GAAG12J,EAAEiB,GAAG3F,EAAEo7J,GAAG12J,EAAE1E,GAAGrC,EAAE,GAAG,MAAM,IAAK,SAASgI,EAAEq2J,GAAGt3J,EAAEiB,GAAG3F,EAAEg8J,GAAGt3J,EAAE1E,GAAGrC,EAAE,GAAG,MAAM,IAAK,SAASgI,EAAEhF,EAAE,GAAGgF,EAAE,CAACtO,WAAM,IAAS2I,EAAEW,EAAE,GAAGX,EAAE,CAAC3I,WAAM,IAASsG,EAAE,GAAG,MAAM,IAAK,WAAWgI,EAAEy2J,GAAG13J,EAAEiB,GAAG3F,EAAEo8J,GAAG13J,EAAE1E,GAAGrC,EAAE,GAAG,MAAM,QAAQ,mBAAoBgI,EAAEg0E,SAAS,mBAAoB35E,EAAE25E,UAAUj1E,EAAEgxH,QAAQwuC,IAA2B,IAAItoK,KAA3BkoK,GAAGnoK,EAAEqE,GAAWrE,EAAE,KAAcgK,EAAE,IAAI3F,EAAE5K,eAAewG,IAAI+J,EAAEvQ,eAAewG,IAAI,MAAM+J,EAAE/J,GAAG,GAAG,UAC/eA,EAAE,IAAIwJ,KAAKV,EAAEiB,EAAE/J,GAAK8I,EAAEtP,eAAegQ,KAAKzJ,IAAIA,EAAE,IAAIA,EAAEyJ,GAAG,QAAQ,4BAA4BxJ,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIo7J,EAAG5hK,eAAewG,GAAG+B,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIhH,KAAKiF,EAAE,OAAO,IAAIA,KAAKoE,EAAE,CAAC,IAAIjG,EAAEiG,EAAEpE,GAAyB,GAAtB8I,EAAE,MAAMiB,EAAEA,EAAE/J,QAAG,EAAUoE,EAAE5K,eAAewG,IAAI7B,IAAI2K,IAAI,MAAM3K,GAAG,MAAM2K,GAAG,GAAG,UAAU9I,EAAE,GAAG8I,EAAE,CAAC,IAAIU,KAAKV,GAAGA,EAAEtP,eAAegQ,IAAIrL,GAAGA,EAAE3E,eAAegQ,KAAKzJ,IAAIA,EAAE,IAAIA,EAAEyJ,GAAG,IAAI,IAAIA,KAAKrL,EAAEA,EAAE3E,eAAegQ,IAAIV,EAAEU,KAAKrL,EAAEqL,KAAKzJ,IAAIA,EAAE,IACpfA,EAAEyJ,GAAGrL,EAAEqL,SAASzJ,IAAIgC,IAAIA,EAAE,IAAIA,EAAEhH,KAAKiF,EAAED,IAAIA,EAAE5B,MAAM,4BAA4B6B,GAAG7B,EAAEA,EAAEA,EAAEk3F,YAAO,EAAOvsF,EAAEA,EAAEA,EAAEusF,YAAO,EAAO,MAAMl3F,GAAG2K,IAAI3K,IAAI4D,EAAEA,GAAG,IAAIhH,KAAKiF,EAAE7B,IAAI,aAAa6B,EAAE8I,IAAI3K,GAAG,iBAAkBA,GAAG,iBAAkBA,IAAI4D,EAAEA,GAAG,IAAIhH,KAAKiF,EAAE,GAAG7B,GAAG,mCAAmC6B,GAAG,6BAA6BA,IAAIo7J,EAAG5hK,eAAewG,IAAI,MAAM7B,GAAGkqK,GAAG1sK,EAAEqE,GAAG+B,GAAG+G,IAAI3K,IAAI4D,EAAE,MAAMA,EAAEA,GAAG,IAAIhH,KAAKiF,EAAE7B,IAAI4B,IAAIgC,EAAEA,GAAG,IAAIhH,KAAK,QAAQgF,GAAGpE,EAAEoG,GAAKC,EAAE+4K,YAAYp/K,KAAEqG,EAAEygK,WAAW,KAC5c0gB,GAAG,SAASphL,EAAEC,EAAEjC,EAAEqE,GAAGrE,IAAIqE,IAAIpC,EAAEygK,WAAW,IAc1C,IAAI+hB,GAAG,mBAAoBxgJ,QAAQA,QAAQkgC,IAAI,SAASugH,GAAG1iL,EAAEC,GAAG,IAAIjC,EAAEiC,EAAE86B,OAAO14B,EAAEpC,EAAEkX,MAAM,OAAO9U,GAAG,OAAOrE,IAAIqE,EAAEs6J,GAAG3+J,IAAI,OAAOA,GAAG0+J,GAAG1+J,EAAE2B,MAAMM,EAAEA,EAAEvG,MAAM,OAAOsG,GAAG,IAAIA,EAAEmE,KAAKu4J,GAAG18J,EAAEL,MAAM,IAAIzG,QAAQyI,MAAM1B,GAAG,MAAMrG,GAAGi7E,YAAW,WAAW,MAAMj7E,MAAsH,SAAS+oL,GAAG3iL,GAAG,IAAIC,EAAED,EAAE4Q,IAAI,GAAG,OAAO3Q,EAAE,GAAG,mBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAMjC,GAAG4kL,GAAG5iL,EAAEhC,QAAQiC,EAAE+I,QAAQ,KACld,SAAS65K,GAAG7iL,EAAEC,GAAG,OAAOA,EAAEkE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,KAAK,EAAE,GAAe,IAAZlE,EAAEygK,WAAe,OAAO1gK,EAAE,CAAC,IAAIhC,EAAEgC,EAAE88K,cAAcz6K,EAAErC,EAAE4gK,cAA4B3gK,GAAdD,EAAEC,EAAE65J,WAAckhB,wBAAwB/6K,EAAE67K,cAAc77K,EAAEN,KAAK3B,EAAE85K,GAAG73K,EAAEN,KAAK3B,GAAGqE,GAAGrC,EAAE8iL,oCAAoC7iL,EAAE,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,MAAMnD,MAAM+K,EAAE,MAC7U,SAASk7K,GAAG/iL,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE+4K,aAAuB/4K,EAAEw7K,WAAW,MAAiB,CAAC,IAAIz9K,EAAEiC,EAAEA,EAAEgL,KAAK,EAAE,CAAC,IAAIjN,EAAEmG,IAAInE,KAAKA,EAAE,CAAC,IAAIqC,EAAErE,EAAE27C,QAAQ37C,EAAE27C,aAAQ,OAAO,IAASt3C,GAAGA,IAAIrE,EAAEA,EAAEiN,WAAWjN,IAAIiC,IAAI,SAAS+iL,GAAGhjL,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE+4K,aAAuB/4K,EAAEw7K,WAAW,MAAiB,CAAC,IAAIz9K,EAAEiC,EAAEA,EAAEgL,KAAK,EAAE,CAAC,IAAIjN,EAAEmG,IAAInE,KAAKA,EAAE,CAAC,IAAIqC,EAAErE,EAAE6E,OAAO7E,EAAE27C,QAAQt3C,IAAIrE,EAAEA,EAAEiN,WAAWjN,IAAIiC,IACtV,SAASgjL,GAAGjjL,EAAEC,EAAEjC,GAAG,OAAOA,EAAEmG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAAR6+K,GAAG,EAAEhlL,GAAU,KAAK,EAAgB,GAAdgC,EAAEhC,EAAE87J,UAAyB,EAAZ97J,EAAE0iK,UAAY,GAAG,OAAOzgK,EAAED,EAAEm7K,wBAAwB,CAAC,IAAI94K,EAAErE,EAAE89K,cAAc99K,EAAE2B,KAAKM,EAAE68K,cAAchF,GAAG95K,EAAE2B,KAAKM,EAAE68K,eAAe98K,EAAE8gL,mBAAmBz+K,EAAEpC,EAAE2gK,cAAc5gK,EAAE8iL,qCAAyE,YAApB,QAAhB7iL,EAAEjC,EAAEg7K,cAAsBc,GAAG97K,EAAEiC,EAAED,IAAU,KAAK,EAAkB,GAAG,QAAnBC,EAAEjC,EAAEg7K,aAAwB,CAAQ,GAAPh5K,EAAE,KAAQ,OAAOhC,EAAE0D,MAAM,OAAO1D,EAAE0D,MAAMyC,KAAK,KAAK,EAAEnE,EAAEhC,EAAE0D,MAAMo4J,UAAU,MAAM,KAAK,EAAE95J,EAAEhC,EAAE0D,MAAMo4J,UAAUggB,GAAG97K,EAAEiC,EAAED,GAAG,OACpf,KAAK,EAA+E,OAA7EA,EAAEhC,EAAE87J,eAAU,OAAO75J,GAAe,EAAZjC,EAAE0iK,WAAauG,GAAGjpK,EAAE2B,KAAK3B,EAAE8+K,gBAAgB98K,EAAE8sG,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GAAG,OAAO,KAAK,GAAoH,YAAjH,OAAO9uG,EAAE4iK,gBAAgB5iK,EAAEA,EAAEyiK,UAAU,OAAOziK,IAAIA,EAAEA,EAAE4iK,cAAc,OAAO5iK,IAAIA,EAAEA,EAAE6iK,WAAW,OAAO7iK,GAAGqmK,GAAGrmK,OAAa,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,MAAMlB,MAAM+K,EAAE,MAC3T,SAASq7K,GAAGljL,EAAEC,EAAEjC,GAAiC,OAA9B,mBAAoBmlL,IAAIA,GAAGljL,GAAUA,EAAEkE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnBnE,EAAEC,EAAE+4K,cAAyC,QAAfh5K,EAAEA,EAAEy7K,YAAqB,CAAC,IAAIp5K,EAAErC,EAAEiL,KAAKwsK,GAAG,GAAGz5K,EAAE,GAAGA,GAAE,WAAW,IAAIgC,EAAEqC,EAAE,EAAE,CAAC,IAAIrE,EAAEgC,EAAE25C,QAAQ,QAAG,IAAS37C,EAAE,CAAC,IAAI+I,EAAE9G,EAAE,IAAIjC,IAAI,MAAMC,GAAG2kL,GAAG77K,EAAE9I,IAAI+B,EAAEA,EAAEiL,WAAWjL,IAAIqC,MAAK,MAAM,KAAK,EAAEsgL,GAAG1iL,GAAiB,mBAAdjC,EAAEiC,EAAE65J,WAAgCspB,sBALxG,SAAYpjL,EAAEC,GAAG,IAAIA,EAAE0Q,MAAM3Q,EAAE88K,cAAc78K,EAAEo7D,MAAMr7D,EAAE4gK,cAAc3gK,EAAEmjL,uBAAuB,MAAMplL,GAAG4kL,GAAG5iL,EAAEhC,IAKkBqlL,CAAGpjL,EAAEjC,GAAG,MAAM,KAAK,EAAE2kL,GAAG1iL,GAAG,MAAM,KAAK,EAAEqjL,GAAGtjL,EAAEC,EAAEjC,IACna,SAASulL,GAAGvjL,GAAG,IAAIC,EAAED,EAAEygK,UAAUzgK,EAAEg9J,OAAO,KAAKh9J,EAAE0B,MAAM,KAAK1B,EAAE4gK,cAAc,KAAK5gK,EAAEg5K,YAAY,KAAKh5K,EAAEu5J,aAAa,KAAKv5J,EAAEygK,UAAU,KAAKzgK,EAAE27K,YAAY,KAAK37K,EAAEy7K,WAAW,KAAKz7K,EAAE+/K,aAAa,KAAK//K,EAAE88K,cAAc,KAAK98K,EAAE85J,UAAU,KAAK,OAAO75J,GAAGsjL,GAAGtjL,GAAG,SAASujL,GAAGxjL,GAAG,OAAO,IAAIA,EAAEmE,KAAK,IAAInE,EAAEmE,KAAK,IAAInE,EAAEmE,IAC1S,SAASs/K,GAAGzjL,GAAGA,EAAE,CAAC,IAAI,IAAIC,EAAED,EAAEg9J,OAAO,OAAO/8J,GAAG,CAAC,GAAGujL,GAAGvjL,GAAG,CAAC,IAAIjC,EAAEiC,EAAE,MAAMD,EAAEC,EAAEA,EAAE+8J,OAAO,MAAMlgK,MAAM+K,EAAE,MAAqB,OAAd5H,EAAEjC,EAAE87J,UAAiB97J,EAAEmG,KAAK,KAAK,EAAE,IAAI9B,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEpC,EAAEA,EAAEoiK,cAAchgK,GAAE,EAAG,MAAM,QAAQ,MAAMvF,MAAM+K,EAAE,MAAmB,GAAZ7J,EAAE0iK,YAAerB,GAAGp/J,EAAE,IAAIjC,EAAE0iK,YAAY,IAAI1gK,EAAEC,EAAE,IAAIjC,EAAEgC,IAAI,CAAC,KAAK,OAAOhC,EAAEgjK,SAAS,CAAC,GAAG,OAAOhjK,EAAEg/J,QAAQwmB,GAAGxlL,EAAEg/J,QAAQ,CAACh/J,EAAE,KAAK,MAAMgC,EAAEhC,EAAEA,EAAEg/J,OAAiC,IAA1Bh/J,EAAEgjK,QAAQhE,OAAOh/J,EAAEg/J,OAAWh/J,EAAEA,EAAEgjK,QAAQ,IAAIhjK,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,KAAKnG,EAAEmG,KAAK,CAAC,GAAe,EAAZnG,EAAE0iK,UAAY,SAASzgK,EACvf,GAAG,OAAOjC,EAAE0D,OAAO,IAAI1D,EAAEmG,IAAI,SAASlE,EAAOjC,EAAE0D,MAAMs7J,OAAOh/J,EAAEA,EAAEA,EAAE0D,MAAM,KAAiB,EAAZ1D,EAAE0iK,WAAa,CAAC1iK,EAAEA,EAAE87J,UAAU,MAAM95J,GAAGqC,EACpH,SAASqhL,EAAG1jL,EAAEC,EAAEjC,GAAG,IAAIqE,EAAErC,EAAEmE,IAAIvK,EAAE,IAAIyI,GAAG,IAAIA,EAAE,GAAGzI,EAAEoG,EAAEpG,EAAEoG,EAAE85J,UAAU95J,EAAE85J,UAAUrkD,SAASx1G,EAAE,IAAIjC,EAAEk2E,SAASl2E,EAAEkH,WAAWV,aAAaxE,EAAEC,GAAGjC,EAAEwG,aAAaxE,EAAEC,IAAI,IAAIjC,EAAEk2E,UAAUj0E,EAAEjC,EAAEkH,YAAaV,aAAaxE,EAAEhC,IAAKiC,EAAEjC,GAAIS,YAAYuB,GAA4B,QAAxBhC,EAAEA,EAAE2lL,2BAA8B,IAAS3lL,GAAG,OAAOiC,EAAE83H,UAAU93H,EAAE83H,QAAQwuC,UAAU,GAAG,IAAIlkK,GAAc,QAAVrC,EAAEA,EAAE0B,OAAgB,IAAIgiL,EAAG1jL,EAAEC,EAAEjC,GAAGgC,EAAEA,EAAEghK,QAAQ,OAAOhhK,GAAG0jL,EAAG1jL,EAAEC,EAAEjC,GAAGgC,EAAEA,EAAEghK,QADxR0iB,CAAG1jL,EAAEhC,EAAEiC,GAE7H,SAAS2jL,EAAG5jL,EAAEC,EAAEjC,GAAG,IAAIqE,EAAErC,EAAEmE,IAAIvK,EAAE,IAAIyI,GAAG,IAAIA,EAAE,GAAGzI,EAAEoG,EAAEpG,EAAEoG,EAAE85J,UAAU95J,EAAE85J,UAAUrkD,SAASx1G,EAAEjC,EAAEwG,aAAaxE,EAAEC,GAAGjC,EAAES,YAAYuB,QAAQ,GAAG,IAAIqC,GAAc,QAAVrC,EAAEA,EAAE0B,OAAgB,IAAIkiL,EAAG5jL,EAAEC,EAAEjC,GAAGgC,EAAEA,EAAEghK,QAAQ,OAAOhhK,GAAG4jL,EAAG5jL,EAAEC,EAAEjC,GAAGgC,EAAEA,EAAEghK,QAFrF4iB,CAAG5jL,EAAEhC,EAAEiC,GAGvI,SAASqjL,GAAGtjL,EAAEC,EAAEjC,GAAG,IAAI,IAAagK,EAAEjB,EAAX1E,EAAEpC,EAAErG,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEyI,EAAE26J,OAAOh9J,EAAE,OAAO,CAAC,GAAG,OAAOpG,EAAE,MAAMkD,MAAM+K,EAAE,MAAoB,OAAdG,EAAEpO,EAAEkgK,UAAiBlgK,EAAEuK,KAAK,KAAK,EAAE4C,GAAE,EAAG,MAAM/G,EAAE,KAAK,EAAiC,KAAK,EAAEgI,EAAEA,EAAEq6J,cAAct7J,GAAE,EAAG,MAAM/G,EAAEpG,EAAEA,EAAEojK,OAAOpjK,GAAE,EAAG,GAAG,IAAIyI,EAAE8B,KAAK,IAAI9B,EAAE8B,IAAI,CAACnE,EAAE,IAAI,IAAI/B,EAAE+B,EAAEyH,EAAEpF,EAAEjG,EAAE4B,EAAEoE,EAAEqF,IAAI,GAAGy7K,GAAGjlL,EAAEmE,EAAEhG,GAAG,OAAOgG,EAAEV,OAAO,IAAIU,EAAE+B,IAAI/B,EAAEV,MAAMs7J,OAAO56J,EAAEA,EAAEA,EAAEV,UAAU,CAAC,GAAGU,IAAIqF,EAAE,MAAMzH,EAAE,KAAK,OAAOoC,EAAE4+J,SAAS,CAAC,GAAG,OAAO5+J,EAAE46J,QAAQ56J,EAAE46J,SAASv1J,EAAE,MAAMzH,EAAEoC,EAAEA,EAAE46J,OAAO56J,EAAE4+J,QAAQhE,OAAO56J,EAAE46J,OAAO56J,EAAEA,EAAE4+J,QAAQj6J,GAAG9I,EACrf+J,EAAEP,EAAEpF,EAAEy3J,UAAU,IAAI77J,EAAEi2E,SAASj2E,EAAEiH,WAAWC,YAAYsC,GAAGxJ,EAAEkH,YAAYsC,IAAIO,EAAE7C,YAAY9C,EAAEy3J,gBAAgB,GAAG,IAAIz3J,EAAE8B,KAAK,GAAG,OAAO9B,EAAEX,MAAM,CAACsG,EAAE3F,EAAEy3J,UAAUuI,cAAct7J,GAAE,EAAG1E,EAAEX,MAAMs7J,OAAO36J,EAAEA,EAAEA,EAAEX,MAAM,eAAe,GAAGwhL,GAAGljL,EAAEqC,EAAErE,GAAG,OAAOqE,EAAEX,MAAM,CAACW,EAAEX,MAAMs7J,OAAO36J,EAAEA,EAAEA,EAAEX,MAAM,SAAS,GAAGW,IAAIpC,EAAE,MAAM,KAAK,OAAOoC,EAAE2+J,SAAS,CAAC,GAAG,OAAO3+J,EAAE26J,QAAQ36J,EAAE26J,SAAS/8J,EAAE,OAAkB,KAAXoC,EAAEA,EAAE26J,QAAa74J,MAAMvK,GAAE,GAAIyI,EAAE2+J,QAAQhE,OAAO36J,EAAE26J,OAAO36J,EAAEA,EAAE2+J,SACpa,SAAS6iB,GAAG7jL,EAAEC,GAAG,OAAOA,EAAEkE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAAR4+K,GAAG,EAAE9iL,GAAU,KAAK,EAAE,OAAO,KAAK,EAAE,IAAIjC,EAAEiC,EAAE65J,UAAU,GAAG,MAAM97J,EAAE,CAAC,IAAIqE,EAAEpC,EAAE68K,cAAcljL,EAAE,OAAOoG,EAAEA,EAAE88K,cAAcz6K,EAAErC,EAAEC,EAAEN,KAAK,IAAIqI,EAAE/H,EAAE+4K,YAA+B,GAAnB/4K,EAAE+4K,YAAY,KAAQ,OAAOhxK,EAAE,CAAgF,IAA/EhK,EAAE2pK,IAAItlK,EAAE,UAAUrC,GAAG,UAAUqC,EAAE1C,MAAM,MAAM0C,EAAEhJ,MAAM2kK,GAAGhgK,EAAEqE,GAAG+jK,GAAGpmK,EAAEpG,GAAGqG,EAAEmmK,GAAGpmK,EAAEqC,GAAOzI,EAAE,EAAEA,EAAEoO,EAAE7M,OAAOvB,GAAG,EAAE,CAAC,IAAImN,EAAEiB,EAAEpO,GAAGqE,EAAE+J,EAAEpO,EAAE,GAAG,UAAUmN,EAAEs0H,GAAGr9H,EAAEC,GAAG,4BAA4B8I,EAAEk4J,GAAGjhK,EAAEC,GAAG,aAAa8I,EAAEs4J,GAAGrhK,EAAEC,GAAGq9J,EAAGt9J,EAAE+I,EAAE9I,EAAEgC,GAAG,OAAOD,GAAG,IAAK,QAAQi+J,GAAGjgK,EAAEqE,GAAG,MAChf,IAAK,WAAWs8J,GAAG3gK,EAAEqE,GAAG,MAAM,IAAK,SAASpC,EAAEjC,EAAE2/J,cAAcskB,YAAYjkL,EAAE2/J,cAAcskB,cAAc5/K,EAAE+gI,SAAmB,OAAVpjI,EAAEqC,EAAE3I,OAAc6kK,GAAGvgK,IAAIqE,EAAE+gI,SAASpjI,GAAE,GAAIC,MAAMoC,EAAE+gI,WAAW,MAAM/gI,EAAE03G,aAAawkD,GAAGvgK,IAAIqE,EAAE+gI,SAAS/gI,EAAE03G,cAAa,GAAIwkD,GAAGvgK,IAAIqE,EAAE+gI,SAAS/gI,EAAE+gI,SAAS,GAAG,IAAG,MAAO,OAAO,KAAK,EAAE,GAAG,OAAOnjI,EAAE65J,UAAU,MAAMh9J,MAAM+K,EAAE,MAA4C,YAAtC5H,EAAE65J,UAAUnhD,UAAU14G,EAAE68K,eAAqB,KAAK,EAA8D,aAA5D78K,EAAEA,EAAE65J,WAAY/F,UAAU9zJ,EAAE8zJ,SAAQ,EAAGsQ,GAAGpkK,EAAEoiK,iBAAuB,KAAK,GAAG,OAAO,KAAK,GACzb,GAD4brkK,EAAEiC,EAAE,OAAOA,EAAE2gK,cACvev+J,GAAE,GAAIA,GAAE,EAAGrE,EAAEiC,EAAEyB,MAAMoiL,GAAGxM,MAAS,OAAOt5K,EAAEgC,EAAE,IAAIA,EAAEhC,IAAI,CAAC,GAAG,IAAIgC,EAAEmE,IAAI6D,EAAEhI,EAAE85J,UAAUz3J,EAAa,mBAAV2F,EAAEA,EAAEs+D,OAA4Bq/F,YAAY39J,EAAE29J,YAAY,UAAU,OAAO,aAAa39J,EAAE+zE,QAAQ,QAAS/zE,EAAEhI,EAAE85J,UAAkClgK,EAAE,OAA1BA,EAAEoG,EAAE88K,cAAcx2G,QAA8B1sE,EAAEnC,eAAe,WAAWmC,EAAEmiF,QAAQ,KAAK/zE,EAAEs+D,MAAMyV,QAAQ2pF,GAAG,UAAU9rK,SAAS,GAAG,IAAIoG,EAAEmE,IAAInE,EAAE85J,UAAUnhD,UAAUt2G,EAAE,GAAGrC,EAAE88K,kBAAmB,IAAG,KAAK98K,EAAEmE,KAAK,OAAOnE,EAAE4gK,eAAe,OAAO5gK,EAAE4gK,cAAcC,WAAW,EAAC74J,EAAEhI,EAAE0B,MAAMs/J,SAAUhE,OAAOh9J,EAAEA,EACnfgI,EAAE,SAAc,GAAG,OAAOhI,EAAE0B,MAAM,CAAC1B,EAAE0B,MAAMs7J,OAAOh9J,EAAEA,EAAEA,EAAE0B,MAAM,UAAS,GAAG1B,IAAIhC,EAAE,MAAM,KAAK,OAAOgC,EAAEghK,SAAS,CAAC,GAAG,OAAOhhK,EAAEg9J,QAAQh9J,EAAEg9J,SAASh/J,EAAE,MAAMgC,EAAEA,EAAEA,EAAEg9J,OAAOh9J,EAAEghK,QAAQhE,OAAOh9J,EAAEg9J,OAAOh9J,EAAEA,EAAEghK,QAAc,YAAN+iB,GAAG9jL,GAAU,KAAK,GAAS,YAAN8jL,GAAG9jL,GAAU,KAAK,GAAG,OAAO,MAAMnD,MAAM+K,EAAE,MAAO,SAASk8K,GAAG/jL,GAAG,IAAIC,EAAED,EAAEg5K,YAAY,GAAG,OAAO/4K,EAAE,CAACD,EAAEg5K,YAAY,KAAK,IAAIh7K,EAAEgC,EAAE85J,UAAU,OAAO97J,IAAIA,EAAEgC,EAAE85J,UAAU,IAAI2oB,IAAIxiL,EAAEmB,SAAQ,SAASnB,GAAG,IAAIoC,EAAE2hL,GAAGjhL,KAAK,KAAK/C,EAAEC,GAAGjC,EAAEskC,IAAIriC,KAAKjC,EAAEovB,IAAIntB,GAAGA,EAAElG,KAAKsI,EAAEA,QAC/c,IAAI4hL,GAAG,mBAAoBl4B,QAAQA,QAAQz4E,IAAI,SAAS4wG,GAAGlkL,EAAEC,EAAEjC,IAAGA,EAAEs7K,GAAGt7K,EAAE,OAAQmG,IAAI,EAAEnG,EAAEw7K,QAAQ,CAACp5I,QAAQ,MAAM,IAAI/9B,EAAEpC,EAAEvG,MAAsD,OAAhDsE,EAAEhD,SAAS,WAAWmpL,KAAKA,IAAG,EAAGC,GAAG/hL,GAAGqgL,GAAG1iL,EAAEC,IAAWjC,EACrL,SAASqmL,GAAGrkL,EAAEC,EAAEjC,IAAGA,EAAEs7K,GAAGt7K,EAAE,OAAQmG,IAAI,EAAE,IAAI9B,EAAErC,EAAEL,KAAKqhL,yBAAyB,GAAG,mBAAoB3+K,EAAE,CAAC,IAAIzI,EAAEqG,EAAEvG,MAAMsE,EAAEw7K,QAAQ,WAAmB,OAARkJ,GAAG1iL,EAAEC,GAAUoC,EAAEzI,IAAI,IAAIoO,EAAEhI,EAAE85J,UAA8O,OAApO,OAAO9xJ,GAAG,mBAAoBA,EAAEs8K,oBAAoBtmL,EAAEhD,SAAS,WAAW,mBAAoBqH,IAAI,OAAOkiL,GAAGA,GAAG,IAAIpiH,IAAI,CAACxmE,OAAO4oL,GAAGn3J,IAAIzxB,MAAM+mL,GAAG1iL,EAAEC,IAAI,IAAIjC,EAAEiC,EAAEkX,MAAMxb,KAAK2oL,kBAAkBrkL,EAAEvG,MAAM,CAAC8qL,eAAe,OAAOxmL,EAAEA,EAAE,OAAcA,EAC7Z,IA+B+TymL,GA/B3TC,GAAGzsK,KAAKyC,KAAKiqK,GAAGtpB,EAAG/I,uBAAuBsyB,GAAGvpB,EAAG5I,kBAAuCyvB,GAAG,EAAYC,GAAG,EAAE3gF,GAAG,EAAOp8F,GAAjD,EAAqDwD,GAAE,KAAKvD,GAAE,KAAK+B,GAAE,EAAEF,GAAEg7K,GAAG2C,GAAG,KAAKC,GAAG,WAAWC,GAAG,WAAWC,GAAG,KAAK5C,GAAG,EAAE6C,IAAG,EAAGnB,GAAG,EAASv7K,GAAE,KAAK47K,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKW,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAE7jF,GAAG,KAAK8jF,GAAG,EAAE,SAASnL,KAAK,OAAxO,IAAiP,GAAFh1K,IAAe,YAAYkyK,KAAK,GAAG,GAAG,IAAIiO,GAAGA,GAAGA,GAAG,YAAYjO,KAAK,GAAG,GAC9X,SAAS+C,GAAGr6K,EAAEC,EAAEjC,GAAY,GAAG,IAAO,GAAnBiC,EAAEA,EAAE5F,OAAkB,OAAO,WAAW,IAAIgI,EAAEk1K,KAAK,GAAG,IAAO,EAAFt3K,GAAK,OAAO,KAAKoC,EAAE,WAAW,WAAW,GAD/C,IAAU,GACyC+C,IAAU,OAAOgC,GAAE,GAAG,OAAOpJ,EAAEgC,EAAE63K,GAAG73K,EAAc,EAAZhC,EAAEwnL,WAAa,IAAI,UAAU,OAAOnjL,GAAG,KAAK,GAAGrC,EAAE,WAAW,MAAM,KAAK,GAAGA,EAAE63K,GAAG73K,EAAE,IAAI,KAAK,MAAM,KAAK,GAAG,KAAK,GAAGA,EAAE63K,GAAG73K,EAAE,IAAI,KAAK,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,QAAQ,MAAMlD,MAAM+K,EAAE,MAA4B,OAArB,OAAOe,IAAG5I,IAAIoH,MAAKpH,EAASA,EAClX,SAASs6K,GAAGt6K,EAAEC,GAAG,GAAG,GAAGqlL,GAAG,MAAMA,GAAG,EAAE7jF,GAAG,KAAK3kG,MAAM+K,EAAE,MAAgB,GAAG,QAAb7H,EAAEylL,GAAGzlL,EAAEC,IAAe,CAAC,IAAIjC,EAAEu5K,KAAK,aAAat3K,EAFlC,IAAK,EAEgCmF,KAFrC,IAEmD,GAAFA,IAAesgL,GAAG1lL,IAAIyF,GAAEzF,GAFzE,IAE4EoF,IAAO+lB,MAAM1lB,GAAEzF,GAF3F,IAEiG,EAAFoF,KAAU,KAAKpH,GAAG,KAAKA,IAAI,OAAOqnL,GAAGA,GAAG,IAAI/xG,IAAI,CAAC,CAACtzE,EAAEC,WAAmB,KAAbjC,EAAEqnL,GAAG7rL,IAAIwG,KAAgBhC,EAAEiC,IAAIolL,GAAG5rL,IAAIuG,EAAEC,KACzQ,SAASwlL,GAAGzlL,EAAEC,GAAGD,EAAEy4K,eAAex4K,IAAID,EAAEy4K,eAAex4K,GAAG,IAAIjC,EAAEgC,EAAEygK,UAAU,OAAOziK,GAAGA,EAAEy6K,eAAex4K,IAAIjC,EAAEy6K,eAAex4K,GAAG,IAAIoC,EAAErC,EAAEg9J,OAAOpjK,EAAE,KAAK,GAAG,OAAOyI,GAAG,IAAIrC,EAAEmE,IAAIvK,EAAEoG,EAAE85J,eAAe,KAAK,OAAOz3J,GAAG,CAA+H,GAA9HrE,EAAEqE,EAAEo+J,UAAUp+J,EAAEi2K,oBAAoBr4K,IAAIoC,EAAEi2K,oBAAoBr4K,GAAG,OAAOjC,GAAGA,EAAEs6K,oBAAoBr4K,IAAIjC,EAAEs6K,oBAAoBr4K,GAAM,OAAOoC,EAAE26J,QAAQ,IAAI36J,EAAE8B,IAAI,CAACvK,EAAEyI,EAAEy3J,UAAU,MAAMz3J,EAAEA,EAAE26J,OAA0D,OAAnD,OAAOpjK,IAAIgP,KAAIhP,IAAIigL,GAAG55K,GAAGiH,KAAIs6F,IAAI6gF,GAAGzoL,EAAEwN,KAAIk7K,GAAG1oL,EAAEqG,IAAWrG,EACrc,SAAS+rL,GAAG3lL,GAAG,IAAIC,EAAED,EAAE4lL,gBAAgB,GAAG,IAAI3lL,EAAE,OAAOA,EAAuB,IAAI4lL,GAAG7lL,EAA5BC,EAAED,EAAE8lL,kBAA6B,OAAO7lL,EAAE,IAAIjC,EAAEgC,EAAE+lL,eAAmD,OAAO,IAAjB/lL,EAAEhC,GAA5BgC,EAAEA,EAAEgmL,uBAA4BhoL,EAAEgC,IAAeC,IAAID,EAAE,EAAEA,EACnL,SAASyF,GAAEzF,GAAG,GAAG,IAAIA,EAAE4lL,gBAAgB5lL,EAAEimL,uBAAuB,WAAWjmL,EAAEkmL,iBAAiB,GAAGlmL,EAAEmmL,aAAaxO,GAAG+N,GAAG3iL,KAAK,KAAK/C,QAAQ,CAAC,IAAIC,EAAE0lL,GAAG3lL,GAAGhC,EAAEgC,EAAEmmL,aAAa,GAAG,IAAIlmL,EAAE,OAAOjC,IAAIgC,EAAEmmL,aAAa,KAAKnmL,EAAEimL,uBAAuB,EAAEjmL,EAAEkmL,iBAAiB,QAAQ,CAAC,IAAI7jL,EAAE+3K,KAAqH,GAAhH,aAAan6K,EAAEoC,EAAE,GAAG,IAAIpC,GAAG,IAAIA,EAAEoC,EAAE,GAA0CA,EAAE,IAAxCA,EAAE,IAAI,WAAWpC,GAAG,IAAI,WAAWoC,IAAU,GAAG,KAAKA,EAAE,GAAG,MAAMA,EAAE,GAAG,GAAO,OAAOrE,EAAE,CAAC,IAAIpE,EAAEoG,EAAEkmL,iBAAiB,GAAGlmL,EAAEimL,yBAAyBhmL,GAAGrG,GAAGyI,EAAE,OAAOrE,IAAI84K,IAAIhB,GAAG93K,GAAGgC,EAAEimL,uBACnehmL,EAAED,EAAEkmL,iBAAiB7jL,EAAEpC,EAAE,aAAaA,EAAE03K,GAAG+N,GAAG3iL,KAAK,KAAK/C,IAAI03K,GAAGr1K,EAAE+jL,GAAGrjL,KAAK,KAAK/C,GAAG,CAACzC,QAAQ,IAAI,WAAW0C,GAAGq3K,OAAOt3K,EAAEmmL,aAAalmL,IAClI,SAASmmL,GAAGpmL,EAAEC,GAAQ,GAALslL,GAAG,EAAKtlL,EAAE,OAAcomL,GAAGrmL,EAAVC,EAAEm6K,MAAa30K,GAAEzF,GAAG,KAAK,IAAIhC,EAAE2nL,GAAG3lL,GAAG,GAAG,IAAIhC,EAAE,CAAkB,GAAjBiC,EAAED,EAAEmmL,aAPb,IAOgC,GAAF/gL,IAAe,MAAMtI,MAAM+K,EAAE,MAAiC,GAA3By+K,KAAKtmL,IAAI4I,IAAG5K,IAAIoJ,IAAGm/K,GAAGvmL,EAAEhC,GAAM,OAAOqH,GAAE,CAAC,IAAIhD,EAAE+C,GAAEA,IAPvG,GAOwH,IAAX,IAAIxL,EAAE4sL,OAAQ,IAAIC,KAAK,MAAM,MAAMxoL,GAAGyoL,GAAG1mL,EAAE/B,GAAkC,GAAtBk6K,KAAK/yK,GAAE/C,EAAEsiL,GAAG37K,QAAQpP,EAPvK,IAO4KsN,GAAO,MAAMjH,EAAE4kL,GAAG0B,GAAGvmL,EAAEhC,GAAGqkL,GAAGriL,EAAEhC,GAAGyH,GAAEzF,GAAGC,EAAE,GAAG,OAAOoF,GAAE,OAAOzL,EAAEoG,EAAE2mL,aAAa3mL,EAAEgJ,QAAQy3J,UAAUzgK,EAAE4mL,uBAAuB5oL,EAAEqE,EAAE6E,GAAE0B,GAAE,KAAKvG,GAAG,KAAK6/K,GAAG,KAP9T,EAOsU,MAAMplL,MAAM+K,EAAE,MAAM,KAPrV,EAO6Vw+K,GAAGrmL,EAAE,EAAEhC,EAAE,EAAEA,GAAG,MAAM,KAAKmkL,GACvb,GAD0bE,GAAGriL,EAAEhC,GACteA,KADyeqE,EAAErC,EAAE6mL,qBACre7mL,EAAEgmL,sBAAsBc,GAAGltL,IAAO,aAAakrL,IAAkB,IAAblrL,EAAEkqL,GARqJ,IAQ/IxM,MAAW,CAAC,GAAG2N,GAAG,CAAC,IAAIj9K,EAAEhI,EAAE+lL,eAAe,GAAG,IAAI/9K,GAAGA,GAAGhK,EAAE,CAACgC,EAAE+lL,eAAe/nL,EAAEuoL,GAAGvmL,EAAEhC,GAAG,OAAe,GAAG,KAAXgK,EAAE29K,GAAG3lL,KAAagI,IAAIhK,EAAE,MAAM,GAAG,IAAIqE,GAAGA,IAAIrE,EAAE,CAACgC,EAAE+lL,eAAe1jL,EAAE,MAAMrC,EAAE+mL,cAAc3f,GAAG4f,GAAGjkL,KAAK,KAAK/C,GAAGpG,GAAG,MAAMotL,GAAGhnL,GAAG,MAAM,KAAKwhG,GAAwE,GAArE6gF,GAAGriL,EAAEhC,GAAyBA,KAAtBqE,EAAErC,EAAE6mL,qBAA0B7mL,EAAEgmL,sBAAsBc,GAAGltL,IAAOqrL,KAAwB,KAAnBrrL,EAAEoG,EAAE+lL,iBAAsBnsL,GAAGoE,GAAG,CAACgC,EAAE+lL,eAAe/nL,EAAEuoL,GAAGvmL,EAAEhC,GAAG,MAAc,GAAG,KAAXpE,EAAE+rL,GAAG3lL,KAAapG,IAAIoE,EAAE,MAAM,GAAG,IAAIqE,GAAGA,IAAIrE,EAAE,CAACgC,EAAE+lL,eACxe1jL,EAAE,MAAgP,GAA1O,aAAa0iL,GAAG1iL,EAAE,IAAI,WAAW0iL,IAAIzN,KAAK,aAAawN,GAAGziL,EAAE,GAAGA,EAAE,IAAI,WAAWyiL,IAAI,IAAuC,GAANziL,GAA7BzI,EAAE09K,MAA+Bj1K,KAAQA,EAAE,IAApCrE,EAAE,IAAI,WAAWA,GAAGpE,IAAmByI,GAAG,IAAIA,EAAE,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKqiL,GAAGriL,EAAE,OAAOA,KAAQA,EAAErE,IAAO,GAAGqE,EAAE,CAACrC,EAAE+mL,cAAc3f,GAAG4f,GAAGjkL,KAAK,KAAK/C,GAAGqC,GAAG,MAAM2kL,GAAGhnL,GAAG,MAAM,KAT5L,EASoM,GAAG,aAAa8kL,IAAI,OAAOE,GAAG,CAACh9K,EAAE88K,GAAG,IAAI/9K,EAAEi+K,GAAuH,GAA5F,IAAxB3iL,EAAsB,EAApB0E,EAAEkgL,mBAAyB5kL,EAAE,GAAGzI,EAAgB,EAAdmN,EAAEmgL,YAA8D7kL,GAAhD2F,EAAEsvK,MAAM,IAAI,WAAWtvK,IAAgB,EAAZjB,EAAEy+K,WAAa,QAAW5rL,EAAE,EAAEA,EAAEyI,EAAE2F,GAAM,GAAG3F,EAAE,CAACggL,GAAGriL,EAAEhC,GAAGgC,EAAE+mL,cAC/e3f,GAAG4f,GAAGjkL,KAAK,KAAK/C,GAAGqC,GAAG,OAAO2kL,GAAGhnL,GAAG,MAAM,QAAQ,MAAMlD,MAAM+K,EAAE,MAAY,GAALpC,GAAEzF,GAAMA,EAAEmmL,eAAelmL,EAAE,OAAOmmL,GAAGrjL,KAAK,KAAK/C,IAAI,OAAO,KAChI,SAAS0lL,GAAG1lL,GAAG,IAAIC,EAAED,EAAE4lL,gBAAqC,GAArB3lL,EAAE,IAAIA,EAAEA,EAAE,WAXuB,IAWN,GAAFmF,IAAe,MAAMtI,MAAM+K,EAAE,MAAiC,GAA3By+K,KAAKtmL,IAAI4I,IAAG3I,IAAImH,IAAGm/K,GAAGvmL,EAAEC,GAAM,OAAOoF,GAAE,CAAC,IAAIrH,EAAEoH,GAAEA,IAXjE,GAWkF,IAAX,IAAI/C,EAAEmkL,OAAQ,IAAIW,KAAK,MAAM,MAAMvtL,GAAG8sL,GAAG1mL,EAAEpG,GAAkC,GAAtBu+K,KAAK/yK,GAAEpH,EAAE2mL,GAAG37K,QAAQ3G,EAXjI,IAWsI6E,GAAO,MAAMlJ,EAAE6mL,GAAG0B,GAAGvmL,EAAEC,GAAGoiL,GAAGriL,EAAEC,GAAGwF,GAAEzF,GAAGhC,EAAE,GAAG,OAAOqH,GAAE,MAAMvI,MAAM+K,EAAE,MAAM7H,EAAE2mL,aAAa3mL,EAAEgJ,QAAQy3J,UAAUzgK,EAAE4mL,uBAAuB3mL,EAAE2I,GAAE,KAAKo+K,GAAGhnL,GAAGyF,GAAEzF,GAAG,OAAO,KACzY,SAASonL,GAAGpnL,EAAEC,GAAG,IAAIjC,EAAEoH,GAAEA,IAAG,EAAE,IAAI,OAAOpF,EAAEC,GAAG,QAZ0B,KAYlBmF,GAAEpH,IAASmtB,MAAM,SAASk8J,GAAGrnL,EAAEC,GAAG,IAAIjC,EAAEoH,GAAEA,KAAI,EAAEA,IAZzB,EAY+B,IAAI,OAAOpF,EAAEC,GAAG,QAZpD,KAY4DmF,GAAEpH,IAASmtB,MAC/I,SAASo7J,GAAGvmL,EAAEC,GAAGD,EAAE2mL,aAAa,KAAK3mL,EAAE4mL,uBAAuB,EAAE,IAAI5oL,EAAEgC,EAAE+mL,cAAiD,IAAlC,IAAI/oL,IAAIgC,EAAE+mL,eAAe,EAAE1f,GAAGrpK,IAAO,OAAOqH,GAAE,IAAIrH,EAAEqH,GAAE23J,OAAO,OAAOh/J,GAAG,CAAC,IAAIqE,EAAErE,EAAE,OAAOqE,EAAE8B,KAAK,KAAK,EAA6B,OAA3B9B,EAAEA,EAAE1C,KAAKy1K,oBAAwCC,KAAK,MAAM,KAAK,EAAEsH,KAAK91K,GAAEe,IAAGf,GAAEkB,IAAG,MAAM,KAAK,EAAE80K,GAAGx6K,GAAG,MAAM,KAAK,EAAEs6K,KAAK,MAAM,KAAK,GAAc,KAAK,GAAG91K,GAAEW,IAAG,MAAM,KAAK,GAAG4wK,GAAG/1K,GAAGrE,EAAEA,EAAEg/J,OAAOp0J,GAAE5I,EAAEqF,GAAEu2K,GAAG57K,EAAEgJ,QAAQ,MAAM5B,GAAEnH,EAAEiH,GAAEg7K,GAAG2C,GAAG,KAAKE,GAAGD,GAAG,WAAWE,GAAG,KAAK5C,GAAG,EAAE6C,IAAG,EACnc,SAASyB,GAAG1mL,EAAEC,GAAG,OAAE,CAAC,IAAuB,GAAnBk4K,KAAK+E,GAAGl0K,QAAQ20K,GAAMN,GAAG,IAAI,IAAIr/K,EAAEiK,GAAE24J,cAAc,OAAO5iK,GAAG,CAAC,IAAIqE,EAAErE,EAAEsB,MAAM,OAAO+C,IAAIA,EAAE+2K,QAAQ,MAAMp7K,EAAEA,EAAEiN,KAA2B,GAAtBmyK,GAAG,EAAEv3K,GAAEuC,GAAEH,GAAE,KAAKo1K,IAAG,EAAM,OAAOh4K,IAAG,OAAOA,GAAE23J,OAAO,OAAO91J,GAd/F,EAcoG29K,GAAG5kL,EAAEoF,GAAE,KAAKrF,EAAE,CAAC,IAAIpG,EAAEoG,EAAEgI,EAAE3C,GAAE23J,OAAOj2J,EAAE1B,GAAEpH,EAAEgC,EAAwD,GAAtDA,EAAEmH,GAAEL,EAAE25J,WAAW,KAAK35J,EAAE40K,YAAY50K,EAAE00K,WAAW,KAAQ,OAAOx9K,GAAG,iBAAkBA,GAAG,mBAAoBA,EAAElE,KAAK,CAAC,IAAI0N,EAAExJ,EAAE,GAAG,IAAY,EAAP8I,EAAE1M,MAAQ,CAAC,IAAI+B,EAAE2K,EAAE05J,UAAUrkK,GAAG2K,EAAEiyK,YAAY58K,EAAE48K,YAAYjyK,EAAE65J,cAAcxkK,EAAEwkK,cAAc75J,EAAE0xK,eAAer8K,EAAEq8K,iBAAiB1xK,EAAEiyK,YACvf,KAAKjyK,EAAE65J,cAAc,MAAM,IAAIx+J,EAAE,IAAe,EAAVoF,GAAEwB,SAAW3L,EAAE2K,EAAE,EAAE,CAAC,IAAIhB,EAAE,GAAGA,EAAE,KAAK3J,EAAE8G,IAAI,CAAC,IAAIoD,EAAElK,EAAEujK,cAAc,GAAG,OAAOr5J,EAAEP,EAAE,OAAOO,EAAEs5J,eAAqB,CAAC,IAAI14J,EAAG9K,EAAEy/K,cAAc91K,OAAE,IAASmB,EAAGo5K,YAAY,IAAKp5K,EAAGq5K,6BAA8Bp/K,IAAS,GAAG4E,EAAE,CAAC,IAAIM,EAAEjK,EAAE27K,YAAY,GAAG,OAAO1xK,EAAE,CAAC,IAAIlN,EAAE,IAAI+nE,IAAI/nE,EAAEgzB,IAAI3lB,GAAGpK,EAAE27K,YAAY5+K,OAAOkN,EAAE8lB,IAAI3lB,GAAG,GAAG,IAAY,EAAPpK,EAAEhD,MAAQ,CAAoC,GAAnCgD,EAAEqjK,WAAW,GAAG35J,EAAE25J,YAAY,KAAQ,IAAI35J,EAAE5C,IAAI,GAAG,OAAO4C,EAAE05J,UAAU15J,EAAE5C,IAAI,OAAO,CAAC,IAAIuD,EAAE4xK,GAAG,WAAW,MAAM5xK,EAAEvD,IAAI,EAAEs1K,GAAG1yK,EAAEW,GAAGX,EAAE0xK,eAAe,WAClf,MAAMz4K,EAAE/B,OAAE,EAAO8I,EAAE9G,EAAE,IAAIgH,EAAErN,EAAE0tL,UAA+G,GAArG,OAAOrgL,GAAGA,EAAErN,EAAE0tL,UAAU,IAAIrD,GAAGhmL,EAAE,IAAIkkE,IAAIl7D,EAAExN,IAAIgO,EAAExJ,SAAgB,KAAXA,EAAEgJ,EAAEzN,IAAIiO,MAAgBxJ,EAAE,IAAIkkE,IAAIl7D,EAAExN,IAAIgO,EAAExJ,KAASA,EAAEqkC,IAAIv7B,GAAG,CAAC9I,EAAEmvB,IAAIrmB,GAAG,IAAID,EAAEygL,GAAGxkL,KAAK,KAAKnJ,EAAE6N,EAAEV,GAAGU,EAAE1N,KAAK+M,EAAEA,GAAGzJ,EAAEqjK,WAAW,KAAKrjK,EAAEo7K,eAAex4K,EAAE,MAAMD,EAAE3C,EAAEA,EAAE2/J,aAAa,OAAO3/J,GAAGY,EAAEnB,OAAO4/J,GAAG31J,EAAEpH,OAAO,qBAAqB,wLAAwLg9J,GAAG51J,IAhB/X,IAgBmYG,KACrfA,GAjBmG,GAiB7FjJ,EAAEukL,GAAGvkL,EAAE8I,GAAG1J,EAAE2K,EAAE,EAAE,CAAC,OAAO3K,EAAE8G,KAAK,KAAK,EAAEsD,EAAExJ,EAAEZ,EAAEqjK,WAAW,KAAKrjK,EAAEo7K,eAAex4K,EAAkBy5K,GAAGr8K,EAAb6mL,GAAG7mL,EAAEoK,EAAExH,IAAW,MAAMD,EAAE,KAAK,EAAEyH,EAAExJ,EAAE,IAAI8H,EAAE1I,EAAEsC,KAAK6nL,EAAGnqL,EAAEy8J,UAAU,GAAG,IAAiB,GAAZz8J,EAAEqjK,aAAgB,mBAAoB36J,EAAEi7K,0BAA0B,OAAOwG,GAAI,mBAAoBA,EAAGlD,oBAAoB,OAAOC,KAAKA,GAAGjiJ,IAAIklJ,KAAM,CAACnqL,EAAEqjK,WAAW,KAAKrjK,EAAEo7K,eAAex4K,EAAmBy5K,GAAGr8K,EAAbgnL,GAAGhnL,EAAEoK,EAAExH,IAAY,MAAMD,GAAG3C,EAAEA,EAAE2/J,aAAa,OAAO3/J,GAAGgI,GAAEoiL,GAAGpiL,IAAG,MAAMqiL,GAAIznL,EAAEynL,EAAG,SAAS,OAC9b,SAASlB,KAAK,IAAIxmL,EAAE2kL,GAAG37K,QAAsB,OAAd27K,GAAG37K,QAAQ20K,GAAU,OAAO39K,EAAE29K,GAAG39K,EAAE,SAAS45K,GAAG55K,EAAEC,GAAGD,EAAE8kL,IAAI,EAAE9kL,IAAI8kL,GAAG9kL,GAAG,OAAOC,GAAGD,EAAE+kL,IAAI,EAAE/kL,IAAI+kL,GAAG/kL,EAAEglL,GAAG/kL,GAAG,SAAS45K,GAAG75K,GAAGA,EAAEoiL,KAAKA,GAAGpiL,GAAG,SAASmnL,KAAK,KAAK,OAAO9hL,IAAGA,GAAEsiL,GAAGtiL,IAAG,SAASohL,KAAK,KAAK,OAAOphL,KAAI0xK,MAAM1xK,GAAEsiL,GAAGtiL,IAAG,SAASsiL,GAAG3nL,GAAG,IAAIC,EAAEwkL,GAAGzkL,EAAEygK,UAAUzgK,EAAEoH,IAAsE,OAAnEpH,EAAE88K,cAAc98K,EAAE+/K,aAAa,OAAO9/K,IAAIA,EAAEwnL,GAAGznL,IAAI4kL,GAAG57K,QAAQ,KAAY/I,EACtW,SAASwnL,GAAGznL,GAAGqF,GAAErF,EAAE,EAAE,CAAC,IAAIC,EAAEoF,GAAEo7J,UAAqB,GAAXzgK,EAAEqF,GAAE23J,OAAU,IAAiB,KAAZ33J,GAAEq7J,WAAgB,CAAa,GAAZzgK,EAAE0iG,GAAG1iG,EAAEoF,GAAE+B,IAAM,IAAIA,IAAG,IAAI/B,GAAEizK,oBAAoB,CAAC,IAAI,IAAIt6K,EAAE,EAAEqE,EAAEgD,GAAE3D,MAAM,OAAOW,GAAG,CAAC,IAAIzI,EAAEyI,EAAEo2K,eAAezwK,EAAE3F,EAAEi2K,oBAAoB1+K,EAAEoE,IAAIA,EAAEpE,GAAGoO,EAAEhK,IAAIA,EAAEgK,GAAG3F,EAAEA,EAAE2+J,QAAQ37J,GAAEizK,oBAAoBt6K,EAAE,GAAG,OAAOiC,EAAE,OAAOA,EAAE,OAAOD,GAAG,IAAiB,KAAZA,EAAE0gK,aAAkB,OAAO1gK,EAAE27K,cAAc37K,EAAE27K,YAAYt2K,GAAEs2K,aAAa,OAAOt2K,GAAEo2K,aAAa,OAAOz7K,EAAEy7K,aAAaz7K,EAAEy7K,WAAWC,WAAWr2K,GAAEs2K,aAAa37K,EAAEy7K,WAAWp2K,GAAEo2K,YAAY,EAAEp2K,GAAEq7J,YAAY,OACnf1gK,EAAEy7K,WAAWz7K,EAAEy7K,WAAWC,WAAWr2K,GAAErF,EAAE27K,YAAYt2K,GAAErF,EAAEy7K,WAAWp2K,SAAQ,CAAS,GAAG,QAAXpF,EAAEsiL,GAAGl9K,KAAe,OAAOpF,EAAEygK,WAAW,KAAKzgK,EAAE,OAAOD,IAAIA,EAAE27K,YAAY37K,EAAEy7K,WAAW,KAAKz7K,EAAE0gK,WAAW,MAAkB,GAAG,QAAfzgK,EAAEoF,GAAE27J,SAAoB,OAAO/gK,EAAEoF,GAAErF,QAAQ,OAAOqF,IAAkB,OAAf6B,KAAIg7K,KAAKh7K,GApBjI,GAoB8I,KAAK,SAAS4/K,GAAG9mL,GAAG,IAAIC,EAAED,EAAEy4K,eAAuC,OAAOx4K,GAA/BD,EAAEA,EAAEs4K,qBAA+Br4K,EAAED,EAAE,SAASgnL,GAAGhnL,GAAG,IAAIC,EAAEs3K,KAA8B,OAAzBE,GAAG,GAAGmQ,GAAG7kL,KAAK,KAAK/C,EAAEC,IAAW,KACjZ,SAAS2nL,GAAG5nL,EAAEC,GAAG,GAAGqmL,WAAW,OAAOnB,IAAI,GArB8B,IAqBxB,GAAF//K,IAAe,MAAMtI,MAAM+K,EAAE,MAAM,IAAI7J,EAAEgC,EAAE2mL,aAAatkL,EAAErC,EAAE4mL,uBAAuB,GAAG,OAAO5oL,EAAE,OAAO,KAAoD,GAA/CgC,EAAE2mL,aAAa,KAAK3mL,EAAE4mL,uBAAuB,EAAK5oL,IAAIgC,EAAEgJ,QAAQ,MAAMlM,MAAM+K,EAAE,MAAM7H,EAAEmmL,aAAa,KAAKnmL,EAAEimL,uBAAuB,EAAEjmL,EAAEkmL,iBAAiB,GAAGlmL,EAAEgmL,sBAAsB,EAAE,IAAIpsL,EAAEktL,GAAG9oL,GAClI,GADqIgC,EAAE8lL,iBAAiBlsL,EAAEyI,GAAGrC,EAAE6mL,kBAAkB7mL,EAAE6nL,mBAAmB7nL,EAAE6mL,kBAAkB7mL,EAAEgmL,sBAAsB,EAAE3jL,GAAGrC,EAAE6nL,qBAAqB7nL,EAAE6nL,mBACnexlL,EAAE,GAAGA,GAAGrC,EAAE+lL,iBAAiB/lL,EAAE+lL,eAAe,GAAG1jL,GAAGrC,EAAE4lL,kBAAkB5lL,EAAE4lL,gBAAgB,GAAG5lL,IAAI4I,KAAIvD,GAAEuD,GAAE,KAAKxB,GAAE,GAAG,EAAEpJ,EAAE0iK,UAAU,OAAO1iK,EAAEy9K,YAAYz9K,EAAEy9K,WAAWC,WAAW19K,EAAEpE,EAAEoE,EAAE29K,aAAa/hL,EAAEoE,EAAEpE,EAAEoE,EAAE29K,YAAe,OAAO/hL,EAAE,CAAC,IAAIoO,EAAE5C,GAAEA,IAtBhJ,GAsBsJw/K,GAAG57K,QAAQ,KAAK+9J,GAAG7B,GAAG,IAAIn+J,EAAE4/J,KAAK,GAAGE,GAAG9/J,GAAG,CAAC,GAAG,mBAAmBA,EAAE,IAAI9I,EAAE,CAAC46C,MAAM9xC,EAAEyoK,eAAex2H,IAAIjyC,EAAE0oK,mBAAmBzvK,EAAE,CAA8C,IAAIyH,GAAjDxJ,GAAGA,EAAE8I,EAAEoiJ,gBAAgBlrJ,EAAEmrJ,aAAanyJ,QAAe04K,cAAc1xK,EAAE0xK,eAAe,GAAGloK,GAAG,IAAIA,EAAEqgL,WAAW,CAAC7pL,EAAEwJ,EAAEioK,WAAW,IAAItzK,EAAEqL,EAAEmoK,aAC9extK,EAAEqF,EAAEooK,UAAUpoK,EAAEA,EAAEqoK,YAAY,IAAI7xK,EAAEi2E,SAAS9xE,EAAE8xE,SAAS,MAAM6zG,GAAI9pL,EAAE,KAAK,MAAM+B,EAAE,IAAI3C,EAAE,EAAE2J,GAAG,EAAEO,GAAG,EAAEY,EAAG,EAAEb,EAAE,EAAElN,EAAE2M,EAAEW,EAAE,KAAKzH,EAAE,OAAO,CAAC,IAAI,IAAIgH,EAAK7M,IAAI6D,GAAG,IAAI7B,GAAG,IAAIhC,EAAE85E,WAAWltE,EAAE3J,EAAEjB,GAAGhC,IAAIgI,GAAG,IAAIqF,GAAG,IAAIrN,EAAE85E,WAAW3sE,EAAElK,EAAEoK,GAAG,IAAIrN,EAAE85E,WAAW72E,GAAGjD,EAAEu+G,UAAUx9G,QAAW,QAAQ8L,EAAE7M,EAAEs+G,aAAkBhxG,EAAEtN,EAAEA,EAAE6M,EAAE,OAAO,CAAC,GAAG7M,IAAI2M,EAAE,MAAM9G,EAA+C,GAA7CyH,IAAIzJ,KAAKkK,IAAK/L,IAAI4K,EAAE3J,GAAGqK,IAAItF,KAAKkF,IAAIG,IAAIF,EAAElK,GAAM,QAAQ4J,EAAE7M,EAAEmK,aAAa,MAAUmD,GAAJtN,EAAEsN,GAAMxC,WAAW9K,EAAE6M,EAAEhJ,GAAG,IAAI+I,IAAI,IAAIO,EAAE,KAAK,CAACsxC,MAAM7xC,EAAEgyC,IAAIzxC,QAAQtJ,EAAE,KAAKA,EAAEA,GAAG,CAAC46C,MAAM,EAAEG,IAAI,QAAQ/6C,EACtf,KAAK+oK,GAAG,CAACghB,sBAAsB,KAAKC,YAAYlhL,EAAEmhL,eAAejqL,GAAGinK,IAAG,EAAG38J,GAAE3O,EAAE,GAAG,IAAIuuL,KAAK,MAAMJ,GAAI,GAAG,OAAOx/K,GAAE,MAAMzL,MAAM+K,EAAE,MAAM+6K,GAAGr6K,GAAEw/K,GAAIx/K,GAAEA,GAAEmzK,kBAAiB,OAAOnzK,IAAGA,GAAE3O,EAAE,GAAG,IAAI,IAAImN,EAAE/G,EAAE/B,EAAEgC,EAAE,OAAOsI,IAAG,CAAC,IAAIzB,EAAEyB,GAAEm4J,UAAmC,GAAvB,GAAF55J,GAAMu4J,GAAG92J,GAAEuxJ,UAAU,IAAS,IAAFhzJ,EAAM,CAAC,IAAIK,EAAEoB,GAAEk4J,UAAU,GAAG,OAAOt5J,EAAE,CAAC,IAAIpB,EAAEoB,EAAEyJ,IAAI,OAAO7K,IAAI,mBAAoBA,EAAEA,EAAE,MAAMA,EAAEiD,QAAQ,OAAO,OAAS,KAAFlC,GAAQ,KAAK,EAAE28K,GAAGl7K,IAAGA,GAAEm4J,YAAY,EAAE,MAAM,KAAK,EAAE+iB,GAAGl7K,IAAGA,GAAEm4J,YAAY,EAAEmjB,GAAGt7K,GAAEk4J,UAAUl4J,IAAG,MAAM,KAAK,KAAKA,GAAEm4J,YAAY,KAAK,MAAM,KAAK,KAAKn4J,GAAEm4J,YAC7f,KAAKmjB,GAAGt7K,GAAEk4J,UAAUl4J,IAAG,MAAM,KAAK,EAAEs7K,GAAGt7K,GAAEk4J,UAAUl4J,IAAG,MAAM,KAAK,EAAM+6K,GAAGv8K,EAAP3K,EAAEmM,GAAStK,GAAGslL,GAAGnnL,GAAGmM,GAAEA,GAAEmzK,YAAY,MAAMqM,GAAI,GAAG,OAAOx/K,GAAE,MAAMzL,MAAM+K,EAAE,MAAM+6K,GAAGr6K,GAAEw/K,GAAIx/K,GAAEA,GAAEmzK,kBAAiB,OAAOnzK,IAAkD,GAA/CxC,EAAEihK,GAAG7/J,EAAEw/J,KAAK7/J,EAAEf,EAAEkiL,YAAYhqL,EAAE8H,EAAEmiL,eAAkB/gL,IAAIL,GAAGA,GAAGA,EAAEqiJ,eAhLxP,SAASi/B,EAAGpoL,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAEk0E,YAAYj0E,GAAG,IAAIA,EAAEi0E,SAASk0G,EAAGpoL,EAAEC,EAAEiF,YAAY,aAAalF,EAAEA,EAAEssG,SAASrsG,KAAGD,EAAEqoL,4BAAwD,GAA7BroL,EAAEqoL,wBAAwBpoL,MAgLmFmoL,CAAGthL,EAAEqiJ,cAAcltG,gBAAgBn1C,GAAG,CAAC,OAAO7I,GAAG4oK,GAAG//J,KAAKK,EAAElJ,EAAE46C,WAAc,KAAR9yC,EAAE9H,EAAE+6C,OAAiBjzC,EAAEoB,GAAG,mBAAmBL,GAAGA,EAAE0oK,eAAeroK,EAAEL,EAAE2oK,aAAax3J,KAAK2G,IAAI7Y,EAAEe,EAAEpN,MAAMyB,UAAU4K,GAAGoB,EAAEL,EAAEqiJ,eAAe/qJ,WAAW+I,EAAEiiJ,aAAanyJ,QAAS04K,eACjf5pK,EAAEA,EAAE4pK,eAAevzK,EAAE0K,EAAE8/D,YAAYzrE,OAAO4L,EAAEkR,KAAK2G,IAAI3gB,EAAE46C,MAAMz8C,GAAG6B,OAAE,IAASA,EAAE+6C,IAAIjyC,EAAEkR,KAAK2G,IAAI3gB,EAAE+6C,IAAI58C,IAAI2J,EAAEoN,QAAQpM,EAAE9I,IAAI7B,EAAE6B,EAAEA,EAAE8I,EAAEA,EAAE3K,GAAGA,EAAEsqK,GAAG5/J,EAAEC,GAAG3E,EAAEskK,GAAG5/J,EAAE7I,GAAG7B,GAAGgG,IAAI,IAAI2D,EAAE+hL,YAAY/hL,EAAE2pK,aAAatzK,EAAE6N,MAAMlE,EAAE6pK,eAAexzK,EAAE2yB,QAAQhpB,EAAE8pK,YAAYztK,EAAE6H,MAAMlE,EAAE+pK,cAAc1tK,EAAE2sB,WAAU5nB,EAAEA,EAAEmhL,eAAgBC,SAASnsL,EAAE6N,KAAK7N,EAAE2yB,QAAQhpB,EAAEyiL,kBAAkBzhL,EAAE9I,GAAG8H,EAAE0iL,SAASthL,GAAGpB,EAAEoN,OAAO/Q,EAAE6H,KAAK7H,EAAE2sB,UAAU5nB,EAAEuhL,OAAOtmL,EAAE6H,KAAK7H,EAAE2sB,QAAQhpB,EAAE0iL,SAASthL,OAAQA,EAAE,GAAG,IAAIpB,EAAEe,EAAEf,EAAEA,EAAEb,YAAY,IAAIa,EAAEmuE,UAAU/sE,EAAEnO,KAAK,CAAConC,QAAQr6B,EAAEi+B,KAAKj+B,EAAEozD,WACzfr1B,IAAI/9B,EAAEqzD,YAAmD,IAAvC,mBAAoBtyD,EAAEgmG,OAAOhmG,EAAEgmG,QAAYhmG,EAAE,EAAEA,EAAEK,EAAEhM,OAAO2L,KAAIf,EAAEoB,EAAEL,IAAKs5B,QAAQ+4B,WAAWpzD,EAAEi+B,KAAKj+B,EAAEq6B,QAAQg5B,UAAUrzD,EAAE+9B,IAAIohI,KAAK6B,GAAGC,GAAGD,GAAG,KAAK/mK,EAAEgJ,QAAQhL,EAAEuK,GAAE3O,EAAE,GAAG,IAAI,IAAIkN,EAAE9G,EAAE,OAAOuI,IAAG,CAAC,IAAIi/K,EAAGj/K,GAAEm4J,UAAqC,GAAxB,GAAH8mB,GAAOvE,GAAGn8K,EAAEyB,GAAEk4J,UAAUl4J,IAAS,IAAHi/K,EAAO,CAACrgL,OAAE,EAAO,IAAIwhL,EAAGpgL,GAAEqI,IAAI,GAAG,OAAO+3K,EAAG,CAAC,IAAIjB,EAAGn/K,GAAEuxJ,UAAU,OAAOvxJ,GAAEpE,KAAK,KAAK,EAAEgD,EAAEugL,EAAG,MAAM,QAAQvgL,EAAEugL,EAAG,mBAAoBiB,EAAGA,EAAGxhL,GAAGwhL,EAAG3/K,QAAQ7B,GAAGoB,GAAEA,GAAEmzK,YAAY,MAAMqM,GAAI,GAAG,OAAOx/K,GAAE,MAAMzL,MAAM+K,EAAE,MAAM+6K,GAAGr6K,GAAEw/K,GAAIx/K,GAAEA,GAAEmzK,kBAAiB,OAAOnzK,IAAGA,GACpf,KAAK0uK,KAAK7xK,GAAE4C,OAAOhI,EAAEgJ,QAAQhL,EAAE,GAAGknL,GAAGA,IAAG,EAAGC,GAAGnlL,EAAEolL,GAAGnlL,OAAO,IAAIsI,GAAE3O,EAAE,OAAO2O,IAAGtI,EAAEsI,GAAEmzK,WAAWnzK,GAAEmzK,WAAW,KAAKnzK,GAAEtI,EAAmI,GAA5G,KAArBA,EAAED,EAAE8lL,oBAAyBvB,GAAG,MAAM,aAAatkL,EAAED,IAAIyhG,GAAG6jF,MAAMA,GAAG,EAAE7jF,GAAGzhG,GAAGslL,GAAG,EAAE,mBAAoBsD,IAAIA,GAAG5qL,EAAE87J,UAAUz3J,GAAGoD,GAAEzF,GAAMmkL,GAAG,MAAMA,IAAG,EAAGnkL,EAAEokL,GAAGA,GAAG,KAAKpkL,EAAE,OA5B3M,IAAK,EA4B0MoF,KAAsB+lB,KAAL,KAAsB,SAASg9J,KAAK,KAAK,OAAO5/K,IAAG,CAAC,IAAIvI,EAAEuI,GAAEm4J,UAAU,IAAO,IAAF1gK,IAAQ6iL,GAAGt6K,GAAEk4J,UAAUl4J,IAAG,IAAO,IAAFvI,IAAQklL,KAAKA,IAAG,EAAGxN,GAAG,IAAG,WAAgB,OAAL4O,KAAY,SAAQ/9K,GAAEA,GAAEmzK,YAC9c,SAAS4K,KAAK,GAAG,KAAKlB,GAAG,CAAC,IAAIplL,EAAE,GAAGolL,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAU3N,GAAGz3K,EAAE6oL,KAAK,SAASA,KAAK,GAAG,OAAO1D,GAAG,OAAM,EAAG,IAAInlL,EAAEmlL,GAAW,GAARA,GAAG,KA7B3C,IA6BsD,GAAF//K,IAAe,MAAMtI,MAAM+K,EAAE,MAAM,IAAI5H,EAAEmF,GAAQ,IAANA,IA7B/E,GA6ByFpF,EAAEA,EAAEgJ,QAAQ2yK,YAAY,OAAO37K,GAAG,CAAC,IAAI,IAAIhC,EAAEgC,EAAE,GAAG,IAAiB,IAAZhC,EAAE0iK,WAAe,OAAO1iK,EAAEmG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG4+K,GAAG,EAAE/kL,GAAGglL,GAAG,EAAEhlL,IAAI,MAAMqE,GAAG,GAAG,OAAOrC,EAAE,MAAMlD,MAAM+K,EAAE,MAAM+6K,GAAG5iL,EAAEqC,GAAGrE,EAAEgC,EAAE07K,WAAW17K,EAAE07K,WAAW,KAAK17K,EAAEhC,EAAW,OAAToH,GAAEnF,EAAEkrB,MAAW,EAC5Z,SAAS29J,GAAG9oL,EAAEC,EAAEjC,GAAkCy7K,GAAGz5K,EAAxBC,EAAEikL,GAAGlkL,EAAfC,EAAEuiL,GAAGxkL,EAAEiC,GAAY,aAAuC,QAAnBD,EAAEylL,GAAGzlL,EAAE,cAAsByF,GAAEzF,GAAG,SAAS4iL,GAAG5iL,EAAEC,GAAG,GAAG,IAAID,EAAEmE,IAAI2kL,GAAG9oL,EAAEA,EAAEC,QAAQ,IAAI,IAAIjC,EAAEgC,EAAEg9J,OAAO,OAAOh/J,GAAG,CAAC,GAAG,IAAIA,EAAEmG,IAAI,CAAC2kL,GAAG9qL,EAAEgC,EAAEC,GAAG,MAAW,GAAG,IAAIjC,EAAEmG,IAAI,CAAC,IAAI9B,EAAErE,EAAE87J,UAAU,GAAG,mBAAoB97J,EAAE2B,KAAKqhL,0BAA0B,mBAAoB3+K,EAAEiiL,oBAAoB,OAAOC,KAAKA,GAAGjiJ,IAAIjgC,IAAI,CAAgCo3K,GAAGz7K,EAAxBgC,EAAEqkL,GAAGrmL,EAAfgC,EAAEwiL,GAAGviL,EAAED,GAAY,aAAuC,QAAnBhC,EAAEynL,GAAGznL,EAAE,cAAsByH,GAAEzH,GAAG,OAAOA,EAAEA,EAAEg/J,QACxb,SAASuqB,GAAGvnL,EAAEC,EAAEjC,GAAG,IAAIqE,EAAErC,EAAEsnL,UAAU,OAAOjlL,GAAGA,EAAE8sI,OAAOlvI,GAAG2I,KAAI5I,GAAGoH,KAAIpJ,EAAEkJ,KAAIs6F,IAAIt6F,KAAIi7K,IAAI,aAAa2C,IAAIxN,KAAKwM,GA/BqG,IA+B/FyC,GAAGvmL,EAAEoH,IAAG69K,IAAG,EAAGY,GAAG7lL,EAAEhC,KAAwB,KAAnBiC,EAAED,EAAE+lL,iBAAsB9lL,EAAEjC,IAAIgC,EAAE+lL,eAAe/nL,EAAEyH,GAAEzF,KAAK,SAASgkL,GAAGhkL,EAAEC,GAAG,IAAIjC,EAAEgC,EAAE85J,UAAU,OAAO97J,GAAGA,EAAEmxI,OAAOlvI,GAAO,KAAJA,EAAE,KAAiBA,EAAEo6K,GAATp6K,EAAEm6K,KAAYp6K,EAAE,OAAiB,QAAVA,EAAEylL,GAAGzlL,EAAEC,KAAawF,GAAEzF,GACxTykL,GAAG,SAASzkL,EAAEC,EAAEjC,GAAG,IAAIqE,EAAEpC,EAAEw4K,eAAe,GAAG,OAAOz4K,EAAE,CAAC,IAAIpG,EAAEqG,EAAE8/K,aAAa,GAAG//K,EAAE88K,gBAAgBljL,GAAGgO,GAAEoB,QAAQ0vK,IAAG,MAAO,CAAC,GAAGr2K,EAAErE,EAAE,CAAO,OAAN06K,IAAG,EAAUz4K,EAAEkE,KAAK,KAAK,EAAE88K,GAAGhhL,GAAGkgL,KAAK,MAAM,KAAK,EAAQ,GAANvD,GAAG38K,GAAa,EAAPA,EAAE5F,MAAQ,IAAI2D,GAAGpE,EAAEujD,OAAO,OAAOl9C,EAAEw4K,eAAex4K,EAAEq4K,oBAAoB,EAAE,KAAK,MAAM,KAAK,EAAEtyK,GAAE/F,EAAEN,OAAO81K,GAAGx1K,GAAG,MAAM,KAAK,EAAEy8K,GAAGz8K,EAAEA,EAAE65J,UAAUuI,eAAe,MAAM,KAAK,GAAGhgK,EAAEpC,EAAE68K,cAAcpjL,MAAME,EAAEqG,EAAEN,KAAK0gG,SAASv4F,GAAEiwK,GAAGn+K,EAAEs5J,eAAet5J,EAAEs5J,cAAc7wJ,EAAE,MAAM,KAAK,GAAG,GAAG,OAAOpC,EAAE2gK,cACjd,OAAG,KAD6dv+J,EAAEpC,EAAEyB,MAAM42K,sBAChej2K,GAAGrE,EAASsjL,GAAGthL,EAAEC,EAAEjC,IAAG8J,GAAEN,GAAY,EAAVA,GAAEwB,SAA8B,QAAnB/I,EAAEqgL,GAAGtgL,EAAEC,EAAEjC,IAAmBiC,EAAE+gK,QAAQ,MAAKl5J,GAAEN,GAAY,EAAVA,GAAEwB,SAAW,MAAM,KAAK,GAA8B,GAA3B3G,EAAEpC,EAAEq4K,qBAAqBt6K,EAAK,IAAiB,GAAZgC,EAAE0gK,WAAc,CAAC,GAAGr+J,EAAE,OAAO0/K,GAAG/hL,EAAEC,EAAEjC,GAAGiC,EAAEygK,WAAW,GAA6E,GAAxD,QAAlB9mK,EAAEqG,EAAE2gK,iBAAyBhnK,EAAEm3I,UAAU,KAAKn3I,EAAEo4F,KAAK,MAAMlqF,GAAEN,GAAEA,GAAEwB,UAAa3G,EAAE,OAAO,KAAK,OAAOi+K,GAAGtgL,EAAEC,EAAEjC,GAAG06K,IAAG,QAASA,IAAG,EAAsB,OAAnBz4K,EAAEw4K,eAAe,EAASx4K,EAAEkE,KAAK,KAAK,EAChW,GADkW9B,EAAEpC,EAAEN,KAAK,OAAOK,IAAIA,EAAEygK,UAAU,KAAKxgK,EAAEwgK,UAAU,KAAKxgK,EAAEygK,WAAW,GAAG1gK,EAAEC,EAAE8/K,aAAanmL,EAAEo7K,GAAG/0K,EAAE8H,GAAEiB,SAASuvK,GAAGt4K,EAAEjC,GAAGpE,EAAE2jL,GAAG,KAClft9K,EAAEoC,EAAErC,EAAEpG,EAAEoE,GAAGiC,EAAEygK,WAAW,EAAK,iBAAkB9mK,GAAG,OAAOA,GAAG,mBAAoBA,EAAE8W,aAAQ,IAAS9W,EAAEw4J,SAAS,CAAiD,GAAhDnyJ,EAAEkE,IAAI,EAAElE,EAAE2gK,cAAc,KAAK3gK,EAAE+4K,YAAY,KAAQhzK,GAAE3D,GAAG,CAAC,IAAI2F,GAAE,EAAGytK,GAAGx1K,QAAQ+H,GAAE,EAAG/H,EAAE2gK,cAAc,OAAOhnK,EAAEyhE,YAAO,IAASzhE,EAAEyhE,MAAMzhE,EAAEyhE,MAAM,KAAK09G,GAAG94K,GAAG,IAAI8G,EAAE1E,EAAE04K,yBAAyB,mBAAoBh0K,GAAGkzK,GAAGh6K,EAAEoC,EAAE0E,EAAE/G,GAAGpG,EAAEk4J,QAAQooB,GAAGj6K,EAAE65J,UAAUlgK,EAAEA,EAAEugL,oBAAoBl6K,EAAE66K,GAAG76K,EAAEoC,EAAErC,EAAEhC,GAAGiC,EAAE8gL,GAAG,KAAK9gL,EAAEoC,GAAE,EAAG2F,EAAEhK,QAAQiC,EAAEkE,IAAI,EAAEsC,GAAE,KAAKxG,EAAErG,EAAEoE,GAAGiC,EAAEA,EAAEyB,MAAM,OAAOzB,EAAE,KAAK,GAAGD,EAAE,CACzZ,GAD0ZpG,EAAEqG,EAAE67K,YAAY,OAAO97K,IAAIA,EAAEygK,UACpf,KAAKxgK,EAAEwgK,UAAU,KAAKxgK,EAAEygK,WAAW,GAAG1gK,EAAEC,EAAE8/K,aAzOoP,SAAY//K,GAAG,IAAI,IAAIA,EAAEyzJ,QAAQ,CAACzzJ,EAAEyzJ,QAAQ,EAAE,IAAIxzJ,EAAED,EAAEwzJ,MAAMvzJ,EAAEA,IAAID,EAAE0zJ,QAAQzzJ,EAAEA,EAAElG,MAAK,SAASkG,GAAG,IAAID,EAAEyzJ,UAAUxzJ,EAAEA,EAAEgjC,QAAQjjC,EAAEyzJ,QAAQ,EAAEzzJ,EAAE0zJ,QAAQzzJ,MAAI,SAASA,GAAG,IAAID,EAAEyzJ,UAAUzzJ,EAAEyzJ,QAAQ,EAAEzzJ,EAAE0zJ,QAAQzzJ,OAyOhb8oL,CAAGnvL,GAAM,IAAIA,EAAE65J,QAAQ,MAAM75J,EAAE85J,QAAqD,OAA7C95J,EAAEA,EAAE85J,QAAQzzJ,EAAEN,KAAK/F,EAAEoO,EAAE/H,EAAEkE,IAQzD,SAAYnE,GAAG,GAAG,mBAAoBA,EAAE,OAAO0+C,GAAG1+C,GAAG,EAAE,EAAE,GAAG,MAASA,EAAY,CAAc,IAAbA,EAAEA,EAAEoyJ,YAAgB+J,GAAG,OAAO,GAAG,GAAGn8J,IAAIs8J,GAAG,OAAO,GAAG,OAAO,EARjF0sB,CAAGpvL,GAAGoG,EAAE83K,GAAGl+K,EAAEoG,GAAUgI,GAAG,KAAK,EAAE/H,EAAEwgL,GAAG,KAAKxgL,EAAErG,EAAEoG,EAAEhC,GAAG,MAAMgC,EAAE,KAAK,EAAEC,EAAE0gL,GAAG,KAAK1gL,EAAErG,EAAEoG,EAAEhC,GAAG,MAAMgC,EAAE,KAAK,GAAGC,EAAEogL,GAAG,KAAKpgL,EAAErG,EAAEoG,EAAEhC,GAAG,MAAMgC,EAAE,KAAK,GAAGC,EAAEsgL,GAAG,KAAKtgL,EAAErG,EAAEk+K,GAAGl+K,EAAE+F,KAAKK,GAAGqC,EAAErE,GAAG,MAAMgC,EAAE,MAAMlD,MAAM+K,EAAE,IAAIjO,EAAE,KAAM,OAAOqG,EAAE,KAAK,EAAE,OAAOoC,EAAEpC,EAAEN,KAAK/F,EAAEqG,EAAE8/K,aAA2CU,GAAGzgL,EAAEC,EAAEoC,EAArCzI,EAAEqG,EAAE67K,cAAcz5K,EAAEzI,EAAEk+K,GAAGz1K,EAAEzI,GAAcoE,GAAG,KAAK,EAAE,OAAOqE,EAAEpC,EAAEN,KAAK/F,EAAEqG,EAAE8/K,aAA2CY,GAAG3gL,EAAEC,EAAEoC,EAArCzI,EAAEqG,EAAE67K,cAAcz5K,EAAEzI,EAAEk+K,GAAGz1K,EAAEzI,GAAcoE,GACpf,KAAK,EAAwB,GAAtBijL,GAAGhhL,GAAGoC,EAAEpC,EAAE+4K,YAAe,OAAOh5K,GAAG,OAAOqC,EAAE,MAAMvF,MAAM+K,EAAE,MAAoH,GAA9GxF,EAAEpC,EAAE8/K,aAA+BnmL,EAAE,QAApBA,EAAEqG,EAAE2gK,eAAyBhnK,EAAEwmC,QAAQ,KAAKi5I,GAAGr5K,EAAEC,GAAG05K,GAAG15K,EAAEoC,EAAE,KAAKrE,IAAGqE,EAAEpC,EAAE2gK,cAAcxgI,WAAexmC,EAAEumL,KAAKlgL,EAAEqgL,GAAGtgL,EAAEC,EAAEjC,OAAO,CAAmF,IAA/EpE,EAAEqG,EAAE65J,UAAU/F,WAAQ2rB,GAAGpY,GAAGrnK,EAAE65J,UAAUuI,cAAc3pD,YAAY+mE,GAAGx/K,EAAErG,EAAE+lL,IAAG,GAAM/lL,EAAE,IAAIoE,EAAEo+K,GAAGn8K,EAAE,KAAKoC,EAAErE,GAAGiC,EAAEyB,MAAM1D,EAAEA,GAAGA,EAAE0iK,WAAuB,EAAb1iK,EAAE0iK,UAAa,KAAK1iK,EAAEA,EAAEgjK,aAAav6J,GAAEzG,EAAEC,EAAEoC,EAAErE,GAAGmiL,KAAKlgL,EAAEA,EAAEyB,MAAM,OAAOzB,EAAE,KAAK,EAAE,OAAO28K,GAAG38K,GAAG,OAAOD,GAAGggL,GAAG//K,GAAGoC,EAAEpC,EAAEN,KAAK/F,EAAEqG,EAAE8/K,aAAa/3K,EAAE,OAAOhI,EAAEA,EAAE88K,cAC5e,KAAK/1K,EAAEnN,EAAEX,SAASkuK,GAAG9kK,EAAEzI,GAAGmN,EAAE,KAAK,OAAOiB,GAAGm/J,GAAG9kK,EAAE2F,KAAK/H,EAAEygK,WAAW,IAAIggB,GAAG1gL,EAAEC,GAAU,EAAPA,EAAE5F,MAAQ,IAAI2D,GAAGpE,EAAEujD,QAAQl9C,EAAEw4K,eAAex4K,EAAEq4K,oBAAoB,EAAEr4K,EAAE,OAAOwG,GAAEzG,EAAEC,EAAE8G,EAAE/I,GAAGiC,EAAEA,EAAEyB,OAAOzB,EAAE,KAAK,EAAE,OAAO,OAAOD,GAAGggL,GAAG//K,GAAG,KAAK,KAAK,GAAG,OAAOqhL,GAAGthL,EAAEC,EAAEjC,GAAG,KAAK,EAAE,OAAO0+K,GAAGz8K,EAAEA,EAAE65J,UAAUuI,eAAehgK,EAAEpC,EAAE8/K,aAAa,OAAO//K,EAAEC,EAAEyB,MAAMy6K,GAAGl8K,EAAE,KAAKoC,EAAErE,GAAGyI,GAAEzG,EAAEC,EAAEoC,EAAErE,GAAGiC,EAAEyB,MAAM,KAAK,GAAG,OAAOW,EAAEpC,EAAEN,KAAK/F,EAAEqG,EAAE8/K,aAA2CM,GAAGrgL,EAAEC,EAAEoC,EAArCzI,EAAEqG,EAAE67K,cAAcz5K,EAAEzI,EAAEk+K,GAAGz1K,EAAEzI,GAAcoE,GAAG,KAAK,EAAE,OAAOyI,GAAEzG,EAAEC,EAAEA,EAAE8/K,aAAa/hL,GAAGiC,EAAEyB,MAAM,KAAK,EACpc,KAAK,GAAG,OAAO+E,GAAEzG,EAAEC,EAAEA,EAAE8/K,aAAa9mL,SAAS+E,GAAGiC,EAAEyB,MAAM,KAAK,GAAG1B,EAAE,CAACqC,EAAEpC,EAAEN,KAAK0gG,SAASzmG,EAAEqG,EAAE8/K,aAAah5K,EAAE9G,EAAE68K,cAAc90K,EAAEpO,EAAEF,MAAM,IAAIuE,EAAEgC,EAAEN,KAAK0gG,SAAiD,GAAxCv4F,GAAEiwK,GAAG95K,EAAEi1J,eAAej1J,EAAEi1J,cAAclrJ,EAAK,OAAOjB,EAAE,GAAG9I,EAAE8I,EAAErN,MAA0G,KAApGsO,EAAE6mK,GAAG5wK,EAAE+J,GAAG,EAAwF,GAArF,mBAAoB3F,EAAE4wJ,sBAAsB5wJ,EAAE4wJ,sBAAsBh1J,EAAE+J,GAAG,cAAqB,GAAGjB,EAAE9N,WAAWW,EAAEX,WAAW2O,GAAEoB,QAAQ,CAAC/I,EAAEqgL,GAAGtgL,EAAEC,EAAEjC,GAAG,MAAMgC,QAAQ,IAAc,QAAV/B,EAAEgC,EAAEyB,SAAiBzD,EAAE++J,OAAO/8J,GAAG,OAAOhC,GAAG,CAAC,IAAIwJ,EAAExJ,EAAEs7J,aAAa,GAAG,OACnf9xJ,EAAE,CAACV,EAAE9I,EAAEyD,MAAM,IAAI,IAAItF,EAAEqL,EAAE+wK,aAAa,OAAOp8K,GAAG,CAAC,GAAGA,EAAE8M,UAAU7G,GAAG,IAAKjG,EAAEw8K,aAAa5wK,GAAG,CAAC,IAAI/J,EAAEkG,OAAM/H,EAAEk9K,GAAGt7K,EAAE,OAAQmG,IAAI,EAAEs1K,GAAGx7K,EAAE7B,IAAI6B,EAAEw6K,eAAez6K,IAAIC,EAAEw6K,eAAez6K,GAAiB,QAAd5B,EAAE6B,EAAEwiK,YAAoBrkK,EAAEq8K,eAAez6K,IAAI5B,EAAEq8K,eAAez6K,GAAGq6K,GAAGp6K,EAAE++J,OAAOh/J,GAAGyJ,EAAEgxK,eAAez6K,IAAIyJ,EAAEgxK,eAAez6K,GAAG,MAAM5B,EAAEA,EAAE6O,WAAWlE,EAAE,KAAK9I,EAAEkG,KAAIlG,EAAE0B,OAAOM,EAAEN,KAAK,KAAa1B,EAAEyD,MAAM,GAAG,OAAOqF,EAAEA,EAAEi2J,OAAO/+J,OAAO,IAAI8I,EAAE9I,EAAE,OAAO8I,GAAG,CAAC,GAAGA,IAAI9G,EAAE,CAAC8G,EAAE,KAAK,MAAkB,GAAG,QAAf9I,EAAE8I,EAAEi6J,SAAoB,CAAC/iK,EAAE++J,OAAOj2J,EAAEi2J,OAAOj2J,EAAE9I,EAAE,MAAM8I,EAAEA,EAAEi2J,OAAO/+J,EACpf8I,EAAEN,GAAEzG,EAAEC,EAAErG,EAAEX,SAAS+E,GAAGiC,EAAEA,EAAEyB,MAAM,OAAOzB,EAAE,KAAK,EAAE,OAAOrG,EAAEqG,EAAEN,KAAsB0C,GAAjB2F,EAAE/H,EAAE8/K,cAAiB9mL,SAASs/K,GAAGt4K,EAAEjC,GAAmCqE,EAAEA,EAAlCzI,EAAE++K,GAAG/+K,EAAEoO,EAAEihL,wBAA8BhpL,EAAEygK,WAAW,EAAEj6J,GAAEzG,EAAEC,EAAEoC,EAAErE,GAAGiC,EAAEyB,MAAM,KAAK,GAAG,OAAgBsG,EAAE8vK,GAAXl+K,EAAEqG,EAAEN,KAAYM,EAAE8/K,cAA6BQ,GAAGvgL,EAAEC,EAAErG,EAAtBoO,EAAE8vK,GAAGl+K,EAAE+F,KAAKqI,GAAc3F,EAAErE,GAAG,KAAK,GAAG,OAAOwiL,GAAGxgL,EAAEC,EAAEA,EAAEN,KAAKM,EAAE8/K,aAAa19K,EAAErE,GAAG,KAAK,GAAG,OAAOqE,EAAEpC,EAAEN,KAAK/F,EAAEqG,EAAE8/K,aAAanmL,EAAEqG,EAAE67K,cAAcz5K,EAAEzI,EAAEk+K,GAAGz1K,EAAEzI,GAAG,OAAOoG,IAAIA,EAAEygK,UAAU,KAAKxgK,EAAEwgK,UAAU,KAAKxgK,EAAEygK,WAAW,GAAGzgK,EAAEkE,IAAI,EAAE6B,GAAE3D,IAAIrC,GAAE,EAAGy1K,GAAGx1K,IAAID,GAAE,EAAGu4K,GAAGt4K,EAAEjC,GAAGy8K,GAAGx6K,EAAEoC,EAAEzI,GAAGkhL,GAAG76K,EAAEoC,EAAEzI,EAAEoE,GAAG+iL,GAAG,KAClf9gL,EAAEoC,GAAE,EAAGrC,EAAEhC,GAAG,KAAK,GAAG,OAAO+jL,GAAG/hL,EAAEC,EAAEjC,GAAG,MAAMlB,MAAM+K,EAAE,IAAI5H,EAAEkE,OAAQ,IAAIykL,GAAG,KAAKzF,GAAG,KAChF,SAAS+F,GAAGlpL,EAAEC,EAAEjC,EAAEqE,GAAG1G,KAAKwI,IAAInE,EAAErE,KAAKmH,IAAI9E,EAAErC,KAAKqlK,QAAQrlK,KAAK+F,MAAM/F,KAAKqhK,OAAOrhK,KAAKm+J,UAAUn+J,KAAKgE,KAAKhE,KAAKmgL,YAAY,KAAKngL,KAAKk+B,MAAM,EAAEl+B,KAAKiV,IAAI,KAAKjV,KAAKokL,aAAa9/K,EAAEtE,KAAK49J,aAAa59J,KAAKilK,cAAcjlK,KAAKq9K,YAAYr9K,KAAKmhL,cAAc,KAAKnhL,KAAKtB,KAAKgI,EAAE1G,KAAK+kK,UAAU,EAAE/kK,KAAK8/K,WAAW9/K,KAAKggL,YAAYhgL,KAAK+/K,WAAW,KAAK//K,KAAK28K,oBAAoB38K,KAAK88K,eAAe,EAAE98K,KAAK8kK,UAAU,KAAK,SAASof,GAAG7/K,EAAEC,EAAEjC,EAAEqE,GAAG,OAAO,IAAI6mL,GAAGlpL,EAAEC,EAAEjC,EAAEqE,GAC1b,SAASq8C,GAAG1+C,GAAiB,UAAdA,EAAEA,EAAExI,aAAuBwI,EAAE+xJ,kBAC5C,SAAS6pB,GAAG57K,EAAEC,GAAG,IAAIjC,EAAEgC,EAAEygK,UAC4E,OADlE,OAAOziK,IAAGA,EAAE6hL,GAAG7/K,EAAEmE,IAAIlE,EAAED,EAAE8C,IAAI9C,EAAE3F,OAAQyhL,YAAY97K,EAAE87K,YAAY99K,EAAE2B,KAAKK,EAAEL,KAAK3B,EAAE87J,UAAU95J,EAAE85J,UAAU97J,EAAEyiK,UAAUzgK,EAAEA,EAAEygK,UAAUziK,IAAIA,EAAE+hL,aAAa9/K,EAAEjC,EAAE0iK,UAAU,EAAE1iK,EAAE09K,WAAW,KAAK19K,EAAE29K,YAAY,KAAK39K,EAAEy9K,WAAW,MAAMz9K,EAAEs6K,oBAAoBt4K,EAAEs4K,oBAAoBt6K,EAAEy6K,eAAez4K,EAAEy4K,eAAez6K,EAAE0D,MAAM1B,EAAE0B,MAAM1D,EAAE8+K,cAAc98K,EAAE88K,cAAc9+K,EAAE4iK,cAAc5gK,EAAE4gK,cAAc5iK,EAAEg7K,YAAYh5K,EAAEg5K,YAAY/4K,EAAED,EAAEu5J,aAAav7J,EAAEu7J,aAAa,OAAOt5J,EAAE,KAAK,CAACw4K,eAAex4K,EAAEw4K,eACzfD,aAAav4K,EAAEu4K,aAAaK,WAAW54K,EAAE44K,YAAY76K,EAAEgjK,QAAQhhK,EAAEghK,QAAQhjK,EAAE67B,MAAM75B,EAAE65B,MAAM77B,EAAE4S,IAAI5Q,EAAE4Q,IAAW5S,EAC5G,SAAS+9K,GAAG/7K,EAAEC,EAAEjC,EAAEqE,EAAEzI,EAAEoO,GAAG,IAAIjB,EAAE,EAAM,GAAJ1E,EAAErC,EAAK,mBAAoBA,EAAE0+C,GAAG1+C,KAAK+G,EAAE,QAAQ,GAAG,iBAAkB/G,EAAE+G,EAAE,OAAO/G,EAAE,OAAOA,GAAG,KAAK87J,GAAG,OAAOogB,GAAGl+K,EAAE/E,SAASW,EAAEoO,EAAE/H,GAAG,KAAKi8J,GAAGn1J,EAAE,EAAEnN,GAAG,EAAE,MAAM,KAAKmiK,GAAGh1J,EAAE,EAAEnN,GAAG,EAAE,MAAM,KAAKoF,GAAG,OAAOgB,EAAE6/K,GAAG,GAAG7hL,EAAEiC,EAAI,EAAFrG,IAAOkiL,YAAY98K,GAAGgB,EAAEL,KAAKX,GAAGgB,EAAEy4K,eAAezwK,EAAEhI,EAAE,KAAKo8J,GAAG,OAAOp8J,EAAE6/K,GAAG,GAAG7hL,EAAEiC,EAAErG,IAAK+F,KAAKy8J,GAAGp8J,EAAE87K,YAAY1f,GAAGp8J,EAAEy4K,eAAezwK,EAAEhI,EAAE,KAAKq8J,GAAG,OAAOr8J,EAAE6/K,GAAG,GAAG7hL,EAAEiC,EAAErG,IAAKkiL,YAAYzf,GAAGr8J,EAAEy4K,eAAezwK,EAAEhI,EAAE,QAAQ,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,OAAOA,EAAEoyJ,UAAU,KAAK4J,GAAGj1J,EACpf,GAAG,MAAM/G,EAAE,KAAKi8J,GAAGl1J,EAAE,EAAE,MAAM/G,EAAE,KAAKm8J,GAAGp1J,EAAE,GAAG,MAAM/G,EAAE,KAAKs8J,GAAGv1J,EAAE,GAAG,MAAM/G,EAAE,KAAKu8J,GAAGx1J,EAAE,GAAG1E,EAAE,KAAK,MAAMrC,EAAE,KAAKw8J,GAAGz1J,EAAE,GAAG,MAAM/G,EAAE,MAAMlD,MAAM+K,EAAE,IAAI,MAAM7H,EAAEA,SAASA,EAAE,KAAgE,OAA1DC,EAAE4/K,GAAG94K,EAAE/I,EAAEiC,EAAErG,IAAKkiL,YAAY97K,EAAEC,EAAEN,KAAK0C,EAAEpC,EAAEw4K,eAAezwK,EAAS/H,EAAE,SAASi8K,GAAGl8K,EAAEC,EAAEjC,EAAEqE,GAAoC,OAAjCrC,EAAE6/K,GAAG,EAAE7/K,EAAEqC,EAAEpC,IAAKw4K,eAAez6K,EAASgC,EAAE,SAAS67K,GAAG77K,EAAEC,EAAEjC,GAAuC,OAApCgC,EAAE6/K,GAAG,EAAE7/K,EAAE,KAAKC,IAAKw4K,eAAez6K,EAASgC,EACrW,SAASi8K,GAAGj8K,EAAEC,EAAEjC,GAAuK,OAApKiC,EAAE4/K,GAAG,EAAE,OAAO7/K,EAAE/G,SAAS+G,EAAE/G,SAAS,GAAG+G,EAAE8C,IAAI7C,IAAKw4K,eAAez6K,EAAEiC,EAAE65J,UAAU,CAACuI,cAAcriK,EAAEqiK,cAAc8mB,gBAAgB,KAAKnN,eAAeh8K,EAAEg8K,gBAAuB/7K,EAC9L,SAASmpL,GAAGppL,EAAEC,EAAEjC,GAAGrC,KAAKwI,IAAIlE,EAAEtE,KAAKqN,QAAQ,KAAKrN,KAAK0mK,cAAcriK,EAAErE,KAAK2rL,UAAU3rL,KAAKwtL,gBAAgB,KAAKxtL,KAAKirL,uBAAuB,EAAEjrL,KAAKgrL,aAAa,KAAKhrL,KAAKorL,eAAe,EAAEprL,KAAKulL,eAAevlL,KAAKuN,QAAQ,KAAKvN,KAAKo4J,QAAQ/1J,EAAErC,KAAKwqL,aAAa,KAAKxqL,KAAKuqL,iBAAiB,GAAGvqL,KAAKiqL,gBAAgBjqL,KAAKoqL,eAAepqL,KAAKqqL,sBAAsBrqL,KAAKkrL,kBAAkBlrL,KAAKksL,mBAAmBlsL,KAAKmqL,iBAAiB,EACva,SAASD,GAAG7lL,EAAEC,GAAG,IAAIjC,EAAEgC,EAAE6nL,mBAAyC,OAAtB7nL,EAAEA,EAAE6mL,kBAAyB,IAAI7oL,GAAGA,GAAGiC,GAAGD,GAAGC,EAAE,SAASoiL,GAAGriL,EAAEC,GAAG,IAAIjC,EAAEgC,EAAE6nL,mBAAmBxlL,EAAErC,EAAE6mL,kBAAkB7oL,EAAEiC,IAAID,EAAE6nL,mBAAmB5nL,IAAMoC,EAAEpC,GAAG,IAAIjC,KAAEgC,EAAE6mL,kBAAkB5mL,GAAEA,GAAGD,EAAE+lL,iBAAiB/lL,EAAE+lL,eAAe,GAAG9lL,GAAGD,EAAE4lL,kBAAkB5lL,EAAE4lL,gBAAgB,GAClT,SAAStD,GAAGtiL,EAAEC,GAAGA,EAAED,EAAE8lL,mBAAmB9lL,EAAE8lL,iBAAiB7lL,GAAG,IAAIjC,EAAEgC,EAAE6nL,mBAAmB,IAAI7pL,IAAIiC,GAAGjC,EAAEgC,EAAE6nL,mBAAmB7nL,EAAE6mL,kBAAkB7mL,EAAEgmL,sBAAsB,EAAE/lL,GAAGD,EAAE6mL,oBAAoB7mL,EAAE6mL,kBAAkB5mL,EAAE,GAAGA,EAAED,EAAEgmL,wBAAwBhmL,EAAEgmL,sBAAsB/lL,IAAI,SAASomL,GAAGrmL,EAAEC,GAAG,IAAIjC,EAAEgC,EAAE4lL,iBAAmB,IAAI5nL,GAAGA,EAAEiC,KAAED,EAAE4lL,gBAAgB3lL,GAC5V,SAASopL,GAAGrpL,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIzI,EAAEqG,EAAE+I,QAAQhB,EAAEoyK,KAAKrzK,EAAEgzK,GAAGvnB,SAASxqJ,EAAEqyK,GAAGryK,EAAEpO,EAAEmN,GAAG/G,EAAE,GAAGhC,EAAE,CAAyBiC,EAAE,CAAC,GAAGugK,GAA9BxiK,EAAEA,EAAEm8K,uBAAkCn8K,GAAG,IAAIA,EAAEmG,IAAI,MAAMrH,MAAM+K,EAAE,MAAM,IAAI5J,EAAED,EAAE,EAAE,CAAC,OAAOC,EAAEkG,KAAK,KAAK,EAAElG,EAAEA,EAAE67J,UAAU5wJ,QAAQ,MAAMjJ,EAAE,KAAK,EAAE,GAAG+F,GAAE/H,EAAE0B,MAAM,CAAC1B,EAAEA,EAAE67J,UAAU4b,0CAA0C,MAAMz1K,GAAGhC,EAAEA,EAAE++J,aAAa,OAAO/+J,GAAG,MAAMnB,MAAM+K,EAAE,MAAO,GAAG,IAAI7J,EAAEmG,IAAI,CAAC,IAAIsD,EAAEzJ,EAAE2B,KAAK,GAAGqG,GAAEyB,GAAG,CAACzJ,EAAEu3K,GAAGv3K,EAAEyJ,EAAExJ,GAAG,MAAM+B,GAAGhC,EAAEC,OAAOD,EAAE82K,GAC3W,OAD8W,OAAO70K,EAAEiJ,QAAQjJ,EAAEiJ,QAAQlL,EAAEiC,EAAEihL,eAAeljL,GAAEiC,EAAEq5K,GAAGtxK,EAAEjB,IAAKyyK,QAAQ,CAACp5I,QAAQpgC,GACpe,QADueqC,OAAE,IAClfA,EAAE,KAAKA,KAAapC,EAAEjF,SAASqH,GAAGo3K,GAAG7/K,EAAEqG,GAAGq6K,GAAG1gL,EAAEoO,GAAUA,EAAE,SAASshL,GAAGtpL,GAAe,KAAZA,EAAEA,EAAEgJ,SAActH,MAAM,OAAO,KAAK,OAAO1B,EAAE0B,MAAMyC,KAAK,KAAK,EAA2B,QAAQ,OAAOnE,EAAE0B,MAAMo4J,WAAW,SAASyvB,GAAGvpL,EAAEC,GAAqB,QAAlBD,EAAEA,EAAE4gK,gBAAwB,OAAO5gK,EAAE6gK,YAAY7gK,EAAEqhL,UAAUphL,IAAID,EAAEqhL,UAAUphL,GAAG,SAASupL,GAAGxpL,EAAEC,GAAGspL,GAAGvpL,EAAEC,IAAID,EAAEA,EAAEygK,YAAY8oB,GAAGvpL,EAAEC,GACpV,SAASwpL,GAAGzpL,EAAEC,EAAEjC,GAA6B,IAAIqE,EAAE,IAAI+mL,GAAGppL,EAAEC,EAAzCjC,EAAE,MAAMA,IAAG,IAAKA,EAAE+1J,SAA4Bn6J,EAAEimL,GAAG,EAAE,KAAK,KAAK,IAAI5/K,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGoC,EAAE2G,QAAQpP,EAAEA,EAAEkgK,UAAUz3J,EAAE02K,GAAGn/K,GAAGoG,EAAE4nK,IAAIvlK,EAAE2G,QAAQhL,GAAG,IAAIiC,GAhO5J,SAAYD,EAAEC,GAAG,IAAIjC,EAAEuiK,GAAGtgK,GAAGmjK,GAAGhiK,SAAQ,SAASpB,GAAGuiK,GAAGviK,EAAEC,EAAEjC,MAAKqlK,GAAGjiK,SAAQ,SAASpB,GAAGuiK,GAAGviK,EAAEC,EAAEjC,MAgOiE0rL,CAAG1pL,EAAE,IAAIA,EAAEk0E,SAASl0E,EAAEA,EAAEmpJ,eAAextJ,KAAKguL,cAActnL,EACzN,SAASunL,GAAG5pL,GAAG,SAASA,GAAG,IAAIA,EAAEk0E,UAAU,IAAIl0E,EAAEk0E,UAAU,KAAKl0E,EAAEk0E,WAAW,IAAIl0E,EAAEk0E,UAAU,iCAAiCl0E,EAAE24G,YAChI,SAASkxE,GAAG7pL,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,IAAIoO,EAAEhK,EAAE2lL,oBAAoB,GAAG37K,EAAE,CAAC,IAAIjB,EAAEiB,EAAE2hL,cAAc,GAAG,mBAAoB/vL,EAAE,CAAC,IAAIqE,EAAErE,EAAEA,EAAE,WAAW,IAAIoG,EAAEspL,GAAGviL,GAAG9I,EAAEvG,KAAKsI,IAAIqpL,GAAGppL,EAAE8G,EAAE/G,EAAEpG,OAAO,CAAmD,GAAlDoO,EAAEhK,EAAE2lL,oBAD9B,SAAY3jL,EAAEC,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAED,EAAE,IAAIA,EAAEk0E,SAASl0E,EAAEi8C,gBAAgBj8C,EAAE04G,WAAW,OAAa,IAAIz4G,EAAEi0E,WAAWj0E,EAAE01F,aAAa,qBAAwB11F,EAAE,IAAI,IAAIjC,EAAEA,EAAEgC,EAAEosI,WAAWpsI,EAAEmF,YAAYnH,GAAG,OAAO,IAAIyrL,GAAGzpL,EAAE,EAAEC,EAAE,CAAC8zJ,SAAQ,QAAI,GACvK+1B,CAAG9rL,EAAEqE,GAAG0E,EAAEiB,EAAE2hL,cAAiB,mBAAoB/vL,EAAE,CAAC,IAAI6N,EAAE7N,EAAEA,EAAE,WAAW,IAAIoG,EAAEspL,GAAGviL,GAAGU,EAAE/P,KAAKsI,IAAIqnL,IAAG,WAAWgC,GAAGppL,EAAE8G,EAAE/G,EAAEpG,MAAK,OAAO0vL,GAAGviL,GAAG,SAASgjL,GAAG/pL,EAAEC,EAAEjC,GAAG,IAAIqE,EAAE,EAAEoP,UAAUtW,aAAQ,IAASsW,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAAC2gJ,SAASyJ,GAAG/4J,IAAI,MAAMT,EAAE,KAAK,GAAGA,EAAEpJ,SAAS+G,EAAEqiK,cAAcpiK,EAAE+7K,eAAeh+K,GAGpR,SAASgsL,GAAGhqL,EAAEC,GAAG,IAAIjC,EAAE,EAAEyT,UAAUtW,aAAQ,IAASsW,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIm4K,GAAG3pL,GAAG,MAAMnD,MAAM+K,EAAE,MAAM,OAAOkiL,GAAG/pL,EAAEC,EAAE,KAAKjC,GALpIyrL,GAAGjyL,UAAUkZ,OAAO,SAAS1Q,GAAGqpL,GAAGrpL,EAAErE,KAAKguL,cAAc,KAAK,OAAOF,GAAGjyL,UAAUyyL,QAAQ,WAAW,IAAIjqL,EAAErE,KAAKguL,cAAc1pL,EAAED,EAAEqiK,cAAcgnB,GAAG,KAAKrpL,EAAE,MAAK,WAAWC,EAAE2nK,IAAI,SAG1YnF,GAAG,SAASziK,GAAG,GAAG,KAAKA,EAAEmE,IAAI,CAAC,IAAIlE,EAAE43K,GAAGuC,KAAK,IAAI,KAAKE,GAAGt6K,EAAEC,GAAGupL,GAAGxpL,EAAEC,KAAKyiK,GAAG,SAAS1iK,GAAG,KAAKA,EAAEmE,MAAMm2K,GAAGt6K,EAAE,GAAGwpL,GAAGxpL,EAAE,KAAK2iK,GAAG,SAAS3iK,GAAG,GAAG,KAAKA,EAAEmE,IAAI,CAAC,IAAIlE,EAAEm6K,KAAoBE,GAAGt6K,EAAlBC,EAAEo6K,GAAGp6K,EAAED,EAAE,OAAcwpL,GAAGxpL,EAAEC,KAC1Ly5J,EAAG,SAAS15J,EAAEC,EAAEjC,GAAG,OAAOiC,GAAG,IAAK,QAAyB,GAAjBg+J,GAAGj+J,EAAEhC,GAAGiC,EAAEjC,EAAE3E,KAAQ,UAAU2E,EAAE2B,MAAM,MAAMM,EAAE,CAAC,IAAIjC,EAAEgC,EAAEhC,EAAEkH,YAAYlH,EAAEA,EAAEkH,WAAsF,IAA3ElH,EAAEA,EAAE+L,iBAAiB,cAAcnM,KAAK47C,UAAU,GAAGv5C,GAAG,mBAAuBA,EAAE,EAAEA,EAAEjC,EAAE7C,OAAO8E,IAAI,CAAC,IAAIoC,EAAErE,EAAEiC,GAAG,GAAGoC,IAAIrC,GAAGqC,EAAEo1F,OAAOz3F,EAAEy3F,KAAK,CAAC,IAAI79F,EAAEkuK,GAAGzlK,GAAG,IAAIzI,EAAE,MAAMkD,MAAM+K,EAAE,KAAK21J,GAAGn7J,GAAG47J,GAAG57J,EAAEzI,KAAK,MAAM,IAAK,WAAW+kK,GAAG3+J,EAAEhC,GAAG,MAAM,IAAK,SAAmB,OAAViC,EAAEjC,EAAEtE,QAAe6kK,GAAGv+J,IAAIhC,EAAEolI,SAASnjI,GAAE,KAAMg6J,EAAGmtB,GAC9ZltB,EAAG,SAASl6J,EAAEC,EAAEjC,EAAEqE,EAAEzI,GAAG,IAAIoO,EAAE5C,GAAEA,IAAG,EAAE,IAAI,OAAOqyK,GAAG,GAAGz3K,EAAE+C,KAAK,KAAK9C,EAAEjC,EAAEqE,EAAEzI,IAAI,QA3DH,KA2DWwL,GAAE4C,IAASmjB,OAAOgvI,EAAG,WA3DhC,IA2D8C,GAAF/0J,MAhD0R,WAAc,GAAG,OAAOigL,GAAG,CAAC,IAAIrlL,EAAEqlL,GAAGA,GAAG,KAAKrlL,EAAEoB,SAAQ,SAASpB,EAAEhC,GAAGqoL,GAAGroL,EAAEgC,GAAGyF,GAAEzH,MAAKmtB,MAgD3V++J,GAAK5D,OAAOlsB,EAAG,SAASp6J,EAAEC,GAAG,IAAIjC,EAAEoH,GAAEA,IAAG,EAAE,IAAI,OAAOpF,EAAEC,GAAG,QA3DzH,KA2DiImF,GAAEpH,IAASmtB,OAA8I,IACxVnrB,GAAOC,GADqVkqL,GAAG,CAACC,OAAO,CAACzmB,GAAGkE,GAAGC,GAAGtO,EAAGP,EAAGsP,GAAG,SAASvoK,GAAGmhK,GAAGnhK,EAAEsoK,KAAKvO,EAAGC,EAAGn9J,GAAG8kK,GAAG2kB,GAAG,CAACt9K,SAAQ,KACja/I,IAAPD,GAAyb,CAACqqL,wBAAwB/nB,GAAGgoB,WAAW,EAAEnsJ,QAAQ,UACpfosJ,oBAAoB,cADCF,wBAnBgE,SAAYrqL,GAAG,GAAG,oBAAqBs0E,+BAA+B,OAAM,EAAG,IAAIr0E,EAAEq0E,+BAA+B,GAAGr0E,EAAEuqL,aAAavqL,EAAEwqL,cAAc,OAAM,EAAG,IAAI,IAAIzsL,EAAEiC,EAAEyqL,OAAO1qL,GAAG4oL,GAAG,SAAS5oL,GAAG,IAAIC,EAAE0qL,kBAAkB3sL,EAAEgC,OAAE,EAAO,KAA0B,GAApBA,EAAEgJ,QAAQ03J,YAAe,MAAM9mK,MAAMupL,GAAG,SAASnjL,GAAG,IAAIC,EAAE2qL,qBAAqB5sL,EAAEgC,GAAG,MAAMpG,MAAM,MAAMyI,KAmBpXwoL,CAAG7nL,EAAE,GAAGhD,GAAE,CAAC8qL,kBAAkB,KAAKC,cAAc,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB7vB,EAAG/I,uBAAuB64B,wBAAwB,SAASnrL,GAAW,OAAO,QAAfA,EAAE+gK,GAAG/gK,IAAmB,KAAKA,EAAE85J,WAAWuwB,wBAAwB,SAASrqL,GAAG,OAAOC,GAAEA,GAAED,GAAG,MAAMorL,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,QACvZrpL,EAAQ6wJ,mDAAmDm3B,GAAGhoL,EAAQk1I,aAAa2yC,GAAG7nL,EAAQspL,YAAY,SAASzrL,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEk0E,SAAS,OAAOl0E,EAAE,IAAIC,EAAED,EAAEm6K,oBAAoB,QAAG,IAASl6K,EAAE,CAAC,GAAG,mBAAoBD,EAAE0Q,OAAO,MAAM5T,MAAM+K,EAAE,MAAM,MAAM/K,MAAM+K,EAAE,IAAItQ,OAAO4J,KAAKnB,KAA0C,OAA5BA,EAAE,QAAVA,EAAE+gK,GAAG9gK,IAAc,KAAKD,EAAE85J,WACvW33J,EAAQupL,UAAU,SAAS1rL,EAAEC,GAAG,GA9DwC,IA8DlC,GAAFmF,IAAe,MAAMtI,MAAM+K,EAAE,MAAM,IAAI7J,EAAEoH,GAAEA,IAAG,EAAE,IAAI,OAAOqyK,GAAG,GAAGz3K,EAAE+C,KAAK,KAAK9C,IAAI,QAAQmF,GAAEpH,EAAEmtB,OAAOhpB,EAAQ4xJ,QAAQ,SAAS/zJ,EAAEC,EAAEjC,GAAG,IAAI4rL,GAAG3pL,GAAG,MAAMnD,MAAM+K,EAAE,MAAM,OAAOgiL,GAAG,KAAK7pL,EAAEC,GAAE,EAAGjC,IAAImE,EAAQuO,OAAO,SAAS1Q,EAAEC,EAAEjC,GAAG,IAAI4rL,GAAG3pL,GAAG,MAAMnD,MAAM+K,EAAE,MAAM,OAAOgiL,GAAG,KAAK7pL,EAAEC,GAAE,EAAGjC,IACnTmE,EAAQwpL,uBAAuB,SAAS3rL,GAAG,IAAI4pL,GAAG5pL,GAAG,MAAMlD,MAAM+K,EAAE,KAAK,QAAO7H,EAAE2jL,sBAAqB0D,IAAG,WAAWwC,GAAG,KAAK,KAAK7pL,GAAE,GAAG,WAAWA,EAAE2jL,oBAAoB,KAAK3jL,EAAE4nK,IAAI,YAAS,IAAQzlK,EAAQypL,wBAAwBxE,GAAGjlL,EAAQ0pL,sBAAsB,SAAS7rL,EAAEC,GAAG,OAAO+pL,GAAGhqL,EAAEC,EAAE,EAAEwR,UAAUtW,aAAQ,IAASsW,UAAU,GAAGA,UAAU,GAAG,OACvVtP,EAAQ2pL,oCAAoC,SAAS9rL,EAAEC,EAAEjC,EAAEqE,GAAG,IAAIunL,GAAG5rL,GAAG,MAAMlB,MAAM+K,EAAE,MAAM,GAAG,MAAM7H,QAAG,IAASA,EAAEm6K,oBAAoB,MAAMr9K,MAAM+K,EAAE,KAAK,OAAOgiL,GAAG7pL,EAAEC,EAAEjC,GAAE,EAAGqE,IAAIF,EAAQg8B,QAAQ,W,6BChS/Lj/B,EAAOiD,QAAU,EAAQ,M;;;;;;;;GCMd,IAAI6F,EAAEjB,EAAE9I,EAAEwJ,EAAErL,EACzB,GAAG,oBAAqBnF,QAAQ,mBAAoB80L,eAAe,CAAC,IAAI1uL,EAAE,KAAKyJ,EAAE,KAAK1M,EAAE,WAAW,GAAG,OAAOiD,EAAE,IAAI,IAAI2C,EAAEmC,EAAQg0K,eAAe94K,GAAE,EAAG2C,GAAG3C,EAAE,KAAK,MAAM4C,GAAG,MAAM40E,WAAWz6E,EAAE,GAAG6F,IAAK4H,EAAEmL,KAAKqX,MAAMloB,EAAQg0K,aAAa,WAAW,OAAOnjK,KAAKqX,MAAMxiB,GAAGG,EAAE,SAAShI,GAAG,OAAO3C,EAAEw3E,WAAW7sE,EAAE,EAAEhI,IAAI3C,EAAE2C,EAAE60E,WAAWz6E,EAAE,KAAK2M,EAAE,SAAS/G,EAAEC,GAAG6G,EAAE+tE,WAAW70E,EAAEC,IAAIhC,EAAE,WAAW22E,aAAa9tE,IAAIW,EAAE,WAAW,OAAM,GAAIrL,EAAE+F,EAAQ6pL,wBAAwB,iBAAiB,CAAC,IAAIjmL,EAAE9O,OAAOypI,YAAY15H,EAAE/P,OAAO+b,KACnftL,EAAEzQ,OAAO49E,WAAWttE,EAAEtQ,OAAO29E,aAAa,GAAG,oBAAqB17E,QAAQ,CAAC,IAAI+N,EAAEhQ,OAAOyhI,qBAAqB,mBAAoBzhI,OAAOs+G,uBAAuBr8G,QAAQyI,MAAM,2IAA2I,mBAAoBsF,GAAG/N,QAAQyI,MAAM,0IAA0I,GAAG,iBACneoE,GAAG,mBAAoBA,EAAEskB,IAAIloB,EAAQg0K,aAAa,WAAW,OAAOpwK,EAAEskB,WAAW,CAAC,IAAIljB,EAAEH,EAAEqjB,MAAMloB,EAAQg0K,aAAa,WAAW,OAAOnvK,EAAEqjB,MAAMljB,GAAG,IAAIQ,GAAE,EAAGL,EAAE,KAAKkB,GAAG,EAAE5C,EAAE,EAAES,EAAE,EAAEoB,EAAE,WAAW,OAAOtF,EAAQg0K,gBAAgB9vK,GAAGjK,EAAE,aAAa+F,EAAQ6pL,wBAAwB,SAAShsL,GAAG,EAAEA,GAAG,IAAIA,EAAE9G,QAAQyI,MAAM,oHAAoHiE,EAAE,EAAE5F,EAAEiY,KAAK0C,MAAM,IAAI3a,GAAG,GAAG,IAAI6G,EAAE,IAAIklL,eAAejkL,EAAEjB,EAAEolL,MAAMplL,EAAEqlL,MAAMjmG,UACnf,WAAW,GAAG,OAAO3+E,EAAE,CAAC,IAAItH,EAAEmC,EAAQg0K,eAAe9vK,EAAErG,EAAE4F,EAAE,IAAI0B,GAAE,EAAGtH,GAAG8H,EAAE49E,YAAY,OAAO/9E,GAAE,EAAGL,EAAE,MAAM,MAAMrH,GAAG,MAAM6H,EAAE49E,YAAY,MAAMzlF,QAAS0H,GAAE,GAAIK,EAAE,SAAShI,GAAGsH,EAAEtH,EAAE2H,IAAIA,GAAE,EAAGG,EAAE49E,YAAY,QAAQ3+E,EAAE,SAAS/G,EAAEC,GAAGuI,EAAEd,GAAE,WAAW1H,EAAEmC,EAAQg0K,kBAAiBl2K,IAAIhC,EAAE,WAAWsJ,EAAEiB,GAAGA,GAAG,GAAG,SAAST,EAAE/H,EAAEC,GAAG,IAAIjC,EAAEgC,EAAE7E,OAAO6E,EAAEhH,KAAKiH,GAAGD,EAAE,OAAO,CAAC,IAAIqC,EAAErE,EAAE,IAAI,EAAEpE,EAAEoG,EAAEqC,GAAG,UAAG,IAASzI,GAAG,EAAEgO,EAAEhO,EAAEqG,IAA0B,MAAMD,EAA7BA,EAAEqC,GAAGpC,EAAED,EAAEhC,GAAGpE,EAAEoE,EAAEqE,GAAgB,SAAS2D,EAAEhG,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAC9c,SAASwH,EAAExH,GAAG,IAAIC,EAAED,EAAE,GAAG,QAAG,IAASC,EAAE,CAAC,IAAIjC,EAAEgC,EAAEN,MAAM,GAAG1B,IAAIiC,EAAE,CAACD,EAAE,GAAGhC,EAAEgC,EAAE,IAAI,IAAIqC,EAAE,EAAEzI,EAAEoG,EAAE7E,OAAOkH,EAAEzI,GAAG,CAAC,IAAIwI,EAAE,GAAGC,EAAE,GAAG,EAAEW,EAAEhD,EAAEoC,GAAGsD,EAAEtD,EAAE,EAAEI,EAAExC,EAAE0F,GAAG,QAAG,IAAS1C,GAAG,EAAE4E,EAAE5E,EAAEhF,QAAG,IAASwE,GAAG,EAAEoF,EAAEpF,EAAEQ,IAAIhD,EAAEqC,GAAGG,EAAExC,EAAE0F,GAAG1H,EAAEqE,EAAEqD,IAAI1F,EAAEqC,GAAGW,EAAEhD,EAAEoC,GAAGpE,EAAEqE,EAAED,OAAQ,WAAG,IAASI,GAAG,EAAEoF,EAAEpF,EAAExE,IAA0B,MAAMgC,EAA7BA,EAAEqC,GAAGG,EAAExC,EAAE0F,GAAG1H,EAAEqE,EAAEqD,IAAgB,OAAOzF,EAAE,OAAO,KAAK,SAAS2H,EAAE5H,EAAEC,GAAG,IAAIjC,EAAEgC,EAAEmsL,UAAUlsL,EAAEksL,UAAU,OAAO,IAAInuL,EAAEA,EAAEgC,EAAEnD,GAAGoD,EAAEpD,GAAG,IAAIoL,EAAE,GAAGG,EAAE,GAAGvC,EAAE,EAAE6C,EAAE,KAAKjC,EAAE,EAAES,GAAE,EAAG0B,GAAE,EAAGxB,GAAE,EACja,SAASm7C,EAAEviD,GAAG,IAAI,IAAIC,EAAE+F,EAAEoC,GAAG,OAAOnI,GAAG,CAAC,GAAG,OAAOA,EAAEjF,SAASwM,EAAEY,OAAQ,MAAGnI,EAAE4hI,WAAW7hI,GAAgD,MAA9CwH,EAAEY,GAAGnI,EAAEksL,UAAUlsL,EAAEw4K,eAAe1wK,EAAEE,EAAEhI,GAAcA,EAAE+F,EAAEoC,IAAI,SAAShD,EAAEpF,GAAa,GAAVoH,GAAE,EAAGm7C,EAAEviD,IAAO4I,EAAE,GAAG,OAAO5C,EAAEiC,GAAGW,GAAE,EAAGZ,EAAE3C,OAAO,CAAC,IAAIpF,EAAE+F,EAAEoC,GAAG,OAAOnI,GAAG8G,EAAE3B,EAAEnF,EAAE4hI,UAAU7hI,IACtP,SAASqF,EAAErF,EAAEC,GAAG2I,GAAE,EAAGxB,IAAIA,GAAE,EAAGnJ,KAAKiJ,GAAE,EAAG,IAAIlJ,EAAEyI,EAAE,IAAS,IAAL87C,EAAEtiD,GAAOyI,EAAE1C,EAAEiC,GAAG,OAAOS,MAAMA,EAAE+vK,eAAex4K,IAAID,IAAIyH,MAAM,CAAC,IAAIpF,EAAEqG,EAAE1N,SAAS,GAAG,OAAOqH,EAAE,CAACqG,EAAE1N,SAAS,KAAKyL,EAAEiC,EAAE0jL,cAAc,IAAIxyL,EAAEyI,EAAEqG,EAAE+vK,gBAAgBx4K,GAAGA,EAAEkC,EAAQg0K,eAAe,mBAAoBv8K,EAAE8O,EAAE1N,SAASpB,EAAE8O,IAAI1C,EAAEiC,IAAIT,EAAES,GAAGs6C,EAAEtiD,QAAQuH,EAAES,GAAGS,EAAE1C,EAAEiC,GAAG,GAAG,OAAOS,EAAE,IAAItG,GAAE,MAAO,CAAC,IAAIY,EAAEgD,EAAEoC,GAAG,OAAOpF,GAAG+D,EAAE3B,EAAEpC,EAAE6+H,UAAU5hI,GAAGmC,GAAE,EAAG,OAAOA,EAAE,QAAQsG,EAAE,KAAKjC,EAAEzI,EAAEkJ,GAAE,GACpZ,SAASqB,EAAEvI,GAAG,OAAOA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,WAAW,KAAK,EAAE,OAAO,IAAI,QAAQ,OAAO,KAAK,IAAIyF,EAAErJ,EAAE+F,EAAQ00K,sBAAsB,EAAE10K,EAAQo0K,2BAA2B,EAAEp0K,EAAQw0K,qBAAqB,EAAEx0K,EAAQiiK,wBAAwB,EAAEjiK,EAAQkqL,mBAAmB,KAAKlqL,EAAQ6iK,8BAA8B,EAAE7iK,EAAQ4zK,wBAAwB,SAAS/1K,GAAGA,EAAEhF,SAAS,MAAMmH,EAAQmqL,2BAA2B,WAAW1jL,GAAG1B,IAAI0B,GAAE,EAAGZ,EAAE3C,KACxclD,EAAQk0K,iCAAiC,WAAW,OAAO5vK,GAAGtE,EAAQoqL,8BAA8B,WAAW,OAAOvmL,EAAEiC,IAAI9F,EAAQqqL,cAAc,SAASxsL,GAAG,OAAOyG,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIxG,EAAE,EAAE,MAAM,QAAQA,EAAEwG,EAAE,IAAIzI,EAAEyI,EAAEA,EAAExG,EAAE,IAAI,OAAOD,IAAI,QAAQyG,EAAEzI,IAAImE,EAAQsqL,wBAAwB,aAAatqL,EAAQ8zK,sBAAsBxwK,EAAEtD,EAAQ0hK,yBAAyB,SAAS7jK,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIhC,EAAEyI,EAAEA,EAAEzG,EAAE,IAAI,OAAOC,IAAI,QAAQwG,EAAEzI,IAChemE,EAAQgiK,0BAA0B,SAASnkK,EAAEC,EAAEjC,GAAG,IAAIqE,EAAEF,EAAQg0K,eAAe,GAAG,iBAAkBn4K,GAAG,OAAOA,EAAE,CAAC,IAAIpE,EAAEoE,EAAEypJ,MAAM7tJ,EAAE,iBAAkBA,GAAG,EAAEA,EAAEyI,EAAEzI,EAAEyI,EAAErE,EAAE,iBAAkBA,EAAET,QAAQS,EAAET,QAAQgL,EAAEvI,QAAQhC,EAAEuK,EAAEvI,GAAGpG,EAAEyI,EAAyM,OAAjMrC,EAAE,CAACnD,GAAGgJ,IAAI7K,SAASiF,EAAEmsL,cAAcpsL,EAAE6hI,UAAUjoI,EAAE6+K,eAAvDz6K,EAAEpE,EAAEoE,EAAoEmuL,WAAW,GAAGvyL,EAAEyI,GAAGrC,EAAEmsL,UAAUvyL,EAAEmO,EAAEK,EAAEpI,GAAG,OAAOgG,EAAEiC,IAAIjI,IAAIgG,EAAEoC,KAAKhB,EAAEnJ,IAAImJ,GAAE,EAAGL,EAAE3B,EAAExL,EAAEyI,MAAMrC,EAAEmsL,UAAUnuL,EAAE+J,EAAEE,EAAEjI,GAAG4I,GAAG1B,IAAI0B,GAAE,EAAGZ,EAAE3C,KAAYrF,GAC3amC,EAAQ60K,qBAAqB,WAAW,IAAIh3K,EAAEmC,EAAQg0K,eAAe5zH,EAAEviD,GAAG,IAAIC,EAAE+F,EAAEiC,GAAG,OAAOhI,IAAIyI,GAAG,OAAOA,GAAG,OAAOzI,GAAG,OAAOA,EAAEjF,UAAUiF,EAAE4hI,WAAW7hI,GAAGC,EAAEw4K,eAAe/vK,EAAE+vK,gBAAgBhxK,KAAKtF,EAAQuqL,sBAAsB,SAAS1sL,GAAG,IAAIC,EAAEwG,EAAE,OAAO,WAAW,IAAIzI,EAAEyI,EAAEA,EAAExG,EAAE,IAAI,OAAOD,EAAE/D,MAAMN,KAAK8V,WAAW,QAAQhL,EAAEzI,M,cChB/TkB,EAAOiD,QAJP,SAAyB8Q,GACvB,GAAIjJ,MAAMsF,QAAQ2D,GAAM,OAAOA,GAIjC/T,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,cCyBxEzD,EAAOiD,QA9BP,SAA+B8Q,EAAK/X,GAClC,IAAIuU,EAAY,MAAPwD,EAAc,KAAyB,oBAAXxQ,QAA0BwQ,EAAIxQ,OAAOujG,WAAa/yF,EAAI,cAE3F,GAAU,MAANxD,EAAJ,CACA,IAIIk9K,EAAIC,EAJJC,EAAO,GACPC,GAAK,EACL33K,GAAK,EAIT,IACE,IAAK1F,EAAKA,EAAG/X,KAAKub,KAAQ65K,GAAMH,EAAKl9K,EAAGxE,QAAQkqE,QAC9C03G,EAAK7zL,KAAK2zL,EAAGjzL,QAETwB,GAAK2xL,EAAK1xL,SAAWD,GAH4B4xL,GAAK,IAK5D,MAAO7yL,GACPkb,GAAK,EACLy3K,EAAK3yL,EACL,QACA,IACO6yL,GAAsB,MAAhBr9K,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAI0F,EAAI,MAAMy3K,GAIlB,OAAOC,IAIT3tL,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,cC3BxEzD,EAAOiD,QAJP,WACE,MAAM,IAAI43F,UAAU,8IAItB76F,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,6BCIxE,IAAIoqL,EAAuB,EAAQ,KAEnC,SAASC,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3C9tL,EAAOiD,QAAU,WACf,SAASgrL,EAAKx8K,EAAOy8K,EAAUC,EAAe/yH,EAAUgzH,EAAcC,GACpE,GAAIA,IAAWR,EAAf,CAIA,IAAI9yL,EAAM,IAAI6C,MACZ,mLAKF,MADA7C,EAAIZ,KAAO,sBACLY,GAGR,SAASuzL,IACP,OAAOL,EAFTA,EAAKr3I,WAAaq3I,EAMlB,IAAIM,EAAiB,CACnBv0K,MAAOi0K,EACP15I,KAAM05I,EACN18K,KAAM08K,EACNt1K,OAAQs1K,EACRlqL,OAAQkqL,EACR99K,OAAQ89K,EACR5pE,OAAQ4pE,EAERt3I,IAAKs3I,EACLv5I,QAAS45I,EACTptJ,QAAS+sJ,EACTrR,YAAaqR,EACbvuE,WAAY4uE,EACZvjL,KAAMkjL,EACNh5I,SAAUq5I,EACVj6I,MAAOi6I,EACPhpJ,UAAWgpJ,EACXp6I,MAAOo6I,EACP3nH,MAAO2nH,EAEPE,eAAgBT,EAChBC,kBAAmBF,GAKrB,OAFAS,EAAet6I,UAAYs6I,EAEpBA,I,6BCnDTvuL,EAAOiD,QAFoB,gD,gBCT3B,IAAIkB,EAAiB,EAAQ,KAQ7BnE,EAAOiD,QANP,SAAwBwrL,EAAUC,GAChCD,EAASn2L,UAAYD,OAAOsL,OAAO+qL,EAAWp2L,WAC9Cm2L,EAASn2L,UAAUorC,YAAc+qJ,EACjCtqL,EAAesqL,EAAUC,IAI3B1uL,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,cCTxE,SAASS,EAAgBb,EAAGlF,GAO1B,OANA6B,EAAOiD,QAAUiB,EAAkB7L,OAAO8L,gBAAkB,SAAyBd,EAAGlF,GAEtF,OADAkF,EAAEe,UAAYjG,EACPkF,GAGTrD,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,EACjES,EAAgBb,EAAGlF,GAG5B6B,EAAOiD,QAAUiB,EACjBlE,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,mOCVxEzD,EAAOiD,QAAU,SAAU+I,GAC1B,OAAO40B,mBAAmB50B,GAAKvF,QAAQ,YAAY,SAAU3H,GAC5D,MAAO,IAAMA,EAAE8G,WAAW,GAAGsG,SAAS,IAAIovB,mB,6BCF5C,IACIqzJ,EAAgB,IAAIjxK,OADZ,eAC0B,MAClCkxK,EAAe,IAAIlxK,OAAO,kBAAoB,MAElD,SAASmxK,EAAiBC,EAAYzoL,GACrC,IAEC,OAAO06B,mBAAmB+tJ,EAAWvtL,KAAK,KACzC,MAAOxG,IAIT,GAA0B,IAAtB+zL,EAAW7yL,OACd,OAAO6yL,EAGRzoL,EAAQA,GAAS,EAGjB,IAAIy+B,EAAOgqJ,EAAW/sL,MAAM,EAAGsE,GAC3B2/B,EAAQ8oJ,EAAW/sL,MAAMsE,GAE7B,OAAOyE,MAAMxS,UAAUsI,OAAOpI,KAAK,GAAIq2L,EAAiB/pJ,GAAO+pJ,EAAiB7oJ,IAGjF,SAASlF,EAAOxtB,GACf,IACC,OAAOytB,mBAAmBztB,GACzB,MAAOvY,GAGR,IAFA,IAAIgjB,EAASzK,EAAM9D,MAAMm/K,GAEhB3yL,EAAI,EAAGA,EAAI+hB,EAAO9hB,OAAQD,IAGlC+hB,GAFAzK,EAAQu7K,EAAiB9wK,EAAQ/hB,GAAGuF,KAAK,KAE1BiO,MAAMm/K,GAGtB,OAAOr7K,GAyCTtT,EAAOiD,QAAU,SAAU8rL,GAC1B,GAA0B,iBAAfA,EACV,MAAM,IAAIl0F,UAAU,6DAA+Dk0F,EAAa,KAGjG,IAIC,OAHAA,EAAaA,EAAWtoL,QAAQ,MAAO,KAGhCs6B,mBAAmBguJ,GACzB,MAAOh0L,GAER,OAjDF,SAAkCuY,GAQjC,IANA,IAAI07K,EAAa,CAChB,SAAU,KACV,SAAU,MAGPx/K,EAAQo/K,EAAa19K,KAAKoC,GACvB9D,GAAO,CACb,IAECw/K,EAAWx/K,EAAM,IAAMuxB,mBAAmBvxB,EAAM,IAC/C,MAAOzU,GACR,IAAI2E,EAASohC,EAAOtxB,EAAM,IAEtB9P,IAAW8P,EAAM,KACpBw/K,EAAWx/K,EAAM,IAAM9P,GAIzB8P,EAAQo/K,EAAa19K,KAAKoC,GAI3B07K,EAAW,OAAS,IAIpB,IAFA,IAAI3rJ,EAAUhrC,OAAO4J,KAAK+sL,GAEjBhzL,EAAI,EAAGA,EAAIqnC,EAAQpnC,OAAQD,IAAK,CAExC,IAAI4H,EAAMy/B,EAAQrnC,GAClBsX,EAAQA,EAAM7M,QAAQ,IAAIiX,OAAO9Z,EAAK,KAAMorL,EAAWprL,IAGxD,OAAO0P,EAeC27K,CAAyBF,M,6BCzFlC,IAAIG,EAAO,EAAQ,KACfvtF,EAAS,EAAQ,KACjB1tF,EAAS,EAAQ,KACjB8+D,EAAQ,EAAQ,KAChBo8G,EAAS,EAAQ,KACjBC,EAAQ,EAAQ,KAGpBpvL,EAAOiD,QA8CP,SAASkyD,IACP,IAIIk6H,EAJAC,EAAY,GACZC,EAAeJ,IACf3tJ,EAAY,GACZguJ,GAAe,EAsBnB,OAlBAt5H,EAAU54D,KA2EV,SAAcsG,EAAKpJ,GACjB,GAAmB,iBAARoJ,EAET,OAAyB,IAArB2O,UAAUtW,QACZwzL,EAAe,OAAQJ,GACvB7tJ,EAAU59B,GAAOpJ,EACV07D,GAIDqwD,EAAI/tH,KAAKgpC,EAAW59B,IAAQ49B,EAAU59B,IAAS,KAIzD,GAAIA,EAGF,OAFA6rL,EAAe,OAAQJ,GACvB7tJ,EAAY59B,EACLsyD,EAIT,OAAO10B,GA7FT00B,EAAUw5H,OAASA,EAGnBx5H,EAAUo5H,UAAYA,EACtBp5H,EAAUzsD,IAmGV,SAAajP,GACX,IAAI6/C,EAIJ,GAFAo1I,EAAe,MAAOJ,GAElB70L,cAEG,GAAqB,mBAAVA,EAChBm1L,EAAU5yL,MAAM,KAAMwV,eACjB,IAAqB,iBAAV/X,EAOhB,MAAM,IAAIoD,MAAM,+BAAiCpD,EAAQ,KANrD,WAAYA,EACdo1L,EAAQp1L,GAERq1L,EAAUr1L,GAMV6/C,IACF7Y,EAAU6Y,SAAWpmC,EAAOutB,EAAU6Y,UAAY,GAAIA,IAGxD,OAAO6b,EAEP,SAAS25H,EAAUnwL,GACjBkwL,EAAQlwL,EAAOy2D,SAEXz2D,EAAO26C,WACTA,EAAWpmC,EAAOomC,GAAY,GAAI36C,EAAO26C,WAI7C,SAASnsB,EAAI1zB,GACX,GAAqB,mBAAVA,EACTm1L,EAAUn1L,OACL,IAAqB,iBAAVA,EAOhB,MAAM,IAAIoD,MAAM,+BAAiCpD,EAAQ,KANrD,WAAYA,EACdm1L,EAAU5yL,MAAM,KAAMvC,GAEtBq1L,EAAUr1L,IAOhB,SAASo1L,EAAQz5H,GACf,IAAIx7B,GAAS,EAEb,GAAIw7B,aAEG,IAAuB,iBAAZA,KAAwB,WAAYA,GAKpD,MAAM,IAAIv4D,MAAM,oCAAsCu4D,EAAU,KAJhE,OAASx7B,EAAQw7B,EAAQl6D,QACvBiyB,EAAIioC,EAAQx7B,KAOlB,SAASg1J,EAAUG,EAAQt1L,GACzB,IAAI8jJ,EAAQ1pE,EAAKk7G,GAEbxxC,GACEvrE,EAAMurE,EAAM,KAAOvrE,EAAMv4E,KAC3BA,EAAQyZ,GAAO,EAAMqqI,EAAM,GAAI9jJ,IAGjC8jJ,EAAM,GAAK9jJ,GAEX80L,EAAUx1L,KAAKiI,EAAMvJ,KAAK+Z,cAvKhC2jD,EAAUv3D,MAwLV,SAAe+1G,GACb,IACI/rB,EADAW,EAAO8lG,EAAM16E,GAOjB,GAJAg7E,IAEAK,EAAa,QADbpnG,EAASzyB,EAAUyyB,QAGfqnG,EAAQrnG,EAAQ,SAClB,OAAO,IAAIA,EAAOx2D,OAAOm3D,GAAOA,GAAM3qF,QAGxC,OAAOgqF,EAAOx2D,OAAOm3D,GAAOA,IAnM9BpzB,EAAU5b,UA4PV,SAAmBvvC,EAAM2pG,GACvB,IACIu7E,EADA3mG,EAAO8lG,EAAM16E,GAQjB,GALAg7E,IAEAQ,EAAe,YADfD,EAAW/5H,EAAU+5H,UAErBE,EAAWplL,GAEPilL,EAAQC,EAAU,WACpB,OAAO,IAAIA,EAASllL,EAAMu+E,GAAMt3C,UAGlC,OAAOi+I,EAASllL,EAAMu+E,IAxQxBpzB,EAAUo/B,IAAMA,EAChBp/B,EAAUG,QAuOV,SAAiBtrD,EAAMu+E,GACrB,IAAI5pF,EACA0nF,EAMJ,OAJAkO,EAAIvqF,EAAMu+E,GAMV,SAAc7mF,EAAO2zD,GACnBgxB,GAAW,EACX1nF,EAAS02D,EACT84H,EAAKzsL,MAPP2tL,EAAW,UAAW,MAAOhpG,GAEtB1nF,GA9OTw2D,EAAUm6H,QAAUA,EACpBn6H,EAAUo6H,YAySV,SAAqB57E,GACnB,IAAIprB,EACAlC,EAWJ,OATAsoG,IACAK,EAAa,cAAe75H,EAAUyyB,QACtCunG,EAAe,cAAeh6H,EAAU+5H,UAGxCI,EAFA/mG,EAAO8lG,EAAM16E,IAQb,SAAcjyG,GACZ2kF,GAAW,EACX8nG,EAAKzsL,MANP2tL,EAAW,cAAe,UAAWhpG,GAE9BkC,GAnTFpzB,EAGP,SAASA,IAIP,IAHA,IAAIq6H,EAAcp7H,IACdx6B,GAAS,IAEJA,EAAQ20J,EAAUrzL,QACzBs0L,EAAY9mL,IAAI1M,MAAM,KAAMuyL,EAAU30J,IAKxC,OAFA41J,EAAYjzL,KAAK2W,GAAO,EAAM,GAAIutB,IAE3B+uJ,EAUT,SAASb,IACP,IAAIpoK,EACAo5B,EAEJ,GAAI2uI,EACF,OAAOn5H,EAGT,OAASs5H,EAAcF,EAAUrzL,SAGb,KAFlBqrB,EAASgoK,EAAUE,IAER,MAIO,IAAdloK,EAAO,KACTA,EAAO,QAAKvrB,GAKa,mBAF3B2kD,EAAcp5B,EAAO,GAAGvqB,MAAMm5D,EAAW5uC,EAAOvlB,MAAM,MAGpDwtL,EAAa9lL,IAAIi3C,IAOrB,OAHA2uI,GAAS,EACTG,EAAchxI,IAEP0X,EAgHT,SAAS0e,EAAKk7G,GAGZ,IAFA,IAAIn1J,GAAS,IAEJA,EAAQ20J,EAAUrzL,QACzB,GAAIqzL,EAAU30J,GAAO,KAAOm1J,EAC1B,OAAOR,EAAU30J,GAwBvB,SAAS26D,EAAIvqF,EAAMu+E,EAAMxpF,GASvB,GARAqwL,EAAWplL,GACX2kL,IAEK5vL,GAAsB,mBAATwpF,IAChBxpF,EAAKwpF,EACLA,EAAO,OAGJxpF,EACH,OAAO,IAAIhC,QAAQ0yL,GAKrB,SAASA,EAASzyL,EAASC,GACzBuxL,EAAaj6F,IAAIvqF,EAAMqkL,EAAM9lG,IAE7B,SAAc7mF,EAAO2zD,EAAMkzB,GACzBlzB,EAAOA,GAAQrrD,EACXtI,EACFzE,EAAOyE,GACE1E,EACTA,EAAQq4D,GAERt2D,EAAG,KAAMs2D,EAAMkzB,MAZrBknG,EAAS,KAAM1wL,GA2DjB,SAASuwL,EAAQ37E,EAAK50G,GAKpB,GAJA4vL,IACAK,EAAa,UAAW75H,EAAUyyB,QAClCunG,EAAe,UAAWh6H,EAAU+5H,WAE/BnwL,EACH,OAAO,IAAIhC,QAAQ0yL,GAKrB,SAASA,EAASzyL,EAASC,GACzB,IAAIsrF,EAAO8lG,EAAM16E,GAEjB+7E,EAASn7F,IAAIp/B,EAAW,CAACozB,KAAMA,IAE/B,SAAc7mF,GACRA,EACFzE,EAAOyE,GACE1E,EACTA,EAAQurF,GAERxpF,EAAG,KAAMwpF,MAbfknG,EAAS,KAAM1wL,IA1VFq1D,GAAUu6H,SAE3B,IAAI3tL,EAAQ,GAAGA,MACXwkH,EAAM,GAAGhuH,eAGTk4L,EAAWtB,IACZ1lL,KAIH,SAAuBtL,EAAGwpJ,GACxBA,EAAIvxF,KAAOj4D,EAAEQ,MAAMgpJ,EAAIr+D,SAJtB7/E,KAOH,SAAqBtL,EAAGwpJ,EAAK57I,GAC3B5N,EAAEm3F,IAAIqyD,EAAIvxF,KAAMuxF,EAAIr+D,MAEpB,SAAc7mF,EAAO2zD,EAAMkzB,GACrB7mF,EACFsJ,EAAKtJ,IAELklJ,EAAIvxF,KAAOA,EACXuxF,EAAIr+D,KAAOA,EACXv9E,WAfHtC,KAoBH,SAA2BtL,EAAGwpJ,GAC5B,IAAIjoJ,EAASvB,EAAEm8C,UAAUqtG,EAAIvxF,KAAMuxF,EAAIr+D,MAEnC5pF,UAEyB,iBAAXA,GAAuBiiG,EAAOjiG,IAC1C,UAAWioJ,EAAIr+D,OACjBq+D,EAAIr+D,KAAK9uF,MAAQkF,GAGnBioJ,EAAIr+D,KAAKonG,SAAWhxL,GAEpBioJ,EAAIr+D,KAAK5pF,OAASA,MA4VtB,SAASswL,EAAQx1L,EAAOL,GACtB,MACmB,mBAAVK,GACPA,EAAMlC,YASV,SAAckC,GACZ,IAAIoJ,EACJ,IAAKA,KAAOpJ,EACV,OAAO,EAGT,OAAO,EAXJyH,CAAKzH,EAAMlC,YAAc6B,KAAQK,EAAMlC,WAe5C,SAASy3L,EAAa51L,EAAMwuF,GAC1B,GAAsB,mBAAXA,EACT,MAAM,IAAI/qF,MAAM,WAAazD,EAAO,sBAKxC,SAAS+1L,EAAe/1L,EAAM81L,GAC5B,GAAwB,mBAAbA,EACT,MAAM,IAAIryL,MAAM,WAAazD,EAAO,wBAKxC,SAASs1L,EAAet1L,EAAMk1L,GAC5B,GAAIA,EACF,MAAM,IAAIzxL,MACR,kBACEzD,EACA,qHAMR,SAASg2L,EAAWplL,GAClB,IAAKA,GAA6B,iBAAdA,EAAKtK,KACvB,MAAM,IAAI7C,MAAM,uBAAyBmN,EAAO,KAKpD,SAASqlL,EAAWj2L,EAAMw2L,EAAWvpG,GACnC,IAAKA,EACH,MAAM,IAAIxpF,MACR,IAAMzD,EAAO,0BAA4Bw2L,EAAY,e,6BCtc3D3wL,EAAOiD,QAEP,SAAclI,GACZ,GAAIA,EACF,MAAMA,I,6BCJV,IAAI4oC,EAAStrC,OAAOC,UAAUC,eAC1Bq4L,EAAQv4L,OAAOC,UAAU4T,SACzBzR,EAAiBpC,OAAOoC,eACxBo2L,EAAOx4L,OAAO8lK,yBAEd/tJ,EAAU,SAAiB2D,GAC9B,MAA6B,mBAAlBjJ,MAAMsF,QACTtF,MAAMsF,QAAQ2D,GAGK,mBAApB68K,EAAMp4L,KAAKub,IAGfkyH,EAAgB,SAAuB/1H,GAC1C,IAAKA,GAA2B,oBAApB0gL,EAAMp4L,KAAK0X,GACtB,OAAO,EAGR,IASItM,EATAktL,EAAoBntJ,EAAOnrC,KAAK0X,EAAK,eACrC6gL,EAAmB7gL,EAAIwzB,aAAexzB,EAAIwzB,YAAYprC,WAAaqrC,EAAOnrC,KAAK0X,EAAIwzB,YAAYprC,UAAW,iBAE9G,GAAI4X,EAAIwzB,cAAgBotJ,IAAsBC,EAC7C,OAAO,EAMR,IAAKntL,KAAOsM,GAEZ,YAAsB,IAARtM,GAAuB+/B,EAAOnrC,KAAK0X,EAAKtM,IAInD6iK,EAAc,SAAqBhmI,EAAQ7gC,GAC1CnF,GAAmC,cAAjBmF,EAAQzF,KAC7BM,EAAegmC,EAAQ7gC,EAAQzF,KAAM,CACpCE,YAAY,EACZD,cAAc,EACdI,MAAOoF,EAAQk+D,SACfv5B,UAAU,IAGX9D,EAAO7gC,EAAQzF,MAAQyF,EAAQk+D,UAK7BkzH,EAAc,SAAqB9gL,EAAK/V,GAC3C,GAAa,cAATA,EAAsB,CACzB,IAAKwpC,EAAOnrC,KAAK0X,EAAK/V,GACrB,OACM,GAAI02L,EAGV,OAAOA,EAAK3gL,EAAK/V,GAAMK,MAIzB,OAAO0V,EAAI/V,IAGZ6F,EAAOiD,QAAU,SAASgR,IACzB,IAAIrU,EAASzF,EAAMkF,EAAKqhC,EAAMuwJ,EAAaxgK,EACvCgQ,EAASluB,UAAU,GACnBvW,EAAI,EACJC,EAASsW,UAAUtW,OACnBkqI,GAAO,EAaX,IAVsB,kBAAX1lG,IACV0lG,EAAO1lG,EACPA,EAASluB,UAAU,IAAM,GAEzBvW,EAAI,IAES,MAAVykC,GAAqC,iBAAXA,GAAyC,mBAAXA,KAC3DA,EAAS,IAGHzkC,EAAIC,IAAUD,EAGpB,GAAe,OAFf4D,EAAU2S,UAAUvW,IAInB,IAAK7B,KAAQyF,EACZP,EAAM2xL,EAAYvwJ,EAAQtmC,GAItBsmC,KAHJC,EAAOswJ,EAAYpxL,EAASzF,MAKvBgsI,GAAQzlG,IAASulG,EAAcvlG,KAAUuwJ,EAAc7gL,EAAQswB,MAC9DuwJ,GACHA,GAAc,EACdxgK,EAAQpxB,GAAO+Q,EAAQ/Q,GAAOA,EAAM,IAEpCoxB,EAAQpxB,GAAO4mI,EAAc5mI,GAAOA,EAAM,GAI3ConK,EAAYhmI,EAAQ,CAAEtmC,KAAMA,EAAM2jE,SAAU7pD,EAAOkyH,EAAM11G,EAAOiQ,WAGtC,IAATA,GACjB+lI,EAAYhmI,EAAQ,CAAEtmC,KAAMA,EAAM2jE,SAAUp9B,KAQjD,OAAOD,I,6BCjHRzgC,EAAOiD,QAAUzI,IAChB,GAA8C,oBAA1CnC,OAAOC,UAAU4T,SAAS1T,KAAKgC,GAClC,OAAO,EAGR,MAAMlC,EAAYD,OAAOs+J,eAAen8J,GACxC,OAAqB,OAAdlC,GAAsBA,IAAcD,OAAOC,Y,6BCNnD,IAAIq8G,EAAO,EAAQ,KAEnB30G,EAAOiD,QAAUksL,EAEjBA,EAAOx6E,KAAOA,EAEd,IAAI5yG,EAAQ,GAAGA,MAGf,SAASotL,IACP,IAAI+B,EAAM,GACNC,EAAa,CAEjB,IAMA,WACE,IAAIx2J,GAAS,EACTrnB,EAAQvR,EAAMvJ,KAAK+Z,UAAW,GAAI,GAClC0jE,EAAO1jE,UAAUA,UAAUtW,OAAS,GAExC,GAAoB,mBAATg6E,EACT,MAAM,IAAIr4E,MAAM,2CAA6Cq4E,GAM/D,SAASlqE,EAAKhR,GACZ,IAAIvB,EAAK03L,IAAMv2J,GACX4/E,EAASx4G,EAAMvJ,KAAK+Z,UAAW,GAC/B+U,EAASizF,EAAOx4G,MAAM,GACtB9F,EAASqX,EAAMrX,OACf4oB,GAAO,EAEX,GAAI9pB,EACFk7E,EAAKl7E,OADP,CAMA,OAAS8pB,EAAM5oB,GACO,OAAhBqrB,EAAOzC,SAAiC9oB,IAAhBurB,EAAOzC,KACjCyC,EAAOzC,GAAOvR,EAAMuR,IAIxBvR,EAAQgU,EAGJ9tB,EACFm7G,EAAKn7G,EAAIuS,GAAMhP,MAAM,KAAMuW,GAE3B2iE,EAAKl5E,MAAM,KAAM,CAAC,MAAM6D,OAAO0S,KA5BnCvH,EAAKhP,MAAM,KAAM,CAAC,MAAM6D,OAAO0S,KAdjC,IAgDA,SAAa9Z,GACX,GAAkB,mBAAPA,EACT,MAAM,IAAIoE,MAAM,uCAAyCpE,GAK3D,OAFA03L,EAAIp3L,KAAKN,GAEF23L,IArDT,OAAOA,I,6BChBT,IAAIpvL,EAAQ,GAAGA,MAEf/B,EAAOiD,QAKP,SAAczJ,EAAIsC,GAChB,IAAIs1L,EAEJ,OAEA,WACE,IAEI1xL,EAFA66G,EAASx4G,EAAMvJ,KAAK+Z,UAAW,GAC/BzW,EAAWtC,EAAGyC,OAASs+G,EAAOt+G,OAG9BH,GACFy+G,EAAOzgH,KAAKm8E,GAGd,IACEv2E,EAASlG,EAAGuD,MAAM,KAAMw9G,GACxB,MAAO93G,GAMP,GAAI3G,GAAYs1L,EACd,MAAM3uL,EAGR,OAAOwzE,EAAKxzE,GAGT3G,IACC4D,GAAiC,mBAAhBA,EAAO7E,KAC1B6E,EAAO7E,KAAKA,EAAMo7E,GACTv2E,aAAkB9B,MAC3Bq4E,EAAKv2E,GAEL7E,EAAK6E,KAMX,SAASu2E,IACFm7G,IACHA,GAAU,EAEVt1L,EAASiB,MAAM,KAAMwV,YAMzB,SAAS1X,EAAKL,GACZy7E,EAAK,KAAMz7E,M,6BC3DfwF,EAAOiD,QAAU,EAAQ,M,6BCAzB,IAAIouL,EAAW,EAAQ,KACnBC,EAAQ,EAAQ,KAEpBtxL,EAAOiD,QAAUquL,EAEjBA,EAAMh5L,UAAU0/E,QAMhB,SAAiB0R,EAAQjiB,EAAU8pH,GACjC,IAAIv5G,EAAU,IAAIq5G,EAAS3nG,EAAQjiB,EAAU8pH,GAEzC90L,KAAK0mC,OACP60C,EAAQ79E,KAAOsC,KAAK0mC,KAAO,IAAM60C,EAAQ79E,KACzC69E,EAAQsR,KAAO7sF,KAAK0mC,MAOtB,OAJA60C,EAAQw5G,OAAQ,EAEhB/0L,KAAKg1L,SAAS33L,KAAKk+E,GAEZA,GAjBTs5G,EAAMh5L,UAAU09E,KA+BhB,WACE,IAAIgC,EAAUv7E,KAAKu7E,QAAQj7E,MAAMN,KAAM8V,WAIvC,OAFAylE,EAAQw5G,MAAQ,KAETx5G,GAnCTs5G,EAAMh5L,UAAUo5L,KAoBhB,WACE,IAAI15G,EAAUv7E,KAAKu7E,QAAQj7E,MAAMN,KAAM8V,WAIvC,MAFAylE,EAAQw5G,OAAQ,EAEVx5G,I,6BChCR,IAAI19B,EAAY,EAAQ,KAKxB,SAASq3I,KAHT3xL,EAAOiD,QAAUouL,EAIjBM,EAAkBr5L,UAAYsF,MAAMtF,UACpC+4L,EAAS/4L,UAAY,IAAIq5L,EAGzB,IAAIl8J,EAAQ47J,EAAS/4L,UAgBrB,SAAS+4L,EAAS3nG,EAAQjiB,EAAU8pH,GAClC,IAAInhK,EACAspB,EACA0hB,EAEoB,iBAAbqM,IACT8pH,EAAS9pH,EACTA,EAAW,MAGbr3C,EAuCF,SAAqBmhK,GACnB,IACI52J,EADAj7B,EAAS,CAAC,KAAM,MAGE,iBAAX6xL,KAGM,KAFf52J,EAAQ42J,EAAO13L,QAAQ,MAGrB6F,EAAO,GAAK6xL,GAEZ7xL,EAAO,GAAK6xL,EAAOxvL,MAAM,EAAG44B,GAC5Bj7B,EAAO,GAAK6xL,EAAOxvL,MAAM44B,EAAQ,KAIrC,OAAOj7B,EAtDCkyL,CAAYL,GACpB73I,EAAQY,EAAUmtB,IAAa,MAE/BrM,EAAW,CACTzhB,MAAO,CAACxvC,KAAM,KAAMC,OAAQ,MAC5B0vC,IAAK,CAAC3vC,KAAM,KAAMC,OAAQ,OAIxBq9D,GAAYA,EAASA,WACvBA,EAAWA,EAASA,UAGlBA,IAEEA,EAAS9tB,OACXyhB,EAAWqM,EACXA,EAAWA,EAAS9tB,OAGpByhB,EAASzhB,MAAQ8tB,GAIjBiiB,EAAOzxE,QACTxb,KAAKwb,MAAQyxE,EAAOzxE,MACpByxE,EAASA,EAAO1R,SAGlBv7E,KAAKu7E,QAAU0R,EACfjtF,KAAKtC,KAAOu/C,EACZj9C,KAAKitF,OAASA,EACdjtF,KAAK0N,KAAOs9D,EAAWA,EAASt9D,KAAO,KACvC1N,KAAK2N,OAASq9D,EAAWA,EAASr9D,OAAS,KAC3C3N,KAAK2+D,SAAWA,EAChB3+D,KAAKo/B,OAASzL,EAAM,GACpB3zB,KAAKo1L,OAASzhK,EAAM,GA5DtBqF,EAAM6zD,KAAO,GACb7zD,EAAMt7B,KAAO,GACbs7B,EAAMi0D,OAAS,GACfj0D,EAAMuiD,QAAU,GAChBviD,EAAMxd,MAAQ,GACdwd,EAAM+7J,MAAQ,KACd/7J,EAAMrrB,OAAS,KACfqrB,EAAMtrB,KAAO,M,6BCnBb,IAAIhM,EAAI,EAAQ,KACZ2zL,EAAO,EAAQ,KACfnwF,EAAS,EAAQ,KAErB3hG,EAAOiD,QAAUquL,EAEjB,IAAI/qE,EAAM,GAAGhuH,eAKT0V,EAAQ,CAAC,UAAW,OAAQ,WAAY,OAAQ,UAAW,WA6B/D,SAASqjL,EAAM1xL,GACb,IAAImX,EACA4jB,EAEJ,GAAK/6B,GAEE,GAAuB,iBAAZA,GAAwB+hG,EAAO/hG,GAC/CA,EAAU,CAAC8wL,SAAU9wL,QAChB,GAAI,YAAaA,GAAW,aAAcA,EAC/C,OAAOA,OAJPA,EAAU,GAOZ,KAAMnD,gBAAgB60L,GACpB,OAAO,IAAIA,EAAM1xL,GAWnB,IARAnD,KAAKa,KAAO,GACZb,KAAKg1L,SAAW,GAChBh1L,KAAKw/D,QAAU,GACfx/D,KAAKs1L,IAAMD,EAAKC,MAGhBp3J,GAAS,IAEAA,EAAQ1sB,EAAMhS,QACrB8a,EAAO9I,EAAM0sB,GAET4rF,EAAI/tH,KAAKoH,EAASmX,KACpBta,KAAKsa,GAAQnX,EAAQmX,IAKzB,IAAKA,KAAQnX,EACPqO,EAAMpU,QAAQkd,GAAQ,IACxBta,KAAKsa,GAAQnX,EAAQmX,IA2E3B,SAASi7K,EAAWC,EAAM93L,GACxB,GAAI83L,GAAQA,EAAKp4L,QAAQsE,EAAE+zL,MAAQ,EACjC,MAAM,IAAIt0L,MACR,IAAMzD,EAAO,uCAAyCgE,EAAE+zL,IAAM,KAMpE,SAASC,EAAeF,EAAM93L,GAC5B,IAAK83L,EACH,MAAM,IAAIr0L,MAAM,IAAMzD,EAAO,qBAKjC,SAASi4L,EAAWjvJ,EAAMhpC,GACxB,IAAKgpC,EACH,MAAM,IAAIvlC,MAAM,YAAczD,EAAO,mCA3JzCm3L,EAAMh5L,UAAU4T,SAoIhB,SAAkB6/E,GAChB,OAAQtvF,KAAKi0L,UAAY,IAAIxkL,SAAS6/E,IAlIxC1zF,OAAOoC,eAAe62L,EAAMh5L,UAAW,OAAQ,CAACgC,IAgEhD,WACE,OAAOmC,KAAKw/D,QAAQx/D,KAAKw/D,QAAQhgE,OAAS,IAjEkB1B,IAoE9D,SAAiB4oC,GACfgvJ,EAAehvJ,EAAM,QAEjB1mC,KAAK0mC,OAASA,GAChB1mC,KAAKw/D,QAAQniE,KAAKqpC,MArEtB9qC,OAAOoC,eAAe62L,EAAMh5L,UAAW,UAAW,CAChDgC,IAwEF,WACE,MAA4B,iBAAdmC,KAAK0mC,KAAoBhlC,EAAEk0L,QAAQ51L,KAAK0mC,WAAQpnC,GAxE9DxB,IA2EF,SAAoB83L,GAClBD,EAAW31L,KAAK0mC,KAAM,WACtB1mC,KAAK0mC,KAAOhlC,EAAEoD,KAAK8wL,GAAW,GAAI51L,KAAK61L,aAzEzCj6L,OAAOoC,eAAe62L,EAAMh5L,UAAW,WAAY,CACjDgC,IA2EF,WACE,MAA4B,iBAAdmC,KAAK0mC,KAAoBhlC,EAAEm0L,SAAS71L,KAAK0mC,WAAQpnC,GA3E/DxB,IA8EF,SAAqB+3L,GACnBH,EAAeG,EAAU,YACzBN,EAAWM,EAAU,YACrB71L,KAAK0mC,KAAOhlC,EAAEoD,KAAK9E,KAAK41L,SAAW,GAAIC,MA7EzCj6L,OAAOoC,eAAe62L,EAAMh5L,UAAW,UAAW,CAChDgC,IA+EF,WACE,MAA4B,iBAAdmC,KAAK0mC,KAAoBhlC,EAAEo0L,QAAQ91L,KAAK0mC,WAAQpnC,GA/E9DxB,IAkFF,SAAoBg4L,GAIlB,GAHAP,EAAWO,EAAS,WACpBH,EAAW31L,KAAK0mC,KAAM,WAElBovJ,EAAS,CACX,GAA8B,KAA1BA,EAAQ3sL,WAAW,GACrB,MAAM,IAAIhI,MAAM,iCAGlB,GAAI20L,EAAQ14L,QAAQ,IAAK,IAAM,EAC7B,MAAM,IAAI+D,MAAM,0CAIpBnB,KAAK0mC,KAAOhlC,EAAEoD,KAAK9E,KAAK41L,QAAS51L,KAAK+1L,MAAQD,GAAW,QA5F3Dl6L,OAAOoC,eAAe62L,EAAMh5L,UAAW,OAAQ,CAACgC,IA+FhD,WACE,MAA4B,iBAAdmC,KAAK0mC,KACfhlC,EAAEm0L,SAAS71L,KAAK0mC,KAAM1mC,KAAK81L,cAC3Bx2L,GAlGwDxB,IAqG9D,SAAiBi4L,GACfL,EAAeK,EAAM,QACrBR,EAAWQ,EAAM,QACjB/1L,KAAK0mC,KAAOhlC,EAAEoD,KAAK9E,KAAK41L,SAAW,GAAIG,GAAQ/1L,KAAK81L,SAAW,S,6BCyHjE,SAASxyI,EAAU5c,GACjB,IAAIsvJ,EACAj4L,EAiBJ,OAfA43L,EAAWjvJ,GAEXsvJ,EAAkC,KAAvBtvJ,EAAKv9B,WAAW,IAG3BpL,EAcF,SAAyB2oC,EAAMuvJ,GAC7B,IAKIz3I,EACA03I,EANAjzL,EAAS,GACTkzL,EAAoB,EACpBC,GAAa,EACbC,EAAO,EACPn4J,GAAS,EAIb,OAASA,GAASwI,EAAKlnC,QAAQ,CAC7B,GAAI0+B,EAAQwI,EAAKlnC,OACfg/C,EAAO9X,EAAKv9B,WAAW+0B,OAClB,IAAa,KAATsgB,EACT,MAEAA,EAAO,GAGT,GAAa,KAATA,EAAuB,CACzB,GAAI43I,IAAcl4J,EAAQ,GAAc,IAATm4J,QAExB,GAAID,IAAcl4J,EAAQ,GAAc,IAATm4J,EAAY,CAChD,GACEpzL,EAAOzD,OAAS,GACM,IAAtB22L,GACyC,KAAzClzL,EAAOkG,WAAWlG,EAAOzD,OAAS,IACO,KAAzCyD,EAAOkG,WAAWlG,EAAOzD,OAAS,GAElC,GAAIyD,EAAOzD,OAAS,GAIlB,IAHA02L,EAAiBjzL,EAAO+rF,YAAY,QAGb/rF,EAAOzD,OAAS,EAAG,CACpC02L,EAAiB,GACnBjzL,EAAS,GACTkzL,EAAoB,IAEpBlzL,EAASA,EAAOqC,MAAM,EAAG4wL,GACzBC,EAAoBlzL,EAAOzD,OAAS,EAAIyD,EAAO+rF,YAAY,MAG7DonG,EAAYl4J,EACZm4J,EAAO,EACP,eAEG,GAAIpzL,EAAOzD,OAAQ,CACxByD,EAAS,GACTkzL,EAAoB,EACpBC,EAAYl4J,EACZm4J,EAAO,EACP,SAIAJ,IACFhzL,EAASA,EAAOzD,OAASyD,EAAS,MAAQ,KAC1CkzL,EAAoB,QAGlBlzL,EAAOzD,OACTyD,GAAU,IAAMyjC,EAAKphC,MAAM8wL,EAAY,EAAGl4J,GAE1Cj7B,EAASyjC,EAAKphC,MAAM8wL,EAAY,EAAGl4J,GAGrCi4J,EAAoBj4J,EAAQk4J,EAAY,EAG1CA,EAAYl4J,EACZm4J,EAAO,OACW,KAAT73I,GAAyB63I,GAAQ,EAC1CA,IAEAA,GAAQ,EAIZ,OAAOpzL,EA3FCqzL,CAAgB5vJ,GAAOsvJ,IAEpBx2L,QAAWw2L,IACpBj4L,EAAQ,KAGNA,EAAMyB,QAA+C,KAArCknC,EAAKv9B,WAAWu9B,EAAKlnC,OAAS,KAChDzB,GAAS,KAGJi4L,EAAW,IAAMj4L,EAAQA,EAoFlC,SAAS43L,EAAWjvJ,GAClB,GAAoB,iBAATA,EACT,MAAM,IAAI03D,UACR,mCAAqCn8F,KAAK47C,UAAUnX,IA7T1DlgC,EAAQqvL,SAMR,SAAkBnvJ,EAAM64D,GACtB,IAEIrhE,EACAq4J,EACAC,EACAC,EALAv5I,EAAQ,EACRG,GAAO,EAMX,QAAY/9C,IAARigG,GAAoC,iBAARA,EAC9B,MAAM,IAAInB,UAAU,mCAMtB,GAHAu3F,EAAWjvJ,GACXxI,EAAQwI,EAAKlnC,YAEDF,IAARigG,IAAsBA,EAAI//F,QAAU+/F,EAAI//F,OAASknC,EAAKlnC,OAAQ,CAChE,KAAO0+B,KACL,GAA+B,KAA3BwI,EAAKv9B,WAAW+0B,IAGlB,GAAIs4J,EAAc,CAChBt5I,EAAQhf,EAAQ,EAChB,YAEOmf,EAAM,IAGfm5I,GAAe,EACfn5I,EAAMnf,EAAQ,GAIlB,OAAOmf,EAAM,EAAI,GAAK3W,EAAKphC,MAAM43C,EAAOG,GAG1C,GAAIkiD,IAAQ74D,EACV,MAAO,GAGT6vJ,GAAoB,EACpBE,EAAWl3F,EAAI//F,OAAS,EAExB,KAAO0+B,KACL,GAA+B,KAA3BwI,EAAKv9B,WAAW+0B,IAGlB,GAAIs4J,EAAc,CAChBt5I,EAAQhf,EAAQ,EAChB,YAGEq4J,EAAmB,IAGrBC,GAAe,EACfD,EAAmBr4J,EAAQ,GAGzBu4J,GAAY,IAEV/vJ,EAAKv9B,WAAW+0B,KAAWqhE,EAAIp2F,WAAWstL,KACxCA,EAAW,IAGbp5I,EAAMnf,IAKRu4J,GAAY,EACZp5I,EAAMk5I,IAMVr5I,IAAUG,EACZA,EAAMk5I,EACGl5I,EAAM,IACfA,EAAM3W,EAAKlnC,QAGb,OAAOknC,EAAKphC,MAAM43C,EAAOG,IAvF3B72C,EAAQovL,QA0FR,SAAiBlvJ,GACf,IAAI2W,EACAq5I,EACAx4J,EAIJ,GAFAy3J,EAAWjvJ,IAENA,EAAKlnC,OACR,MAAO,IAGT69C,GAAO,EACPnf,EAAQwI,EAAKlnC,OAGb,OAAS0+B,GACP,GAA+B,KAA3BwI,EAAKv9B,WAAW+0B,IAClB,GAAIw4J,EAAgB,CAClBr5I,EAAMnf,EACN,YAEQw4J,IAEVA,GAAiB,GAIrB,OAAOr5I,EAAM,EACc,KAAvB3W,EAAKv9B,WAAW,GACd,IACA,IACM,IAARk0C,GAAoC,KAAvB3W,EAAKv9B,WAAW,GAC7B,KACAu9B,EAAKphC,MAAM,EAAG+3C,IA1HpB72C,EAAQsvL,QA6HR,SAAiBpvJ,GACf,IAMIgwJ,EACAl4I,EACAtgB,EARAy4J,GAAY,EACZC,EAAY,EACZv5I,GAAO,EAGPw5I,EAAc,EAKlBlB,EAAWjvJ,GAEXxI,EAAQwI,EAAKlnC,OAEb,KAAO0+B,KAGL,GAAa,MAFbsgB,EAAO9X,EAAKv9B,WAAW+0B,IAanBmf,EAAM,IAGRq5I,GAAiB,EACjBr5I,EAAMnf,EAAQ,GAGH,KAATsgB,EAEEm4I,EAAW,EACbA,EAAWz4J,EACc,IAAhB24J,IACTA,EAAc,GAEPF,GAAY,IAGrBE,GAAe,QAzBf,GAAIH,EAAgB,CAClBE,EAAY14J,EAAQ,EACpB,MA2BN,GACEy4J,EAAW,GACXt5I,EAAM,GAEU,IAAhBw5I,GAEiB,IAAhBA,GAAqBF,IAAat5I,EAAM,GAAKs5I,IAAaC,EAAY,EAEvE,MAAO,GAGT,OAAOlwJ,EAAKphC,MAAMqxL,EAAUt5I,IAzL9B72C,EAAQ1B,KA4LR,WACE,IACIgyL,EADA54J,GAAS,EAGb,OAASA,EAAQpoB,UAAUtW,QACzBm2L,EAAW7/K,UAAUooB,IAEjBpoB,UAAUooB,KACZ44J,OACax3L,IAAXw3L,EACIhhL,UAAUooB,GACV44J,EAAS,IAAMhhL,UAAUooB,IAInC,YAAkB5+B,IAAXw3L,EAAuB,IAAMxzI,EAAUwzI,IA1MhDtwL,EAAQivL,IAAM,K,6BCpDdjvL,EAAQ8uL,IAER,WACE,MAAO,M,6BCNT/xL,EAAOiD,QAIP,SAAerD,GACb,IAAIs2E,EAAOz5E,KAEXA,KAAKksF,OAEL,SAAe+rB,GACb,OAAO8+E,EACL9+E,EACAr8G,OAAOwmC,OAAO,GAAIq3C,EAAK54E,KAAK,YAAasC,EAAS,CAIhD6zL,WAAYv9G,EAAK54E,KAAK,wBAA0B,GAChDo2L,gBAAiBx9G,EAAK54E,KAAK,2BAA6B,QAfhE,IAAIk2L,EAAe,EAAQ,M,6BCF3BxzL,EAAOiD,QAAU,EAAQ,M,6BCAzBjD,EAAOiD,QAeP,SAAsBzI,EAAOuxF,EAAUnsF,GACb,iBAAbmsF,IACTnsF,EAAUmsF,EACVA,OAAWhwF,GAGb,OAQF,SAAkB6D,GAChB,IAAIy6C,EAAWz6C,GAAW,GACtB6X,EA8vBN,SAAmBA,EAAQg8K,GACzB,IAAI94J,GAAS,EAEb,OAASA,EAAQ84J,EAAWx3L,QAC1B03L,EAAUl8K,EAAQg8K,EAAW94J,IAG/B,OAAOljB,EArwBMm8K,CACX,CACEp9H,WAAY,GACZq9H,eAAgB,CACd,WACA,WACA,UACA,YACA,UAGFn1I,MAAO,CACLo1I,SAAUjmF,EAAOpB,GACjBsnF,iBAAkBC,EAClBC,cAAeD,EACfE,WAAYrmF,EAAOtU,GACnB46F,WAAYtmF,GA4pBlB,WACE,MAAO,CAACptG,KAAM,aAAc1G,SAAU,OA5pBlCq6L,gBAAiBJ,EACjBK,mBAAoBL,EACpBM,WAAYzmF,EAAO0mF,GACnBC,oBAAqB7yF,EACrB8yF,oBAAqB9yF,EACrB+yF,aAAc7mF,EAAO0mF,EAAU5yF,GAC/BgzF,SAAU9mF,GA6pBhB,WACE,MAAO,CAACptG,KAAM,aAAcjG,MAAO,MA9pBJmnG,GAC3BizF,aAAcZ,EACd12L,KAAM02L,EACNa,cAAeb,EACfn8H,WAAYg2C,GA6pBlB,WACE,MAAO,CACLptG,KAAM,aACNq0L,WAAY,GACZjsJ,MAAO,KACPd,MAAO,KACP61B,IAAK,OAlqBHm3H,4BAA6BpzF,EAC7BqzF,sBAAuBrzF,EACvBszF,sBAAuBtzF,EACvBuzF,SAAUrnF,GAmqBhB,WACE,MAAO,CAACptG,KAAM,WAAY1G,SAAU,OAnqBhCo7L,gBAAiBtnF,EAAOunF,GACxBC,kBAAmBxnF,EAAOunF,GAC1BE,SAAUznF,EAAOzU,EAAMuI,GACvB4zF,aAAcvB,EACdwB,SAAU3nF,EAAOzU,EAAMuI,GACvB8zF,aAAczB,EACd17F,MAAOuV,GA4qBb,WACE,MAAO,CAACptG,KAAM,QAASsnC,MAAO,KAAM61B,IAAK,GAAIqhB,IAAK,SA5qB9Cp2C,MAAO84D,EACP8K,KAAMoB,EAAOpB,GACbipF,SAAU7nF,GA2rBhB,SAAkBn0F,GAChB,MAAO,CACLjZ,KAAM,WACNk1L,OAAQj8K,EAAMk8K,QACdxhF,QAAS,KACTr6G,SAAU,OA/rBR87L,cAoXN,SAA8Bn8K,GACxBo8K,EAAQ,iCACVr5L,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG09C,MAAQn5B,SACxC/jB,KAAKopG,eAAensF,GACpB,IAGFuvF,EAAQ,iCA1XN8sF,YAAaloF,EAAO7qG,GA+W1B,WACEimG,EAAQ,+BAA+B,MA/WnC+sF,cAAenoF,EAAO7qG,GACtB4oG,UAAWiC,GAgsBjB,WACE,MAAO,CAACptG,KAAM,YAAa1G,SAAU,OAhsBjCk8L,UAwkBN,WACEhtF,EAAQ,gBAAiB,cAxkBrBitF,gBAAiBv0F,EACjBw0F,0BAA2Bx0F,EAC3By0F,oBAAqBz0F,EACrB00F,cAAexoF,EAAOtU,GACtB+8F,OAAQzoF,GA8rBd,WACE,MAAO,CAACptG,KAAM,SAAU1G,SAAU,OA9rB9B+vH,cAAejc,GAqsBrB,WACE,MAAO,CAACptG,KAAM,qBAnsBZm+C,KAAM,CACJs1I,WAAYqC,IACZC,mBAmaN,SAAkC98K,GAC3Bjd,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGoO,QACrC5N,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGoO,MAAQ5N,KAAKopG,eAC7CnsF,GACAzd,SAtaA63L,SAAUyC,IACVtC,cAumBN,SAA6Bv6K,GAC3B+8K,EAAWj+L,KAAKiE,KAAMid,GACtBjd,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG2hE,IAChC,UAAYnhE,KAAKopG,eAAensF,IAzmB9Bq6K,iBAimBN,SAAgCr6K,GAC9B+8K,EAAWj+L,KAAKiE,KAAMid,GACtBjd,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG2hE,IAAMnhE,KAAKopG,eAAensF,IAlmBxDy6K,WAAYoC,IACZG,qBAAsBD,EACtBE,oCAAqCC,EACrCC,gCAAiCD,EACjCE,wBAskBN,SAAuCp9K,GACrC,IAEIlf,EACAs4F,EAHAx1F,EAAOb,KAAKopG,eAAensF,GAC3BjZ,EAAOq1L,EAAQ,0BAIfr1L,GACFjG,EAAQu8L,EACNz5L,EACS,oCAATmD,EAA6C,GAAK,IAGpDwoG,EAAQ,2BAERzuG,EAAQsmC,EAAOxjC,IAGjBw1F,EAAOr2F,KAAKwb,MAAMzX,OACbhG,OAASA,EACds4F,EAAKrrB,SAAS3tB,IAAM4hD,EAAMhiF,EAAMogC,MAxlB5Bw6I,WAAYiC,GAwXlB,WACE,IAAIj5L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGzB,MAAQ8C,EAAKmJ,QAC7C,2BACA,IAGFwiG,EAAQ,qBA9XJ+tF,gBAgXN,WAEE,GAAIlB,EAAQ,kBAAmB,OAC/Br5L,KAAKklG,SACLsH,EAAQ,kBAAkB,IAnXtBurF,oBAqWN,WACE,IAAIl3L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGm3B,KAAO91B,GAtWrCm3L,oBAyWN,WACE,IAAIn3L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGmsF,KAAO9qF,GA1WrCu3L,cAAe4B,EACf/B,aAAc6B,GA6XpB,WACE,IAAIj5L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGzB,MAAQ8C,KA9XtCq3L,SAAU4B,GAiehB,WACE,IAAIj5L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGzB,MAAQ8C,KAletCs3L,aAAc6B,EACdn5L,KAAMm5L,EACN5+H,WAAY0+H,IACZxB,4BA2YN,WACE,IAAIz3L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG2hE,IAAMtgE,GA5YpC03L,sBA4XN,SAAqCt7K,GAEnC,IAAImvB,EAAQpsC,KAAKwvF,SACjBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG4sC,MAAQA,EAC1CpsC,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG64L,WAAa5vF,EAC7CzoG,KAAKopG,eAAensF,IACpBnK,eAjYE0lL,sBAoYN,WACE,IAAI33L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG8rC,MAAQzqC,GArYtC43L,SAAUqB,IACVpB,gBAAiBoB,EAAOU,GACxB5B,kBAAmBkB,EAAOU,GAC1B3B,SAAUiB,GA6chB,WACE,IAAIj5L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGzB,MAAQ8C,KA9ctCi4L,aAAckB,EACdjB,SAAUe,GAgdhB,WACE,IAAIj5L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGzB,MAAQ8C,KAjdtCm4L,aAAcgB,EACdn+F,MAAOi+F,GA0eb,WACE,IAAIvsL,EAAUvN,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAGzC65L,EAAQ,gBACV9rL,EAAQvJ,MAAQ,YAChBuJ,EAAQktL,cAAgBpB,EAAQ,kBAAoB,kBAC7C9rL,EAAQ4zD,WACR5zD,EAAQ+9B,eAER/9B,EAAQ8qL,kBACR9qL,EAAQ6+B,aACR7+B,EAAQktL,eAGjBjuF,EAAQ,oBAxfJpgE,MAigBN,WACE,IAAIsuJ,EAAW16L,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAC1CzB,EAAQiC,KAAKwvF,SAEjBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG4sC,MAAQruC,EAG1CyuG,EAAQ,eAAe,GAEwB,SAA3CxsG,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGwE,KACpChE,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGlC,SAAWo9L,EAASp9L,SAEtD0C,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGgjF,IAAMzkF,GA5gBtC6kH,UA0fN,SAAyB3lG,GACvBjd,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG64L,WAAa5vF,EAC7CzoG,KAAKopG,eAAensF,IACpBnK,eA5fE6nL,WA4aN,SAA0B19K,GACxB,IAAI1P,EAAUvN,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAG7C,GAAI65L,EAAQ,eAMV,OALA9rL,EAAQjQ,SAASiQ,EAAQjQ,SAASkC,OAAS,GAAGwrE,SAAS3tB,IAAM4hD,EAC3DhiF,EAAMogC,UAGRmvD,EAAQ,gBAKP6sF,EAAQ,iCACTr+K,EAAOo8K,eAAeh6L,QAAQmQ,EAAQvJ,OAAS,IAE/CuzL,EAAYx7L,KAAKiE,KAAMid,GACvB+8K,EAAWj+L,KAAKiE,KAAMid,KA7bpB+yF,KAAM8pF,GAodZ,WACE,IAAIvsL,EAAUvN,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAGzC65L,EAAQ,gBACV9rL,EAAQvJ,MAAQ,YAChBuJ,EAAQktL,cAAgBpB,EAAQ,kBAAoB,kBAC7C9rL,EAAQ4zD,WACR5zD,EAAQ+9B,eAER/9B,EAAQ8qL,kBACR9qL,EAAQ6+B,aACR7+B,EAAQktL,eAGjBjuF,EAAQ,oBAleJysF,SAAUa,IACVR,YAAaQ,IACbP,cAAeO,IACf3qF,UAAW2qF,IACXL,gBA2hBN,SAA+Bx8K,GAC7B,IAAImvB,EAAQpsC,KAAKwvF,SACjBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG4sC,MAAQA,EAC1CpsC,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG64L,WAAa5vF,EAC7CzoG,KAAKopG,eAAensF,IACpBnK,cACF05F,EAAQ,gBAAiB,SAhiBrBktF,0BAwgBN,WACE,IAAI74L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG2hE,IAAMtgE,GAzgBpC84L,oBA4gBN,WACE,IAAI94L,EAAOb,KAAKwvF,SAChBxvF,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAG8rC,MAAQzqC,GA7gBtC+5L,SAghBN,WACEpuF,EAAQ,gBAhhBJotF,cAAeE,GA0YrB,WACEttF,EAAQ,mCA1YJquF,0BAoYN,SAAyC59K,GACvCjd,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGoO,MACa,KAA7C5N,KAAKopG,eAAensF,GAAO9T,WAAW,GAAY,EAAI,GArYpD2xL,kBA+XN,WACEtuF,EAAQ,gCAAgC,IA/XpCqtF,OAAQC,IACRzsE,cAAeysE,MAInBl8I,EAASq5I,iBAAmB,IAG1Bp2L,EAAO,GAEX,OAEA,SAAiBu1F,GACf,IAKIp5B,EACA+9H,EANAphI,EAAO,CAAC31D,KAAM,OAAQ1G,SAAU,IAEhC09L,EAAa,GACbC,EAAY,GACZ/8J,GAAS,EAIT3wB,EAAU,CACZiO,MARU,CAACm+C,GASXqhI,WAAYA,EACZhgL,OAAQA,EACRinC,MAAOA,EACPE,KAAMA,EACN+iD,OAAQA,EACR1V,OAAQA,EACRgd,QAASA,EACT6sF,QAASA,GAGX,OAASn7J,EAAQk4D,EAAO52F,QAIM,gBAA1B42F,EAAOl4D,GAAO,GAAGl6B,MACS,kBAA1BoyF,EAAOl4D,GAAO,GAAGl6B,OAEQ,UAArBoyF,EAAOl4D,GAAO,GAChB+8J,EAAU59L,KAAK6gC,IAEf68J,EAAYE,EAAUl3L,IAAIm6B,GAC1BA,EAAQg9J,EAAY9kG,EAAQ2kG,EAAW78J,KAK7CA,GAAS,EAET,OAASA,EAAQk4D,EAAO52F,QACtBw9D,EAAUhiD,EAAOo7E,EAAOl4D,GAAO,IAE3B4rF,EAAI/tH,KAAKihE,EAASo5B,EAAOl4D,GAAO,GAAGl6B,OACrCg5D,EAAQo5B,EAAOl4D,GAAO,GAAGl6B,MAAMjI,KAC7BqmC,EAAO,CAACgnE,eAAgBhT,EAAOl4D,GAAO,GAAGkrE,gBAAiB77F,GAC1D6oF,EAAOl4D,GAAO,IAKpB,GAAI88J,EAAWx7L,OACb,MAAM,IAAI2B,MACR,oCACE65L,EAAWA,EAAWx7L,OAAS,GAAGwE,KAClC,MACAm3L,EAAkB,CAChBj+I,MAAO89I,EAAWA,EAAWx7L,OAAS,GAAG09C,MACzCG,IAAK29I,EAAWA,EAAWx7L,OAAS,GAAG69C,MAEzC,mBAKNsc,EAAKqR,SAAW,CACd9tB,MAAO+hD,EACL7I,EAAO52F,OAAS42F,EAAO,GAAG,GAAGl5C,MAAQ,CAACxvC,KAAM,EAAGC,OAAQ,EAAGylB,OAAQ,IAGpEiqB,IAAK4hD,EACH7I,EAAO52F,OACH42F,EAAOA,EAAO52F,OAAS,GAAG,GAAG69C,IAC7B,CAAC3vC,KAAM,EAAGC,OAAQ,EAAGylB,OAAQ,KAIrC8K,GAAS,EACT,OAASA,EAAQljB,EAAO++C,WAAWv6D,QACjCm6D,EAAO3+C,EAAO++C,WAAW77B,GAAOy7B,IAASA,EAG3C,OAAOA,GAGT,SAASuhI,EAAY9kG,EAAQl5C,EAAO19C,GAYlC,IAXA,IAGIy5L,EACAmC,EACAtwE,EACAuwE,EACA32J,EACA42J,EACAC,EATAr9J,EAAQgf,EAAQ,EAChBs+I,GAAoB,EACpBC,GAAa,IASRv9J,GAAS1+B,GAwChB,GApCoB,mBAHpBklC,EAAQ0xD,EAAOl4D,IAGP,GAAGl6B,MACS,gBAAlB0gC,EAAM,GAAG1gC,MACS,eAAlB0gC,EAAM,GAAG1gC,MAEQ,UAAb0gC,EAAM,GACR82J,IAEAA,IAGFD,OAAWj8L,GACgB,oBAAlBolC,EAAM,GAAG1gC,KACD,UAAb0gC,EAAM,MAENu0J,GACCsC,GACAC,GACAF,IAEDA,EAAsBp9J,GAGxBq9J,OAAWj8L,GAGK,eAAlBolC,EAAM,GAAG1gC,MACS,kBAAlB0gC,EAAM,GAAG1gC,MACS,mBAAlB0gC,EAAM,GAAG1gC,MACS,mBAAlB0gC,EAAM,GAAG1gC,MACS,6BAAlB0gC,EAAM,GAAG1gC,OAITu3L,OAAWj8L,IAITk8L,GACa,UAAb92J,EAAM,IACY,mBAAlBA,EAAM,GAAG1gC,OACY,IAAtBw3L,GACc,SAAb92J,EAAM,KACa,kBAAlBA,EAAM,GAAG1gC,MACU,gBAAlB0gC,EAAM,GAAG1gC,MACb,CACA,GAAIi1L,EAAU,CAIZ,IAHAmC,EAAYl9J,EACZ4sF,OAAYxrH,EAEL87L,KAGL,GACwB,gBAHxBC,EAAYjlG,EAAOglG,IAGP,GAAGp3L,MACS,oBAAtBq3L,EAAU,GAAGr3L,KACb,CACA,GAAqB,SAAjBq3L,EAAU,GAAe,SAEzBvwE,IACF10B,EAAO00B,GAAW,GAAG9mH,KAAO,kBAC5By3L,GAAa,GAGfJ,EAAU,GAAGr3L,KAAO,aACpB8mH,EAAYswE,OACP,GACiB,eAAtBC,EAAU,GAAGr3L,MACS,qBAAtBq3L,EAAU,GAAGr3L,MACS,+BAAtBq3L,EAAU,GAAGr3L,MACS,qBAAtBq3L,EAAU,GAAGr3L,MACS,mBAAtBq3L,EAAU,GAAGr3L,KAIb,MAKFs3L,KACExwE,GAAawwE,EAAsBxwE,KAErCmuE,EAASE,SAAU,GAIrBF,EAAS57I,IAAM4hD,EACb6rB,EAAY10B,EAAO00B,GAAW,GAAG5tE,MAAQxY,EAAM,GAAG2Y,KAGpD+4C,EAAOt2F,OAAOgrH,GAAa5sF,EAAO,EAAG,CAAC,OAAQ+6J,EAAUv0J,EAAM,KAC9DxG,IACA1+B,IAIoB,mBAAlBklC,EAAM,GAAG1gC,OACXi1L,EAAW,CACTj1L,KAAM,WACNm1L,SAAS,EACTj8I,MAAO+hD,EAAMv6D,EAAM,GAAGwY,QAGxBk5C,EAAOt2F,OAAOo+B,EAAO,EAAG,CAAC,QAAS+6J,EAAUv0J,EAAM,KAClDxG,IACA1+B,IACA87L,OAAsBh8L,EACtBi8L,GAAW,GAMjB,OADAnlG,EAAOl5C,GAAO,GAAGi8I,QAAUsC,EACpBj8L,EAGT,SAASgtG,EAAQrlG,EAAKpJ,GACpB8C,EAAKsG,GAAOpJ,EAGd,SAASs7L,EAAQlyL,GACf,OAAOtG,EAAKsG,GAGd,SAAS83F,EAAMv4F,GACb,MAAO,CAACgH,KAAMhH,EAAEgH,KAAMC,OAAQjH,EAAEiH,OAAQylB,OAAQ1sB,EAAE0sB,QAGpD,SAASg+E,EAAOlqG,EAAQw0L,GACtB,OAEA,SAAcz+K,GACZglC,EAAMlmD,KAAKiE,KAAMkH,EAAO+V,GAAQA,GAC5By+K,GAAKA,EAAI3/L,KAAKiE,KAAMid,IAI5B,SAASioF,IACPllG,KAAKwb,MAAMne,KAAK,CAAC2G,KAAM,WAAY1G,SAAU,KAG/C,SAAS2kD,EAAM3zC,EAAM2O,GAKnB,OAJAjd,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGlC,SAASD,KAAKiR,GAChDtO,KAAKwb,MAAMne,KAAKiR,GAChBtO,KAAKg7L,WAAW39L,KAAK4f,GACrB3O,EAAK08D,SAAW,CAAC9tB,MAAO+hD,EAAMhiF,EAAMigC,QAC7B5uC,EAGT,SAASwrL,EAAO4B,GACd,OAEA,SAAez+K,GACTy+K,GAAKA,EAAI3/L,KAAKiE,KAAMid,GACxBklC,EAAKpmD,KAAKiE,KAAMid,IAIpB,SAASklC,EAAKllC,GACZ,IAAI3O,EAAOtO,KAAKwb,MAAMzX,MAClBpC,EAAO3B,KAAKg7L,WAAWj3L,MAE3B,IAAKpC,EACH,MAAM,IAAIR,MACR,iBACE8b,EAAMjZ,KACN,MACAm3L,EAAkB,CAACj+I,MAAOjgC,EAAMigC,MAAOG,IAAKpgC,EAAMogC,MAClD,oBAEC,GAAI17C,EAAKqC,OAASiZ,EAAMjZ,KAC7B,MAAM,IAAI7C,MACR,iBACE8b,EAAMjZ,KACN,MACAm3L,EAAkB,CAACj+I,MAAOjgC,EAAMigC,MAAOG,IAAKpgC,EAAMogC,MAClD,0BACA17C,EAAKqC,KACL,MACAm3L,EAAkB,CAACj+I,MAAOv7C,EAAKu7C,MAAOG,IAAK17C,EAAK07C,MAChD,aAKN,OADA/uC,EAAK08D,SAAS3tB,IAAM4hD,EAAMhiF,EAAMogC,KACzB/uC,EAGT,SAASkhF,IACP,OAAO//E,EAASzP,KAAKwb,MAAMzX,OA8F7B,SAASwzL,EAAYt6K,GACnB,IAAI48E,EAAW75F,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGlC,SAC7C+4F,EAAOwD,EAASA,EAASr6F,OAAS,GAEjC62F,GAAsB,SAAdA,EAAKryF,QAEhBqyF,EA+PK,CAACryF,KAAM,OAAQjG,MAAO,KA9PtBitE,SAAW,CAAC9tB,MAAO+hD,EAAMhiF,EAAMigC,QACpCl9C,KAAKwb,MAAMxb,KAAKwb,MAAMhc,OAAS,GAAGlC,SAASD,KAAKg5F,IAGlDr2F,KAAKwb,MAAMne,KAAKg5F,GAGlB,SAAS2jG,EAAW/8K,GAClB,IAAIo5E,EAAOr2F,KAAKwb,MAAMzX,MACtBsyF,EAAKt4F,OAASiC,KAAKopG,eAAensF,GAClCo5E,EAAKrrB,SAAS3tB,IAAM4hD,EAAMhiF,EAAMogC,KAyBlC,SAASm9I,IACPhuF,EAAQ,eAAe,GAuGzB,SAAS2tF,EAA+Bl9K,GACtCuvF,EAAQ,yBAA0BvvF,EAAMjZ,MA4C1C,SAAS8zL,IACP,MAAO,CAAC9zL,KAAM,OAAQ2yB,KAAM,KAAMg1D,KAAM,KAAM5tF,MAAO,IAqBvD,SAAS++F,IACP,MAAO,CAAC94F,KAAM,UAAW4J,WAAOtO,EAAWhC,SAAU,IAGvD,SAASq7L,IACP,MAAO,CAAC30L,KAAM,SAGhB,SAAS24F,IACP,MAAO,CAAC34F,KAAM,OAAQjG,MAAO,IAO/B,SAASiyG,IACP,MAAO,CAAChsG,KAAM,OAAQsnC,MAAO,KAAM61B,IAAK,GAAI7jE,SAAU,IAGxD,SAASiJ,EAAK0W,GACZ,MAAO,CACLjZ,KAAM,OACN23L,QAAwB,gBAAf1+K,EAAMjZ,KACfk5C,MAAO,KACPg8I,OAAQj8K,EAAMk8K,QACd77L,SAAU,KA1uBPs+L,CAASz4L,EAATy4L,CACLC,EACE1yF,EAAOhmG,GAASV,WAAWm6E,MAAMk/G,IAAe/9L,EAAOuxF,GAAU,OAnBvE,IAAI7/E,EAAW,EAAQ,KACnB2yB,EAAS,EAAQ,IACjB0nF,EAAM,EAAQ,KACdrhB,EAAsB,EAAQ,KAC9B6xF,EAAc,EAAQ,KACtBnxF,EAAS,EAAQ,KACjB2yF,EAAe,EAAQ,KACvBD,EAAc,EAAQ,KACtBx3J,EAAS,EAAQ,KACjB82J,EAAoB,EAAQ,KA0xBhC,SAASjE,EAAUl8K,EAAQk8K,GACzB,IAAI/vL,EACAkhC,EAEJ,IAAKlhC,KAAO+vL,EACV7uJ,EAAOyhF,EAAI/tH,KAAKif,EAAQ7T,GAAO6T,EAAO7T,GAAQ6T,EAAO7T,GAAO,GAEhD,mBAARA,GAAoC,eAARA,EAC9B6T,EAAO7T,GAAO,GAAGhD,OAAOkkC,EAAM6uJ,EAAU/vL,IAExCvL,OAAOwmC,OAAOiG,EAAM6uJ,EAAU/vL,M,6BC5yBpC,SAASsI,EAASnB,GAChB,OACGA,IACEA,EAAKvQ,OACJuQ,EAAKk0E,KACLl0E,EAAKg9B,OACJ,aAAch9B,GAAQyqF,EAAIzqF,EAAKhR,WAC/B,WAAYgR,GAAQyqF,EAAIzqF,KAC7B,GAIJ,SAASyqF,EAAIluE,GAIX,IAHA,IAAI5nB,EAAS,GACTi7B,GAAS,IAEJA,EAAQrT,EAAOrrB,QACtByD,EAAOi7B,GAASzuB,EAASob,EAAOqT,IAGlC,OAAOj7B,EAAO6B,KAAK,IAzBrBvB,EAAOiD,QAAUiJ,G,6BCAjB,IAAIgiE,EAAe,EAAQ,IAuB3BluE,EAAOiD,QArBP,SAAqBzI,EAAO42B,GAC1B,IAAI6pB,EAAOz6B,SAAShmB,EAAO42B,GAE3B,OAEE6pB,EAAO,GACE,KAATA,GACCA,EAAO,IAAMA,EAAO,IACpBA,EAAO,KAAOA,EAAO,KACrBA,EAAO,OAASA,EAAO,OACvBA,EAAO,OAASA,EAAO,OACL,QAAX,MAAPA,IACkB,QAAX,MAAPA,IACDA,EAAO,QAEA,IAGFizB,EAAajzB,K,6BCpBtB,IAAIhxC,EAAU,EAAQ,KAClB/K,EAAW,EAAQ,KACnBs5L,EAAO,EAAQ,KACf79G,EAAO,EAAQ,KACf89G,EAAoB,EAAQ,KAC5BC,EAAkB,EAAQ,KAC1BC,EAAW,EAAQ,KACnB/zF,EAAa,EAAQ,KA0BzB5kG,EAAOiD,QAxBP,SAAerD,GACb,IACIgmG,EAAS,CACXxuD,QAAS,GACTwtD,WAAY6zF,EACV,CAAC7zF,GAAYhkG,OAAO+3L,GAJT/4L,GAAW,IAIgB6zL,cAExCxpL,QAAStG,EAAOsG,GAChB/K,SAAUyE,EAAOzE,GACjBs5L,KAAM70L,EAAO60L,GACbroL,OAAQxM,EAAOg3E,EAAKxqE,QACpBwqE,KAAMh3E,EAAOg3E,EAAKA,OAEpB,OAAOirB,EAEP,SAASjiG,EAAOi1L,GACd,OAEA,SAAiB9hL,GACf,OAAO4hL,EAAgB9yF,EAAQgzF,EAAa9hL,O,6BC5BlDze,OAAOoC,eAAewI,EAAS,aAAc,CAACzI,OAAO,IAErD,IAAI83F,EAAqB,EAAQ,IAC7BC,EAAe,EAAQ,IAEvBE,EAEJ,SAA2Bn0C,GACzB,IAKIzE,EALAg/I,EAAev6I,EAAQynD,QACzBtpG,KAAKmpG,OAAOhB,WAAWk0F,gBAOzB,SAAoC79I,GAClC,GAAa,OAATA,EAEF,YADAqD,EAAQK,QAAQ1D,GAOlB,OAHAqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACN2zC,EAAaj0C,EAASu6I,EAAc,iBAG7C,SAA0B59I,GAExB,OADAqD,EAAQI,MAAM,aACP6iD,EAAUtmD,MAhBnB,OAAO49I,EAmBP,SAASt3F,EAAUtmD,GACjB,IAAIvhC,EAAQ4kC,EAAQI,MAAM,YAAa,CACrCsoE,YAAa,OACbntE,SAAUA,IAQZ,OALIA,IACFA,EAAS9tC,KAAO2N,GAGlBmgC,EAAWngC,EACJpc,EAAK29C,GAGd,SAAS39C,EAAK29C,GACZ,OAAa,OAATA,GACFqD,EAAQM,KAAK,aACbN,EAAQM,KAAK,kBACbN,EAAQK,QAAQ1D,IAIdq3C,EAAmBr3C,IACrBqD,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,aACN2iD,IAGTjjD,EAAQK,QAAQ1D,GACT39C,KAIX2F,EAAQwvF,SAAWA,G,6BClEnBp6F,OAAOoC,eAAewI,EAAS,aAAc,CAACzI,OAAO,IAErD,IAAI83F,EAAqB,EAAQ,IAC7BC,EAAe,EAAQ,IACvBC,EAAmB,EAAQ,IAE3BC,EAQJ,SAA4Bn0C,GAC1B,IAOIy6I,EACAC,EACAC,EATA/iH,EAAOz5E,KACPwb,EAAQ,GACRihL,EAAY,EACZC,EAAmB,CACrB1mG,SAoHF,SAAyBn0C,EAASC,GAChC,IAAI66I,EAAe,EAEnB,OADAL,EAAgB,GACTM,EAEP,SAASA,EAAap+I,GACpB,OAAIm+I,EAAenhL,EAAMhc,QACvBi6E,EAAKojH,eAAiBrhL,EAAMmhL,GAAc,GACnC96I,EAAQynD,QACb9tF,EAAMmhL,GAAc,GAAGG,aACvBC,EACAC,EAHKn7I,CAILrD,IAIA+9I,EAAUU,kBAAoBV,EAAUU,iBAAiBC,UAC3DZ,EAAca,cAAe,EACtBC,EAAY5+I,KAGrBi7B,EAAK4jH,UACHd,EAAUU,kBAAoBV,EAAUU,iBAAiBK,cAC3D7jH,EAAKojH,eAAiB,GACfh7I,EAAQynD,QACbi0F,EACAC,EACAJ,EAHKv7I,CAILrD,IAGJ,SAASu+I,EAAgBv+I,GAEvB,OADAm+I,IACOljH,EAAKojH,eAAeY,WACvBD,EAAeh/I,GACfo+I,EAAap+I,GAGnB,SAASw+I,EAAYx+I,GACnB,OAAI+9I,EAAUU,kBAAoBV,EAAUU,iBAAiBrlC,MAE3Dn+E,EAAKojH,eAAiB,GACfh7I,EAAQynD,QACbi0F,EACAC,EACA37I,EAAQynD,QACNo0F,EACAF,EACA37I,EAAQzhD,MAAM21F,EAAkBynG,EAAgBG,IAN7C97I,CAQLrD,IAGGg/I,EAAeh/I,GAGxB,SAASm/I,EAAYn/I,GAKnB,OAHAm+I,EAAenhL,EAAMhc,OACrB88L,EAAc1kC,MAAO,EACrB0kC,EAAca,cAAe,EACtBC,EAAY5+I,GAGrB,SAASg/I,EAAeh/I,GAEtB,OADA89I,EAAcsB,SAAU,EACjBR,EAAY5+I,GAGrB,SAAS4+I,EAAY5+I,GAGnB,OAFA89I,EAAcG,UAAYE,EAC1BljH,EAAK4jH,UAAY5jH,EAAKojH,oBAAiBv9L,EAChCwiD,EAAGtD,KA3LZ03C,SAAS,GAKX,OAAOh5C,EAEP,SAASA,EAAMsB,GACb,OAAIi+I,EAAYjhL,EAAMhc,QACpBi6E,EAAKojH,eAAiBrhL,EAAMihL,GAAW,GAChC56I,EAAQynD,QACb9tF,EAAMihL,GAAW,GAAGK,aACpBe,EACAC,EAHKj8I,CAILrD,IAGGs/I,EAAkBt/I,GAG3B,SAASq/I,EAAiBr/I,GAExB,OADAi+I,IACOv/I,EAAMsB,GAGf,SAASs/I,EAAkBt/I,GAGzB,OAAI89I,GAAiBA,EAAca,aAC1BY,EAAUv/I,IAGnBi7B,EAAK4jH,UACHd,GACAA,EAAUU,kBACVV,EAAUU,iBAAiBK,cAC7B7jH,EAAKojH,eAAiB,GACfh7I,EAAQynD,QACbi0F,EACAS,EACAD,EAHKl8I,CAILrD,IAGJ,SAASw/I,EAAkBx/I,GAGzB,OAFAhjC,EAAMne,KAAK,CAACo8E,EAAKwjH,iBAAkBxjH,EAAKojH,iBACxCpjH,EAAKojH,oBAAiBv9L,EACfw+L,EAAkBt/I,GAG3B,SAASu/I,EAAUv/I,GACjB,OAAa,OAATA,GACFy/I,EAAe,GAAG,QAClBp8I,EAAQK,QAAQ1D,KAIlB+9I,EAAYA,GAAa9iH,EAAK0vB,OAAO4yF,KAAKtiH,EAAK/qD,OAC/CmzB,EAAQI,MAAM,YAAa,CACzBsoE,YAAa,OACbntE,SAAUo/I,EACVlyE,WAAYiyE,IAEPY,EAAa3+I,IAGtB,SAAS2+I,EAAa3+I,GACpB,OAAa,OAATA,GACF0/I,EAAar8I,EAAQM,KAAK,cACnB47I,EAAUv/I,IAGfq3C,EAAmBr3C,IACrBqD,EAAQK,QAAQ1D,GAChB0/I,EAAar8I,EAAQM,KAAK,cACnBN,EAAQzhD,MAAMs8L,EAAkByB,KAGzCt8I,EAAQK,QAAQ1D,GACT2+I,GAGT,SAASgB,EAAkB3/I,GAMzB,OALAy/I,EACE3B,EAAcG,UACdH,GAAiBA,EAAcsB,SAEjCnB,EAAY,EACLv/I,EAAMsB,GAGf,SAAS0/I,EAAajhL,GAChBu/K,IAAYA,EAAWltL,KAAO2N,GAClCu/K,EAAav/K,EACbs/K,EAAU3kC,KAAO0kC,GAAiBA,EAAc1kC,KAChD2kC,EAAU5xE,WAAW1tG,EAAMigC,OAC3Bq/I,EAAU3/G,MAAMnD,EAAK6c,YAAYr5E,IAGnC,SAASghL,EAAej8I,EAAM3E,GAC5B,IAAInf,EAAQ1iB,EAAMhc,OAOlB,IALI+8L,GAAal/I,IACfk/I,EAAU3/G,MAAM,CAAC,OACjB4/G,EAAaD,OAAYj9L,GAGpB4+B,KAAU8jB,GACfy3B,EAAKojH,eAAiBrhL,EAAM0iB,GAAO,GACnC1iB,EAAM0iB,GAAO,GAAGikB,KAAKpmD,KAAK09E,EAAM53B,GAGlCrmC,EAAMhc,OAASwiD,IA7Hfu7I,EAAqB,CACvBvnG,SA4MF,SAA2Bn0C,EAASC,EAAIm0C,GACtC,OAAOH,EACLj0C,EACAA,EAAQynD,QAAQtpG,KAAKmpG,OAAOhB,WAAW1lG,SAAUq/C,EAAIm0C,GACrD,aACAj2F,KAAKmpG,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,OAC3DkC,EACA,KAjNJo+L,EAAoB,CACtB1nG,SAoNF,SAA0Bn0C,EAASC,EAAIm0C,GACrC,OAAOH,EACLj0C,EACAA,EAAQ+1G,KAAK53J,KAAKmpG,OAAOhB,WAAW4zF,KAAMj6I,EAAIm0C,GAC9C,aACAj2F,KAAKmpG,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,OAC3DkC,EACA,KAIRkH,EAAQwvF,SAAWA,G,6BC1OnBp6F,OAAOoC,eAAewI,EAAS,aAAc,CAACzI,OAAO,IAErD,IAAIyP,EAAU,EAAQ,KAClBsoF,EAAe,EAAQ,IACvBC,EAAmB,EAAQ,IAE3BC,EAEJ,SAAwBn0C,GACtB,IAAI43B,EAAOz5E,KACPq+L,EAAUx8I,EAAQynD,QAEpBvT,GAkBF,SAAuBv3C,GACrB,GAAa,OAATA,EAEF,YADAqD,EAAQK,QAAQ1D,GAQlB,OAJAqD,EAAQI,MAAM,mBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,mBACbs3B,EAAKwjH,sBAAmB39L,EACjB++L,IA1BPx8I,EAAQynD,QACNtpG,KAAKmpG,OAAOhB,WAAWm2F,YACvBC,EACAzoG,EACEj0C,EACAA,EAAQynD,QACNtpG,KAAKmpG,OAAOhB,WAAW4zF,KACvBwC,EACA18I,EAAQynD,QAAQ97F,EAAS+wL,IAE3B,gBAIN,OAAOF,EAeP,SAASE,EAAe//I,GACtB,GAAa,OAATA,EASJ,OAJAqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACbs3B,EAAKwjH,sBAAmB39L,EACjB++L,EARLx8I,EAAQK,QAAQ1D,KAYtBh4C,EAAQwvF,SAAWA,G,6BCzDnB,IAAIH,EAAqB,EAAQ,IAC7B2oG,EAAa,EAAQ,IACrBC,EAAc,EAAQ,KACtB3oG,EAAe,EAAQ,IAGvBtoF,EAAU,CACZwoF,SAgBF,SAAyBn0C,EAASC,GAChC,IAAI1E,EACJ,OAEA,SAAeoB,GAKb,OAJAqD,EAAQI,MAAM,WACd7E,EAAWyE,EAAQI,MAAM,eAAgB,CACvCsoE,YAAa,YAER1pH,EAAK29C,IAGd,SAAS39C,EAAK29C,GACZ,OAAa,OAATA,EACKkgJ,EAAWlgJ,GAGhBq3C,EAAmBr3C,GACdqD,EAAQzhD,MACbu+L,EACAC,EACAF,EAHK78I,CAILrD,IAGJqD,EAAQK,QAAQ1D,GACT39C,GAGT,SAAS69L,EAAWlgJ,GAGlB,OAFAqD,EAAQM,KAAK,gBACbN,EAAQM,KAAK,WACNL,EAAGtD,GAGZ,SAASogJ,EAAgBpgJ,GAOvB,OANAqD,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,gBACb/E,EAAWA,EAAS9tC,KAAOuyC,EAAQI,MAAM,eAAgB,CACvDsoE,YAAa,UACbntE,SAAUA,IAELv8C,IAzDTS,QAUF,SAAwB80F,GAEtB,OADAqoG,EAAYroG,GACLA,GAXPknG,eAAe,EACf1lC,MAAM,GAEJ+mC,EAAwB,CAC1B3oG,SAwDF,SAA8Bn0C,EAASC,EAAIm0C,GACzC,IAAIxc,EAAOz5E,KACX,OAEA,SAAwBw+C,GAItB,OAHAqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACN2zC,EAAaj0C,EAASg9I,EAAU,eAGzC,SAASA,EAASrgJ,GAChB,OAAa,OAATA,GAAiBq3C,EAAmBr3C,GAC/By3C,EAAIz3C,GAIXi7B,EAAK0vB,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,GAC/DohM,EAAW/kH,EAAK2c,OAAQ,cAAgB,EAEjCv0C,EAAQw7I,UAAU5jH,EAAK0vB,OAAOhB,WAAW4zF,KAAM9lG,EAAKn0C,EAApDD,CAAwDrD,GAG1DsD,EAAGtD,KA9EZ03C,SAAS,GAkFX3yF,EAAOiD,QAAUgH,G,6BChGjB,IAAI1N,EAAS,GAAGA,OAEhByD,EAAOiD,QAAU1G,G,6BCFjB,IAAIhE,EAAiB,EAAQ,KACzBosG,EAAgB,EAAQ,IACxBg0F,EAAW,EAAQ,KAavB,SAAShF,EAAUn+F,EAAKm+F,GACtB,IAAI4H,EACAz2J,EACAkB,EACAiV,EAEJ,IAAKsgJ,KAAQ5H,EAIX,IAAK14I,KAHLnW,EAAOvsC,EAAeC,KAAKg9F,EAAK+lG,GAAQ/lG,EAAI+lG,GAAS/lG,EAAI+lG,GAAQ,GACjEv1J,EAAQ2tJ,EAAU4H,GAGhBz2J,EAAKmW,GAAQ2pD,EACX+zF,EAAS3yJ,EAAMiV,IACf1iD,EAAeC,KAAKssC,EAAMmW,GAAQnW,EAAKmW,GAAQ,IAMvD,SAAS2pD,EAAW5hG,EAAMw4L,GAIxB,IAHA,IAAI7gK,GAAS,EACT/1B,EAAS,KAEJ+1B,EAAQ33B,EAAK/G,SACE,UAApB+G,EAAK23B,GAAOzM,IAAkBstK,EAAW52L,GAAQ9K,KAAKkJ,EAAK23B,IAI/D,OADAgqE,EAAc62F,EAAU,EAAG,EAAG52L,GACvB42L,EAGTx7L,EAAOiD,QA1CP,SAA2BwwL,GAIzB,IAHA,IAAIj+F,EAAM,GACN76D,GAAS,IAEJA,EAAQ84J,EAAWx3L,QAC1B03L,EAAUn+F,EAAKi+F,EAAW94J,IAG5B,OAAO66D,I,6BCZT,IAAI32D,EAAS,EAAQ,IACjByzD,EAAqB,EAAQ,IAC7B2S,EAAc,EAAQ,KACtBN,EAAgB,EAAQ,IACxBg0F,EAAW,EAAQ,KACnB7zF,EAAa,EAAQ,KACrB22F,EAAkB,EAAQ,KAC1Bt2F,EAAU,EAAQ,IAClBu2F,EAAc,EAAQ,KAiT1B17L,EAAOiD,QAxSP,SAAyB2iG,EAAQ+1F,EAAY7kL,GAC3C,IAAI4kF,EAAQ5kF,EACRquF,EAAQruF,GACR,CACE3M,KAAM,EACNC,OAAQ,EACRylB,OAAQ,GAEV+rK,EAAc,GACdC,EAAuB,GACvBr1E,EAAS,GACTvuG,EAAQ,GAERqmC,EAAU,CACZK,QAyGF,SAAiB1D,GACXq3C,EAAmBr3C,IACrBygD,EAAMvxF,OACNuxF,EAAMtxF,OAAS,EACfsxF,EAAM7rE,SAAoB,IAAVorB,EAAc,EAAI,EAClC6gJ,MACmB,IAAV7gJ,IACTygD,EAAMtxF,SACNsxF,EAAM7rE,UAGJ6rE,EAAM6sB,aAAe,EACvB7sB,EAAM4sB,UAEN5sB,EAAM6sB,eAEF7sB,EAAM6sB,eAAiB/B,EAAO9qB,EAAM4sB,QAAQrsH,SAC9Cy/F,EAAM6sB,cAAgB,EACtB7sB,EAAM4sB,WAIVt+G,EAAQ6vC,SAAWoB,GA9HnByD,MAiIF,SAAej+C,EAAM0nF,GACnB,IAAIzuE,EAAQyuE,GAAU,GAKtB,OAJAzuE,EAAMjZ,KAAOA,EACbiZ,EAAMigC,MAAQxuB,IACdnhB,EAAQ6oF,OAAO/4F,KAAK,CAAC,QAAS4f,EAAO1P,IACrCiO,EAAMne,KAAK4f,GACJA,GAtIPklC,KAyIF,SAAcn+C,GACZ,IAAIiZ,EAAQzB,EAAMzX,MAGlB,OAFAkZ,EAAMogC,IAAM3uB,IACZnhB,EAAQ6oF,OAAO/4F,KAAK,CAAC,OAAQ4f,EAAO1P,IAC7B0P,GA5IPqsF,QAASg2F,GA+IX,SAA+BC,EAAWhmH,GACxCimH,EAAUD,EAAWhmH,EAAKl/D,SA/I1Bja,MAAOk/L,EAAiBG,GACxBpC,UAAWiC,EAAiBG,EAAmB,CAC7CpC,WAAW,IAEbzlC,KAAM0nC,EAAiBG,EAAmB,CACxC7nC,MAAM,KAINrqJ,EAAU,CACZ6vC,SAAU,KACVg5C,OAAQ,GACR+S,OAAQA,EACR7S,YAAaA,EACb8S,eAgCF,SAAwBnsF,GACtB,OAAO+hL,EAAgB1oG,EAAYr5E,KAhCnCyR,IAAKA,EACLi8F,WA0CF,SAAc5sH,GACZohM,EAAYphM,EAAM2P,MAAQ3P,EAAM4P,OAChC0xL,KA3CAziH,MAaF,SAAet3E,GAIb,GAHAykH,EAASvhB,EAAYuhB,EAAQzkH,GAC7Bo6L,IAEkC,OAA9B31E,EAAOA,EAAOvqH,OAAS,GACzB,MAAO,GAMT,OAHAggM,EAAUN,EAAY,GAEtB3xL,EAAQ6oF,OAASiS,EAAW+2F,EAAsB7xL,EAAQ6oF,OAAQ7oF,GAC3DA,EAAQ6oF,SArBb12B,EAAQw/H,EAAWlpG,SAASj6F,KAAKwR,EAASs0C,GAQ9C,OANIq9I,EAAW72F,YACb+2F,EAAqB/hM,KAAK6hM,GAG5BjgG,EAAM4sB,OAAS,EACf5sB,EAAM6sB,cAAgB,EACfv+G,EAsBP,SAAS+oF,EAAYr5E,GACnB,OAAOgiL,EAAYl1E,EAAQ9sG,GAG7B,SAASyR,IACP,OAAOg6E,EAAQzJ,GAgBjB,SAASygG,IAIP,IAHA,IAAIC,EACAl1G,EAEGwU,EAAM4sB,OAAS9B,EAAOvqH,QAG3B,GAAqB,iBAFrBirF,EAAQs/B,EAAO9qB,EAAM4sB,SASnB,IANA8zE,EAAa1gG,EAAM4sB,OAEf5sB,EAAM6sB,aAAe,IACvB7sB,EAAM6sB,aAAe,GAIrB7sB,EAAM4sB,SAAW8zE,GACjB1gG,EAAM6sB,aAAerhC,EAAMjrF,QAE3BogM,EAAGn1G,EAAMthF,WAAW81F,EAAM6sB,oBAG5B8zE,EAAGn1G,GAKT,SAASm1G,EAAGphJ,GACVkhB,EAAQA,EAAMlhB,GAgDhB,SAASihJ,EAAkBF,EAAWhmH,GACpCA,EAAKsmH,UAGP,SAASP,EAAiBQ,EAAUp0G,GAClC,OAGA,SAAcyc,EAAY43F,EAAaC,GACrC,IAAIC,EACAC,EACAjD,EACA1jH,EACJ,OAAO4uB,EAAWnS,UAAY,WAAYmS,EACtCg4F,EAAuBjE,EAAS/zF,IAGpC,SAA+B3pD,GAC7B,GAAIA,KAAQ2pD,GAAc,QAAQA,EAChC,OAAOg4F,EACLh4F,EAAW4B,KAEPmyF,EAAS/zF,EAAW3pD,IAAOr6C,OAAO+3L,EAAS/zF,EAAW4B,OACtD5B,EAAW3pD,GAJV2hJ,CAKL3hJ,GAGJ,OAAOwhJ,EAAWxhJ,IAGpB,SAAS2hJ,EAAuB55L,GAG9B,OAFA05L,EAAmB15L,EAEZ65L,EAAgB75L,EADvB25L,EAAiB,IAInB,SAASE,EAAgBb,GACvB,OAEA,SAAe/gJ,GAKb+6B,EA2DR,WACE,IAAI8mH,EAAa3xK,IACb4xK,EAAgB/yL,EAAQ6vC,SACxBmjJ,EAAwBhzL,EAAQ0vL,iBAChCuD,EAAmBjzL,EAAQ6oF,OAAO52F,OAClCihM,EAAapyL,MAAMgM,KAAKmB,GAC5B,MAAO,CACLqkL,QAIF,WACE5gG,EAAQohG,EACR9yL,EAAQ6vC,SAAWkjJ,EACnB/yL,EAAQ0vL,iBAAmBsD,EAC3BhzL,EAAQ6oF,OAAO52F,OAASghM,EACxBhlL,EAAQilL,EACRpB,KATAhlL,KAAMmmL,GAnEKn6G,GACP42G,EAAmBsC,EAEdA,EAAUrpG,UACb3oF,EAAQ0vL,iBAAmBsC,GAG7B,GACEA,EAAU7hM,MACV6P,EAAQ47F,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQmiM,EAAU7hM,OAAS,EAElE,OAAOu4F,IAGT,OAAOspG,EAAUvpG,SAASj6F,KACxB2vF,EAAStpD,EAAO,GAAI70B,EAASm+E,GAAUn+E,EACvCs0C,EACAC,EACAm0C,EAJKspG,CAKL/gJ,IAIN,SAASsD,EAAGtD,GAEV,OADAshJ,EAAS7C,EAAkB1jH,GACpBwmH,EAGT,SAAS9pG,EAAIz3C,GAGX,OAFA+6B,EAAKsmH,YAECK,EAAiBD,EAAiBzgM,OAC/B4gM,EAAgBH,EAAiBC,IAGnCF,IAKb,SAASR,EAAUD,EAAWllL,GACxBklL,EAAUl3F,YAAc+2F,EAAqBhiM,QAAQmiM,GAAa,GACpEH,EAAqB/hM,KAAKkiM,GAGxBA,EAAUj+L,SACZ4mG,EACE36F,EAAQ6oF,OACR/7E,EACA9M,EAAQ6oF,OAAO52F,OAAS6a,EACxBklL,EAAUj+L,QAAQiM,EAAQ6oF,OAAO9wF,MAAM+U,GAAO9M,IAI9CgyL,EAAU71F,YACZn8F,EAAQ6oF,OAASmpG,EAAU71F,UAAUn8F,EAAQ6oF,OAAQ7oF,IAyBzD,SAAS8xL,IACHpgG,EAAMvxF,QAAQyxL,GAAelgG,EAAMtxF,OAAS,IAC9CsxF,EAAMtxF,OAASwxL,EAAYlgG,EAAMvxF,MACjCuxF,EAAM7rE,QAAU+rK,EAAYlgG,EAAMvxF,MAAQ,M,6BCpThD,IAAI+jE,EAAe,EAAQ,IAqC3BluE,EAAOiD,QAnCP,SAAyBujH,GAOvB,IANA,IAEIt/B,EACA1sF,EACA2iM,EAJAxiK,GAAS,EACTj7B,EAAS,KAKJi7B,EAAQ6rF,EAAOvqH,QAAQ,CAG9B,GAAqB,iBAFrBirF,EAAQs/B,EAAO7rF,IAGbngC,EAAQ0sF,OACH,IAAe,IAAXA,EACT1sF,EAAQ,UACH,IAAe,IAAX0sF,EACT1sF,EAAQ,UACH,IAAe,IAAX0sF,EACT1sF,EAAQ,YACH,IAAe,IAAX0sF,EACT1sF,EAAQ,UACH,IAAe,IAAX0sF,EAAc,CACvB,GAAIi2G,EAAO,SACX3iM,EAAQ,SAGRA,EAAQ0zE,EAAagZ,GAGvBi2G,GAAmB,IAAXj2G,EACRxnF,EAAO5F,KAAKU,GAGd,OAAOkF,EAAO6B,KAAK,M,6BCVrBvB,EAAOiD,QAxBP,SAAqBujH,EAAQ9sG,GAC3B,IAIIy3F,EAJAisF,EAAa1jL,EAAMigC,MAAM2uE,OACzB+0E,EAAmB3jL,EAAMigC,MAAM4uE,aAC/B+0E,EAAW5jL,EAAMogC,IAAIwuE,OACrBi1E,EAAiB7jL,EAAMogC,IAAIyuE,aAiB/B,OAdI60E,IAAeE,EACjBnsF,EAAO,CAACqV,EAAO42E,GAAYr7L,MAAMs7L,EAAkBE,KAEnDpsF,EAAOqV,EAAOzkH,MAAMq7L,EAAYE,GAE5BD,GAAoB,IACtBlsF,EAAK,GAAKA,EAAK,GAAGpvG,MAAMs7L,IAGtBE,EAAiB,GACnBpsF,EAAKr3G,KAAK0sH,EAAO82E,GAAUv7L,MAAM,EAAGw7L,KAIjCpsF,I,6BCrBT94G,OAAOoC,eAAewI,EAAS,aAAc,CAACzI,OAAO,IAErD,IAAIgjM,EAAS,EAAQ,KACjBC,EAAY,EAAQ,KACpB3J,EAAW,EAAQ,KACnBK,EAAa,EAAQ,KACrBC,EAAkB,EAAQ,KAC1BC,EAAqB,EAAQ,KAC7BC,EAAa,EAAQ,KACrBI,EAAe,EAAQ,KACvBC,EAAW,EAAQ,KACnB98H,EAAa,EAAQ,KACrBs9H,EAAkB,EAAQ,KAC1BuI,EAAa,EAAQ,KACrBpI,EAAW,EAAQ,KACnBE,EAAW,EAAQ,KACnBhwF,EAAW,EAAQ,KACnBm4F,EAAkB,EAAQ,KAC1BC,EAAiB,EAAQ,KACzBxG,EAAa,EAAQ,KACrBp0L,EAAO,EAAQ,KACf66L,EAAkB,EAAQ,KAC1B/zE,EAAgB,EAAQ,KAExB5qH,EAAW,CACb4+L,GAAI96L,EAEJ+6L,GAAI/6L,EAEJmwK,GAAInwK,EAEJg7L,GAAIh7L,EAEJi7L,GAAIj7L,EAEJqoH,GAAIroH,EAEJk7L,GAAIl7L,EAEJm7L,GAAIn7L,EAEJo7L,GAAIp7L,EAEJq7L,GAAIr7L,EAEJs7L,GAAIt7L,EAEJu7L,GAAIv7L,EAEJw7L,GAAIx7L,EAEJy7L,GAAItK,GAEF2E,EAAiB,CACnB4F,GAAI7mI,GAEFkjI,EAAc,CAChB,KAAMrG,EAEN,KAAMA,EAEN/hB,GAAI+hB,GAEF8D,EAAO,CACT1lB,GAAI4qB,EAEJI,GAAIh0E,EAEJqpD,GAAI,CAAC0qB,EAAiB/zE,GAEtB2B,GAAI6pE,EAEJqJ,GAAId,EAEJe,GAAI90E,EAEJ+0E,GAAIvK,EAEJwK,IAAKxK,GAEHnkL,EAAS,CACX8iK,GAAIohB,EAEJ0K,GAAI3K,GAEFz5G,EAAO,CACT,KAAMy8G,EAEN,KAAMA,EAEN,KAAMA,EAENxkB,GAAI+qB,EAEJ1qB,GAAIohB,EAEJyJ,GAAIL,EAEJhyE,GAAI,CAACqoE,EAAU0B,GAEfkJ,GAAId,EAEJmB,GAAI,CAAC5J,EAAiBf,GAEtB4K,GAAIx5F,EAEJo5F,GAAInB,EAEJoB,GAAIlK,GAEFpuF,EAAa,CACfC,KAAM,CAACi3F,EAAWD,EAAOh1F,WAM3BvlG,EAAQ61L,eAAiBA,EACzB71L,EAAQ43L,QALM,CACZr0F,KAAM,IAKRvjG,EAAQ/D,SAAWA,EACnB+D,EAAQu1L,KAAOA,EACfv1L,EAAQ83L,YAAcA,EACtB93L,EAAQsjG,WAAaA,EACrBtjG,EAAQkN,OAASA,EACjBlN,EAAQ03E,KAAOA,G,6BC5Hf,IAAIsqB,EAAc,EAAQ,KACtBN,EAAgB,EAAQ,IACxBs6F,EAAoB,EAAQ,KAC5BC,EAAY,EAAQ,KACpBp6F,EAAa,EAAQ,KACrBK,EAAU,EAAQ,IAElBs4F,EAAY,CACdtjM,KAAM,YACNs4F,SA8IF,SAA2Bn0C,EAASC,GAClC,IACImrE,EADA9kH,EAASq6L,EAAkBxiM,KAAKo9C,UAEpC,OAEA,SAAeoB,GAGb,OAFAqD,EAAQI,MAAM,qBACdgrE,EAASzuE,EACF8uE,EAAS9uE,IAGlB,SAAS8uE,EAAS9uE,GAChB,IAAIvhC,EACAylL,EACA/gM,EACAioG,EAEJ,OAAIprD,IAASyuE,GACXprE,EAAQK,QAAQ1D,GACT8uE,IAGTrwG,EAAQ4kC,EAAQM,KAAK,qBAErBxgD,IADA+gM,EAAQF,EAAkBhkJ,KACE,IAAVkkJ,GAAev6L,EACjCyhG,GAASzhG,GAAsB,IAAXA,GAAgBu6L,EACpCzlL,EAAM0lL,MAAmB,KAAX11E,EAAgBtrH,EAAOA,IAASwG,IAAWyhG,GACzD3sF,EAAM2lL,OAAoB,KAAX31E,EAAgBrjB,EAAQA,IAAU84F,IAAU/gM,GACpDmgD,EAAGtD,MAzKZ6pD,WAGF,SAA6BjS,EAAQ7oF,GACnC,IACI5L,EACAgoG,EACAzrB,EACA2kH,EACAC,EACA91L,EACA+1L,EACA3vK,EARA8K,GAAS,EAab,OAASA,EAAQk4D,EAAO52F,QAEtB,GACuB,UAArB42F,EAAOl4D,GAAO,IACY,sBAA1Bk4D,EAAOl4D,GAAO,GAAGl6B,MACjBoyF,EAAOl4D,GAAO,GAAG0kK,OAIjB,IAFAjhM,EAAOu8B,EAEAv8B,KAEL,GACsB,SAApBy0F,EAAOz0F,GAAM,IACY,sBAAzBy0F,EAAOz0F,GAAM,GAAGqC,MAChBoyF,EAAOz0F,GAAM,GAAGghM,OAChBp1L,EAAQ67F,eAAehT,EAAOz0F,GAAM,IAAIwH,WAAW,KACjDoE,EAAQ67F,eAAehT,EAAOl4D,GAAO,IAAI/0B,WAAW,GACtD,CAKA,IACGitF,EAAOz0F,GAAM,GAAGihM,QAAUxsG,EAAOl4D,GAAO,GAAGykK,SAC3CvsG,EAAOl4D,GAAO,GAAGmf,IAAIjqB,OAASgjE,EAAOl4D,GAAO,GAAGgf,MAAM9pB,QAAU,MAE7DgjE,EAAOz0F,GAAM,GAAG07C,IAAIjqB,OACnBgjE,EAAOz0F,GAAM,GAAGu7C,MAAM9pB,OACtBgjE,EAAOl4D,GAAO,GAAGmf,IAAIjqB,OACrBgjE,EAAOl4D,GAAO,GAAGgf,MAAM9pB,QACzB,GAGF,SAGFpmB,EACEopF,EAAOz0F,GAAM,GAAG07C,IAAIjqB,OAASgjE,EAAOz0F,GAAM,GAAGu7C,MAAM9pB,OAAS,GAC5DgjE,EAAOl4D,GAAO,GAAGmf,IAAIjqB,OAASgjE,EAAOl4D,GAAO,GAAGgf,MAAM9pB,OAAS,EAC1D,EACA,EACNyvK,EAAkB,CAChB7+L,KAAMgJ,EAAM,EAAI,iBAAmB,mBACnCkwC,MAAOulJ,EAAU/5F,EAAQtS,EAAOz0F,GAAM,GAAG07C,MAAOrwC,GAChDqwC,IAAKqrD,EAAQtS,EAAOz0F,GAAM,GAAG07C,MAE/BylJ,EAAkB,CAChB9+L,KAAMgJ,EAAM,EAAI,iBAAmB,mBACnCkwC,MAAOwrD,EAAQtS,EAAOl4D,GAAO,GAAGgf,OAChCG,IAAKolJ,EAAU/5F,EAAQtS,EAAOl4D,GAAO,GAAGgf,OAAQlwC,IAElDkxE,EAAO,CACLl6E,KAAMgJ,EAAM,EAAI,aAAe,eAC/BkwC,MAAOwrD,EAAQtS,EAAOz0F,GAAM,GAAG07C,KAC/BA,IAAKqrD,EAAQtS,EAAOl4D,GAAO,GAAGgf,QAEhCysD,EAAQ,CACN3lG,KAAMgJ,EAAM,EAAI,SAAW,WAC3BkwC,MAAOwrD,EAAQm6F,EAAgB3lJ,OAC/BG,IAAKqrD,EAAQo6F,EAAgBzlJ,MAE/B+4C,EAAOz0F,GAAM,GAAG07C,IAAMqrD,EAAQm6F,EAAgB3lJ,OAC9Ck5C,EAAOl4D,GAAO,GAAGgf,MAAQwrD,EAAQo6F,EAAgBzlJ,KACjD0lJ,EAAa,GAET3sG,EAAOz0F,GAAM,GAAG07C,IAAIjqB,OAASgjE,EAAOz0F,GAAM,GAAGu7C,MAAM9pB,SACrD2vK,EAAav6F,EAAYu6F,EAAY,CACnC,CAAC,QAAS3sG,EAAOz0F,GAAM,GAAI4L,GAC3B,CAAC,OAAQ6oF,EAAOz0F,GAAM,GAAI4L,MAI9Bw1L,EAAav6F,EAAYu6F,EAAY,CACnC,CAAC,QAASp5F,EAAOp8F,GACjB,CAAC,QAASs1L,EAAiBt1L,GAC3B,CAAC,OAAQs1L,EAAiBt1L,GAC1B,CAAC,QAAS2wE,EAAM3wE,KAGlBw1L,EAAav6F,EACXu6F,EACA16F,EACE96F,EAAQ47F,OAAOhB,WAAW2B,WAAWC,KACrC3T,EAAO9wF,MAAM3D,EAAO,EAAGu8B,GACvB3wB,IAIJw1L,EAAav6F,EAAYu6F,EAAY,CACnC,CAAC,OAAQ7kH,EAAM3wE,GACf,CAAC,QAASu1L,EAAiBv1L,GAC3B,CAAC,OAAQu1L,EAAiBv1L,GAC1B,CAAC,OAAQo8F,EAAOp8F,KAGd6oF,EAAOl4D,GAAO,GAAGmf,IAAIjqB,OAASgjE,EAAOl4D,GAAO,GAAGgf,MAAM9pB,QACvDA,EAAS,EACT2vK,EAAav6F,EAAYu6F,EAAY,CACnC,CAAC,QAAS3sG,EAAOl4D,GAAO,GAAI3wB,GAC5B,CAAC,OAAQ6oF,EAAOl4D,GAAO,GAAI3wB,MAG7B6lB,EAAS,EAGX80E,EAAc9R,EAAQz0F,EAAO,EAAGu8B,EAAQv8B,EAAO,EAAGohM,GAClD7kK,EAAQv8B,EAAOohM,EAAWvjM,OAAS4zB,EAAS,EAC5C,MAMR8K,GAAS,EAET,OAASA,EAAQk4D,EAAO52F,QACQ,sBAA1B42F,EAAOl4D,GAAO,GAAGl6B,OACnBoyF,EAAOl4D,GAAO,GAAGl6B,KAAO,QAI5B,OAAOoyF,IAmCT7yF,EAAOiD,QAAUw6L,G,6BCvLjB,IAAIz4F,EAA4B,EAAQ,IACpCy6F,EAAqB,EAAQ,KAC7BC,EAAoB,EAAQ,KAoBhC1/L,EAAOiD,QAdP,SAA2Bg4C,GACzB,OACW,OAATA,GACA+pD,EAA0B/pD,IAC1BykJ,EAAkBzkJ,GAEX,EAGLwkJ,EAAmBxkJ,GACd,OADT,I,6BCjBF,IAAI0kJ,EAA0B,EAAQ,KAKlCF,EAJa,EAAQ,GAIAxsG,CAAW0sG,GAEpC3/L,EAAOiD,QAAUw8L,G,6BCCjBz/L,EAAOiD,QAFkB,ovC,6BCNzB,IAEIy8L,EAFa,EAAQ,GAEDzsG,CAAW,MAEnCjzF,EAAOiD,QAAUy8L,G,6BCKjB1/L,EAAOiD,QAPP,SAAmBy4F,EAAO7rE,GAIxB,OAHA6rE,EAAMtxF,QAAUylB,EAChB6rE,EAAM7rE,QAAUA,EAChB6rE,EAAM6sB,cAAgB14F,EACf6rE,I,6BCNT,IAAIqJ,EAAa,EAAQ,KACrB/R,EAAoB,EAAQ,KAC5B4sG,EAAa,EAAQ,KACrBh3E,EAAe,EAAQ,KAEvBkrE,EAAW,CACb35L,KAAM,WACNs4F,SAGF,SAA0Bn0C,EAASC,EAAIm0C,GACrC,IAAIj0C,EAAO,EACX,OAEA,SAAexD,GAMb,OALAqD,EAAQI,MAAM,YACdJ,EAAQI,MAAM,kBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,kBACbN,EAAQI,MAAM,oBACPtgD,GAGT,SAASA,EAAK68C,GACZ,OAAI8pD,EAAW9pD,IACbqD,EAAQK,QAAQ1D,GACT4kJ,GAGFD,EAAW3kJ,GAAQ6kJ,EAAW7kJ,GAAQy3C,EAAIz3C,GAGnD,SAAS4kJ,EAAmB5kJ,GAC1B,OAAgB,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAAe+3C,EAAkB/3C,GAClE8kJ,EAAyB9kJ,GACzB6kJ,EAAW7kJ,GAGjB,SAAS8kJ,EAAyB9kJ,GAChC,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACT+kJ,IAIG,KAAT/kJ,GAAwB,KAATA,GAAwB,KAATA,GAAe+3C,EAAkB/3C,KAChEwD,IAAS,IAETH,EAAQK,QAAQ1D,GACT8kJ,GAGFD,EAAW7kJ,GAGpB,SAAS+kJ,EAAU/kJ,GACjB,OAAa,KAATA,GACFqD,EAAQM,KAAK,oBACN9E,EAAImB,IAGA,KAATA,GAAwB,KAATA,GAAe2tE,EAAa3tE,GACtCy3C,EAAIz3C,IAGbqD,EAAQK,QAAQ1D,GACT+kJ,GAGT,SAASF,EAAW7kJ,GAClB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GAChBwD,EAAO,EACAwhJ,GAGLL,EAAW3kJ,IACbqD,EAAQK,QAAQ1D,GACT6kJ,GAGFptG,EAAIz3C,GAGb,SAASglJ,EAAiBhlJ,GACxB,OAAO+3C,EAAkB/3C,GAAQilJ,EAAWjlJ,GAAQy3C,EAAIz3C,GAG1D,SAASilJ,EAAWjlJ,GAClB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GAChBwD,EAAO,EACAwhJ,GAGI,KAAThlJ,GAEFqD,EAAQM,KAAK,oBAAoBn+C,KAAO,gBACjCq5C,EAAImB,IAGNklJ,EAAWllJ,GAGpB,SAASklJ,EAAWllJ,GAClB,OAAc,KAATA,GAAe+3C,EAAkB/3C,KAAUwD,IAAS,IACvDH,EAAQK,QAAQ1D,GACA,KAATA,EAAcklJ,EAAaD,GAG7BxtG,EAAIz3C,GAGb,SAASnB,EAAImB,GAKX,OAJAqD,EAAQI,MAAM,kBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,kBACbN,EAAQM,KAAK,YACNL,KAIXv+C,EAAOiD,QAAU6wL,G,6BC1HjB,IAEI8L,EAFa,EAAQ,GAER3sG,CAAW,uBAE5BjzF,EAAOiD,QAAU28L,G,6BCJjB,IAAIvhJ,EAAgB,EAAQ,IACxBk0C,EAAe,EAAQ,IAEvB4hG,EAAa,CACfh6L,KAAM,aACNs4F,SAOF,SAAiCn0C,EAASC,EAAIm0C,GAC5C,IAAIxc,EAAOz5E,KACX,OAEA,SAAew+C,GACb,GAAa,KAATA,EAYF,OAXKi7B,EAAKojH,eAAel7L,OACvBkgD,EAAQI,MAAM,aAAc,CAC1BkpE,YAAY,IAEd1xC,EAAKojH,eAAel7L,MAAO,GAG7BkgD,EAAQI,MAAM,oBACdJ,EAAQI,MAAM,oBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,oBACNugJ,EAGT,OAAOzsG,EAAIz3C,IAGb,SAASkkJ,EAAMlkJ,GACb,OAAIoD,EAAcpD,IAChBqD,EAAQI,MAAM,8BACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,8BACbN,EAAQM,KAAK,oBACNL,IAGTD,EAAQM,KAAK,oBACNL,EAAGtD,MAvCZs+I,aAAc,CACZ9mG,SA0CJ,SAAwCn0C,EAASC,EAAIm0C,GACnD,OAAOH,EACLj0C,EACAA,EAAQynD,QAAQouF,EAAY51I,EAAIm0C,GAChC,aACAj2F,KAAKmpG,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,OAC3DkC,EACA,KA/CN6iD,KAmDF,SAAcN,GACZA,EAAQM,KAAK,gBAGf5+C,EAAOiD,QAAUkxL,G,6BChEjB,IAAIiM,EAAmB,EAAQ,KAE3BhM,EAAkB,CACpBj6L,KAAM,kBACNs4F,SAGF,SAAiCn0C,EAASC,EAAIm0C,GAC5C,OAEA,SAAez3C,GAKb,OAJAqD,EAAQI,MAAM,mBACdJ,EAAQI,MAAM,gBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,gBACNxgD,GAGT,SAASA,EAAK68C,GACZ,OAAImlJ,EAAiBnlJ,IACnBqD,EAAQI,MAAM,wBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,wBACbN,EAAQM,KAAK,mBACNL,GAGFm0C,EAAIz3C,MAIfj7C,EAAOiD,QAAUmxL,G,6BC/BjB,IAEIgM,EAFa,EAAQ,GAEFntG,CAAW,kBAElCjzF,EAAOiD,QAAUm9L,G,6BCJjB,IAAIC,EAAe,EAAQ,KACvBrtG,EAAoB,EAAQ,KAC5B21B,EAAa,EAAQ,KACrB23E,EAAgB,EAAQ,KAE5B,SAASC,EAAsB7lM,GAC7B,OAAOA,GAAkB,iBAANA,GAAkB,YAAaA,EAAIA,EAAI,CAACqpC,QAASrpC,GAGtE,IAAI8lM,EAAsCD,EAAsBF,GAE5DhM,EAAqB,CACvBl6L,KAAM,qBACNs4F,SAGF,SAAoCn0C,EAASC,EAAIm0C,GAC/C,IAEIv5E,EACAlS,EAHAivE,EAAOz5E,KACPgiD,EAAO,EAGX,OAEA,SAAexD,GAKb,OAJAqD,EAAQI,MAAM,sBACdJ,EAAQI,MAAM,4BACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,4BACNxgD,GAGT,SAASA,EAAK68C,GACZ,OAAa,KAATA,GACFqD,EAAQI,MAAM,mCACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,mCACN6hJ,IAGTniJ,EAAQI,MAAM,2BACdvlC,EAAM,GACNlS,EAAO+rF,EACAx4F,EAAMygD,IAGf,SAASwlJ,EAAQxlJ,GACf,OAAa,KAATA,GAAwB,MAATA,GACjBqD,EAAQI,MAAM,uCACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,uCACbN,EAAQI,MAAM,2BACdvlC,EAAM,EACNlS,EAAOq5L,EACA9lM,IAGT8jD,EAAQI,MAAM,2BACdvlC,EAAM,EACNlS,EAAO0hH,EACAnuH,EAAMygD,IAGf,SAASzgD,EAAMygD,GACb,IAAIvhC,EAEJ,OAAa,KAATuhC,GAAewD,GACjB/kC,EAAQ4kC,EAAQM,KAAK,2BAGnB33C,IAAS+rF,GACRwtG,EAA+B,QAAEtqH,EAAK2vB,eAAensF,KAKxD4kC,EAAQI,MAAM,4BACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,4BACbN,EAAQM,KAAK,sBACNL,GAPEm0C,EAAIz3C,IAUXh0C,EAAKg0C,IAASwD,IAAStlC,GACzBmlC,EAAQK,QAAQ1D,GACTzgD,GAGFk4F,EAAIz3C,MAIfj7C,EAAOiD,QAAUoxL,G,6BC3FjB,IAEIiM,EAFa,EAAQ,GAELrtG,CAAW,cAE/BjzF,EAAOiD,QAAUq9L,G,6BCJjB,IAAIhuG,EAAqB,EAAQ,IAC7B0S,EAA4B,EAAQ,IACpCi2F,EAAa,EAAQ,IACrB1oG,EAAe,EAAQ,IAEvB+hG,EAAa,CACfn6L,KAAM,aACNs4F,SAIF,SAA4Bn0C,EAASC,EAAIm0C,GACvC,IAOIg3B,EAPAxzC,EAAOz5E,KACPikM,EAAwB,CAC1BjuG,SAuHF,SAA8Bn0C,EAASC,EAAIm0C,GACzC,IAAIj0C,EAAO,EACX,OAAO8zC,EACLj0C,GAQF,SAA8BrD,GAG5B,OAFAqD,EAAQI,MAAM,mBACdJ,EAAQI,MAAM,2BACP6gJ,EAAgBtkJ,KATvB,aACAx+C,KAAKmpG,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,OAC3DkC,EACA,GASN,SAASwjM,EAAgBtkJ,GACvB,OAAIA,IAASyuE,GACXprE,EAAQK,QAAQ1D,GAChBwD,IACO8gJ,GAGL9gJ,EAAOkiJ,EAAiBjuG,EAAIz3C,IAChCqD,EAAQM,KAAK,2BACN2zC,EAAaj0C,EAASsiJ,EAAoB,aAA1CruG,CAAwDt3C,IAGjE,SAAS2lJ,EAAmB3lJ,GAC1B,OAAa,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,mBACNL,EAAGtD,IAGLy3C,EAAIz3C,KAzJb03C,SAAS,GAEPkuG,EAAgB5F,EAAWx+L,KAAKo2F,OAAQ,cACxC8tG,EAAW,EAEf,OAEA,SAAe1lJ,GAKb,OAJAqD,EAAQI,MAAM,cACdJ,EAAQI,MAAM,mBACdJ,EAAQI,MAAM,2BACdgrE,EAASzuE,EACF6lJ,EAAa7lJ,IAGtB,SAAS6lJ,EAAa7lJ,GACpB,OAAIA,IAASyuE,GACXprE,EAAQK,QAAQ1D,GAChB0lJ,IACOG,IAGTxiJ,EAAQM,KAAK,2BACN+hJ,EAAW,EACdjuG,EAAIz3C,GACJs3C,EAAaj0C,EAASyiJ,EAAU,aAAhCxuG,CAA8Ct3C,IAGpD,SAAS8lJ,EAAS9lJ,GAChB,OAAa,OAATA,GAAiBq3C,EAAmBr3C,GAC/B+lJ,EAAU/lJ,IAGnBqD,EAAQI,MAAM,uBACdJ,EAAQI,MAAM,cAAe,CAC3BsoE,YAAa,WAERhxC,EAAK/6B,IAGd,SAAS+6B,EAAK/6B,GACZ,OAAa,OAATA,GAAiB+pD,EAA0B/pD,IAC7CqD,EAAQM,KAAK,eACbN,EAAQM,KAAK,uBACN2zC,EAAaj0C,EAAS2iJ,EAAW,aAAjC1uG,CAA+Ct3C,IAG3C,KAATA,GAAeA,IAASyuE,EAAeh3B,EAAIz3C,IAC/CqD,EAAQK,QAAQ1D,GACT+6B,GAGT,SAASirH,EAAUhmJ,GACjB,OAAa,OAATA,GAAiBq3C,EAAmBr3C,GAC/B+lJ,EAAU/lJ,IAGnBqD,EAAQI,MAAM,uBACdJ,EAAQI,MAAM,cAAe,CAC3BsoE,YAAa,WAER5+B,EAAKntC,IAGd,SAASmtC,EAAKntC,GACZ,OAAa,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,eACbN,EAAQM,KAAK,uBACNoiJ,EAAU/lJ,IAGN,KAATA,GAAeA,IAASyuE,EAAeh3B,EAAIz3C,IAC/CqD,EAAQK,QAAQ1D,GACTmtC,GAGT,SAAS44G,EAAU/lJ,GAEjB,OADAqD,EAAQM,KAAK,mBACNs3B,EAAK4jH,UAAYv7I,EAAGtD,GAAQhxC,EAAQgxC,GAG7C,SAAShxC,EAAQgxC,GACf,OAAa,OAATA,EACKkkJ,EAAMlkJ,GAGXq3C,EAAmBr3C,IACrBqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACNN,EAAQynD,QACb26F,EACAvB,EACA0B,EACItuG,EAAaj0C,EAASr0C,EAAS,aAAc42L,EAAgB,GAC7D52L,KAIRq0C,EAAQI,MAAM,iBACP28I,EAAgBpgJ,IAGzB,SAASogJ,EAAgBpgJ,GACvB,OAAa,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,iBACN30C,EAAQgxC,KAGjBqD,EAAQK,QAAQ1D,GACTogJ,GAGT,SAAS8D,EAAMlkJ,GAEb,OADAqD,EAAQM,KAAK,cACNL,EAAGtD,KA1HZ0+I,UAAU,GAqKZ35L,EAAOiD,QAAUqxL,G,6BC7KjB,IAAIhiG,EAAqB,EAAQ,IAC7BqS,EAAgB,EAAQ,IACxBs2F,EAAa,EAAQ,IACrB1oG,EAAe,EAAQ,IAEvBmiG,EAAe,CACjBv6L,KAAM,eACNs4F,SAmBF,SAA8Bn0C,EAASC,EAAIm0C,GACzC,OAAOp0C,EAAQynD,QAAQm7F,EAA0BC,EAAazuG,GAE9D,SAASyuG,EAAYlmJ,GACnB,OAAa,OAATA,EACKsD,EAAGtD,GAGRq3C,EAAmBr3C,GACdqD,EAAQynD,QAAQm7F,EAA0BC,EAAa5iJ,EAAvDD,CAA2DrD,IAGpEqD,EAAQI,MAAM,iBACPz0C,EAAQgxC,IAGjB,SAAShxC,EAAQgxC,GACf,OAAa,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,iBACNuiJ,EAAYlmJ,KAGrBqD,EAAQK,QAAQ1D,GACThxC,KAzCTlM,QAOF,SAA6B80F,EAAQ7oF,GACnC,IAAIixC,EAAO,CACTx6C,KAAM,eACNk5C,MAAOk5C,EAAO,GAAG,GAAGl5C,MACpBG,IAAK+4C,EAAOA,EAAO52F,OAAS,GAAG,GAAG69C,KAIpC,OAFA6qD,EAAc9R,EAAQ,EAAG,EAAG,CAAC,CAAC,QAAS53C,EAAMjxC,KAC7C26F,EAAc9R,EAAQA,EAAO52F,OAAQ,EAAG,CAAC,CAAC,OAAQg/C,EAAMjxC,KACjD6oF,IAbLquG,EAA2B,CAC7BzuG,SA0CF,SAAiCn0C,EAASC,EAAIm0C,GAC5C,IAAIxc,EAAOz5E,KACX,OAAO81F,EAAaj0C,GAEpB,SAAS6iJ,EAAYlmJ,GACnB,GAAIq3C,EAAmBr3C,GAIrB,OAHAqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACN2zC,EAAaj0C,EAAS6iJ,EAAa,aAAc,GAG1D,OAAOlG,EAAW/kH,EAAK2c,OAAQ,cAAgB,EAAIH,EAAIz3C,GAAQsD,EAAGtD,KAV1B,aAAc,IA3CxD03C,SAAS,GAyDX3yF,EAAOiD,QAAUyxL,G,6BCrEjB,IAAIpiG,EAAqB,EAAQ,IAE7BqiG,EAAW,CACbx6L,KAAM,WACNs4F,SAmEF,SAA0Bn0C,EAASC,EAAIm0C,GACrC,IACIj0C,EACA/kC,EAFAinL,EAAW,EAGf,OAEA,SAAe1lJ,GAGb,OAFAqD,EAAQI,MAAM,YACdJ,EAAQI,MAAM,oBACP4gJ,EAAgBrkJ,IAGzB,SAASqkJ,EAAgBrkJ,GACvB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GAChB0lJ,IACOrB,IAGThhJ,EAAQM,KAAK,oBACNwiJ,EAAInmJ,IAGb,SAASmmJ,EAAInmJ,GAEX,OAAa,OAATA,EACKy3C,EAAIz3C,GAIA,KAATA,GACFvhC,EAAQ4kC,EAAQI,MAAM,oBACtBD,EAAO,EACA8gJ,EAAgBtkJ,IAGZ,KAATA,GACFqD,EAAQI,MAAM,SACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,SACNwiJ,GAGL9uG,EAAmBr3C,IACrBqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACNwiJ,IAGT9iJ,EAAQI,MAAM,gBACPphD,EAAK29C,IAGd,SAAS39C,EAAK29C,GACZ,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACAq3C,EAAmBr3C,IAEnBqD,EAAQM,KAAK,gBACNwiJ,EAAInmJ,KAGbqD,EAAQK,QAAQ1D,GACT39C,GAGT,SAASiiM,EAAgBtkJ,GAEvB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GAChBwD,IACO8gJ,GAGL9gJ,IAASkiJ,GACXriJ,EAAQM,KAAK,oBACbN,EAAQM,KAAK,YACNL,EAAGtD,KAGZvhC,EAAMjZ,KAAO,eACNnD,EAAK29C,MAtJdl9C,QAIF,SAAyB80F,GACvB,IAEIl4D,EACA+jB,EAHA2iJ,EAAgBxuG,EAAO52F,OAAS,EAChCqlM,EAAiB,EAIrB,KACsC,eAAnCzuG,EAAOyuG,GAAgB,GAAG7gM,MACU,UAAnCoyF,EAAOyuG,GAAgB,GAAG7gM,MACO,eAAlCoyF,EAAOwuG,GAAe,GAAG5gM,MACU,UAAlCoyF,EAAOwuG,GAAe,GAAG5gM,MAI3B,IAFAk6B,EAAQ2mK,IAEC3mK,EAAQ0mK,GACf,GAA8B,iBAA1BxuG,EAAOl4D,GAAO,GAAGl6B,KAAyB,CAE5CoyF,EAAOwuG,GAAe,GAAG5gM,KAAOoyF,EAAOyuG,GAAgB,GAAG7gM,KACxD,kBACF6gM,GAAkB,EAClBD,GAAiB,EACjB,MAKN1mK,EAAQ2mK,EAAiB,EACzBD,IAEA,OAAS1mK,GAAS0mK,QACFtlM,IAAV2iD,EACE/jB,IAAU0mK,GAA2C,eAA1BxuG,EAAOl4D,GAAO,GAAGl6B,OAC9Ci+C,EAAQ/jB,GAGVA,IAAU0mK,GACgB,eAA1BxuG,EAAOl4D,GAAO,GAAGl6B,OAEjBoyF,EAAOn0C,GAAO,GAAGj+C,KAAO,eAEpBk6B,IAAU+jB,EAAQ,IACpBm0C,EAAOn0C,GAAO,GAAG5E,IAAM+4C,EAAOl4D,EAAQ,GAAG,GAAGmf,IAC5C+4C,EAAOt2F,OAAOmiD,EAAQ,EAAG/jB,EAAQ+jB,EAAQ,GACzC2iJ,GAAiB1mK,EAAQ+jB,EAAQ,EACjC/jB,EAAQ+jB,EAAQ,GAGlBA,OAAQ3iD,GAIZ,OAAO82F,GAtDPh5C,SAyDF,SAAkBoB,GAEhB,OACW,KAATA,GACgD,oBAAhDx+C,KAAKo2F,OAAOp2F,KAAKo2F,OAAO52F,OAAS,GAAG,GAAGwE,OA4F3CT,EAAOiD,QAAU0xL,G,6BC/JjB,IAAIriG,EAAqB,EAAQ,IAC7B0S,EAA4B,EAAQ,IACpCE,EAAsB,EAAQ,KAC9BE,EAAqB,EAAQ,KAC7BC,EAAe,EAAQ,KACvB9S,EAAe,EAAQ,IACvBgT,EAAoB,EAAQ,KAC5BD,EAAe,EAAQ,KAEvBztC,EAAa,CACf19D,KAAM,aACNs4F,SAOF,SAA4Bn0C,EAASC,EAAIm0C,GACvC,IACIoiG,EADA5+G,EAAOz5E,KAEX,OAEA,SAAew+C,GAEb,OADAqD,EAAQI,MAAM,cACP2mD,EAAa7sG,KAClB09E,EACA53B,EACAijJ,EACA7uG,EACA,kBACA,wBACA,wBAPK2S,CAQLpqD,IAGJ,SAASsmJ,EAAWtmJ,GAKlB,OAJA65I,EAAa5vF,EACXhvB,EAAK2vB,eAAe3vB,EAAK2c,OAAO3c,EAAK2c,OAAO52F,OAAS,GAAG,IAAI8F,MAAM,GAAI,IAG3D,KAATk5C,GACFqD,EAAQI,MAAM,oBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,oBAEN2mD,EACLjnD,EACA8mD,EACE9mD,EACAA,EAAQynD,QACNy7F,EACAjvG,EAAaj0C,EAAS6gJ,EAAO,cAC7B5sG,EAAaj0C,EAAS6gJ,EAAO,eAE/BzsG,EACA,wBACA,+BACA,qCACA,2BACA,iCAKCA,EAAIz3C,GAGb,SAASkkJ,EAAMlkJ,GACb,OAAa,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,cAETs3B,EAAK0vB,OAAOxuD,QAAQv9C,QAAQi7L,GAAc,GAC5C5+G,EAAK0vB,OAAOxuD,QAAQt9C,KAAKg7L,GAGpBv2I,EAAGtD,IAGLy3C,EAAIz3C,MAlEXumJ,EAAiB,CACnB/uG,SAqEF,SAAuBn0C,EAASC,EAAIm0C,GAClC,OAEA,SAAez3C,GACb,OAAO+pD,EAA0B/pD,GAC7BsqD,EAAkBjnD,EAAS15C,EAA3B2gG,CAAmCtqD,GACnCy3C,EAAIz3C,IAGV,SAASr2C,EAAOq2C,GACd,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,EACzBqqD,EACLhnD,EACAi0C,EAAaj0C,EAAS6gJ,EAAO,cAC7BzsG,EACA,kBACA,wBACA,wBANK4S,CAOLrqD,GAGGy3C,EAAIz3C,GAGb,SAASkkJ,EAAMlkJ,GACb,OAAgB,OAATA,GAAiBq3C,EAAmBr3C,GAAQsD,EAAGtD,GAAQy3C,EAAIz3C,KA7FpE03C,SAAS,GAiGX3yF,EAAOiD,QAAU40D,G,6BChHjB,IAAIy6B,EAAqB,EAAQ,IAE7B6iG,EAAkB,CACpBh7L,KAAM,kBACNs4F,SAGF,SAAiCn0C,EAASC,EAAIm0C,GAC5C,OAEA,SAAez3C,GAIb,OAHAqD,EAAQI,MAAM,mBACdJ,EAAQI,MAAM,gBACdJ,EAAQK,QAAQ1D,GACT78C,GAGT,SAASA,EAAK68C,GACZ,OAAIq3C,EAAmBr3C,IACrBqD,EAAQM,KAAK,gBACbN,EAAQM,KAAK,mBACNL,EAAGtD,IAGLy3C,EAAIz3C,MAIfj7C,EAAOiD,QAAUkyL,G,6BC5BjB,IAAI7iG,EAAqB,EAAQ,IAC7B0S,EAA4B,EAAQ,IACpC3mD,EAAgB,EAAQ,IACxBsmD,EAAgB,EAAQ,IACxBpS,EAAe,EAAQ,IAEvBmrG,EAAa,CACfvjM,KAAM,aACNs4F,SAqDF,SAA4Bn0C,EAASC,EAAIm0C,GACvC,IAAIxc,EAAOz5E,KACPgiD,EAAO,EACX,OAEA,SAAexD,GAGb,OAFAqD,EAAQI,MAAM,cACdJ,EAAQI,MAAM,sBACP+iJ,EAAgBxmJ,IAGzB,SAASwmJ,EAAgBxmJ,GACvB,OAAa,KAATA,GAAewD,IAAS,GAC1BH,EAAQK,QAAQ1D,GACTwmJ,GAGI,OAATxmJ,GAAiB+pD,EAA0B/pD,IAC7CqD,EAAQM,KAAK,sBACNs3B,EAAK4jH,UAAYv7I,EAAGtD,GAAQymJ,EAAazmJ,IAG3Cy3C,EAAIz3C,GAGb,SAASymJ,EAAazmJ,GACpB,OAAa,KAATA,GACFqD,EAAQI,MAAM,sBACPqrE,EAAS9uE,IAGL,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,cACNL,EAAGtD,IAGRoD,EAAcpD,GACTs3C,EAAaj0C,EAASojJ,EAAc,aAApCnvG,CAAkDt3C,IAG3DqD,EAAQI,MAAM,kBACPphD,EAAK29C,IAGd,SAAS8uE,EAAS9uE,GAChB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACT8uE,IAGTzrE,EAAQM,KAAK,sBACN8iJ,EAAazmJ,IAGtB,SAAS39C,EAAK29C,GACZ,OAAa,OAATA,GAA0B,KAATA,GAAe+pD,EAA0B/pD,IAC5DqD,EAAQM,KAAK,kBACN8iJ,EAAazmJ,KAGtBqD,EAAQK,QAAQ1D,GACT39C,KAjHTS,QAGF,SAA2B80F,EAAQ7oF,GACjC,IAEIC,EACA0wE,EAHAwgH,EAAatoG,EAAO52F,OAAS,EAC7B48L,EAAe,EAIkB,eAAjChmG,EAAOgmG,GAAc,GAAGp4L,OAC1Bo4L,GAAgB,GAIhBsC,EAAa,EAAItC,GACc,eAA/BhmG,EAAOsoG,GAAY,GAAG16L,OAEtB06L,GAAc,GAIiB,uBAA/BtoG,EAAOsoG,GAAY,GAAG16L,OACrBo4L,IAAiBsC,EAAa,GAC5BA,EAAa,EAAItC,GACmB,eAAnChmG,EAAOsoG,EAAa,GAAG,GAAG16L,QAE9B06L,GAActC,EAAe,IAAMsC,EAAa,EAAI,GAGlDA,EAAatC,IACf5uL,EAAU,CACRxJ,KAAM,iBACNk5C,MAAOk5C,EAAOgmG,GAAc,GAAGl/I,MAC/BG,IAAK+4C,EAAOsoG,GAAY,GAAGrhJ,KAE7B6gC,EAAO,CACLl6E,KAAM,YACNk5C,MAAOk5C,EAAOgmG,GAAc,GAAGl/I,MAC/BG,IAAK+4C,EAAOsoG,GAAY,GAAGrhJ,IAC3BktE,YAAa,QAEfriB,EAAc9R,EAAQgmG,EAAcsC,EAAatC,EAAe,EAAG,CACjE,CAAC,QAAS5uL,EAASD,GACnB,CAAC,QAAS2wE,EAAM3wE,GAChB,CAAC,OAAQ2wE,EAAM3wE,GACf,CAAC,OAAQC,EAASD,MAItB,OAAO6oF,IAoET7yF,EAAOiD,QAAUy6L,G,6BC9HjB,IAAI34F,EAAa,EAAQ,KACrB/R,EAAoB,EAAQ,KAC5BV,EAAqB,EAAQ,IAC7B0S,EAA4B,EAAQ,IACpC3mD,EAAgB,EAAQ,IACxB6vB,EAAe,EAAQ,IACvByzH,EAAiB,EAAQ,KACzBC,EAAe,EAAQ,KACvBpvG,EAAmB,EAAQ,IAE3B8iG,EAAW,CACbn7L,KAAM,WACNs4F,SA8BF,SAA0Bn0C,EAASC,EAAIm0C,GACrC,IACImvG,EACAC,EACAngG,EACAhnE,EACA+uF,EALAxzC,EAAOz5E,KAMX,OAEA,SAAew+C,GAIb,OAHAqD,EAAQI,MAAM,YACdJ,EAAQI,MAAM,gBACdJ,EAAQK,QAAQ1D,GACT78C,GAGT,SAASA,EAAK68C,GACZ,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACT8mJ,GAGI,KAAT9mJ,GACFqD,EAAQK,QAAQ1D,GACT+mJ,GAGI,KAAT/mJ,GACFqD,EAAQK,QAAQ1D,GAChB4mJ,EAAO,EAGA3rH,EAAK4jH,UAAYv7I,EAAK0jJ,GAG3Bl9F,EAAW9pD,IACbqD,EAAQK,QAAQ1D,GAChB0mD,EAASzzB,EAAajzB,GACtB6mJ,GAAW,EACJxnG,GAGF5H,EAAIz3C,GAGb,SAAS8mJ,EAAiB9mJ,GACxB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GAChB4mJ,EAAO,EACAK,GAGI,KAATjnJ,GACFqD,EAAQK,QAAQ1D,GAChB4mJ,EAAO,EACPlgG,EAAS,SACThnE,EAAQ,EACDwnK,GAGLp9F,EAAW9pD,IACbqD,EAAQK,QAAQ1D,GAChB4mJ,EAAO,EACA3rH,EAAK4jH,UAAYv7I,EAAK0jJ,GAGxBvvG,EAAIz3C,GAGb,SAASinJ,EAAkBjnJ,GACzB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTi7B,EAAK4jH,UAAYv7I,EAAK0jJ,GAGxBvvG,EAAIz3C,GAGb,SAASknJ,EAAgBlnJ,GACvB,OAAIA,IAAS0mD,EAAO/7F,WAAW+0B,MAC7B2jB,EAAQK,QAAQ1D,GACTtgB,IAAUgnE,EAAO1lG,OACpBi6E,EAAK4jH,UACHv7I,EACAg7I,EACF4I,GAGCzvG,EAAIz3C,GAGb,SAAS+mJ,EAAc/mJ,GACrB,OAAI8pD,EAAW9pD,IACbqD,EAAQK,QAAQ1D,GAChB0mD,EAASzzB,EAAajzB,GACfq/C,GAGF5H,EAAIz3C,GAGb,SAASq/C,EAAQr/C,GACf,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACA+pD,EAA0B/pD,GAGf,KAATA,GACA6mJ,GACAF,EAAa/nM,QAAQ8nG,EAAOpyF,gBAAkB,GAE9CsyL,EAAO,EACA3rH,EAAK4jH,UAAYv7I,EAAGtD,GAAQs+I,EAAat+I,IAG9C0mJ,EAAe9nM,QAAQ8nG,EAAOpyF,gBAAkB,GAClDsyL,EAAO,EAEM,KAAT5mJ,GACFqD,EAAQK,QAAQ1D,GACTmnJ,GAGFlsH,EAAK4jH,UAAYv7I,EAAGtD,GAAQs+I,EAAat+I,KAGlD4mJ,EAAO,EAEA3rH,EAAK4jH,UACRpnG,EAAIz3C,GACJ6mJ,EACAO,EAA4BpnJ,GAC5BqnJ,EAAwBrnJ,IAGjB,KAATA,GAAe+3C,EAAkB/3C,IACnCqD,EAAQK,QAAQ1D,GAChB0mD,GAAUzzB,EAAajzB,GAChBq/C,GAGF5H,EAAIz3C,GAGb,SAASmnJ,EAAiBnnJ,GACxB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTi7B,EAAK4jH,UAAYv7I,EAAKg7I,GAGxB7mG,EAAIz3C,GAGb,SAASqnJ,EAAwBrnJ,GAC/B,OAAIoD,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACTqnJ,GAGFC,EAAYtnJ,GAGrB,SAASonJ,EAA4BpnJ,GACnC,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTsnJ,GAGI,KAATtnJ,GAAwB,KAATA,GAAe8pD,EAAW9pD,IAC3CqD,EAAQK,QAAQ1D,GACTunJ,GAGLnkJ,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACTonJ,GAGFE,EAAYtnJ,GAGrB,SAASunJ,EAAsBvnJ,GAC7B,OACW,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACA+3C,EAAkB/3C,IAElBqD,EAAQK,QAAQ1D,GACTunJ,GAGFC,EAA2BxnJ,GAGpC,SAASwnJ,EAA2BxnJ,GAClC,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTynJ,GAGLrkJ,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACTwnJ,GAGFJ,EAA4BpnJ,GAGrC,SAASynJ,EAA6BznJ,GACpC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,EAEOy3C,EAAIz3C,GAGA,KAATA,GAAwB,KAATA,GACjBqD,EAAQK,QAAQ1D,GAChByuE,EAASzuE,EACF0nJ,GAGLtkJ,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACTynJ,IAGTh5E,OAAS3tH,EACF6mM,EAA+B3nJ,IAGxC,SAAS0nJ,EAA6B1nJ,GACpC,OAAIA,IAASyuE,GACXprE,EAAQK,QAAQ1D,GACT4nJ,GAGI,OAAT5nJ,GAAiBq3C,EAAmBr3C,GAC/By3C,EAAIz3C,IAGbqD,EAAQK,QAAQ1D,GACT0nJ,GAGT,SAASC,EAA+B3nJ,GACtC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACA+pD,EAA0B/pD,GAEnBwnJ,EAA2BxnJ,IAGpCqD,EAAQK,QAAQ1D,GACT2nJ,GAGT,SAASC,EAAkC5nJ,GACzC,OAAa,KAATA,GAAwB,KAATA,GAAeoD,EAAcpD,GACvConJ,EAA4BpnJ,GAG9By3C,EAAIz3C,GAGb,SAASsnJ,EAAYtnJ,GACnB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACT6nJ,GAGFpwG,EAAIz3C,GAGb,SAAS6nJ,EAAc7nJ,GACrB,OAAIoD,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACT6nJ,GAGO,OAAT7nJ,GAAiBq3C,EAAmBr3C,GACvCs+I,EAAat+I,GACby3C,EAAIz3C,GAGV,SAASs+I,EAAat+I,GACpB,OAAa,KAATA,GAAwB,IAAT4mJ,GACjBvjJ,EAAQK,QAAQ1D,GACT8nJ,GAGI,KAAT9nJ,GAAwB,IAAT4mJ,GACjBvjJ,EAAQK,QAAQ1D,GACT+nJ,GAGI,KAAT/nJ,GAAwB,IAAT4mJ,GACjBvjJ,EAAQK,QAAQ1D,GACTgoJ,GAGI,KAAThoJ,GAAwB,IAAT4mJ,GACjBvjJ,EAAQK,QAAQ1D,GACTgnJ,GAGI,KAAThnJ,GAAwB,IAAT4mJ,GACjBvjJ,EAAQK,QAAQ1D,GACTioJ,IAGL5wG,EAAmBr3C,IAAmB,IAAT4mJ,GAAuB,IAATA,EAQlC,OAAT5mJ,GAAiBq3C,EAAmBr3C,GAC/BkoJ,EAAyBloJ,IAGlCqD,EAAQK,QAAQ1D,GACTs+I,GAZEj7I,EAAQzhD,MACbumM,EACAH,EACAE,EAHK7kJ,CAILrD,GAWN,SAASkoJ,EAAyBloJ,GAEhC,OADAqD,EAAQM,KAAK,gBACNykJ,EAAkBpoJ,GAG3B,SAASooJ,EAAkBpoJ,GACzB,OAAa,OAATA,EACKg7B,EAAKh7B,GAGVq3C,EAAmBr3C,IACrBqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACNykJ,IAGT/kJ,EAAQI,MAAM,gBACP66I,EAAat+I,IAGtB,SAAS8nJ,EAA0B9nJ,GACjC,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTgnJ,GAGF1I,EAAat+I,GAGtB,SAAS+nJ,EAAuB/nJ,GAC9B,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GAChB0mD,EAAS,GACF2hG,GAGF/J,EAAat+I,GAGtB,SAASqoJ,EAAsBroJ,GAC7B,OAAa,KAATA,GAAe2mJ,EAAa/nM,QAAQ8nG,EAAOpyF,gBAAkB,GAC/D+uC,EAAQK,QAAQ1D,GACTgoJ,GAGLl+F,EAAW9pD,IAAS0mD,EAAO1lG,OAAS,GACtCqiD,EAAQK,QAAQ1D,GAChB0mD,GAAUzzB,EAAajzB,GAChBqoJ,GAGF/J,EAAat+I,GAGtB,SAASioJ,EAAgCjoJ,GACvC,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTgnJ,GAGF1I,EAAat+I,GAGtB,SAASgnJ,EAA8BhnJ,GACrC,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTgoJ,GAGF1J,EAAat+I,GAGtB,SAASgoJ,EAAkBhoJ,GACzB,OAAa,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,gBACNq3B,EAAKh7B,KAGdqD,EAAQK,QAAQ1D,GACTgoJ,GAGT,SAAShtH,EAAKh7B,GAEZ,OADAqD,EAAQM,KAAK,YACNL,EAAGtD,KAtcZkrD,UAQF,SAA2BtT,GACzB,IAAIl4D,EAAQk4D,EAAO52F,OAEnB,KAAO0+B,MACoB,UAArBk4D,EAAOl4D,GAAO,IAA4C,aAA1Bk4D,EAAOl4D,GAAO,GAAGl6B,QAKnDk6B,EAAQ,GAAmC,eAA9Bk4D,EAAOl4D,EAAQ,GAAG,GAAGl6B,OAEpCoyF,EAAOl4D,GAAO,GAAGgf,MAAQk5C,EAAOl4D,EAAQ,GAAG,GAAGgf,MAE9Ck5C,EAAOl4D,EAAQ,GAAG,GAAGgf,MAAQk5C,EAAOl4D,EAAQ,GAAG,GAAGgf,MAElDk5C,EAAOt2F,OAAOo+B,EAAQ,EAAG,IAG3B,OAAOk4D,GAzBP8mG,UAAU,GAERyJ,EAAqB,CACvB3wG,SAscF,SAA2Bn0C,EAASC,EAAIm0C,GACtC,OAEA,SAAez3C,GAKb,OAJAqD,EAAQM,KAAK,gBACbN,EAAQI,MAAM,mBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,mBACNN,EAAQynD,QAAQvT,EAAkBj0C,EAAIm0C,KA7c/CC,SAAS,GAidX3yF,EAAOiD,QAAUqyL,G,6BCjajBt1L,EAAOiD,QAjEM,CACX,UACA,UACA,QACA,OACA,WACA,aACA,OACA,UACA,SACA,MACA,WACA,KACA,UACA,SACA,MACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,QACA,WACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,KACA,OACA,SACA,SACA,KACA,OACA,OACA,OACA,WACA,MACA,WACA,KACA,WACA,SACA,IACA,QACA,UACA,SACA,UACA,QACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,QACA,O,6BC5DFjD,EAAOiD,QAFI,CAAC,MAAO,SAAU,QAAS,a,6BCDtC,IAAI8hG,EAAa,EAAQ,KACrB/R,EAAoB,EAAQ,KAC5BV,EAAqB,EAAQ,IAC7B0S,EAA4B,EAAQ,IACpC3mD,EAAgB,EAAQ,IACxBk0C,EAAe,EAAQ,IAEvBijG,EAAW,CACbr7L,KAAM,WACNs4F,SAGF,SAA0Bn0C,EAASC,EAAIm0C,GACrC,IACIg3B,EACA/nB,EACAhnE,EACA6hK,EAJAtmH,EAAOz5E,KAKX,OAEA,SAAew+C,GAIb,OAHAqD,EAAQI,MAAM,YACdJ,EAAQI,MAAM,gBACdJ,EAAQK,QAAQ1D,GACT78C,GAGT,SAASA,EAAK68C,GACZ,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTsoJ,GAGI,KAATtoJ,GACFqD,EAAQK,QAAQ1D,GACT+mJ,GAGI,KAAT/mJ,GACFqD,EAAQK,QAAQ1D,GACTuoJ,GAGLz+F,EAAW9pD,IACbqD,EAAQK,QAAQ1D,GACTwoJ,GAGF/wG,EAAIz3C,GAGb,SAASsoJ,EAAgBtoJ,GACvB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTyoJ,GAGI,KAATzoJ,GACFqD,EAAQK,QAAQ1D,GAChB0mD,EAAS,SACThnE,EAAQ,EACDgpK,GAGL5+F,EAAW9pD,IACbqD,EAAQK,QAAQ1D,GACT2oJ,GAGFlxG,EAAIz3C,GAGb,SAASyoJ,EAAYzoJ,GACnB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACT4oJ,GAGFnxG,EAAIz3C,GAGb,SAAS4oJ,EAAa5oJ,GACpB,OAAa,OAATA,GAA0B,KAATA,EACZy3C,EAAIz3C,GAGA,KAATA,GACFqD,EAAQK,QAAQ1D,GACT6oJ,GAGFC,EAAQ9oJ,GAGjB,SAAS6oJ,EAAiB7oJ,GACxB,OAAa,OAATA,GAA0B,KAATA,EACZy3C,EAAIz3C,GAGN8oJ,EAAQ9oJ,GAGjB,SAAS8oJ,EAAQ9oJ,GACf,OAAa,OAATA,EACKy3C,EAAIz3C,GAGA,KAATA,GACFqD,EAAQK,QAAQ1D,GACT+oJ,GAGL1xG,EAAmBr3C,IACrBuhJ,EAAcuH,EACPE,EAAahpJ,KAGtBqD,EAAQK,QAAQ1D,GACT8oJ,GAGT,SAASC,EAAa/oJ,GACpB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTnB,GAGFiqJ,EAAQ9oJ,GAGjB,SAAS0oJ,EAAU1oJ,GACjB,OAAIA,IAAS0mD,EAAO/7F,WAAW+0B,MAC7B2jB,EAAQK,QAAQ1D,GACTtgB,IAAUgnE,EAAO1lG,OAASioM,EAAQP,GAGpCjxG,EAAIz3C,GAGb,SAASipJ,EAAMjpJ,GACb,OAAa,OAATA,EACKy3C,EAAIz3C,GAGA,KAATA,GACFqD,EAAQK,QAAQ1D,GACTkpJ,GAGL7xG,EAAmBr3C,IACrBuhJ,EAAc0H,EACPD,EAAahpJ,KAGtBqD,EAAQK,QAAQ1D,GACTipJ,GAGT,SAASC,EAAWlpJ,GAClB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTmpJ,GAGFF,EAAMjpJ,GAGf,SAASmpJ,EAASnpJ,GAChB,OAAa,KAATA,EACKnB,EAAImB,GAGA,KAATA,GACFqD,EAAQK,QAAQ1D,GACTmpJ,GAGFF,EAAMjpJ,GAGf,SAAS2oJ,EAAY3oJ,GACnB,OAAa,OAATA,GAA0B,KAATA,EACZnB,EAAImB,GAGTq3C,EAAmBr3C,IACrBuhJ,EAAcoH,EACPK,EAAahpJ,KAGtBqD,EAAQK,QAAQ1D,GACT2oJ,GAGT,SAASJ,EAAYvoJ,GACnB,OAAa,OAATA,EACKy3C,EAAIz3C,GAGA,KAATA,GACFqD,EAAQK,QAAQ1D,GACTopJ,GAGL/xG,EAAmBr3C,IACrBuhJ,EAAcgH,EACPS,EAAahpJ,KAGtBqD,EAAQK,QAAQ1D,GACTuoJ,GAGT,SAASa,EAAiBppJ,GACxB,OAAgB,KAATA,EAAcnB,EAAImB,GAAQuoJ,EAAYvoJ,GAG/C,SAAS+mJ,EAAc/mJ,GACrB,OAAI8pD,EAAW9pD,IACbqD,EAAQK,QAAQ1D,GACTqpJ,GAGF5xG,EAAIz3C,GAGb,SAASqpJ,EAASrpJ,GAChB,OAAa,KAATA,GAAe+3C,EAAkB/3C,IACnCqD,EAAQK,QAAQ1D,GACTqpJ,GAGFC,EAAgBtpJ,GAGzB,SAASspJ,EAAgBtpJ,GACvB,OAAIq3C,EAAmBr3C,IACrBuhJ,EAAc+H,EACPN,EAAahpJ,IAGlBoD,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACTspJ,GAGFzqJ,EAAImB,GAGb,SAASwoJ,EAAQxoJ,GACf,OAAa,KAATA,GAAe+3C,EAAkB/3C,IACnCqD,EAAQK,QAAQ1D,GACTwoJ,GAGI,KAATxoJ,GAAwB,KAATA,GAAe+pD,EAA0B/pD,GACnDupJ,EAAevpJ,GAGjBy3C,EAAIz3C,GAGb,SAASupJ,EAAevpJ,GACtB,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACTnB,GAGI,KAATmB,GAAwB,KAATA,GAAe8pD,EAAW9pD,IAC3CqD,EAAQK,QAAQ1D,GACTwpJ,GAGLnyG,EAAmBr3C,IACrBuhJ,EAAcgI,EACPP,EAAahpJ,IAGlBoD,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACTupJ,GAGF1qJ,EAAImB,GAGb,SAASwpJ,EAAqBxpJ,GAC5B,OACW,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACA+3C,EAAkB/3C,IAElBqD,EAAQK,QAAQ1D,GACTwpJ,GAGFC,EAA0BzpJ,GAGnC,SAASypJ,EAA0BzpJ,GACjC,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GACT0pJ,GAGLryG,EAAmBr3C,IACrBuhJ,EAAckI,EACPT,EAAahpJ,IAGlBoD,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACTypJ,GAGFF,EAAevpJ,GAGxB,SAAS0pJ,EAA4B1pJ,GACnC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,EAEOy3C,EAAIz3C,GAGA,KAATA,GAAwB,KAATA,GACjBqD,EAAQK,QAAQ1D,GAChByuE,EAASzuE,EACF2pJ,GAGLtyG,EAAmBr3C,IACrBuhJ,EAAcmI,EACPV,EAAahpJ,IAGlBoD,EAAcpD,IAChBqD,EAAQK,QAAQ1D,GACT0pJ,IAGTrmJ,EAAQK,QAAQ1D,GAChByuE,OAAS3tH,EACF8oM,GAGT,SAASD,EAA4B3pJ,GACnC,OAAIA,IAASyuE,GACXprE,EAAQK,QAAQ1D,GACT6pJ,GAGI,OAAT7pJ,EACKy3C,EAAIz3C,GAGTq3C,EAAmBr3C,IACrBuhJ,EAAcoI,EACPX,EAAahpJ,KAGtBqD,EAAQK,QAAQ1D,GACT2pJ,GAGT,SAASE,EAAiC7pJ,GACxC,OAAa,KAATA,GAAwB,KAATA,GAAe+pD,EAA0B/pD,GACnDupJ,EAAevpJ,GAGjBy3C,EAAIz3C,GAGb,SAAS4pJ,EAA8B5pJ,GACrC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,EAEOy3C,EAAIz3C,GAGA,KAATA,GAAe+pD,EAA0B/pD,GACpCupJ,EAAevpJ,IAGxBqD,EAAQK,QAAQ1D,GACT4pJ,GAIT,SAASZ,EAAahpJ,GAKpB,OAJAqD,EAAQM,KAAK,gBACbN,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACN2zC,EACLj0C,EACA6iJ,EACA,aACAjrH,EAAK0vB,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,OAC3DkC,EACA,GAIR,SAASolM,EAAYlmJ,GAEnB,OADAqD,EAAQI,MAAM,gBACP89I,EAAYvhJ,GAGrB,SAASnB,EAAImB,GACX,OAAa,KAATA,GACFqD,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,gBACbN,EAAQM,KAAK,YACNL,GAGFm0C,EAAIz3C,MAIfj7C,EAAOiD,QAAUuyL,G,6BChbjB,IAEImI,EAAkB,CACpBxjM,KAAM,kBACNs4F,SAIF,SAAiCn0C,EAASC,EAAIm0C,GAC5C,IAAIxc,EAAOz5E,KACX,OAEA,SAAew+C,GAKb,OAJAqD,EAAQI,MAAM,cACdJ,EAAQI,MAAM,oBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,oBACNxgD,GAGT,SAASA,EAAK68C,GACZ,OAAa,KAATA,GACFqD,EAAQI,MAAM,eACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,eACbN,EAAQM,KAAK,cACNugJ,GAGFzsG,EAAIz3C,GAGb,SAASkkJ,EAAMlkJ,GAEb,OAAgB,KAATA,GAEL,2BAA4Bi7B,EAAK0vB,OAAOhB,WAEtClS,EAAIz3C,GACJsD,EAAGtD,KAlCT6pD,WALa,EAAQ,KAKAA,YAsCvB9kG,EAAOiD,QAAU06L,G,6BC3CjB,IAEIC,EAAiB,CACnBzjM,KAAM,iBACNs4F,SAIF,SAAgCn0C,EAASC,EAAIm0C,GAC3C,IAAIxc,EAAOz5E,KACX,OAEA,SAAew+C,GAMb,OALAqD,EAAQI,MAAM,aACdJ,EAAQI,MAAM,eACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,eACbN,EAAQM,KAAK,aACNugJ,GAGT,SAASA,EAAMlkJ,GAEb,OAAgB,KAATA,GAEL,2BAA4Bi7B,EAAK0vB,OAAOhB,WAEtClS,EAAIz3C,GACJsD,EAAGtD,KAvBT6pD,WALa,EAAQ,KAKAA,YA2BvB9kG,EAAOiD,QAAU26L,G,6BChCjB,IAAIrrG,EAAe,EAAQ,IAEvB6kG,EAAa,CACfj9L,KAAM,aACNs4F,SAGF,SAA4Bn0C,EAASC,GACnC,OAEA,SAAetD,GAIb,OAHAqD,EAAQI,MAAM,cACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,cACN2zC,EAAaj0C,EAASC,EAAI,iBAIrCv+C,EAAOiD,QAAUm0L,G,6BClBjB,IAAIzuE,EAAa,EAAQ,KACrBtqE,EAAgB,EAAQ,IACxB48I,EAAa,EAAQ,IACrBroG,EAAa,EAAQ,KACrBL,EAAe,EAAQ,IACvBC,EAAmB,EAAQ,IAC3Bs3B,EAAgB,EAAQ,KAExB9mH,EAAO,CACT7I,KAAM,OACNs4F,SAeF,SAA2Bn0C,EAASC,EAAIm0C,GACtC,IAAIxc,EAAOz5E,KACPsoM,EAAc9J,EAAW/kH,EAAK2c,OAAQ,cACtCp0C,EAAO,EACX,OAEA,SAAexD,GACb,IAAI4mJ,EACF3rH,EAAKojH,eAAe74L,OACV,KAATw6C,GAAwB,KAATA,GAAwB,KAATA,EAC3B,gBACA,eAEN,GACW,kBAAT4mJ,GACK3rH,EAAKojH,eAAe5vE,QAAUzuE,IAASi7B,EAAKojH,eAAe5vE,OAC5Df,EAAW1tE,GACf,CAQA,GAPKi7B,EAAKojH,eAAe74L,OACvBy1E,EAAKojH,eAAe74L,KAAOohM,EAC3BvjJ,EAAQI,MAAMmjJ,EAAM,CAClBj6E,YAAY,KAIH,kBAATi6E,EAEF,OADAvjJ,EAAQI,MAAM,kBACE,KAATzD,GAAwB,KAATA,EAClBqD,EAAQzhD,MAAMitH,EAAep3B,EAAKslG,EAAlC15I,CAA4CrD,GAC5C+8I,EAAS/8I,GAGf,IAAKi7B,EAAK4jH,WAAsB,KAAT7+I,EAGrB,OAFAqD,EAAQI,MAAM,kBACdJ,EAAQI,MAAM,iBACPsmJ,EAAO/pJ,GAIlB,OAAOy3C,EAAIz3C,IAGb,SAAS+pJ,EAAO/pJ,GACd,OAAI0tE,EAAW1tE,MAAWwD,EAAO,IAC/BH,EAAQK,QAAQ1D,GACT+pJ,KAIL9uH,EAAK4jH,WAAar7I,EAAO,KAC1By3B,EAAKojH,eAAe5vE,OACjBzuE,IAASi7B,EAAKojH,eAAe5vE,OACpB,KAATzuE,GAAwB,KAATA,IAEnBqD,EAAQM,KAAK,iBACNo5I,EAAS/8I,IAGXy3C,EAAIz3C,GAGb,SAAS+8I,EAAS/8I,GAKhB,OAJAqD,EAAQI,MAAM,kBACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,kBACbs3B,EAAKojH,eAAe5vE,OAASxzC,EAAKojH,eAAe5vE,QAAUzuE,EACpDqD,EAAQzhD,MACb21F,EACAtc,EAAK4jH,UAAYpnG,EAAMuyG,EACvB3mJ,EAAQynD,QACNm/F,EACAC,EACAC,IAKN,SAASH,EAAQhqJ,GAGf,OAFAi7B,EAAKojH,eAAe+L,kBAAmB,EACvCN,IACOI,EAAYlqJ,GAGrB,SAASmqJ,EAAYnqJ,GACnB,OAAIoD,EAAcpD,IAChBqD,EAAQI,MAAM,4BACdJ,EAAQK,QAAQ1D,GAChBqD,EAAQM,KAAK,4BACNumJ,GAGFzyG,EAAIz3C,GAGb,SAASkqJ,EAAYlqJ,GAGnB,OAFAi7B,EAAKojH,eAAe76I,KAClBsmJ,EAAcnyG,EAAW1c,EAAK6c,YAAYz0C,EAAQM,KAAK,oBAClDL,EAAGtD,KA/GZs+I,aAAc,CACZ9mG,SAkHJ,SAAkCn0C,EAASC,EAAIm0C,GAC7C,IAAIxc,EAAOz5E,KAEX,OADAy5E,EAAKojH,eAAeY,gBAAan+L,EAC1BuiD,EAAQzhD,MAAM21F,GAErB,SAAiBv3C,GAMf,OALAi7B,EAAKojH,eAAegM,kBAClBpvH,EAAKojH,eAAegM,mBACpBpvH,EAAKojH,eAAe+L,iBAGf9yG,EACLj0C,EACAC,EACA,iBACA23B,EAAKojH,eAAe76I,KAAO,EAJtB8zC,CAKLt3C,MAGJ,SAAkBA,GAChB,GAAIi7B,EAAKojH,eAAegM,oBAAsBjnJ,EAAcpD,GAE1D,OADAi7B,EAAKojH,eAAegM,kBAAoBpvH,EAAKojH,eAAe+L,sBAAmBtpM,EACxEwpM,EAAiBtqJ,GAI1B,OADAi7B,EAAKojH,eAAegM,kBAAoBpvH,EAAKojH,eAAe+L,sBAAmBtpM,EACxEuiD,EAAQynD,QAAQy/F,EAAiBjnJ,EAAIgnJ,EAArCjnJ,CAAuDrD,MAGhE,SAASsqJ,EAAiBtqJ,GAKxB,OAHAi7B,EAAKojH,eAAeY,YAAa,EAEjChkH,EAAK4jH,eAAY/9L,EACVw2F,EACLj0C,EACAA,EAAQynD,QAAQ/iG,EAAMu7C,EAAIm0C,GAC1B,aACAxc,EAAK0vB,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,OAC3DkC,EACA,EANCw2F,CAOLt3C,MAzJJ2D,KA8KF,SAAyBN,GACvBA,EAAQM,KAAKniD,KAAK68L,eAAe74L,QA7K/BykM,EAAoC,CACtCzyG,SA+KF,SAA0Cn0C,EAASC,EAAIm0C,GACrD,IAAIxc,EAAOz5E,KACX,OAAO81F,EACLj0C,GAQF,SAAqBrD,GACnB,OAAOoD,EAAcpD,KAClBggJ,EAAW/kH,EAAK2c,OAAQ,4BACvBH,EAAIz3C,GACJsD,EAAGtD,KAVP,2BACAi7B,EAAK0vB,OAAOhB,WAAWi2F,QAAQr0F,KAAK3sG,QAAQ,iBAAmB,OAC3DkC,EACA,IAtLN42F,SAAS,GAEP6yG,EAAkB,CACpB/yG,SAsJF,SAAwBn0C,EAASC,EAAIm0C,GACnC,IAAIxc,EAAOz5E,KACX,OAAO81F,EACLj0C,GAMF,SAAqBrD,GACnB,OAAOggJ,EAAW/kH,EAAK2c,OAAQ,oBAC7B3c,EAAKojH,eAAe76I,KAClBF,EAAGtD,GACHy3C,EAAIz3C,KARR,iBACAi7B,EAAKojH,eAAe76I,KAAO,IA3J7Bk0C,SAAS,GA6LX3yF,EAAOiD,QAAUD,G,6BCnNjB,IAAIsvF,EAAqB,EAAQ,IAC7B6S,EAAU,EAAQ,IAClB5S,EAAe,EAAQ,IAEvBsrG,EAAkB,CACpB1jM,KAAM,kBACNs4F,SAwDF,SAAiCn0C,EAASC,EAAIm0C,GAC5C,IAEIg3B,EACA9d,EAHA11B,EAAOz5E,KACPk+B,EAAQu7C,EAAK2c,OAAO52F,OAIxB,KAAO0+B,KAGL,GACiC,eAA/Bu7C,EAAK2c,OAAOl4D,GAAO,GAAGl6B,MACS,eAA/By1E,EAAK2c,OAAOl4D,GAAO,GAAGl6B,MACS,YAA/By1E,EAAK2c,OAAOl4D,GAAO,GAAGl6B,KACtB,CACAmrG,EAA2C,cAA/B11B,EAAK2c,OAAOl4D,GAAO,GAAGl6B,KAClC,MAIJ,OAEA,SAAew6C,GACb,IAAKi7B,EAAKm+E,OAASn+E,EAAK4jH,WAAaluF,GAInC,OAHAttD,EAAQI,MAAM,qBACdJ,EAAQI,MAAM,6BACdgrE,EAASzuE,EACFskJ,EAAgBtkJ,GAGzB,OAAOy3C,EAAIz3C,IAGb,SAASskJ,EAAgBtkJ,GACvB,OAAIA,IAASyuE,GACXprE,EAAQK,QAAQ1D,GACTskJ,IAGTjhJ,EAAQM,KAAK,6BACN2zC,EAAaj0C,EAASsiJ,EAAoB,aAA1CruG,CAAwDt3C,IAGjE,SAAS2lJ,EAAmB3lJ,GAC1B,OAAa,OAATA,GAAiBq3C,EAAmBr3C,IACtCqD,EAAQM,KAAK,qBACNL,EAAGtD,IAGLy3C,EAAIz3C,KAvGbkrD,UAGF,SAAkCtT,EAAQ7oF,GACxC,IACIC,EACA0wE,EACA9iB,EACA0hC,EAJA5+D,EAAQk4D,EAAO52F,OAOnB,KAAO0+B,KACL,GAAyB,UAArBk4D,EAAOl4D,GAAO,GAAgB,CAChC,GAA8B,YAA1Bk4D,EAAOl4D,GAAO,GAAGl6B,KAAoB,CACvCwJ,EAAU0wB,EACV,MAG4B,cAA1Bk4D,EAAOl4D,GAAO,GAAGl6B,OACnBk6E,EAAOhgD,OAIqB,YAA1Bk4D,EAAOl4D,GAAO,GAAGl6B,MAEnBoyF,EAAOt2F,OAAOo+B,EAAO,GAGlBk9B,GAAwC,eAA1Bg7B,EAAOl4D,GAAO,GAAGl6B,OAClCo3D,EAAal9B,GAKnB4+D,EAAU,CACR94F,KAAM,gBACNk5C,MAAOwrD,EAAQtS,EAAOlY,GAAM,GAAGhhC,OAC/BG,IAAKqrD,EAAQtS,EAAOA,EAAO52F,OAAS,GAAG,GAAG69C,MAG5C+4C,EAAOlY,GAAM,GAAGl6E,KAAO,oBAGnBo3D,GACFg7B,EAAOt2F,OAAOo+E,EAAM,EAAG,CAAC,QAAS4e,EAASvvF,IAC1C6oF,EAAOt2F,OAAOs7D,EAAa,EAAG,EAAG,CAAC,OAAQg7B,EAAO5oF,GAAS,GAAID,IAC9D6oF,EAAO5oF,GAAS,GAAG6vC,IAAMqrD,EAAQtS,EAAOh7B,GAAY,GAAG/d,MAEvD+4C,EAAO5oF,GAAS,GAAKsvF,EAIvB,OADA1G,EAAO/4F,KAAK,CAAC,OAAQy/F,EAASvvF,IACvB6oF,IAuDT7yF,EAAOiD,QAAU46L,G,6BClHjB,IAAIviI,EAAS,cAoFbt7D,EAAOiD,QAlFP,WACE,IAGIwiM,EAHA9rJ,GAAQ,EACRvvC,EAAS,EACTu3F,EAAS,GAEb,OAEA,SAAsBnnG,EAAOuxF,EAAUjyC,GACrC,IACItqC,EACAzD,EACA66G,EACA8+E,EACAzqJ,EALAurE,EAAS,GAMbhsH,EAAQmnG,EAASnnG,EAAM0R,SAAS6/E,GAChC66B,EAAgB,EAChBjlB,EAAS,GAELhoD,IAC0B,QAAxBn/C,EAAMoL,WAAW,IACnBghH,IAGFjtE,OAAQ59C,GAGV,KAAO6qH,EAAgBpsH,EAAMyB,QAAQ,CAMnC,GALAq/D,EAAOtqD,UAAY41G,EACnBp3G,EAAQ8rD,EAAOpqD,KAAK1W,GACpBkrM,EAAcl2L,EAAQA,EAAMmrB,MAAQngC,EAAMyB,OAC1Cg/C,EAAOzgD,EAAMoL,WAAW8/L,IAEnBl2L,EAAO,CACVmyF,EAASnnG,EAAMuH,MAAM6kH,GACrB,MAGF,GAAa,KAAT3rE,GAAe2rE,IAAkB8+E,GAAeD,EAClDj/E,EAAO1sH,MAAM,GACb2rM,OAAmB1pM,OAYnB,GAVI0pM,IACFj/E,EAAO1sH,MAAM,GACb2rM,OAAmB1pM,GAGjB6qH,EAAgB8+E,IAClBl/E,EAAO1sH,KAAKU,EAAMuH,MAAM6kH,EAAe8+E,IACvCt7L,GAAUs7L,EAAc9+E,GAGb,IAAT3rE,EACFurE,EAAO1sH,KAAK,OACZsQ,SACK,GAAa,IAAT6wC,EAIT,IAHAlvC,EAA+B,EAAxBgN,KAAKyC,KAAKpR,EAAS,GAC1Bo8G,EAAO1sH,MAAM,GAENsQ,IAAW2B,GAAMy6G,EAAO1sH,MAAM,QACnB,KAATmhD,GACTurE,EAAO1sH,MAAM,GACbsQ,EAAS,IAGTq7L,GAAmB,EACnBr7L,EAAS,GAIbw8G,EAAgB8+E,EAAc,EAG5B5rJ,IACE2rJ,GAAkBj/E,EAAO1sH,MAAM,GAC/B6nG,GAAQ6kB,EAAO1sH,KAAK6nG,GACxB6kB,EAAO1sH,KAAK,OAGd,OAAO0sH,K,6BChFX,IAAI00E,EAAc,EAAQ,KAU1Bl7L,EAAOiD,QARP,SAAqB4vF,GACnB,MAAQqoG,EAAYroG,KAIpB,OAAOA,I,gBCTT,IAAI8yG,EAAmB,EAAQ,KAoB/B3lM,EAAOiD,QAlBP,WACE,OAAO,SAAU2iM,GAaf,OAZAD,EAAiBC,EAAK,QAAQ,SAAUC,EAAUjsM,GAChD,IAAeoC,EAAG8H,EAAduG,EAAQ,EACZ,IAAKrO,EAAI,EAAG8H,EAAIlK,EAAQqC,OAAQD,EAAI8H,EAAG9H,IACb,SAApBpC,EAAQoC,GAAGyE,OAAiB4J,GAAS,GAE3C,IAAKrO,EAAI,EAAG8H,EAAI+hM,EAAS9rM,SAASkC,OAAQD,EAAI8H,EAAG9H,IAAK,CACpD,IAAIwG,EAAQqjM,EAAS9rM,SAASiC,GAC9BwG,EAAMm4B,MAAQ3+B,EACdwG,EAAM41L,QAAUyN,EAASzN,QAE3ByN,EAASx7L,MAAQA,KAEZu7L,K,6BCbX5lM,EAAOiD,QAGP,SAAsBmzD,EAAM31D,EAAM8yF,GAChC,IAAIt7E,EAAQ,GAEQ,mBAATxX,IACT8yF,EAAU9yF,EACVA,EAAO,MAMT,SAASg/C,EAAI10C,GACX,IAAIrL,EAMJ,OAJKe,GAAQsK,EAAKtK,OAASA,IACzBf,EAAS6zF,EAAQxoF,EAAMkN,EAAMrX,WAG3BmK,EAAKhR,WAAuB,IAAX2F,EAQvB,SAAa3F,EAAU4G,GACrB,IAEI6B,EAFAvG,EAASlC,EAASkC,OAClB0+B,GAAS,EAGb1iB,EAAMne,KAAK6G,GAEX,OAASg6B,EAAQ1+B,GAGf,IAFAuG,EAAQzI,EAAS4gC,MAEW,IAAf8kB,EAAIj9C,GACf,OAAO,EAMX,OAFAyV,EAAMzX,OAEC,EAxBEg1F,CAAIzqF,EAAKhR,SAAUgR,GAGrBrL,EAdT+/C,EAAI2W,K,6BCPN,IAAI88B,EAAQ,EAAQ,KAGhB4yG,EAAgB,2FAChBC,EAAc,uBAElB/lM,EAAOiD,QAAU,SAAUmzD,GACzB,IAAIh4D,EACA4nM,EAmCJ,OAlCA9yG,EAAM98B,EAAM,QAAQ,SAAUrrD,EAAM4vB,EAAOh6B,GACrCqlM,IAAkBrlM,IACpBvC,EAAO,GACP4nM,EAAgBrlM,GAGlB,IAAIslM,EAoDR,SAAwBl7L,GACtB,IAAIyE,EAAQzE,EAAKvQ,MAAMgV,MAAMs2L,GAC7B,QAAOt2L,GAAQA,EAAM,GAtDD02L,CAAen7L,GAEjC,GAAIk7L,EAMF,OALAtlM,EAAO5G,SAASwC,OAAOo+B,EAAO,EAAG,CAC/Bl6B,KAjBG,cAkBHwE,IAAKghM,EACLx+H,SAAU18D,EAAK08D,YAEV,EAGT,IAAI39D,EAgCR,SAAsBiB,EAAMpK,GAC1B,IAAI6O,EAAQzE,EAAKvQ,MAAMgV,MAAMu2L,GAC7B,QAAOv2L,GAAQ,CACbvK,IAAKuK,EAAM,GACX+mH,SAAU/mH,EAAM,GAChBzE,KAAMA,GArCQo7L,CAAap7L,GAE3B,IAAKjB,EACH,OAAO,EAGT,IAAIs8L,EAcR,SAAqBhoM,EAAMioM,GACzB,IAAIrqM,EAAIoC,EAAKnC,OAEb,KAAOD,KACL,GAAIoC,EAAKpC,GAAGiJ,MAAQohM,EAClB,OAAOjoM,EAAK7B,OAAOP,EAAG,GAAG,GAI7B,OAAO,EAvBUsqM,CAAYloM,EAAM0L,EAAQ7E,KAQzC,OANImhM,EACFzlM,EAAO5G,SAASwC,OAAOo+B,EAAO,EAqCpC,SAAiB4rK,EAAUC,EAAQ7lM,GACjC,IAAI8lM,EAAY9lM,EAAO5G,SAASF,QAAQ0sM,EAASx7L,MAC7C27L,EAAU/lM,EAAO5G,SAASF,QAAQ2sM,EAAOz7L,MAEzChR,EADY4G,EAAO5G,SAASwC,OAAOkqM,EAAWC,EAAUD,EAAY,GAC/C1kM,MAAM,GAAI,GACnC,MAAO,CACLtB,KA5EO,cA6EP1G,SAAUA,EACVkL,IAAKshM,EAASthM,IACdwiE,SAAU,CACR9tB,MAAO4sJ,EAASx7L,KAAK08D,SAAS9tB,MAC9BG,IAAK0sJ,EAAOz7L,KAAK08D,SAAS3tB,IAC1B6sJ,OAAQ,KAjDyBC,CAAQ98L,EAASs8L,EAAUzlM,IAClDmJ,EAAQysH,SAClBn4H,EAAKtE,KAAKgQ,IAGL,KACN,GAEIssD,I,6BChDTp2D,EAAOiD,QAAUkwF,EAEjB,IAAI0zG,EAAU,EAAQ,KAClBjnJ,EAAQ,EAAQ,KAUpB,SAASuzC,EAAa/8B,EAAMnvD,EAAMssF,EAASjzC,GACzC,IAAI7G,EACAlZ,EAEgB,mBAATt5B,GAA0C,mBAAZssF,IACvCjzC,EAAUizC,EACVA,EAAUtsF,EACVA,EAAO,MAGTs5B,EAAKsmK,EAAQ5/L,GACbwyC,EAAO6G,GAAW,EAAI,EAItB,SAASlgB,EAAQr1B,EAAM4vB,EAAO/gC,GAC5B,IACIO,EADAK,EAAwB,iBAATuQ,GAA8B,OAATA,EAAgBA,EAAO,GAGrC,iBAAfvQ,EAAMiG,OACftG,EAC2B,iBAAlBK,EAAM8/F,QACT9/F,EAAM8/F,QACgB,iBAAf9/F,EAAML,KACbK,EAAML,UACN4B,EAENm3F,EAAMxsB,YACJ,SAAW9mB,EAAMplD,EAAMiG,MAAQtG,EAAO,IAAMA,EAAO,IAAM,KAAO,KAGpE,OAAO+4F,EAEP,SAASA,IACP,IAEI4zG,EACAj3K,EAHAk3K,EAAentM,EAAQgH,OAAOmK,GAC9BrL,EAAS,GAIb,KAAKuH,GAAQs5B,EAAGx1B,EAAM4vB,EAAO/gC,EAAQA,EAAQqC,OAAS,IAAM,SA7CvD,KA8CHyD,EA2BR,SAAkBlF,GAChB,GAAc,OAAVA,GAAmC,iBAAVA,GAAsB,WAAYA,EAC7D,OAAOA,EAGT,GAAqB,iBAAVA,EACT,MAAO,EAjFI,EAiFOA,GAGpB,MAAO,CAACA,GApCOwsM,CAASzzG,EAAQxoF,EAAMnR,KAErB,GACT,OAAO8F,EAIX,GAAIqL,EAAKhR,UAtDJ,SAsDgB2F,EAAO,GAG1B,IAFAmwB,GAAUywB,EAAUv1C,EAAKhR,SAASkC,QAAU,GAAKw9C,EAE1C5pB,GAAU,GAAKA,EAAS9kB,EAAKhR,SAASkC,QAAQ,CAGnD,IA3DC,KAyDD6qM,EAAY1mK,EAAQr1B,EAAKhR,SAAS81B,GAASA,EAAQk3K,EAAvC3mK,IAEE,GACZ,OAAO0mK,EAGTj3K,EAC0B,iBAAjBi3K,EAAU,GAAkBA,EAAU,GAAKj3K,EAAS4pB,EAIjE,OAAO/5C,GAjDX0gC,CAAQg2B,EAAM,KAAM,GAApBh2B,GAjBF+yD,EAAaC,UAJE,EAKfD,EAAaE,KAJF,OAKXF,EAAaG,MAJF,G,6BCLX,SAASuzG,EAAQ5/L,GACf,GAAY,MAARA,EACF,OAAOs3C,EAGT,GAAoB,iBAATt3C,EACT,OAuDJ,SAAqBA,GACnB,OAEA,SAAc8D,GACZ,OAAOw4B,QAAQx4B,GAAQA,EAAKtK,OAASwG,IA3D9BggM,CAAYhgM,GAGrB,GAAoB,iBAATA,EACT,MAAO,WAAYA,EA0BvB,SAAoBigM,GAClB,IAAIC,EAAS,GACTxsK,GAAS,EAEb,OAASA,EAAQusK,EAAMjrM,QACrBkrM,EAAOxsK,GAASksK,EAAQK,EAAMvsK,IAGhC,OAEA,WACE,IAAIA,GAAS,EAEb,OAASA,EAAQwsK,EAAOlrM,QACtB,GAAIkrM,EAAOxsK,GAAO59B,MAAMN,KAAM8V,WAC5B,OAAO,EAIX,OAAO,GA7CmB60L,CAAWngM,GAYzC,SAAoBA,GAClB,OAEA,SAAa8D,GACX,IAAInH,EAEJ,IAAKA,KAAOqD,EACV,GAAI8D,EAAKnH,KAASqD,EAAKrD,GAAM,OAAO,EAGtC,OAAO,GAtBsCyjM,CAAWpgM,GAG1D,GAAoB,mBAATA,EACT,OAAOA,EAGT,MAAM,IAAIrJ,MAAM,gDAqDlB,SAAS2gD,IACP,OAAO,EAzETv+C,EAAOiD,QAAU4jM,G,cCFjB7mM,EAAOiD,QACP,SAAkBE,GAChB,OAAOA,I,6BCAT,IAAI+vF,EAAQ,EAAQ,KAEhB32F,EAAS,GAAGA,OAYhB,SAASs6D,EAAWywI,EAAOnsM,GACzB,OAEA,SAAmBi7D,GAEjB,OADA88B,EAAM98B,EAAM7jC,GACL6jC,GAIT,SAAS7jC,EAAOxnB,EAAM4vB,EAAOh6B,GAC3B,GAAIA,IAAW2mM,EAAMv8L,EAAM4vB,EAAOh6B,GAAS,CACzC,IAAIotE,EAAa,CAACpzC,EAAO,GAOzB,MALa,WAATx/B,GAAqB4P,EAAKhR,WAC5Bg0E,EAAaA,EAAWntE,OAAOmK,EAAKhR,WAGtCwC,EAAOQ,MAAM4D,EAAO5G,SAAUg0E,GACvBpzC,IA5Bb13B,EAAQ0zD,OAAS,SAAUiB,EAAOz8D,GAChC,OAAO07D,GAEP,SAAe9rD,EAAM4vB,EAAOh6B,GAC1B,OAAQi3D,EAAM71B,SAASh3B,EAAKtK,QAHLtF,IAO3B8H,EAAQ4zD,WAAaA,G,6BCZrB,IAAIsb,EAAQ,EAAQ,GAEhBjd,EAAQ,EAAQ,KAEhBqyI,EAAU,EAAQ,KAEtB,SAAShyI,EAAWxqD,EAAMnL,GACxB,IAAIe,EAAS4R,UAAUtW,OAAS,QAAsBF,IAAjBwW,UAAU,GAAmBA,UAAU,GAAK,GAC7EooB,EAAQpoB,UAAUtW,OAAS,QAAsBF,IAAjBwW,UAAU,GAAmBA,UAAU,GAAK,EAC5Ei1L,EAAW5nM,EAAQq2D,UAAUlrD,EAAKtK,MAGjCsK,EAAK08D,WACR18D,EAAK08D,SAAW,CACd9tB,MAAO,CACLxvC,KAAM,KACNC,OAAQ,KACRylB,OAAQ,MAEViqB,IAAK,CACH3vC,KAAM,KACNC,OAAQ,KACRylB,OAAQ,QAKd,IAAIhL,EAAM9Z,EAAK08D,SAAS9tB,MACpB/1C,EAAM,CAACmH,EAAKtK,KAAMokB,EAAI1a,KAAM0a,EAAIza,OAAQuwB,GAAOp5B,KAAK,KAExD,IAAKgmM,EAAQE,mBAAmBD,GAC9B,MAAM,IAAI5pM,MAAM,sBAAsBgD,OAAOmK,EAAKtK,KAAM,uCAG1D,IAAIinM,EAAYC,EAAa58L,EAAMnH,EAAKhE,EAAS4nM,EAAU7mM,EAAQg6B,GACnE,OAAOw3C,EAAMhzE,cAAcqoM,EAAUE,EAAWA,EAAU3tM,UAAY6tM,UAAqB7rM,GAE3F,SAAS6rM,IACP,OAAO78L,EAAKhR,UAAYgR,EAAKhR,SAASsG,KAAI,SAAUwnM,EAAW7rM,GAC7D,OAAOu5D,EAAWsyI,EAAWjoM,EAAS,CACpCmL,KAAMA,EACN0G,MAAOi2L,GACN1rM,OAMT,SAAS2rM,EAAa58L,EAAMnH,EAAK0qE,EAAMk5H,EAAU7mM,EAAQg6B,GACvD,IA0MuB9V,EA1MnBpT,EAAQ,CACV7N,IAAKA,GAEHkkM,EAAuC,iBAAbN,GAAyBA,IAAar1H,EAAMpG,SAEtEuC,EAAK9W,WAAazsD,EAAK08D,WACzBh2D,EAAM,kBAqMD,EADgBoT,EApMqB9Z,EAAK08D,UAqMrC9tB,MAAMxvC,KAAM,IAAK0a,EAAI80B,MAAMvvC,OAAQ,IAAKya,EAAIi1B,IAAI3vC,KAAM,IAAK0a,EAAIi1B,IAAI1vC,QAAQ/J,IAAI8xB,QAAQ5wB,KAAK,KAlMpG+sE,EAAK7W,eAAiBqwI,IACxBr2L,EAAMg2B,eAAiB18B,EAAK08D,UAI1B6G,EAAKy5H,kBAAoBpnM,EAAOoK,MAAQpK,EAAOoK,KAAKhR,WAAa+tM,IACnEr2L,EAAMkpB,MAAQh6B,EAAOoK,KAAKhR,SAASF,QAAQkR,GAC3C0G,EAAMu2L,iBAAmBrnM,EAAOoK,KAAKhR,SAASkC,QAGhD,IAAIyV,EAA0B,OAApB3G,EAAK+pL,iBAA2C/4L,IAApBgP,EAAK+pL,WAE3CxmH,EAAK/X,YAAYxrD,EAAK+pL,WAAWx5J,gBAAkB,GAAK,KAExD,OAAQvwB,EAAKtK,MACX,IAAK,OACHwnM,EAAcx2L,EAAO,CACnB7F,UAAW0iE,EAAK1iE,YAElB,MAEF,IAAK,OACH6F,EAAMy2L,QAAUtkM,EAChB6N,EAAM1X,SAAWgR,EAAKvQ,MACtB,MAEF,IAAK,UACHiX,EAAM02L,MAAQp9L,EAAKV,MACnB,MAEF,IAAK,OACHoH,EAAMkoC,MAAQ5uC,EAAK4uC,MACnBloC,EAAM2mL,QAAUrtL,EAAKqtL,QACrB3mL,EAAMkkL,OAAS5qL,EAAK4qL,OACpBlkL,EAAMpH,MAAQU,EAAKV,MACnB,MAEF,IAAK,WACHoH,EAAM2iG,QAAUrpG,EAAKqpG,QACrB3iG,EAAMkkL,OAAS5qL,EAAK4qL,OACpBlkL,EAAM2mL,QAAUrtL,EAAKqtL,QACrB3mL,EAAMkpB,MAAQ5vB,EAAK4vB,MACnBlpB,EAAM1X,SA2JZ,SAA6BgR,EAAMpK,GAGjC,OADYA,GAAUA,EAAOoK,KAU/B,SAAmBA,GACjB,IAAIhR,EAAWgR,EAAKhR,SAChBquM,EAAQr9L,EAAK4qL,OACbh7J,GAAS,EAEb,MAAQytK,KAAWztK,EAAQ5gC,EAASkC,QAClCmsM,EAAQC,EAActuM,EAAS4gC,IAGjC,OAAOytK,EAnB6BE,CAAU3nM,EAAOoK,MAAQs9L,EAAct9L,IAC5DA,EAAKhR,SAGtB,SAA0BgR,GACxB,OAAOA,EAAKhR,SAAS+gE,QAAO,SAAU9gD,EAAOxX,GAC3C,OAAOwX,EAAMpZ,OAAsB,cAAf4B,EAAM/B,KAAuB+B,EAAMzI,SAAW,CAACyI,MAClE,IAN4B+lM,CAAiBx9L,GA9J3By9L,CAAoBz9L,EAAMpK,GAAQN,KAAI,SAAUwnM,EAAW7rM,GAC1E,OAAOu5D,EAAWsyI,EAAWv5H,EAAM,CACjCvjE,KAAMA,EACN0G,MAAOA,GACNzV,MAEL,MAEF,IAAK,aACHisM,EAAcx2L,EAAO,CACnBqjL,WAAY/pL,EAAK+pL,WACjB/sJ,MAAOh9B,EAAKg9B,MACZ61B,IAAK7yD,EAAK6yD,MAEZ,MAEF,IAAK,OACHqqI,EAAcx2L,EAAO,CACnBg3L,SAAU19L,EAAKqoB,MAAQroB,EAAKqoB,KAAK/sB,MAAM,KAAM,GAAG,KAElD,MAEF,IAAK,aACHoL,EAAM1X,SAAWgR,EAAKvQ,MACtBiX,EAAMi3L,QAAS,EACf,MAEF,IAAK,OACHT,EAAcx2L,EAAO,CACnBs2B,MAAOh9B,EAAKg9B,YAAShsC,EACrB0kC,OAAmC,mBAApB6tC,EAAK5W,WAA4B4W,EAAK5W,WAAW3sD,EAAK6yD,IAAK7yD,EAAKhR,SAAUgR,EAAKg9B,OAASumC,EAAK5W,WAC5G41C,KAAMh/B,EAAK/W,iBAAmB+W,EAAK/W,iBAAiBxsD,EAAK6yD,IAAK7yD,EAAKhR,SAAUgR,EAAKg9B,OAASh9B,EAAK6yD,MAElG,MAEF,IAAK,QACHqqI,EAAcx2L,EAAO,CACnBpS,IAAKivE,EAAK3W,kBAAoB2W,EAAK3W,kBAAkB5sD,EAAK6yD,IAAK7yD,EAAKhR,SAAUgR,EAAKg9B,MAAOh9B,EAAKk0E,KAAOl0E,EAAK6yD,IAC3GqhB,IAAKl0E,EAAKk0E,KAAO,GACjBl3C,MAAOh9B,EAAKg9B,YAAShsC,IAEvB,MAEF,IAAK,gBACHksM,EAAcx2L,EAAOyjD,EAAMxjD,EAAK,CAC9B47F,KAAMh/B,EAAK/W,iBAAmB+W,EAAK/W,iBAAiB7lD,EAAI47F,MAAQ57F,EAAI47F,QAEtE,MAEF,IAAK,iBACH26F,EAAcx2L,EAAO,CACnBpS,IAAKivE,EAAK3W,mBAAqBjmD,EAAI47F,KAAOh/B,EAAK3W,kBAAkBjmD,EAAI47F,KAAMviG,EAAKhR,SAAU2X,EAAIq2B,MAAOh9B,EAAKk0E,KAAOvtE,EAAI47F,KACrHruB,IAAKl0E,EAAKk0E,KAAO,GACjBl3C,MAAOr2B,EAAIq2B,YAAShsC,IAEtB,MAEF,IAAK,QACL,IAAK,YACL,IAAK,YACH0V,EAAMk3L,gBAAkB59L,EAAK43D,MAC7B,MAEF,IAAK,WACHlxD,EAAMm3L,SAAgC,cAArBjoM,EAAOoK,KAAKtK,KAC7BgR,EAAMk3L,gBAAkBhoM,EAAO8Q,MAAMk3L,gBACrC,MAEF,IAAK,YACHV,EAAcx2L,EAAO,CACnBm3L,SAAUjoM,EAAO8Q,MAAMm3L,SACvBjmI,MAAOhiE,EAAO8Q,MAAMk3L,gBAAgBhuK,KAEtC,MAEF,IAAK,cACHlpB,EAAMxM,IAAM8F,EAAK9F,IACjB,MAEF,IAAK,OAEHwM,EAAMo3L,QAAU99L,EAAK08D,SAAS9tB,MAAMxvC,OAASY,EAAK08D,SAAS3tB,IAAI3vC,KAC/DsH,EAAMslD,mBAAqBuX,EAAKvX,mBAChCtlD,EAAMulD,WAAasX,EAAKtX,WACxBvlD,EAAMwlD,SAAWqX,EAAKrX,SACtB,MAEF,IAAK,aAED,IAAI6xI,EAEA/9L,EAAKhR,WACP+uM,EAAiB/9L,EAAKhR,SAASsG,KAAI,SAAUmC,EAAOxG,GAClD,OAAOu5D,EAAW/yD,EAAO8rE,EAAM,CAC7BvjE,KAAMA,EACN0G,MAAOA,GACNzV,OAIPyV,EAAMslD,mBAAqBuX,EAAKvX,mBAChCtlD,EAAMulD,WAAasX,EAAKtX,WACxBvlD,EAAMwlD,SAAWqX,EAAKrX,SACtBxlD,EAAMyvB,QAAUn2B,EAAKm2B,QA+B7B,SAA2Bn2B,EAAM+9L,GAC/B,IAAI1yG,EAAKrrF,EAAKm2B,QAEd,GAAIp2B,MAAMsF,QAAQgmF,GAAK,CAErB,IAAIrqB,EAAWoG,EAAMpG,UAAY,MACjC,OAAOoG,EAAMhzE,cAAc4sE,EAAU,KAAMqqB,GAG7C,GAAIA,EAAG3kF,MAAM1X,UAAY+uM,EAAgB,CACvC,IAAI/uM,EAAWo4E,EAAMH,SAASt6C,QAAQ0+D,EAAG3kF,MAAM1X,UAAU6G,OAAOkoM,GAChE,OAAO32H,EAAMD,aAAakkB,EAAI,KAAMr8F,GAGtC,OAAOo4E,EAAMD,aAAakkB,EAAI,MA7CO2yG,CAAkBh+L,EAAM+9L,GAAkB,KACzE,MAGJ,QACEb,EAAcx2L,EAAOyjD,EAAMnqD,EAAM,CAC/BtK,UAAM1E,EACN0rE,cAAU1rE,EACVhC,cAAUgC,KAYhB,OARK+rM,GAAoB/8L,EAAKvQ,QAC5BiX,EAAMjX,MAAQuQ,EAAKvQ,OAGhBstM,IACHr2L,EAAM1G,KAAOA,GAGR0G,EAGT,SAASw2L,EAAcxnK,EAAQk2D,GAC7B,IAAK,IAAI/yF,KAAO+yF,OACY,IAAfA,EAAM/yF,KACf68B,EAAO78B,GAAO+yF,EAAM/yF,IAkD1B,SAASykM,EAAct9L,GACrB,IAAI4qL,EAAS5qL,EAAK4qL,OAGlB,OAAOA,QAA0C5qL,EAAKhR,SAASkC,OAAS,EAAI05L,EAG9E31L,EAAOiD,QAAUsyD,G,6BC7Rfv1D,EAAOiD,QAAU,EAAQ,M;;;;;;;;GCMd,IAAIlC,EAAE,mBAAoBwC,QAAQA,OAAO40B,IAAIr5B,EAAEiC,EAAEwC,OAAO40B,IAAI,iBAAiB,MAAMh1B,EAAEpC,EAAEwC,OAAO40B,IAAI,gBAAgB,MAAMz9B,EAAEqG,EAAEwC,OAAO40B,IAAI,kBAAkB,MAAMrvB,EAAE/H,EAAEwC,OAAO40B,IAAI,qBAAqB,MAAMtwB,EAAE9G,EAAEwC,OAAO40B,IAAI,kBAAkB,MAAMp5B,EAAEgC,EAAEwC,OAAO40B,IAAI,kBAAkB,MAAM5vB,EAAExH,EAAEwC,OAAO40B,IAAI,iBAAiB,MAAMj7B,EAAE6D,EAAEwC,OAAO40B,IAAI,oBAAoB,MAAMj1B,EAAEnC,EAAEwC,OAAO40B,IAAI,yBAAyB,MAAMr0B,EAAE/C,EAAEwC,OAAO40B,IAAI,qBAAqB,MAAMh6B,EAAE4C,EAAEwC,OAAO40B,IAAI,kBAAkB,MAAMvwB,EAAE7G,EACpfwC,OAAO40B,IAAI,uBAAuB,MAAM70B,EAAEvC,EAAEwC,OAAO40B,IAAI,cAAc,MAAMj9B,EAAE6F,EAAEwC,OAAO40B,IAAI,cAAc,MAAM3xB,EAAEzF,EAAEwC,OAAO40B,IAAI,eAAe,MAAMtxB,EAAE9F,EAAEwC,OAAO40B,IAAI,qBAAqB,MAAMrwB,EAAE/G,EAAEwC,OAAO40B,IAAI,mBAAmB,MAAM3vB,EAAEzH,EAAEwC,OAAO40B,IAAI,eAAe,MAClQ,SAAS9vB,EAAEvH,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAI6H,EAAE7H,EAAEoyJ,SAAS,OAAOvqJ,GAAG,KAAK7J,EAAE,OAAOgC,EAAEA,EAAEL,MAAQ,KAAKvD,EAAE,KAAKgG,EAAE,KAAKxI,EAAE,KAAKmN,EAAE,KAAKiB,EAAE,KAAK3K,EAAE,OAAO2C,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEoyJ,UAAY,KAAK3qJ,EAAE,KAAKzE,EAAE,KAAK5I,EAAE,KAAKoI,EAAE,KAAKvE,EAAE,OAAO+B,EAAE,QAAQ,OAAO6H,GAAG,KAAKxF,EAAE,OAAOwF,IAAI,SAASZ,EAAEjH,GAAG,OAAOuH,EAAEvH,KAAKoC,EAAED,EAAQ+lM,UAAU9rM,EAAE+F,EAAQgmM,eAAe/lM,EAAED,EAAQimM,gBAAgB3gM,EAAEtF,EAAQkmM,gBAAgBpqM,EAAEkE,EAAQ63F,QAAQh8F,EAAEmE,EAAQmmM,WAAWtlM,EAAEb,EAAQ8oE,SAASrxE,EAAEuI,EAAQomM,KAAKnuM,EAAE+H,EAAQqmM,KAAKhmM,EAAEL,EAAQsmM,OAAOpmM,EAChfF,EAAQywJ,SAAS7rJ,EAAE5E,EAAQ2wJ,WAAW9qJ,EAAE7F,EAAQ4wJ,SAAS11J,EAAE8E,EAAQumM,YAAY,SAAS1oM,GAAG,OAAOiH,EAAEjH,IAAIuH,EAAEvH,KAAK5D,GAAG+F,EAAQwmM,iBAAiB1hM,EAAE9E,EAAQymM,kBAAkB,SAAS5oM,GAAG,OAAOuH,EAAEvH,KAAKyH,GAAGtF,EAAQ0mM,kBAAkB,SAAS7oM,GAAG,OAAOuH,EAAEvH,KAAK/B,GAAGkE,EAAQiyE,UAAU,SAASp0E,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEoyJ,WAAWp0J,GAAGmE,EAAQ2mM,aAAa,SAAS9oM,GAAG,OAAOuH,EAAEvH,KAAKgD,GAAGb,EAAQ4mM,WAAW,SAAS/oM,GAAG,OAAOuH,EAAEvH,KAAKpG,GAAGuI,EAAQ6mM,OAAO,SAAShpM,GAAG,OAAOuH,EAAEvH,KAAK5F,GACzd+H,EAAQ8mM,OAAO,SAASjpM,GAAG,OAAOuH,EAAEvH,KAAKwC,GAAGL,EAAQ+mM,SAAS,SAASlpM,GAAG,OAAOuH,EAAEvH,KAAKqC,GAAGF,EAAQgnM,WAAW,SAASnpM,GAAG,OAAOuH,EAAEvH,KAAK+G,GAAG5E,EAAQinM,aAAa,SAASppM,GAAG,OAAOuH,EAAEvH,KAAKgI,GAAG7F,EAAQknM,WAAW,SAASrpM,GAAG,OAAOuH,EAAEvH,KAAK3C,GACzO8E,EAAQwkM,mBAAmB,SAAS3mM,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAIpG,GAAGoG,IAAIoC,GAAGpC,IAAI+G,GAAG/G,IAAIgI,GAAGhI,IAAI3C,GAAG2C,IAAI8G,GAAG,iBAAkB9G,GAAG,OAAOA,IAAIA,EAAEoyJ,WAAWh4J,GAAG4F,EAAEoyJ,WAAW5vJ,GAAGxC,EAAEoyJ,WAAWn0J,GAAG+B,EAAEoyJ,WAAW3qJ,GAAGzH,EAAEoyJ,WAAWpvJ,GAAGhD,EAAEoyJ,WAAWrsJ,GAAG/F,EAAEoyJ,WAAWprJ,GAAGhH,EAAEoyJ,WAAW1qJ,GAAG1H,EAAEoyJ,WAAW1sJ,IAAIvD,EAAQmnM,OAAO/hM,G,6BCZnU,IAAI6qF,EAAQ,EAAQ,KAOpB,SAASyhB,EAAKixB,GACZ,IAAI7rI,EAAW6rI,EAAM7rI,SACrB6rI,EAAM7rI,SAAW,CAAC,CAChB0G,KAAM,YACNkiE,MAAOijE,EAAMjjE,MACb5oE,SAAU,CAACA,EAAS,IACpB0tE,SAAU1tE,EAAS,GAAG0tE,WAGpB1tE,EAASkC,OAAS,GACpB2pI,EAAM7rI,SAASD,KAAK,CAClB2G,KAAM,YACNkiE,MAAOijE,EAAMjjE,MACb5oE,SAAUA,EAASgI,MAAM,GACzB0lE,SAAU,CACR9tB,MAAO5/C,EAAS,GAAG0tE,SAAS9tB,MAC5BG,IAAK//C,EAASA,EAASkC,OAAS,GAAGwrE,SAAS3tB,OArBpD95C,EAAOiD,QAAU,SAAU8H,GAEzB,OADAmoF,EAAMnoF,EAAM,QAAS4pG,GACd5pG,I,6BCJT,IAAImoF,EAAQ,EAAQ,KAEpBlzF,EAAOiD,QAAU,SAAwBmzD,GACvC,IAAIG,EAAchkD,UAAUtW,OAAS,QAAsBF,IAAjBwW,UAAU,GAAmBA,UAAU,GAAK,GAStF,OARA2gF,EAAM98B,EAAM,cAAc,SAAUrrD,GAClC,IAAI+pL,EAAa/pL,EAAK+pL,WAAWx5J,cAC7Bw5J,KAAcv+H,IAClBA,EAAYu+H,GAAc,CACxBxnF,KAAMviG,EAAK6yD,IACX71B,MAAOh9B,EAAKg9B,WAGTwuB,I,6BCZT,IAAI8zI,EAAY,CAAC,OAAQ,QAAS,SAAU,OAE5CrqM,EAAOiD,QAAU,SAAwBqnM,GACvC,IAAI1sI,GAAO0sI,GAAO,IAAIlkM,OAClB0vF,EAAQl4B,EAAI50D,OAAO,GAEvB,GAAc,MAAV8sF,GAA2B,MAAVA,EACnB,OAAOl4B,EAGT,IAAI2sI,EAAQ3sI,EAAI/jE,QAAQ,KAExB,IAAe,IAAX0wM,EACF,OAAO3sI,EAMT,IAHA,IAAI3hE,EAASouM,EAAUpuM,OACnB0+B,GAAS,IAEJA,EAAQ1+B,GAAQ,CACvB,IAAImgE,EAAWiuI,EAAU1vK,GAEzB,GAAI4vK,IAAUnuI,EAASngE,QAAU2hE,EAAI77D,MAAM,EAAGq6D,EAASngE,QAAQsT,gBAAkB6sD,EAC/E,OAAOwB,EAMX,OAAe,KAFfjjC,EAAQijC,EAAI/jE,QAAQ,OAEA0wM,EAAQ5vK,IAMb,KAFfA,EAAQijC,EAAI/jE,QAAQ,OAEA0wM,EAAQ5vK,EALnBijC,EAUF,uB,6BCvCT,IAAI1I,EAAQ,EAAQ,KAEhBid,EAAQ,EAAQ,GAIhBq4H,EAAuBhqL,UAAU2xD,EAAMlzC,SAAW,MAAMl9B,MAAM,EAAG,GAAI,KAAO,GAC5E5C,EAAgBgzE,EAAMhzE,cA+C1B,SAASsrM,EAAexlM,EAAKwM,GAC3B,OAAOtS,EAAc8F,EAAKylM,EAAaj5L,GAAQA,EAAM1X,UA0FvD,SAAS2wM,EAAaj5L,GACpB,IAAIoqB,EAASpqB,EAAM,kBAGnB,OAAOoqB,EAAS,CACd,iBAAkBA,GAChB,GA/IN77B,EAAOiD,QAAU,CACf0nM,MAAO,KACP/+F,UAAW,IACXspF,SAAU,KACVoB,OAAQ,SACRxsE,cAAe,KACf8gF,WAAY,aACZ36D,OAAQ,MACRxjC,KAAM,IACNnU,MAAO,MACPuyG,cAAe,IACfC,eAAgB,MAChBllE,MAAO6kE,EAAe5mM,KAAK,KAAM,SACjCknM,UAAWN,EAAe5mM,KAAK,KAAM,SACrCmnM,UAAWP,EAAe5mM,KAAK,KAAM,SACrConM,SAAUR,EAAe5mM,KAAK,KAAM,MACpCqnM,UAkCF,SAAmBz5L,GACjB,IAAI21D,EAAQ31D,EAAMkxD,MAAQ,CACxBwoI,UAAW15L,EAAMkxD,YACf5mE,EACAqvM,EAAYV,EAAaj5L,GAC7B,OAAOtS,EAAcsS,EAAMm3L,SAAW,KAAO,KAAMxhI,EAAQlS,EAAM,CAC/DkS,MAAOA,GACNgkI,GAAaA,EAAW35L,EAAM1X,WAxCjC65F,KAqBF,SAAcniF,GACZ,IAAI7F,EAAY6F,EAAM7F,UAClBgoF,GAAQhoF,GAAaumE,EAAMpG,UAAY,MAC3C,OAAO5sE,EAAcy0F,EAAMhoF,EAAY,CACrCA,UAAWA,GACT,KAAM6F,EAAM1X,WAzBhB4gF,KAYF,SAAsBlpE,GAEpB,IAAI1X,EAAW0X,EAAM1X,UAAY,GAGjC,OAAOywM,EAAuBzwM,EAAWoF,EAAc,OAAQ,KAAMpF,IAhBrEiJ,KA6CF,SAAcyO,GACZ,IAAIklF,EAAQ+zG,EAAaj5L,GAEL,OAAhBA,EAAMkoC,OAAkC,IAAhBloC,EAAMkoC,YAA+B59C,IAAhB0V,EAAMkoC,QACrDg9C,EAAMh9C,MAAQloC,EAAMkoC,MAAMztC,YAG5B,OAAO/M,EAAcsS,EAAM2mL,QAAU,KAAO,KAAMzhG,EAAOllF,EAAM1X,WAnD/D27L,SAsDF,SAAkBjkL,GAChB,IAAI45L,EAAW,KAEf,GAAsB,OAAlB55L,EAAM2iG,cAAsCr4G,IAAlB0V,EAAM2iG,QAAuB,CACzD,IAAIA,EAAU3iG,EAAM2iG,QACpBi3F,EAAWlsM,EAAc,QAAS,CAChCsB,KAAM,WACN2zG,QAASA,EACTk3F,UAAU,IAId,OAAOnsM,EAAc,KAAMurM,EAAaj5L,GAAQ45L,EAAU55L,EAAM1X,WAjEhE89D,WAgHF,WACE,OAAO,MAhHP0hC,QAsCF,SAAiB9nF,GACf,OAAOtS,EAAc,IAAIyB,OAAO6Q,EAAM02L,OAAQuC,EAAaj5L,GAAQA,EAAM1X,WAtCzEwxM,WA0EF,SAAoB95L,GAClB,OAAOtS,EAAc,OAAQurM,EAAaj5L,GAAQA,EAAM1X,WA1ExDkhD,KAiEF,SAAmBxpC,GACjB,IAAI7F,EAAY6F,EAAMg3L,UAAY,YAAY7nM,OAAO6Q,EAAMg3L,UACvDxtJ,EAAO97C,EAAc,OAAQyM,EAAY,CAC3CA,UAAWA,GACT,KAAM6F,EAAMjX,OAChB,OAAO2E,EAAc,MAAOurM,EAAaj5L,GAAQwpC,IArEjDm+C,KA4EF,SAAc3nF,GACZ,GAAIA,EAAMwlD,SACR,OAAO,KAGT,IAAIu0I,EAAY/5L,EAAMslD,qBAA2C,IAArBtlD,EAAMulD,WAC9C/xD,EAAMwM,EAAMo3L,QAAU,MAAQ,OAElC,IAAK2C,EAEH,OAAOrsM,EAAcgzE,EAAMpG,UAAY9mE,EAAK,KAAMwM,EAAMjX,OAG1D,IAAIktM,EAAY,CACdvzG,wBAAyB,CACvBC,OAAQ3iF,EAAMjX,QAGlB,OAAO2E,EAAc8F,EAAKyiM,IA7F1B+D,YAuGF,SAAqBh6L,GACnB,OAAOtS,EAAcsS,EAAMxM,IAAKylM,EAAaj5L,GAAQA,EAAM1X,WAvG3D2xM,WA+FF,SAAoBj6L,GAElB,OAAOA,EAAM,kBAAoB0gE,EAAMD,aAAazgE,EAAMyvB,QAAS,CACjE,iBAAkBzvB,EAAM,oBACrBA,EAAMyvB,W,6BCpIbj+B,EAAQm0D,WAA+B,oBAAX7zD,OAHX,sBAGiDA,OAHjD,wB,4HCFjB,IAAIoiH,EAAmB,EAAQ,KAM/B3lH,EAAOiD,QAJP,SAA4B8Q,GAC1B,GAAIjJ,MAAMsF,QAAQ2D,GAAM,OAAO4xG,EAAiB5xG,IAIlD/T,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,cCHxEzD,EAAOiD,QAJP,SAA0Bu1J,GACxB,GAAsB,oBAAXj1J,QAAmD,MAAzBi1J,EAAKj1J,OAAOujG,WAA2C,MAAtB0xD,EAAK,cAAuB,OAAO1tJ,MAAMgM,KAAK0hJ,IAItHx4J,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,cCDxEzD,EAAOiD,QAJP,WACE,MAAM,IAAI43F,UAAU,yIAItB76F,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,gBCLxE;;;;;CAMC,SAAUmwF,EAAMxzD,GAChB,aAGkCpgC,EAAOiD,QACxCjD,EAAOiD,QAAUm9B,EAAQ,EAAQ,KAEjC,EAAO,CAAC,WAAkB,0BAAP,EAAF,GAAS,gCAP5B,CAWE3jC,GAAM,SAAUihH,GACjB,kBAGuB3hH,IAAnB2hH,EAAOz+E,SAAyBy+E,EAAO35E,UAC1C25E,EAASA,EAAO35E,SASjB,IAMC4nK,EALAC,EAAQ,GACRr9F,EAAQ,GACRs9F,EAAY,GACZjkL,EAAQ,GACRkkL,EAAU,GAGNpuF,GAAoC,iBAAnBA,EAAOz+E,SAC5B8sK,EAAS,gGAGV,IAAIC,EAAgBtuF,EAAOz+E,QAAQ54B,MAAM,KACxC4lM,GAASD,EAAc,GACvBE,GAASF,EAAc,GAWxB,SAASG,EAAc56B,GACtB,OAAIA,EAAW,GACPA,EAAW,GACRA,EAAW,GACdA,EAAW,GAEZA,EAAW,GAGnB,SAAS66B,EAAaj8L,GACrB,IAAInU,EAAI,EACPo0B,EAAQjgB,EAAO9J,MAAM,KACrBgmM,EAAQj8K,EAAM,GACdk8K,EAAal8K,EAAM,IAAM,GACzBwvH,EAAa,EAEb7kH,EAAM,EACN/K,EAAO,EASR,IAN6B,KAAzB7f,EAAOvK,WAAW,KACrB5J,EAAI,EACJg0B,GAAQ,GAIDh0B,EAAIqwM,EAAMpwM,OAAQD,IAEzB++B,EAAM,GAAKA,EADLoxK,EAAcE,EAAMzmM,WAAW5J,IAKtC,IAAKA,EAAI,EAAGA,EAAIswM,EAAWrwM,OAAQD,IAClC4jJ,GAA0B,GAE1B7kH,GADMoxK,EAAcG,EAAW1mM,WAAW5J,IAC7B4jJ,EAGd,OAAO7kH,EAAM/K,EAGd,SAASu8K,EAAYvyL,GACpB,IAAK,IAAIhe,EAAI,EAAGA,EAAIge,EAAM/d,OAAQD,IACjCge,EAAMhe,GAAKowM,EAAapyL,EAAMhe,IAYhC,SAASwwM,EAAY3wK,EAAQ4wK,GAC5B,IAAczwM,EAAV++B,EAAM,GAEV,IAAK/+B,EAAI,EAAGA,EAAIywM,EAAQxwM,OAAQD,IAC/B++B,EAAI/+B,GAAK6/B,EAAO4wK,EAAQzwM,IAGzB,OAAO++B,EAGR,SAAS2xK,EAAQv8L,GAChB,IAAI7S,EAAO6S,EAAO9J,MAAM,KACvBk4I,EAAUjhJ,EAAK,GAAG+I,MAAM,KACxBomM,EAAUnvM,EAAK,GAAG+I,MAAM,IACxBsmM,EAAUrvM,EAAK,GAAG+I,MAAM,KAQzB,OANAkmM,EAAWhuD,GACXguD,EAAWE,GACXF,EAAWI,GA1BZ,SAAqB3yL,EAAO/d,GAC3B,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAQD,IAC3Bge,EAAMhe,GAAK+c,KAAK6W,OAAO5V,EAAMhe,EAAI,IAAM,GAAiB,IAAXge,EAAMhe,IAGpDge,EAAM/d,EAAS,GAAKuiD,IAuBpBouJ,CAAWD,EAAQF,EAAQxwM,QAEpB,CACN9B,KAAamD,EAAK,GAClBuvM,MAAaL,EAAWlvM,EAAK,GAAG+I,MAAM,KAAMomM,GAC5CluD,QAAaiuD,EAAWjuD,EAASkuD,GACjCE,OAAaA,EACbz6G,WAAuB,EAAV50F,EAAK,IAQpB,SAASwvM,EAAMC,GACVA,GACHtwM,KAAKuwM,KAAKN,EAAOK,IA4EnB,SAASE,EAASC,EAAcC,GAC/B1wM,KAAKtC,KAAO+yM,EACZzwM,KAAKmvM,MAAQuB,EAOd,SAASC,EAAS9iM,GACjB,IAAI+iM,EAAa/iM,EAAGgjM,eAChB7lL,EAAO4lL,EAAW79L,MAAM,gBAaf,SARZiY,EAJGA,GAAQA,EAAK,IAGhBA,EAAOA,EAAK,GAAGjY,MAAM,WACPiY,EAAKlmB,KAAK,SAAMxF,GAI9B0rB,EAAO4lL,EAAW79L,MAAM,gBACViY,EAAK,QAAK1rB,KAIxB0rB,OAAO1rB,GAGRU,KAAK6N,IAAMA,EACX7N,KAAKgrB,KAAOA,EACZhrB,KAAKozB,OAASvlB,EAAGumB,oBAGlB,SAAS08K,EAAUt1K,GAClBx7B,KAAKw7B,KAAOA,EACZx7B,KAAK+wM,YAAc,EACnB/wM,KAAKgxM,UAAY,EAUlB,SAASC,EAAWC,EAAKC,GAGxB,IAFA,IAAIC,EAAKr9K,EAEDA,EAAyC,MAAhCo9K,EAAKtjM,GAAKqjM,EAAIrjM,IAAM,KAAO,KAC3CujM,EAAM,IAAIT,EAAS,IAAIt5L,KAAK65L,EAAIrjM,GAAKkmB,KAC7BX,SAAW89K,EAAI99K,OACtB89K,EAAME,EAEND,EAAOC,EAIT,OAAOF,EA2BR,SAASG,EAAgBhtM,EAAGC,GAC3B,OAAID,EAAE0sM,cAAgBzsM,EAAEysM,YAChB1sM,EAAE0sM,YAAczsM,EAAEysM,YAEtB1sM,EAAE2sM,YAAc1sM,EAAE0sM,UACd3sM,EAAE2sM,UAAY1sM,EAAE0sM,UAEpB3sM,EAAEm3B,KAAKi6D,aAAenxF,EAAEk3B,KAAKi6D,WACzBnxF,EAAEk3B,KAAKi6D,WAAapxF,EAAEm3B,KAAKi6D,WAE5BnxF,EAAEk3B,KAAK99B,KAAK4zM,cAAcjtM,EAAEm3B,KAAK99B,MAGzC,SAAS6zM,EAAc7zM,EAAMokJ,GAC5B,IAAIviJ,EAAG6zB,EAEP,IADA08K,EAAWhuD,GACNviJ,EAAI,EAAGA,EAAIuiJ,EAAQtiJ,OAAQD,IAC/B6zB,EAAS0uH,EAAQviJ,GACjB8vM,EAAQj8K,GAAUi8K,EAAQj8K,IAAW,GACrCi8K,EAAQj8K,GAAQ11B,IAAQ,EAI1B,SAAS8zM,EAAuB1vD,GAC/B,IAGCviJ,EAAG+D,EAAGmuM,EAHHC,EAAgB5vD,EAAQtiJ,OAC3BmyM,EAAkB,GAClBrzK,EAAM,GAGP,IAAK/+B,EAAI,EAAGA,EAAImyM,EAAenyM,IAE9B,IAAK+D,KADLmuM,EAAgBpC,EAAQvtD,EAAQviJ,GAAG6zB,SAAW,GAEzCq+K,EAAc31M,eAAewH,KAChCquM,EAAgBruM,IAAK,GAKxB,IAAK/D,KAAKoyM,EACLA,EAAgB71M,eAAeyD,IAClC++B,EAAIjhC,KAAK8tB,EAAM5rB,IAIjB,OAAO++B,EAGR,SAASszK,IAGR,IACC,IAAIC,EAAWh2F,KAAKC,iBAAiBg2F,kBAAkBC,SACvD,GAAIF,GAAYA,EAASryM,OAAS,EAAG,CACpC,IAAI9B,EAAOytB,EAAM6mL,EAAcH,IAC/B,GAAIn0M,EACH,OAAOA,EAER4xM,EAAS,yBAA2BuC,EAAW,2DAE/C,MAAO5zM,IAIT,IAICg0M,EAAW1yM,EAAG+D,EAJXw+I,EAvFL,WACC,IAGCxiB,EAAQhwH,EAAM/P,EAHX2yM,GAAY,IAAI76L,MAAO8M,cAAgB,EAC1Cm1E,EAAO,IAAIq3G,EAAS,IAAIt5L,KAAK66L,EAAW,EAAG,IAC3CpwD,EAAU,CAACxoD,GAGZ,IAAK/5F,EAAI,EAAGA,EAAI,GAAIA,KACnB+P,EAAO,IAAIqhM,EAAS,IAAIt5L,KAAK66L,EAAW3yM,EAAG,KAClC6zB,SAAWkmE,EAAKlmE,SACxBksG,EAAS2xE,EAAW33G,EAAMhqF,GAC1BwyI,EAAQzkJ,KAAKiiI,GACbwiB,EAAQzkJ,KAAK,IAAIszM,EAAS,IAAIt5L,KAAKioH,EAAOzxH,GAAK,QAEhDyrF,EAAOhqF,EAGR,IAAK/P,EAAI,EAAGA,EAAI,EAAGA,IAClBuiJ,EAAQzkJ,KAAK,IAAIszM,EAAS,IAAIt5L,KAAK66L,EAAY3yM,EAAG,EAAG,KACrDuiJ,EAAQzkJ,KAAK,IAAIszM,EAAS,IAAIt5L,KAAK66L,EAAY3yM,EAAG,EAAG,KAGtD,OAAOuiJ,EAkEOqwD,GACbT,EAAgB5vD,EAAQtiJ,OACxB6vM,EAAUmC,EAAsB1vD,GAChCswD,EAAa,GAGd,IAAK7yM,EAAI,EAAGA,EAAI8vM,EAAQ7vM,OAAQD,IAAK,CAEpC,IADA0yM,EAAY,IAAInB,EAAUuB,EAAQhD,EAAQ9vM,IAAKmyM,GAC1CpuM,EAAI,EAAGA,EAAIouM,EAAepuM,IAC9B2uM,EAAUK,cAAcxwD,EAAQx+I,IAEjC8uM,EAAW/0M,KAAK40M,GAKjB,OAFAG,EAAW5uL,KAAK6tL,GAETe,EAAW5yM,OAAS,EAAI4yM,EAAW,GAAG52K,KAAK99B,UAAO4B,EAc1D,SAAS0yM,EAAet0M,GACvB,OAAQA,GAAQ,IAAIoV,cAAc9I,QAAQ,MAAO,KAGlD,SAASuoM,EAASC,GACjB,IAAIjzM,EAAG7B,EAAMkM,EAAO6oM,EAMpB,IAJsB,iBAAXD,IACVA,EAAS,CAACA,IAGNjzM,EAAI,EAAGA,EAAIizM,EAAOhzM,OAAQD,IAG9BkzM,EAAaT,EADbt0M,GADAkM,EAAQ4oM,EAAOjzM,GAAGqK,MAAM,MACX,IAEbulM,EAAMsD,GAAcD,EAAOjzM,GAC3B4rB,EAAMsnL,GAAc/0M,EACpB6zM,EAAakB,EAAY7oM,EAAM,GAAGA,MAAM,MAI1C,SAASyoM,EAAS30M,EAAMg1M,GAEvBh1M,EAAOs0M,EAAct0M,GAErB,IACIsyG,EADAx0E,EAAO2zK,EAAMzxM,GAGjB,OAAI89B,aAAgB60K,EACZ70K,EAGY,iBAATA,GACVA,EAAO,IAAI60K,EAAK70K,GAChB2zK,EAAMzxM,GAAQ89B,EACPA,GAIJs2E,EAAMp0G,IAASg1M,IAAWL,IAAYriG,EAAOqiG,EAAQvgG,EAAMp0G,GAAO20M,MACrE72K,EAAO2zK,EAAMzxM,GAAQ,IAAI2yM,GACpBE,KAAKvgG,GACVx0E,EAAK99B,KAAOytB,EAAMztB,GACX89B,GAGD,KAmBR,SAASm3K,EAAS70L,GACjB,IAAIve,EAAGihC,EAAOoyK,EAASC,EAMvB,IAJuB,iBAAZ/0L,IACVA,EAAU,CAACA,IAGPve,EAAI,EAAGA,EAAIue,EAAQte,OAAQD,IAG/BqzM,EAAUZ,GAFVxxK,EAAQ1iB,EAAQve,GAAGqK,MAAM,MAEK,IAC9BipM,EAAUb,EAAcxxK,EAAM,IAE9BsxE,EAAM8gG,GAAWC,EACjB1nL,EAAMynL,GAAWpyK,EAAM,GAEvBsxE,EAAM+gG,GAAWD,EACjBznL,EAAM0nL,GAAWryK,EAAM,GA0DzB,SAASsyK,EAAarsM,GACrB,IAAIssM,EAA4B,MAATtsM,EAAEgU,IAAuB,MAAThU,EAAEgU,GACzC,SAAUhU,EAAEkb,SAAkBriB,IAAXmH,EAAEkU,MAAwBo4L,GAG9C,SAASzD,EAAU/zH,GACK,oBAAZh+E,SAAoD,mBAAlBA,QAAQyI,OACpDzI,QAAQyI,MAAMu1E,GAQhB,SAAS2lC,EAAIrqG,GACZ,IAAI1C,EAAO9F,MAAMxS,UAAUyJ,MAAMvJ,KAAK+Z,UAAW,GAAI,GACpDpY,EAAOoY,UAAUA,UAAUtW,OAAS,GACpCg8B,EAAO62K,EAAQ30M,GACf4gC,EAAO2iF,EAAOlpG,IAAIzX,MAAM,KAAM6T,GAQ/B,OANIqnB,IAASylF,EAAO/lG,SAASrE,IAAUi8L,EAAYx0K,IAClDA,EAAI7M,IAAI+J,EAAKt5B,MAAMo8B,GAAM,WAG1BA,EAAI4iF,GAAGxjH,GAEA4gC,GAzgBJkxK,EAAQ,GAAgB,IAAVA,GAAeC,EAAQ,IACxCH,EAAS,wEAA0EruF,EAAOz+E,QAAU,sBAuGrG6tK,EAAKx0M,UAAY,CAChB00M,KAAO,SAAUyC,GAChBhzM,KAAKtC,KAAas1M,EAASt1M,KAC3BsC,KAAKowM,MAAa4C,EAAS5C,MAC3BpwM,KAAKkwM,OAAa8C,EAAS9C,OAC3BlwM,KAAK8hJ,QAAakxD,EAASlxD,QAC3B9hJ,KAAKy1F,WAAau9G,EAASv9G,YAG5Bo2B,OAAS,SAAUh5B,GAClB,IAECtzF,EAFGykC,GAAU6uD,EACbq9G,EAASlwM,KAAKkwM,OAGf,IAAK3wM,EAAI,EAAGA,EAAI2wM,EAAO1wM,OAAQD,IAC9B,GAAIykC,EAASksK,EAAO3wM,GACnB,OAAOA,GAKV6vM,UAAY,WACX,IAAI6D,EAAYjzM,KAAKtC,KACrB,OAAO9B,OAAO4J,KAAK4pM,GAAWt5K,QAAO,SAAUo9K,GAC9C,OAA6D,IAAtD9D,EAAU8D,GAAc/D,MAAM/xM,QAAQ61M,OAI/C/wM,MAAQ,SAAU2wF,GACjB,IAICz/D,EAAQ+/K,EAAYC,EAAY7zM,EAJ7BykC,GAAW6uD,EACdivD,EAAU9hJ,KAAK8hJ,QACfouD,EAAUlwM,KAAKkwM,OACfxzL,EAAUwzL,EAAO1wM,OAAS,EAG3B,IAAKD,EAAI,EAAGA,EAAImd,EAAKnd,IAWpB,GAVA6zB,EAAa0uH,EAAQviJ,GACrB4zM,EAAarxD,EAAQviJ,EAAI,GACzB6zM,EAAatxD,EAAQviJ,EAAIA,EAAI,EAAIA,GAE7B6zB,EAAS+/K,GAAcjyF,EAAGmyF,qBAC7BjgL,EAAS+/K,EACC//K,EAASggL,GAAclyF,EAAGoyF,qBACpClgL,EAASggL,GAGNpvK,EAASksK,EAAO3wM,GAAe,IAAT6zB,EACzB,OAAO0uH,EAAQviJ,GAIjB,OAAOuiJ,EAAQplI,IAGhBsO,KAAO,SAAUxN,GAChB,OAAOxd,KAAKowM,MAAMpwM,KAAK6rH,OAAOruG,KAG/B4V,OAAS,SAAU5V,GAElB,OADA8xL,EAAS,8DACFtvM,KAAK8hJ,QAAQ9hJ,KAAK6rH,OAAOruG,KAGjC8V,UAAY,SAAU9V,GACrB,OAAOxd,KAAK8hJ,QAAQ9hJ,KAAK6rH,OAAOruG,MA+ClCszL,EAAUj1M,UAAUy2M,cAAgB,SAAUiB,GAC7CvzM,KAAK+wM,aAAez0L,KAAKC,IAAIvc,KAAKw7B,KAAKlI,UAAUigL,EAAS1lM,IAAM0lM,EAASngL,QACrEpzB,KAAKw7B,KAAKxQ,KAAKuoL,EAAS1lM,IAAI7D,QAAQ,UAAW,MAAQupM,EAASvoL,MACnEhrB,KAAKgxM,aAkTP9vF,EAAG1+E,QA7hBW,SA8hBd0+E,EAAGsyF,YAAe,GAClBtyF,EAAGuyF,OAAetE,EAClBjuF,EAAGwyF,OAAe5hG,EAClBoP,EAAGyyF,OAAexoL,EAClB+1F,EAAG0yF,WAAaxE,EAChBluF,EAAGzvF,IAAe8gL,EAClBrxF,EAAGlR,KAAe2iG,EAClBzxF,EAAG/kC,KArDH,SAAmBt7E,GAClB0xM,EAAQ1xM,EAAKsuM,OACbwD,EAAQ9xM,EAAKixG,OAzCd,SAAuBjxG,GACtB,IAAItB,EAAG2zM,EAAcW,EAAejqM,EACpC,GAAK/I,GAASA,EAAKrB,OACnB,IAAKD,EAAI,EAAGA,EAAIsB,EAAKrB,OAAQD,IAE5B2zM,GADAtpM,EAAQ/I,EAAKtB,GAAGqK,MAAM,MACD,GAAGi1B,cACxBg1K,EAAgBjqM,EAAM,GAAGA,MAAM,KAC/BwlM,EAAU8D,GAAgB,IAAI1C,EAC7B0C,EACAW,GAiCFC,CAAajzM,EAAKuuM,WAClBluF,EAAGsyF,YAAc3yM,EAAK2hC,SAkDvB0+E,EAAG1lF,KAAe62K,EAClBnxF,EAAG6yF,WAhDH,SAASA,EAAYr2M,GAKpB,OAJKq2M,EAAWC,eACfD,EAAWC,cAAe,EACzB1E,EAAS,yBAA2B5xM,EAAO,uDAAyDA,EAAO,SAEpG20M,EAAQ30M,IA4ClBwjH,EAAG+yF,MAhMH,SAAgBC,GAIf,OAHKhF,IAAegF,IACnBhF,EAAc0C,KAER1C,GA6LRhuF,EAAG/1F,MArIH,WACC,IAAI5rB,EAAG++B,EAAM,GAEb,IAAK/+B,KAAK4rB,EACLA,EAAMrvB,eAAeyD,KAAO4vM,EAAM5vM,IAAM4vM,EAAMr9F,EAAMvyG,MAAQ4rB,EAAM5rB,IACrE++B,EAAIjhC,KAAK8tB,EAAM5rB,IAIjB,OAAO++B,EAAI9a,QA6HZ09F,EAAGmvF,KAAeA,EAClBnvF,EAAG+uF,OAAeA,EAClB/uF,EAAGyuF,aAAeA,EAClBzuF,EAAG4xF,YAAeA,EAClB5xF,EAAGoyF,oBAAuB,EAC1BpyF,EAAGmyF,sBAAuB,EAC1BnyF,EAAGkuF,UAhIH,WACC,OAAOxzM,OAAO4J,KAAK4pM,IAgIpBluF,EAAGizF,gBArFH,SAAyB/mG,EAASgnG,GALlC,IAAqB12M,EAQpB,GAPAA,GADoBA,EAMC0vG,GALTvuE,gBAKZuuE,EAJOgiG,EAAU1xM,IAAS,MAMZ,OAAO,KAErB,IAAIyxM,EAAQ/hG,EAAQ+hG,MAAM3rL,OAE1B,OAAI4wL,EACIjF,EAAMvrM,KAAI,SAAUqvM,GAE1B,MAAO,CACNv1M,KAAMu1M,EACN7/K,OAHUi/K,EAAQY,GAGL3/K,UAAU,IAAIjc,UAKvB83L,GA0ER,IA8DyBkF,EA9DrBt3M,EAAKkkH,EAAOlkH,GAgDhB,SAASu3M,EAAUD,GAClB,OAAO,WACN,OAAIr0M,KAAKu0M,GAAav0M,KAAKu0M,GAAGvpL,KAAKhrB,MAC5Bq0M,EAAIt4M,KAAKiE,OAIlB,SAASw0M,EAAeH,GACvB,OAAO,WAEN,OADAr0M,KAAKu0M,GAAK,KACHF,EAAI/zM,MAAMN,KAAM8V,YAxDzBmrG,EAAOC,GAAKA,EAEZD,EAAOwzF,YAAc,KAErBxzF,EAAOhmG,aAAe,SAAUuC,EAAK8B,GACpC,IACC8T,EADGoI,EAAOylF,EAAOwzF,YAUlB,QAPen1M,IAAXke,EAAI+2L,KACH/4K,GAAQs3K,EAAYt1L,KAASA,EAAI5C,SACpC4C,EAAIhE,GAAKynG,EAAOlpG,IAAIyF,EAAImE,IAAInI,GAC5BgE,EAAIzF,MAAM0Z,IAAI+J,EAAKt5B,MAAMsb,GAAM,YAEhCA,EAAI+2L,GAAK/4K,GAENhe,EAAI+2L,GAKP,GAJAnhL,EAAS5V,EAAI+2L,GAAGjhL,UAAU9V,GACtBlB,KAAKC,IAAI6W,GAAU,KACtBA,GAAkB,SAEG9zB,IAAlBke,EAAI8V,UAAyB,CAChC,IAAI1nB,EAAI4R,EAAI+2L,GACZ/2L,EAAI8V,WAAWF,EAAQ9T,GACvB9B,EAAI+2L,GAAK3oM,OAET4R,EAAIge,KAAKpI,EAAQ9T,IAKpBviB,EAAGmkH,GAAK,SAAUxjH,EAAM4hB,GACvB,GAAI5hB,EAAM,CACT,GAAoB,iBAATA,EACV,MAAM,IAAIyD,MAAM,wCAA0CzD,EAAO,YAAcA,EAAO,KAQvF,OANAsC,KAAKu0M,GAAKlC,EAAQ30M,GACdsC,KAAKu0M,GACRtzF,EAAOhmG,aAAajb,KAAMsf,GAE1BgwL,EAAS,mCAAqC5xM,EAAO,4DAE/CsC,KAER,GAAIA,KAAKu0M,GAAM,OAAOv0M,KAAKu0M,GAAG72M,MAwB/BX,EAAGugC,SAAYg3K,EAASv3M,EAAGugC,UAC3BvgC,EAAGsgC,SAAYi3K,EAASv3M,EAAGsgC,UAC3BtgC,EAAGgb,IAAYy8L,EAAcz3M,EAAGgb,KAChChb,EAAGm3B,MAAYsgL,EAAcz3M,EAAGm3B,OAChCn3B,EAAGu2B,WAXsB+gL,EAWKt3M,EAAGu2B,UAVzB,WAEN,OADIxd,UAAUtW,OAAS,IAAGQ,KAAKu0M,GAAK,MAC7BF,EAAI/zM,MAAMN,KAAM8V,aAUzBmrG,EAAOC,GAAGwzF,WAAa,SAASh3M,GAK/B,OAJI8xM,EAAQ,GAAgB,IAAVA,GAAeC,EAAQ,IACxCH,EAAS,qFAAuFruF,EAAOz+E,QAAU,KAElHy+E,EAAOwzF,YAAc/2M,EAAO20M,EAAQ30M,GAAQ,KACrCujH,GAIR,IAAIhnG,EAAmBgnG,EAAOhnG,iBAY9B,MAXyD,mBAArDre,OAAOC,UAAU4T,SAAS1T,KAAKke,IAElCA,EAAiB5c,KAAK,MACtB4c,EAAiB5c,KAAK,OACZ4c,IAEVA,EAAiBs6L,GAAK,MAKhBtzF,M,gBCtrBR,IAAIr9G,EAAM,CACT,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,WAAY,IACZ,cAAe,IACf,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,QAAS,IACT,aAAc,IACd,gBAAiB,IACjB,WAAY,IACZ,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,KAIf,SAAS+wM,EAAeC,GACvB,IAAI1zM,EAAK2zM,EAAsBD,GAC/B,OAAO93M,EAAoBoE,GAE5B,SAAS2zM,EAAsBD,GAC9B,IAAI93M,EAAoB8J,EAAEhD,EAAKgxM,GAAM,CACpC,IAAI32M,EAAI,IAAIkD,MAAM,uBAAyByzM,EAAM,KAEjD,MADA32M,EAAEugD,KAAO,mBACHvgD,EAEP,OAAO2F,EAAIgxM,GAEZD,EAAenvM,KAAO,WACrB,OAAO5J,OAAO4J,KAAK5B,IAEpB+wM,EAAerzM,QAAUuzM,EACzBtxM,EAAOiD,QAAUmuM,EACjBA,EAAezzM,GAAK,K,kgtLCjSpBtF,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAiB,aAAI,EAErB,IAAIsuM,EAcJ,SAAiCrhM,GAAO,GAAIA,GAAOA,EAAIzM,WAAc,OAAOyM,EAAO,GAAY,OAARA,GAAiC,WAAjB22F,EAAQ32F,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI5E,EAAQkmM,IAA4B,GAAIlmM,GAASA,EAAM83B,IAAIlzB,GAAQ,OAAO5E,EAAMhR,IAAI4V,GAAQ,IAAIuhM,EAAS,GAAQC,EAAwBr5M,OAAOoC,gBAAkBpC,OAAO8lK,yBAA0B,IAAK,IAAIv6J,KAAOsM,EAAO,GAAI7X,OAAOC,UAAUC,eAAeC,KAAK0X,EAAKtM,GAAM,CAAE,IAAI+tM,EAAOD,EAAwBr5M,OAAO8lK,yBAAyBjuJ,EAAKtM,GAAO,KAAU+tM,IAASA,EAAKr3M,KAAOq3M,EAAKp3M,KAAQlC,OAAOoC,eAAeg3M,EAAQ7tM,EAAK+tM,GAAgBF,EAAO7tM,GAAOsM,EAAItM,GAAY6tM,EAAgB,QAAIvhM,EAAS5E,GAASA,EAAM/Q,IAAI2V,EAAKuhM,GAAW,OAAOA,EAdxtBG,CAAwB,EAAQ,IAEzCC,EAAaC,EAAuB,EAAQ,IAE5CC,EAAUD,EAAuB,EAAQ,MAEzCE,EAAgBF,EAAuB,EAAQ,MAE/CG,EAAS,EAAQ,KAErB,SAASH,EAAuB5hM,GAAO,OAAOA,GAAOA,EAAIzM,WAAayM,EAAM,CAAE,QAAWA,GAEzF,SAASshM,IAA6B,GAAuB,mBAAZ3kD,QAAwB,OAAO,KAAM,IAAIvhJ,EAAQ,IAAIuhJ,QAA6F,OAAlF2kD,EAA2B,WAAsC,OAAOlmM,GAAiBA,EAI1M,SAASu7F,EAAQ32F,GAAmV,OAAtO22F,EAArD,mBAAXtjG,QAAoD,iBAApBA,OAAOujG,SAAmC,SAAiB52F,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX3M,QAAyB2M,EAAIwzB,cAAgBngC,QAAU2M,IAAQ3M,OAAOjL,UAAY,gBAAkB4X,IAAyBA,GAEnX,SAASgiM,EAAQnuM,EAAQouM,GAAkB,IAAIlwM,EAAO5J,OAAO4J,KAAK8B,GAAS,GAAI1L,OAAO8iD,sBAAuB,CAAE,IAAIya,EAAUv9D,OAAO8iD,sBAAsBp3C,GAAaouM,IAAgBv8I,EAAUA,EAAQrjC,QAAO,SAAU6/K,GAAO,OAAO/5M,OAAO8lK,yBAAyBp6J,EAAQquM,GAAK/3M,eAAgB4H,EAAKnI,KAAKiD,MAAMkF,EAAM2zD,GAAY,OAAO3zD,EAE9U,SAASowM,EAAc5xK,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAyB,MAAhBtpB,UAAUvW,GAAauW,UAAUvW,GAAK,GAAQA,EAAI,EAAKk2M,EAAQ75M,OAAOwjC,IAAS,GAAM35B,SAAQ,SAAU0B,GAAO4zF,EAAgB/2D,EAAQ78B,EAAKi4B,EAAOj4B,OAAsBvL,OAAOi6M,0BAA6Bj6M,OAAOk6M,iBAAiB9xK,EAAQpoC,OAAOi6M,0BAA0Bz2K,IAAmBq2K,EAAQ75M,OAAOwjC,IAAS35B,SAAQ,SAAU0B,GAAOvL,OAAOoC,eAAegmC,EAAQ78B,EAAKvL,OAAO8lK,yBAAyBtiI,EAAQj4B,OAAe,OAAO68B,EAI7gB,SAAS+xK,EAAkB/xK,EAAQhvB,GAAS,IAAK,IAAIzV,EAAI,EAAGA,EAAIyV,EAAMxV,OAAQD,IAAK,CAAE,IAAIy2M,EAAahhM,EAAMzV,GAAIy2M,EAAWp4M,WAAao4M,EAAWp4M,aAAc,EAAOo4M,EAAWr4M,cAAe,EAAU,UAAWq4M,IAAYA,EAAWluK,UAAW,GAAMlsC,OAAOoC,eAAegmC,EAAQgyK,EAAW7uM,IAAK6uM,IAM7S,SAASC,EAA2Bx8H,EAAM19E,GAAQ,OAAIA,GAA2B,WAAlBquG,EAAQruG,IAAsC,mBAATA,EAA8Cm6M,EAAuBz8H,GAAtC19E,EAEnI,SAASm6M,EAAuBz8H,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI08H,eAAe,6DAAgE,OAAO18H,EAE/J,SAAS28H,IAA8B,GAAuB,oBAAZC,UAA4BA,QAAQ9W,UAAW,OAAO,EAAO,GAAI8W,QAAQ9W,UAAU+W,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3El/L,KAAKxb,UAAU4T,SAAS1T,KAAKs6M,QAAQ9W,UAAUloL,KAAM,IAAI,iBAAyB,EAAQ,MAAOpZ,GAAK,OAAO,GAE1T,SAASu4M,EAAgB5vM,GAAwJ,OAAnJ4vM,EAAkB56M,OAAO8L,eAAiB9L,OAAOs+J,eAAiB,SAAyBtzJ,GAAK,OAAOA,EAAEe,WAAa/L,OAAOs+J,eAAetzJ,KAA8BA,GAIxM,SAASa,EAAgBb,EAAGlF,GAA+G,OAA1G+F,EAAkB7L,OAAO8L,gBAAkB,SAAyBd,EAAGlF,GAAsB,OAAjBkF,EAAEe,UAAYjG,EAAUkF,IAA6BA,EAAGlF,GAErK,SAASq5F,EAAgBtnF,EAAKtM,EAAKpJ,GAAiK,OAApJoJ,KAAOsM,EAAO7X,OAAOoC,eAAeyV,EAAKtM,EAAK,CAAEpJ,MAAOA,EAAOH,YAAY,EAAMD,cAAc,EAAMmqC,UAAU,IAAkBr0B,EAAItM,GAAOpJ,EAAgB0V,EAE3M,IAAIgjM,EAAa,WACf,OAAO,GAqBLC,EAA2B,SAAUC,IA5BzC,SAAmB3kB,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7zF,UAAU,sDAAyD4zF,EAASn2L,UAAYD,OAAOsL,OAAO+qL,GAAcA,EAAWp2L,UAAW,CAAEorC,YAAa,CAAElpC,MAAOi0L,EAAUlqJ,UAAU,EAAMnqC,cAAc,KAAes0L,GAAYxqL,EAAgBuqL,EAAUC,GA6BjX2kB,CAAUF,EAAaC,GAEvB,IAzCoBE,EAFAC,EAAaC,EAAYC,EA2CzCC,GAzCgBJ,EAyCMH,EAzCY,WAAc,IAAsCzzM,EAAlCi0M,EAAQV,EAAgBK,GAAkB,GAAIT,IAA6B,CAAE,IAAIe,EAAYX,EAAgBx2M,MAAMinC,YAAahkC,EAASozM,QAAQ9W,UAAU2X,EAAOphM,UAAWqhM,QAAqBl0M,EAASi0M,EAAM52M,MAAMN,KAAM8V,WAAc,OAAOmgM,EAA2Bj2M,KAAMiD,KA2C3U,SAASyzM,EAAY1oI,GACnB,IAAIkiF,EAEAknD,EAA2BppI,EAAMqpI,wBA2NrC,OA/QJ,SAAyBv9F,EAAUg9F,GAAe,KAAMh9F,aAAoBg9F,GAAgB,MAAM,IAAI14G,UAAU,qCAsD5Gk5G,CAAgBt3M,KAAM02M,GAItB37G,EAAgBm7G,EAFhBhmD,EAAQ+mD,EAAOl7M,KAAKiE,OAE2B,uBAAuB,SAAU0kC,GAC9EwrH,EAAMqnD,mCAAoC,EAI1C,IAHA,IAAIjpM,EAAOo2B,EAAMO,QAAUP,EAAMO,OAAOjB,QACxCU,EAAMV,OAEU,OAAT11B,GAAiBA,IAAS7L,UAAU,CACzC,GAAI6L,EAAKC,cAA+D,OAA/CD,EAAKC,aAAa,yBAEzC,OAGF,GAAID,IAAS4hJ,EAAMsnD,qBAGjB,YADAtnD,EAAMqnD,mCAAoC,GAI5CjpM,EAAOA,EAAK/E,eAIhBwxF,EAAgBm7G,EAAuBhmD,GAAQ,wBAAwB,SAAUunD,GAC1D,OAAjBA,IACFvnD,EAAMunD,aAAeA,MAIzB18G,EAAgBm7G,EAAuBhmD,GAAQ,0BAA0B,SAAUxrH,EAAO8iE,GACxF,IAAIkwG,EAAelwG,EAAMkwG,aACrBC,EAAYnwG,EAAMmwG,UAEtBznD,EAAM0nD,4BAA4BF,EAAcC,GAE5CjzK,EAAMV,SAAWksH,EAAM2nD,oBACzB3nD,EAAM4nD,wBAAyB,GAGjC5nD,EAAM6nD,kBAAmB,EACzB7+H,YAAW,WACTg3E,EAAM6nD,kBAAmB,QAI7Bh9G,EAAgBm7G,EAAuBhmD,GAAQ,4BAA4B,WACzEA,EAAM0nD,4BAA4B1nD,EAAMl7I,MAAMgjM,aAAe,EAAI,KAAM,MAGzEj9G,EAAgBm7G,EAAuBhmD,GAAQ,qBAAqB,WAC9DA,EAAM2nD,oBAAsB3nD,EAAM4nD,wBACpC5nD,EAAMr5I,MAAMs6F,QAGd++C,EAAM2nD,kBAAoB,QAG5B98G,EAAgBm7G,EAAuBhmD,GAAQ,yBAAyB,SAAUxrH,GAG3EwrH,EAAM4nD,yBACT5nD,EAAM4nD,wBAAyB,EAC/B5nD,EAAM2nD,kBAAoBnzK,EAAMV,WAIpC+2D,EAAgBm7G,EAAuBhmD,GAAQ,+BAA+B,WAC5E,IAAIlQ,EAA8BkQ,EAAMl7I,MAAMgrI,4BAC9CA,GAA+BA,OAGjCjlD,EAAgBm7G,EAAuBhmD,GAAQ,wBAAwB,SAAUxrH,EAAO7jC,GACtF,IAAIo3M,EAAc/nD,EAAMl7I,MACpBqiM,EAA0BY,EAAYZ,wBACtCp3D,EAAuBg4D,EAAYh4D,qBACnCF,EAA8Bk4D,EAAYl4D,4BAC9CE,GAAwBA,EAAqBv7G,EAAO7jC,GAEpD,IAAIq3M,EAA0BhoD,EAAMl7I,MAAMmjM,8BAA8Bt3M,EAAKs/I,YAEzEk3D,GAA2Ba,EAC7Bn4D,EAA4B,CAC1BhiJ,MAAO8C,EAAKq/I,gBACZjzD,OArGuB,wBAwGzBijE,EAAMlQ,8BAGRkQ,EAAMkoD,gCAGRr9G,EAAgBm7G,EAAuBhmD,GAAQ,qBAAqB,SAAUxrH,GAC5E,IAAI2zK,EAAenoD,EAAMl7I,MACrBqiM,EAA0BgB,EAAahB,wBACvCh3D,EAA8Bg4D,EAAah4D,4BAE3Ci4D,EAAwBpoD,EAAMqoD,qBAAqBroD,EAAMsoD,sBAAsB9zK,EAAMV,SACrF0zK,EAAeY,EAAsBZ,aACrCe,EAAkBH,EAAsBG,gBAExCC,EAAoBxoD,EAAMyoD,cAAcjB,EAAce,GAEtDG,EAAyB1oD,EAAMl7I,MAAM8pI,mBAAmB45D,GAE5DxoD,EAAM2oD,kBAAkBn0K,EAAOk0K,EAAwB,SAEvD1oD,EAAMjQ,qBAAqBv7G,EAAO,CAChCy7G,WAAYu4D,EACZx4D,gBAAiB04D,EACjBH,gBAAiBA,EACjBf,aAAcA,EACdz7G,OAAQ,UAGV,IAAIi8G,EAA0BhoD,EAAMl7I,MAAMmjM,8BAA8BO,GAElErB,GAA2Ba,GAC/BhoD,EAAM4oD,oBAG4B,IAAhCz4D,EACF6P,EAAMr5I,MAAMs6F,QAEZ++C,EAAMzwE,SAGRvG,YAAW,WACTg3E,EAAM4nD,wBAAyB,QAInC/8G,EAAgBm7G,EAAuBhmD,GAAQ,UAAU,WACvD,IAAI6oD,EAAe7oD,EAAMl7I,MACrBsrI,EAAay4D,EAAaz4D,WAC1B04D,EAA0BD,EAAaC,wBACvCj7M,EAAQuiJ,EAAWviJ,MACnB0hF,EAAS6gE,EAAW7gE,OAEpBw5H,EAAwB/oD,EAAMgpD,2BAE9BC,EAAeH,EAAwBj7M,EA5JtB,iBA8JrBmyJ,EAAMjjD,SAAS,CACbmsG,WAAW,EACXC,wBAAyB,KACzBC,2BAA4B,KAC5BL,sBAAuB,KACvBM,kBAAmB,KACnBC,aAAcL,IAGhB15H,GAAUA,EAAOywE,EAAMupD,UAAW,CAChCR,sBAAuBA,OAI3Bl+G,EAAgBm7G,EAAuBhmD,GAAQ,0BAA0B,SAAUxrH,GACjFwrH,EAAMkoD,4BAA2B,GAG7BloD,EAAM4nD,wBAA0BpzK,EAAMV,SAAWksH,EAAM2nD,oBACzD3nD,EAAM4nD,wBAAyB,MAInC/8G,EAAgBm7G,EAAuBhmD,GAAQ,0BAA0B,WACvEA,EAAM4nD,wBAAyB,KAIjC/8G,EAAgBm7G,EAAuBhmD,GAAQ,yBAAyB,WACtEA,EAAM4nD,wBAAyB,EAC/B5nD,EAAM2nD,kBAAoB,KAE1B3nD,EAAMr5I,MAAMs6F,WAGdpW,EAAgBm7G,EAAuBhmD,GAAQ,aAAa,SAAUmF,GAGpE,MAAO,CACL,qBAHiBA,EAAMqiD,aAIvB,wBAHcriD,EAAMsiD,UAIpB+B,aAAcxpD,EAAMypD,uBACpBC,aAAc1pD,EAAM2pD,uBACpB/hF,YAAao4B,EAAM4pD,sBACnB/hF,aAAcm4B,EAAM6pD,uBACpB/hF,YAAak4B,EAAM8pD,sBACnB35H,QAAS6vE,EAAM+pD,sBAInBl/G,EAAgBm7G,EAAuBhmD,GAAQ,8BAA8B,SAAUgqD,GACrF,IAAIC,EAAiBD,EAAMC,eACvB78M,EAAW48M,EAAM58M,SAErB,OAAO88M,EAD0BlqD,EAAMl7I,MAAMolM,4BACX,CAChCD,eAAgBA,EAChB78M,SAAUA,EACV8gE,MAAO8xF,EAAMmqD,gBAIjBnqD,EAAMxwF,MAAQ,CACZ05I,WAAW,EACXI,aAAcpC,EACdiC,wBAAyB,KACzBC,2BAA4B,KAC5BL,sBAAuB,KACvBM,kBAAmB,MAErBrpD,EAAMoqD,mBAAoB,EAC1BpqD,EAAM6nD,kBAAmB,EACzB7nD,EAAM2nD,kBAAoB,KACnB3nD,EAqdT,OAhuBoB4mD,EA8QPJ,GA9QoBK,EA8QP,CAAC,CACzB5vM,IAAK,oBACLpJ,MAAO,WACL0E,SAASmiC,iBAAiB,YAAa5kC,KAAKu6M,qBAC5C93M,SAASmiC,iBAAiB,UAAW5kC,KAAKw6M,mBAC1Cx6M,KAAK6W,MAAQ7W,KAAKy3M,aAAa5gM,MAC/B7W,KAAKw3M,qBAAuBx3M,KAAKy3M,aAAagD,iBAG/C,CACDtzM,IAAK,mCACLpJ,MAAO,SAA0CwmF,GAG/C,IAAIm2H,EAAoE,IAA1C16M,KAAK0/D,MAAM45I,4BAAoCt5M,KAAKgV,MAAM2lM,2BAA6Bp2H,EAAUo2H,0BAE3H,EAAIrF,EAAiB,SAAG/wH,EAAU46D,YAAan/I,KAAKgV,MAAMmqI,aACxD56D,EAAUo2H,0BAA4Bp2H,EAAU46D,YAAY3/I,OAAS,IAAgC,IAA3BQ,KAAKs6M,oBAAyD,IAA1Bt6M,KAAK+3M,iBACrH/3M,KAAK26M,2BACID,GACT16M,KAAKo4M,6BAGHp4M,KAAK46M,sBAAsBr2H,EApQN,wBAqQnBvkF,KAAK0/D,MAAM85I,cAAgBx5M,KAAK83M,wBAClC93M,KAAK66M,oBAGHH,GACF16M,KAAKo4M,8BAGPp4M,KAAKo4M,+BAIV,CACDjxM,IAAK,qBACLpJ,MAAO,SAA4BumF,EAAWw2H,GAC5C,IAAIC,EAAe/6M,KAAKgV,MACpBmqI,EAAc47D,EAAa57D,YAC3BiB,EAA0B26D,EAAa36D,wBACvCu6D,EAA2BI,EAAaJ,yBAE5C,KAAK,EAAIrF,EAAiB,SAAGn2D,EAAa76D,EAAU66D,cAAgBA,EAAY3/I,OAAS,GAAKm7M,EAC5F36M,KAAK26M,gCAIP,GAAIv6D,EAAyB,CAC3B,IAAI64D,EAAwBj5M,KAAKk5M,2BAG7BD,GAF4B6B,EAAU7B,uBAGxC74D,EAAwB,CACtBD,WAAY84D,OAKnB,CACD9xM,IAAK,uBACLpJ,MAAO,WACL0E,SAASm7D,oBAAoB,YAAa59D,KAAKu6M,qBAC/C93M,SAASm7D,oBAAoB,UAAW59D,KAAKw6M,qBAE9C,CACDrzM,IAAK,8BACLpJ,MAAO,SAAqC25M,EAAce,EAAiBuC,GACzE,IAAIC,EAASj7M,KAEbA,KAAKitG,UAAS,SAAUvtC,GACtB,IAAI65I,EAAoB75I,EAAM65I,kBAQ9B,OANwB,OAApBd,EACFc,EAAoB,KACW,OAAtBA,QAAmD,IAAdyB,IAC9CzB,EAAoByB,GAGf,CACL3B,wBAAyB3B,EACzB4B,2BAA4Bb,EAC5BQ,sBAA2C,OAApBR,EAA2B,KAAOwC,EAAOtC,cAAcjB,EAAce,GAC5Fc,kBAAmBA,QAIxB,CACDpyM,IAAK,6BACLpJ,MAAO,WACL,IAAIm9M,IAA+BplM,UAAUtW,OAAS,QAAsBF,IAAjBwW,UAAU,KAAmBA,UAAU,GAClG9V,KAAKitG,UAAS,SAAUvtC,GACtB,IAAI65I,EAAoB75I,EAAM65I,kBAC9B,MAAO,CACLF,wBAAyB,KACzBC,2BAA4B,KAC5BL,sBAAuB,KACvBM,kBAAmB2B,EAA+B,KAAO3B,QAI9D,CACDpyM,IAAK,oBACLpJ,MAAO,WACLiC,KAAKitG,SAAS,CACZusG,aAAa,MAGhB,CACDryM,IAAK,mBACLpJ,MAAO,WACLiC,KAAKitG,SAAS,CACZosG,wBAAyB,KACzBC,2BAA4B,KAC5BL,sBAAuB,KACvBM,kBAAmB,KACnBC,aAAa,MAGhB,CACDryM,IAAK,gBACLpJ,MAAO,SAAuB25M,EAAce,GAC1C,IAAI0C,EAAen7M,KAAKgV,MACpBmqI,EAAcg8D,EAAah8D,YAC3B64D,EAAemD,EAAanD,aAC5BoD,EAAwBD,EAAaC,sBAEzC,OAAIpD,EACKoD,EAAsBj8D,EAAYu4D,IAAee,GAGnDt5D,EAAYs5D,KAEpB,CACDtxM,IAAK,2BACLpJ,MAAO,WACL,IAAIs9M,EAAcr7M,KAAK0/D,MACnB25I,EAA0BgC,EAAYhC,wBACtCC,EAA6B+B,EAAY/B,2BAE7C,OAAmC,OAA/BA,EACK,KAGFt5M,KAAK24M,cAAcU,EAAyBC,KAEpD,CACDnyM,IAAK,4BACLpJ,MAAO,SAAmC25M,EAAce,GAEtD,OAAO35D,EADkB9+I,KAAKgV,MAAM8pI,oBACV9+I,KAAK24M,cAAcjB,EAAce,MAE5D,CACDtxM,IAAK,uBACLpJ,MAAO,SAA8Bu9M,GACnC,IAAI5D,EAAe4D,EAAkB/sM,aAAa,sBAC9CkqM,EAAkB6C,EAAkB/sM,aAAa,yBACrD,MAAO,CACLmpM,aAAsC,iBAAjBA,EAA4B3zL,SAAS2zL,EAAc,IAAM,KAC9Ee,gBAAiB10L,SAAS00L,EAAiB,OAG9C,CACDtxM,IAAK,wBACLpJ,MAAO,SAA+Bw9M,GACpC,IAAIjtM,EAAOitM,EAEX,EAAG,CACD,GAAIjtM,EAAKC,cAA+D,OAA/CD,EAAKC,aAAa,yBACzC,OAAOD,EAGTA,EAAOA,EAAK/E,iBACI,OAAT+E,GAIT,MAFA/Q,QAAQyI,MAAM,mBAAoBu1M,GAE5B,IAAIp6M,MAAM,sCAEjB,CACDgG,IAAK,oBACLpJ,MAAO,SAA2B2mC,EAAO28B,EAAU46B,GACjD,IAAIu/G,EAAwBx7M,KAAKgV,MAAMsrI,WACnCviJ,EAAQy9M,EAAsBz9M,MAC9BymH,EAAWg3F,EAAsBh3F,SAEjCnjD,IAAatjE,GACfymH,EAAS9/E,EAAO,CACd28B,SAAUA,EACV46B,OAAQA,MAIb,CACD90F,IAAK,wBACLpJ,MAAO,SAA+BiX,EAAOi4E,GAC3C,IAAIkyD,EAAcnqI,EAAMmqI,YACpBmB,EAAatrI,EAAMsrI,WACnB04D,EAA0BhkM,EAAMgkM,wBAChCj7M,EAAQuiJ,EAAWviJ,MACvB,OAAOohJ,EAAY3/I,OAAS,GAAKw5M,EAAwBj7M,EAAOkvF,KAEjE,CACD9lF,IAAK,WACLpJ,MAAO,WACL,IACIA,EADaiC,KAAKgV,MAAMsrI,WACLviJ,MACnBw7M,EAAoBv5M,KAAK0/D,MAAM65I,kBACnC,OAA8B,OAAtBA,EAA6Bx7M,EAAQw7M,GAAmB5vM,SAEjE,CACDxC,IAAK,SACLpJ,MAAO,WACL,IAAI09M,EAASz7M,KAET07M,EAAe17M,KAAKgV,MACpBmqI,EAAcu8D,EAAav8D,YAC3Bw8D,EAAuBD,EAAaC,qBACpC57D,EAA8B27D,EAAa37D,4BAC3CjC,EAAmB49D,EAAa59D,iBAChCwC,EAAao7D,EAAap7D,WAC1B03D,EAAe0D,EAAa1D,aAC5B4D,EAAqBF,EAAaE,mBAClC16M,EAAKw6M,EAAax6M,GAClBk6M,EAAwBM,EAAaN,sBACrC7lM,EAAQmmM,EAAanmM,MACrBupI,EAAqB48D,EAAa58D,mBAClCu4D,EAA0BqE,EAAarE,wBACvCsD,EAA2Be,EAAaf,yBACxCR,EAAiBuB,EAAavB,eAC9B0B,EAAe77M,KAAK0/D,MACpB05I,EAAYyC,EAAazC,UACzBI,EAAcqC,EAAarC,YAC3BH,EAA0BwC,EAAaxC,wBACvCC,EAA6BuC,EAAavC,2BAC1CC,EAAoBsC,EAAatC,kBACjCP,EAA0B3B,EAA0BZ,EAAaz2M,KAAKgV,MAAMgkM,wBAC5Ej7M,EAAQuiJ,EAAWviJ,MACnB+9M,EAAWx7D,EAAW/gE,QACtBw8H,EAAaz7D,EAAWC,UACxBq6D,EAAwB56M,KAAK46M,sBAAsB56M,KAAKgV,MAAO,UAC/Dq+F,EAASgkG,GAA2B+B,IAAcI,GAAeoB,EACjEvpI,EAAQgiC,EAAS8rC,EAAc,GAE/B68D,EAAyBpG,EAAc,GAAIt1D,EAAY,CACzD/gE,QAAS,SAAiB76C,GACxB,IAAK+2K,EAAO3D,yBAA2B2D,EAAOlE,kCAAmC,CAC/E,IAAI4B,EAAeH,EAAwBj7M,EAne5B,iBAqef09M,EAAOxuG,SAAS,CACdmsG,WAAW,EACXI,aAAcL,IAGhB2C,GAAYA,EAASp3K,GAEjBy0K,GACFp5D,EAA4B,CAC1BhiJ,MAAOA,EACPkvF,OA/eW,oBAofnBxN,OAAQ,SAAgB/6C,GAClB+2K,EAAOlE,kCACTkE,EAAO5kM,MAAMs6F,SAKfsqG,EAAOhC,UAAY/0K,EAEd+2K,EAAO3D,yBACV2D,EAAOh8H,SAEPg8H,EAAOz7D,iCAGXx7B,SAAU,SAAkB9/E,GAC1B,IAAI3mC,EAAQ2mC,EAAMV,OAAOjmC,MACrBo7M,EAAeH,EAAwBj7M,EApgB1B,iBAsgBjB09M,EAAO5C,kBAAkBn0K,EAAO3mC,EAAO,QAEnC09M,EAAOjE,uBACTiE,EAAOjE,qBAAqB/5I,UAAY,GAG1Cg+I,EAAOxuG,SAAS2oG,EAAc,GAAI+E,EAA2B,GAAK,CAChEtB,wBAAyB,KACzBC,2BAA4B,KAC5BL,sBAAuB,MACtB,CACDM,kBAAmB,KACnBC,aAAcL,KAGZA,EACFp5D,EAA4B,CAC1BhiJ,MAAOA,EACPkvF,OAxhBa,kBA2hBfwuH,EAAOz7D,+BAGXO,UAAW,SAAmB77G,EAAO7jC,GACnC,IAAIsxF,EAAUztD,EAAMytD,QAEpB,OAAQA,GACN,KAAK,GAEL,KAAK,GAEH,GAAIqnH,EACER,EAAwBj7M,EA3iBV,0BA4iBhBgiJ,EAA4B,CAC1BhiJ,MAAOA,EACPkvF,OA9iBc,yBAijBhBwuH,EAAOZ,oBAEPn2K,EAAM04D,uBAEH,GAAI+hD,EAAY3/I,OAAS,EAAG,CACjC,IAEI6hE,EAFA46I,EAA6Bp7M,EAAKo7M,2BAClCC,EAA0Br7M,EAAKq7M,wBAOjC76I,EAJ8B,OAA5B66I,EAI+B,OAAtB3C,EAA6Bx7M,EAAQw7M,EAErCkC,EAAOU,0BAA0BF,EAA4BC,GAG1ET,EAAO7D,4BAA4BqE,EAA4BC,EAAyBn+M,GAExF09M,EAAO5C,kBAAkBn0K,EAAO28B,EAAsB,KAAZ8wB,EAAiB,OAAS,MAEpEztD,EAAM04D,iBAGRq+G,EAAOnB,mBAAoB,EAC3BphI,YAAW,WACTuiI,EAAOnB,mBAAoB,KAE7B,MAGF,KAAK,GAGD,GAAsB,MAAlB51K,EAAMytD,QACR,MAGF,IAAI8mH,EAAwBwC,EAAOvC,2BAMnC,GAJI7lG,IAAWgkG,GACboE,EAAO3C,mBAGoB,MAAzBG,EAA+B,CACjCv0K,EAAM04D,iBAEN,IAAIg/G,EAAYt9D,EAAmBm6D,GAEnCwC,EAAO5C,kBAAkBn0K,EAAO03K,EAAW,SAE3CX,EAAOx7D,qBAAqBv7G,EAAO,CACjCy7G,WAAY84D,EACZ/4D,gBAAiBk8D,EACjB3D,gBAAiBa,EACjB5B,aAAc2B,EACdp9G,OAAQ,UAGVw/G,EAAO3D,wBAAyB,EAChC5+H,YAAW,WACTuiI,EAAO3D,wBAAyB,KAIpC,MAIJ,KAAK,GAEGzkG,GAKF3uE,EAAM04D,iBAGR,IAAIi/G,EAAuBhpG,IAAWgkG,EAEZ,OAAtBkC,EAEG8C,IAGHZ,EAAO5C,kBAAkBn0K,EAFR,GAE2B,UAExCs0K,EAJa,GAhoBT,kBAqoBNj5D,EAA4B,CAC1BhiJ,MANa,GAObkvF,OAvoBI,mBA0oBNwuH,EAAOz7D,+BAKXy7D,EAAO5C,kBAAkBn0K,EAAO60K,EAAmB,UAGjD8C,GACFZ,EAAOz7D,8BAEPy7D,EAAO3C,oBAEP2C,EAAOrD,6BAOf2D,GAAcA,EAAWr3K,MAIzB43K,EAAuB,CACzBl+I,MAAOp+D,KAAKq6M,YAEd,OAAoBvF,EAAgB,QAAEpyM,cAAc6yM,EAAuB,QAAG,CAC5EyC,aAAcA,EACd3mI,MAAOA,EACPsqI,qBAAsBA,EACtBY,qBAAsBv8M,KAAKo6M,2BAC3BoC,WAAY1+D,EACZ2+D,eAAgBH,EAChBV,mBAAoBA,EACpBc,gBAAiBtB,EACjB/B,wBAAyBA,EACzBsD,qBAAsBrD,EACtBa,eAAgBA,EAChB75D,WAAY07D,EACZY,UAAW58M,KAAK48M,UAChBrnM,OAAO,EAAIigM,EAAOqH,wBAAwBtnM,GAC1CrU,GAAIA,EACJ+T,IAAKjV,KAAK88M,4BA3tB4D/G,EAAkBe,EAAYj7M,UAAWk7M,GAAiBC,GAAajB,EAAkBe,EAAaE,GAguB3KN,EAxrBsB,CAyrB7B5B,EAAO99C,WAETxwJ,EAAiB,QAAIkwM,EAErB37G,EAAgB27G,EAAa,YAAa,CACxCv3D,YAAai2D,EAAoB,QAAE73L,MAAM48B,WACzC4lG,4BAA6B,SAAqC/qI,EAAOy8K,GACvE,IAAI1xC,EAA8B/qI,EAAMy8K,GAExC,GAA2C,mBAAhC1xC,EACT,MAAM,IAAI5+I,MAAM,0IAGpB6+I,4BAA6B,SAAqChrI,EAAOy8K,GACvE,IAAIzxC,EAA8BhrI,EAAMy8K,GAExC,IAAsC,IAAlCz8K,EAAMqiM,yBAA4E,mBAAhCr3D,EACpD,MAAM,IAAI7+I,MAAM,0IAGpBg3M,8BAA+B/C,EAAoB,QAAEtgM,KACrDmrI,qBAAsBm1D,EAAoB,QAAEtgM,KAC5CsrI,wBAAyBg1D,EAAoB,QAAEtgM,KAC/C6mM,qBAAsBvG,EAAoB,QAAEtgM,KAC5CslM,2BAA4BhF,EAAoB,QAAEtgM,KAClDgqI,mBAAoBs2D,EAAoB,QAAEtgM,KAAKqlC,WAC/C2jG,iBAAkBs3D,EAAoB,QAAEtgM,KAAKqlC,WAC7CmmG,WAAY,SAAoBtrI,EAAOy8K,GACrC,IAAInxC,EAAatrI,EAAMy8K,GAEvB,IAAKnxC,EACH,MAAM,IAAIn/I,MAAM,gCAGlB,IAAKvF,OAAOC,UAAUC,eAAeC,KAAKukJ,EAAY,SACpD,MAAM,IAAIn/I,MAAM,mCAGlB,IAAKvF,OAAOC,UAAUC,eAAeC,KAAKukJ,EAAY,YACpD,MAAM,IAAIn/I,MAAM,uCAGpB63M,wBAAyB5D,EAAoB,QAAEtgM,KAC/CuiM,wBAAyBjC,EAAoB,QAAEt9J,KAC/CkgK,aAAc5C,EAAoB,QAAEt9J,KACpC8jK,mBAAoB,SAA4B5mM,EAAOy8K,GACrD,IAAImqB,EAAqB5mM,EAAMy8K,GAE/B,IAA2B,IAAvBz8K,EAAMgjM,cAAuD,mBAAvB4D,EACxC,MAAM,IAAIz6M,MAAM,wHAGpBi6M,sBAAuB,SAA+BpmM,EAAOy8K,GAC3D,IAAI2pB,EAAwBpmM,EAAMy8K,GAElC,IAA2B,IAAvBz8K,EAAMgjM,cAA0D,mBAA1BoD,EACxC,MAAM,IAAIj6M,MAAM,8HAGpBk/I,4BAA6B+0D,EAAoB,QAAEt9J,KACnD6iK,yBAA0BvF,EAAoB,QAAEt9J,KAChDviC,MAAO6/L,EAAoB,QAAE9tM,OAC7BpG,GAAIk0M,EAAoB,QAAE1hM,OAC1BymM,eAAgB/E,EAAoB,QAAE9tM,SAIxCyzF,EAAgB27G,EAAa,eAAgB,CAC3C0D,2BA3wBsC,SAA2CnyK,GACjF,IAAIkyK,EAAiBlyK,EAAKkyK,eACtB78M,EAAW2qC,EAAK3qC,SACpB,OAAoBw3M,EAAgB,QAAEpyM,cAAc,MAAOy3M,EAAgB78M,IAywB3E07M,wBAhxBmC,SAAwCj7M,GAC3E,OAAOA,EAAM4L,OAAOnK,OAAS,GAgxB7B63M,yBAAyB,EACzBW,cAAc,EACdG,8BAA+B,WAC7B,OAAO,GAET93D,6BAA6B,EAC7Bs6D,0BAA0B,EAC1BplM,MAAOigM,EAAOuH,aACd77M,GAAI,IACJi5M,eAAgB,M,6BCvzBlB52M,EAAOiD,QAxBP,SAA4Bw2M,EAAMC,GAChC,GAAID,IAASC,EACX,OAAO,EAGT,IAAKD,IAASC,EACZ,OAAO,EAGT,IAAIztM,EAAMwtM,EAAKx9M,OAEf,GAAIy9M,EAAKz9M,SAAWgQ,EAClB,OAAO,EAGT,IAAK,IAAIjQ,EAAI,EAAGA,EAAIiQ,EAAKjQ,IACvB,GAAIy9M,EAAKz9M,KAAO09M,EAAK19M,GACnB,OAAO,EAIX,OAAO,I,6BCrBT3D,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAiB,aAAI,EAErB,IAAIsuM,EAgBJ,SAAiCrhM,GAAO,GAAIA,GAAOA,EAAIzM,WAAc,OAAOyM,EAAO,GAAY,OAARA,GAAiC,WAAjB22F,EAAQ32F,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI5E,EAAQkmM,IAA4B,GAAIlmM,GAASA,EAAM83B,IAAIlzB,GAAQ,OAAO5E,EAAMhR,IAAI4V,GAAQ,IAAIuhM,EAAS,GAAQC,EAAwBr5M,OAAOoC,gBAAkBpC,OAAO8lK,yBAA0B,IAAK,IAAIv6J,KAAOsM,EAAO,GAAI7X,OAAOC,UAAUC,eAAeC,KAAK0X,EAAKtM,GAAM,CAAE,IAAI+tM,EAAOD,EAAwBr5M,OAAO8lK,yBAAyBjuJ,EAAKtM,GAAO,KAAU+tM,IAASA,EAAKr3M,KAAOq3M,EAAKp3M,KAAQlC,OAAOoC,eAAeg3M,EAAQ7tM,EAAK+tM,GAAgBF,EAAO7tM,GAAOsM,EAAItM,GAAY6tM,EAAgB,QAAIvhM,EAAS5E,GAASA,EAAM/Q,IAAI2V,EAAKuhM,GAAW,OAAOA,EAhBxtBG,CAAwB,EAAQ,IAEzCC,EAAaC,EAAuB,EAAQ,IAE5C6H,EAAmB7H,EAAuB,EAAQ,MAElD8H,EAAkB9H,EAAuB,EAAQ,MAEjD+H,EAAgB/H,EAAuB,EAAQ,MAE/CgI,EAAYhI,EAAuB,EAAQ,MAE/C,SAASA,EAAuB5hM,GAAO,OAAOA,GAAOA,EAAIzM,WAAayM,EAAM,CAAE,QAAWA,GAEzF,SAASshM,IAA6B,GAAuB,mBAAZ3kD,QAAwB,OAAO,KAAM,IAAIvhJ,EAAQ,IAAIuhJ,QAA6F,OAAlF2kD,EAA2B,WAAsC,OAAOlmM,GAAiBA,EAI1M,SAAS4mM,EAAQnuM,EAAQouM,GAAkB,IAAIlwM,EAAO5J,OAAO4J,KAAK8B,GAAS,GAAI1L,OAAO8iD,sBAAuB,CAAE,IAAIya,EAAUv9D,OAAO8iD,sBAAsBp3C,GAAaouM,IAAgBv8I,EAAUA,EAAQrjC,QAAO,SAAU6/K,GAAO,OAAO/5M,OAAO8lK,yBAAyBp6J,EAAQquM,GAAK/3M,eAAgB4H,EAAKnI,KAAKiD,MAAMkF,EAAM2zD,GAAY,OAAO3zD,EAE9U,SAASowM,EAAc5xK,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAyB,MAAhBtpB,UAAUvW,GAAauW,UAAUvW,GAAK,GAAQA,EAAI,EAAKk2M,EAAQ75M,OAAOwjC,IAAS,GAAM35B,SAAQ,SAAU0B,GAAO4zF,EAAgB/2D,EAAQ78B,EAAKi4B,EAAOj4B,OAAsBvL,OAAOi6M,0BAA6Bj6M,OAAOk6M,iBAAiB9xK,EAAQpoC,OAAOi6M,0BAA0Bz2K,IAAmBq2K,EAAQ75M,OAAOwjC,IAAS35B,SAAQ,SAAU0B,GAAOvL,OAAOoC,eAAegmC,EAAQ78B,EAAKvL,OAAO8lK,yBAAyBtiI,EAAQj4B,OAAe,OAAO68B,EAE7gB,SAASs5K,EAAehmM,EAAK/X,GAAK,OAUlC,SAAyB+X,GAAO,GAAIjJ,MAAMsF,QAAQ2D,GAAM,OAAOA,EAVtBimM,CAAgBjmM,IAQzD,SAA+BA,EAAK/X,GAAK,GAAsB,oBAAXuH,UAA4BA,OAAOujG,YAAYzuG,OAAO0b,IAAO,OAAQ,IAAI45K,EAAO,GAAQC,GAAK,EAAU33K,GAAK,EAAWy3K,OAAK3xL,EAAW,IAAM,IAAK,IAAiC0xL,EAA7Bl9K,EAAKwD,EAAIxQ,OAAOujG,cAAmB8mF,GAAMH,EAAKl9K,EAAGxE,QAAQkqE,QAAoB03G,EAAK7zL,KAAK2zL,EAAGjzL,QAAYwB,GAAK2xL,EAAK1xL,SAAWD,GAA3D4xL,GAAK,IAAoE,MAAO7yL,GAAOkb,GAAK,EAAMy3K,EAAK3yL,EAAO,QAAU,IAAW6yL,GAAsB,MAAhBr9K,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAI0F,EAAI,MAAMy3K,GAAQ,OAAOC,EARjassB,CAAsBlmM,EAAK/X,IAI5F,SAAqCqH,EAAGuiH,GAAU,IAAKviH,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO62M,EAAkB72M,EAAGuiH,GAAS,IAAI9hH,EAAIzL,OAAOC,UAAU4T,SAAS1T,KAAK6K,GAAGtB,MAAM,GAAI,GAAc,WAAN+B,GAAkBT,EAAEqgC,cAAa5/B,EAAIT,EAAEqgC,YAAYvpC,MAAM,GAAU,QAAN2J,GAAqB,QAANA,EAAa,OAAOgH,MAAMgM,KAAKhT,GAAI,GAAU,cAANA,GAAqB,2CAA2CmD,KAAKnD,GAAI,OAAOo2M,EAAkB72M,EAAGuiH,GAJpTu0F,CAA4BpmM,EAAK/X,IAEnI,WAA8B,MAAM,IAAI6+F,UAAU,6IAFuFu/G,GAMzI,SAASF,EAAkBnmM,EAAK9H,IAAkB,MAAPA,GAAeA,EAAM8H,EAAI9X,UAAQgQ,EAAM8H,EAAI9X,QAAQ,IAAK,IAAID,EAAI,EAAG+qB,EAAO,IAAIjc,MAAMmB,GAAMjQ,EAAIiQ,EAAKjQ,IAAO+qB,EAAK/qB,GAAK+X,EAAI/X,GAAM,OAAO+qB,EAMhL,SAAS8/E,EAAQ32F,GAAmV,OAAtO22F,EAArD,mBAAXtjG,QAAoD,iBAApBA,OAAOujG,SAAmC,SAAiB52F,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX3M,QAAyB2M,EAAIwzB,cAAgBngC,QAAU2M,IAAQ3M,OAAOjL,UAAY,gBAAkB4X,IAAyBA,GAInX,SAASsiM,EAAkB/xK,EAAQhvB,GAAS,IAAK,IAAIzV,EAAI,EAAGA,EAAIyV,EAAMxV,OAAQD,IAAK,CAAE,IAAIy2M,EAAahhM,EAAMzV,GAAIy2M,EAAWp4M,WAAao4M,EAAWp4M,aAAc,EAAOo4M,EAAWr4M,cAAe,EAAU,UAAWq4M,IAAYA,EAAWluK,UAAW,GAAMlsC,OAAOoC,eAAegmC,EAAQgyK,EAAW7uM,IAAK6uM,IAM7S,SAASC,EAA2Bx8H,EAAM19E,GAAQ,OAAIA,GAA2B,WAAlBquG,EAAQruG,IAAsC,mBAATA,EAA8Cm6M,EAAuBz8H,GAAtC19E,EAEnI,SAASm6M,EAAuBz8H,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI08H,eAAe,6DAAgE,OAAO18H,EAE/J,SAAS28H,IAA8B,GAAuB,oBAAZC,UAA4BA,QAAQ9W,UAAW,OAAO,EAAO,GAAI8W,QAAQ9W,UAAU+W,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3El/L,KAAKxb,UAAU4T,SAAS1T,KAAKs6M,QAAQ9W,UAAUloL,KAAM,IAAI,iBAAyB,EAAQ,MAAOpZ,GAAK,OAAO,GAE1T,SAASu4M,EAAgB5vM,GAAwJ,OAAnJ4vM,EAAkB56M,OAAO8L,eAAiB9L,OAAOs+J,eAAiB,SAAyBtzJ,GAAK,OAAOA,EAAEe,WAAa/L,OAAOs+J,eAAetzJ,KAA8BA,GAIxM,SAASa,EAAgBb,EAAGlF,GAA+G,OAA1G+F,EAAkB7L,OAAO8L,gBAAkB,SAAyBd,EAAGlF,GAAsB,OAAjBkF,EAAEe,UAAYjG,EAAUkF,IAA6BA,EAAGlF,GAErK,SAASq5F,EAAgBtnF,EAAKtM,EAAKpJ,GAAiK,OAApJoJ,KAAOsM,EAAO7X,OAAOoC,eAAeyV,EAAKtM,EAAK,CAAEpJ,MAAOA,EAAOH,YAAY,EAAMD,cAAc,EAAMmqC,UAAU,IAAkBr0B,EAAItM,GAAOpJ,EAAgB0V,EAE3M,IAAImqM,EAAc,GA6BdC,EAA4B,SAAUlH,IAnC1C,SAAmB3kB,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7zF,UAAU,sDAAyD4zF,EAASn2L,UAAYD,OAAOsL,OAAO+qL,GAAcA,EAAWp2L,UAAW,CAAEorC,YAAa,CAAElpC,MAAOi0L,EAAUlqJ,UAAU,EAAMnqC,cAAc,KAAes0L,GAAYxqL,EAAgBuqL,EAAUC,GAoCjX2kB,CAAUiH,EAAclH,GAExB,IAhDoBE,EAFAC,EAAaC,EAAYC,EAkDzCC,GAhDgBJ,EAgDMgH,EAhDY,WAAc,IAAsC56M,EAAlCi0M,EAAQV,EAAgBK,GAAkB,GAAIT,IAA6B,CAAE,IAAIe,EAAYX,EAAgBx2M,MAAMinC,YAAahkC,EAASozM,QAAQ9W,UAAU2X,EAAOphM,UAAWqhM,QAAqBl0M,EAASi0M,EAAM52M,MAAMN,KAAM8V,WAAc,OAAOmgM,EAA2Bj2M,KAAMiD,KAkD3U,SAAS46M,EAAa7oM,GACpB,IAAIk7I,EA4GJ,OArKJ,SAAyBp2C,EAAUg9F,GAAe,KAAMh9F,aAAoBg9F,GAAgB,MAAM,IAAI14G,UAAU,qCA2D5Gk5G,CAAgBt3M,KAAM69M,GAItB9iH,EAAgBm7G,EAFhBhmD,EAAQ+mD,EAAOl7M,KAAKiE,KAAMgV,IAEqB,uBAAuB,SAAU6B,GAChE,OAAVA,IACFq5I,EAAMr5I,MAAQA,GAGhB,IAAIinM,EAAU5tD,EAAMl7I,MAAMsrI,WAAWrrI,IAEjC6oM,IACqB,mBAAZA,EACTA,EAAQjnM,GACsB,WAArBuzF,EAAQ0zG,IAAyBliN,OAAOC,UAAUC,eAAeC,KAAK+hN,EAAS,aACxFA,EAAQzwM,QAAUwJ,OAKxBkkF,EAAgBm7G,EAAuBhmD,GAAQ,gCAAgC,SAAUuqD,GAChE,OAAnBA,IACFvqD,EAAMuqD,eAAiBA,MAI3B1/G,EAAgBm7G,EAAuBhmD,GAAQ,2BAA2B,SAAU6tD,GAClF7tD,EAAM6tD,gBAAkBA,KAG1BhjH,EAAgBm7G,EAAuBhmD,GAAQ,aAAa,SAAUwnD,EAAcC,GAClF,GAAkB,OAAdA,EACF,OAAO,KAGT,IAAIz2M,EAAKgvJ,EAAMl7I,MAAM9T,GACjBigI,EAA2B,OAAjBu2E,EAAwB,GAAK,WAAWvzM,OAAOuzM,GAC7D,MAAO,sBAAsBvzM,OAAOjD,EAAI,KAAKiD,OAAOg9H,EAAS,UAAUh9H,OAAOwzM,MAGhF58G,EAAgBm7G,EAAuBhmD,GAAQ,WAAW,SAAUxrH,GAClE,IAAI47G,EAAa4P,EAAMl7I,MAAMsrI,WAE7B4P,EAAMjjD,SAAS,CACb+wG,gBAAgB,IAGlB19D,EAAW/gE,SAAW+gE,EAAW/gE,QAAQ76C,MAG3Cq2D,EAAgBm7G,EAAuBhmD,GAAQ,UAAU,SAAUxrH,GACjE,IAAI47G,EAAa4P,EAAMl7I,MAAMsrI,WAE7B4P,EAAMjjD,SAAS,CACb+wG,gBAAgB,IAGlB19D,EAAW7gE,QAAU6gE,EAAW7gE,OAAO/6C,MAGzCq2D,EAAgBm7G,EAAuBhmD,GAAQ,aAAa,SAAUxrH,GACpE,IAAIuzK,EAAc/nD,EAAMl7I,MACpBsrI,EAAa23D,EAAY33D,WACzB+4D,EAA0BpB,EAAYoB,wBACtCsD,EAAuB1E,EAAY0E,qBACnCxqH,EAAUztD,EAAMytD,QAEpB,OAAQA,GACN,KAAK,GAEL,KAAK,GAGD,IAAI8rH,EAAuB,KAAZ9rH,EAAiB,OAAS,OAGrC+rH,EAAyBZ,EADDptD,EAAMiuD,gBAAgBF,GAAU,CAAC5E,EAAyBsD,IACnB,GAC/DV,EAA6BiC,EAAuB,GACpDhC,EAA0BgC,EAAuB,GAErD59D,EAAWC,UAAU77G,EAAO,CAC1Bu3K,2BAA4BA,EAC5BC,wBAAyBA,IAE3B,MAGJ,QACE57D,EAAWC,UAAU77G,EAAO,CAC1B20K,wBAAyBA,EACzBsD,qBAAsBA,QAK9BzsD,EAAM6tD,gBAAkB,KACxB7tD,EAAMxwF,MAAQ,CACZs+I,gBAAgB,GAGlB9tD,EAAMkuD,iBAAiBppM,GAEvBk7I,EAAMmuD,mBAAmBrpM,GAEzBk7I,EAAMouD,SAAStpM,GAERk7I,EAgNT,OAjXoB4mD,EAoKP+G,GApKoB9G,EAoKN,CAAC,CAC1B5vM,IAAK,oBACLpJ,MAAO,WACLiC,KAAKu+M,mCAGN,CACDp3M,IAAK,mCACLpJ,MAAO,SAA0CwmF,GAC3CA,EAAUlT,QAAUrxE,KAAKgV,MAAMq8D,OACjCrxE,KAAKo+M,iBAAiB75H,GAGpBA,EAAUlT,QAAUrxE,KAAKgV,MAAMq8D,OAASkT,EAAUyzH,eAAiBh4M,KAAKgV,MAAMgjM,cAChFh4M,KAAKq+M,mBAAmB95H,GAGtBA,EAAUhvE,QAAUvV,KAAKgV,MAAMO,OACjCvV,KAAKs+M,SAAS/5H,KAGjB,CACDp9E,IAAK,qBACLpJ,MAAO,WACLiC,KAAKu+M,mCAEN,CACDp3M,IAAK,mBACLpJ,MAAO,SAA0BiX,GAC3BA,EAAMgjM,eACRh4M,KAAKw+M,cAAgBxpM,EAAMq8D,MAAMztE,KAAI,SAAUu9H,GAC7C,OAAOnsH,EAAM0nM,gBAAgBv7E,MAE/BnhI,KAAKy+M,gBAAkBz+M,KAAKw+M,cAAc56M,KAAI,SAAUytE,GACtD,OAAOA,EAAM7xE,UAEfQ,KAAK0+M,oBAAsB1+M,KAAKy+M,gBAAgBnhK,OAAM,SAAUqhK,GAC9D,OAAsB,IAAfA,QAIZ,CACDx3M,IAAK,qBACLpJ,MAAO,SAA4BiX,GACjChV,KAAKm+M,iBAAkB,EAAIjB,EAA0B,SAAG,CACtDlF,aAAchjM,EAAMgjM,aACpBn3M,KAAMmU,EAAMgjM,aAAeh4M,KAAKy+M,gBAAkBzpM,EAAMq8D,MAAM7xE,WAGjE,CACD2H,IAAK,WACLpJ,MAAO,SAAkBiX,GACvBhV,KAAKuV,OAAQ,EAAI4nM,EAAyB,SAAGnoM,EAAMO,SAEpD,CACDpO,IAAK,iBACLpJ,MAAO,WACL,IAAIk9M,EAASj7M,KAEb,GAAIA,KAAK0+M,oBACP,OAAO,KAGT,IAAInpM,EAAQvV,KAAKuV,MACb8iM,EAAer4M,KAAKgV,MACpB9T,EAAKm3M,EAAan3M,GAClBmwE,EAAQgnI,EAAahnI,MACrBmrI,EAAanE,EAAamE,WAC1BC,EAAiBpE,EAAaoE,eAC9Bb,EAAqBvD,EAAauD,mBAClCvC,EAA0BhB,EAAagB,wBACvCsD,EAAuBtE,EAAasE,qBACpCC,EAAYvE,EAAauE,UAC7B,OAAOvrI,EAAMztE,KAAI,SAAUu9H,EAASu2E,GAClC,IAAIr8H,EAAY,sBAAsBl3E,OAAOjD,EAAI,KAC7C09M,EAAmB,GAAGz6M,OAAOk3E,EAAW,YAAYl3E,OAAOuzM,EAAc,KACzEmH,EAAkC,IAAjBnH,EAIrB,OAAoB5C,EAAgB,QAAEpyM,cAAc,MAAO6S,EAAM,GAAGpR,OAAOy6M,EAAkB,aAAc,mBAAoBC,GAAkB,yBAAuC/J,EAAgB,QAAEpyM,cAAc06M,EAAuB,QAAG,CAChPj8E,QAASA,EACTy6E,mBAAoBA,EACpBrmM,MAAOA,EACPqpM,iBAAkBA,IACH9J,EAAgB,QAAEpyM,cAAc26M,EAAmB,QAAG,CACrEhsI,MAAO4pI,EAAOuD,cAAc9G,GAC5BkF,UAAWA,EACXJ,WAAYA,EACZC,eAAgBA,EAChB/E,aAAcA,EACdiF,qBAAsBtD,IAA4B3B,EAAeiF,EAAuB,KACxFmC,wBAAyB7D,EAAO6D,wBAChCC,UAAW9D,EAAO8D,UAClBxpM,MAAOA,EACP8lE,UAAWA,EACXpmE,IAAKgmM,EAAO+D,gCAKjB,CACD73M,IAAK,cACLpJ,MAAO,WACL,IAAIszE,EAAQrxE,KAAKgV,MAAMq8D,MAEvB,GAAqB,IAAjBA,EAAM7xE,OACR,OAAO,KAGT,IAAI+V,EAAQvV,KAAKuV,MACbwjM,EAAe/4M,KAAKgV,MACpB9T,EAAK63M,EAAa73M,GAClBs7M,EAAazD,EAAayD,WAC1BC,EAAiB1D,EAAa0D,eAC9BpD,EAA0BN,EAAaM,wBACvCsD,EAAuB5D,EAAa4D,qBACpCC,EAAY7D,EAAa6D,UAC7B,OAAoB9H,EAAgB,QAAEpyM,cAAc26M,EAAmB,QAAG,CACxEhsI,MAAOA,EACPurI,UAAWA,EACXJ,WAAYA,EACZC,eAAgBA,EAChBE,qBAAkD,OAA5BtD,EAAmCsD,EAAuB,KAChFmC,wBAAyB9+M,KAAK8+M,wBAC9BC,UAAW/+M,KAAK++M,UAChBxpM,MAAOA,EACP8lE,UAAW,sBAAsBl3E,OAAOjD,EAAI,SAG/C,CACDiG,IAAK,iCACLpJ,MAAO,WACL,IAAIggN,EAAkB/9M,KAAK+9M,gBAE3B,GAAKA,EAAL,CAIA,IAAItD,EAAiBz6M,KAAKy6M,eACtBwE,EAAgClB,EAAgBmB,eAAiBzE,EAAiBsD,EAAgBnoI,UAAYmoI,EAAgBnoI,UAAY6kI,EAAe7kI,UACzJnY,EAAYg9I,EAAeh9I,UAE3BwhJ,EAAgCxhJ,EAElCA,EAAYwhJ,EACHA,EAAgClB,EAAgB5mG,aAAe15C,EAAYg9I,EAAetjG,eAEnG15C,EAAYwhJ,EAAgClB,EAAgB5mG,aAAesjG,EAAetjG,cAGxF15C,IAAcg9I,EAAeh9I,YAC/Bg9I,EAAeh9I,UAAYA,MAG9B,CACDt2D,IAAK,SACLpJ,MAAO,WACL,IAAIwX,EAAQvV,KAAKuV,MACbwlM,EAAe/6M,KAAKgV,MACpB9T,EAAK65M,EAAa75M,GAClB82M,EAAe+C,EAAa/C,aAC5B2D,EAAuBZ,EAAaY,qBACpCY,EAAuBxB,EAAawB,qBACpClD,EAA0B0B,EAAa1B,wBACvCsD,EAAuB5B,EAAa4B,qBACpCqB,EAAiBh+M,KAAK0/D,MAAMs+I,eAC5BmB,EAAgBnH,EAAeh4M,KAAKo/M,iBAAmBp/M,KAAKq/M,cAC5DhsG,EAA2B,OAAlB8rG,EACTG,EAAuBt/M,KAAK++M,UAAU1F,EAAyBsD,GAC/D4C,EAAmB,sBAAsBp7M,OAAOjD,GAEhDi5M,EAAiBvE,EAAc,CACjCxgI,KAAM,WACN,gBAAiB,UACjB,YAAamqI,EACb,gBAAiBlsG,GAChB99F,EAAM,sBAAsBpR,OAAOjD,EAAI,cAAe,YAAamyG,GAAU,iBAAkB,GAAIrzG,KAAKgV,MAAMmlM,gBAE7GqF,EAAiB7D,EAAqB/F,EAAc,CACtD5xM,KAAM,OACNjG,MAAO,GACP0hN,aAAc,MACd,oBAAqB,OACrB,gBAAiBF,EACjB,wBAAyBD,GACxB/pM,EAAM,sBAAsBpR,OAAOjD,EAAI,UAAW,QAASmyG,GAAU,YAAa2qG,GAAkB,gBAAiB,GAAIh+M,KAAKgV,MAAMsrI,WAAY,CACjJ/gE,QAASv/E,KAAKu/E,QACdE,OAAQz/E,KAAKy/E,OACb8gE,UAAWvgJ,KAAKgV,MAAMsrI,WAAWC,WAAavgJ,KAAKugJ,UACnDtrI,IAAKjV,KAAK0/M,uBAERjF,EAAiB8B,EAAqB,CACxCpC,eAAgBvE,EAAc,CAC5B10M,GAAIq+M,EACJnqI,KAAM,WACL7/D,EAAM,sBAAsBpR,OAAOjD,EAAI,oBAAqB,iBAAkBmyG,GAAU,sBAAuB,CAChHp+F,IAAKjV,KAAK2/M,+BAEZriN,SAAU6hN,IAEZ,OAAoBrK,EAAgB,QAAEpyM,cAAc,MAAOy3M,EAAgBqF,EAAgB/E,QA7WnB1E,EAAkBe,EAAYj7M,UAAWk7M,GAAiBC,GAAajB,EAAkBe,EAAaE,GAiX3K6G,EAlUuB,CAmU9B/I,EAAO99C,WAETxwJ,EAAiB,QAAIq3M,EAErB9iH,EAAgB8iH,EAAc,YAAa,CACzC38M,GAAIk0M,EAAoB,QAAE1hM,OAE1BskM,aAAc5C,EAAoB,QAAEt9J,KAEpC6jK,qBAAsBvG,EAAoB,QAAEtgM,KAE5CynM,qBAAsBnH,EAAoB,QAAEtgM,KAE5Cu8D,MAAO+jI,EAAoB,QAAE73L,MAAM48B,WAEnCqiK,WAAYpH,EAAoB,QAAEtgM,KAElC2nM,eAAgBrH,EAAoB,QAAE9tM,OAEtCs0M,mBAAoBxG,EAAoB,QAAEtgM,KAE1C4nM,gBAAiBtH,EAAoB,QAAEtgM,KAEvCqlM,eAAgB/E,EAAoB,QAAE9tM,OAEtCg5I,WAAY80D,EAAoB,QAAE9tM,OAElCs1M,UAAWxH,EAAoB,QAAEvsK,UAAU,CAC3CusK,EAAoB,QAAE9tM,OAAQ8tM,EAAoB,QAAEtgM,OACpDukM,wBAAyBjE,EAAoB,QAAEl5L,OAE/CygM,qBAAsBvH,EAAoB,QAAEl5L,OAE5C3G,MAAO6/L,EAAoB,QAAEvsK,UAAU,CACvCusK,EAAoB,QAAE9tM,OAAQ8tM,EAAoB,QAAE73L,UAGtDw9E,EAAgB8iH,EAAc,eAAgB,CAC5C38M,GAAI,IACJ82M,cAAc,EACd2D,qBAtYgC,SAAqC3mM,GACrE,OAAoB8/L,EAAgB,QAAEpyM,cAAc,QAASsS,IAsY7DunM,qBAnYgC,SAAqCt0K,GACrE,IAAIkyK,EAAiBlyK,EAAKkyK,eACtB78M,EAAW2qC,EAAK3qC,SACpB,OAAoBw3M,EAAgB,QAAEpyM,cAAc,MAAOy3M,EAAgB78M,IAiY3Ek/M,WAAY,WACV,MAAM,IAAIr7M,MAAM,kCAElBs7M,eAAgBmB,EAChBhC,mBAAoB,WAClB,MAAM,IAAIz6M,MAAM,0CAElBu7M,gBAAiB,WACf,MAAM,IAAIv7M,MAAM,uCAElBg5M,eAAgByD,EAChBt9D,WAAYs9D,EACZhB,UAAWgB,EACXvE,wBAAyB,KACzBsD,qBAAsB,KACtBpnM,MA7YiB,CACjBrN,UAAW,gCACX03M,cAAe,sCACf/oM,MAAO,4BACPgpM,UAAW,kCACXC,aAAc,qCACdrF,eAAgB,sCAChBsF,mBAAoB,4CACpBC,UAAW,iCACXz7M,KAAM,2BACN07M,UAAW,kCACXC,gBAAiB,wCACjBC,iBAAkB,wCAClBC,sBAAuB,+CACvBC,aAAc,wC,6BCzFhB,IAAI/C,EAAgb,SAAUhmM,EAAK/X,GAAK,GAAI8O,MAAMsF,QAAQ2D,GAAQ,OAAOA,EAAY,GAAIxQ,OAAOujG,YAAYzuG,OAAO0b,GAAQ,OAAxf,SAAuBA,EAAK/X,GAAK,IAAI2xL,EAAO,GAAQC,GAAK,EAAU33K,GAAK,EAAWy3K,OAAK3xL,EAAW,IAAM,IAAK,IAAiC0xL,EAA7Bl9K,EAAKwD,EAAIxQ,OAAOujG,cAAmB8mF,GAAMH,EAAKl9K,EAAGxE,QAAQkqE,QAAoB03G,EAAK7zL,KAAK2zL,EAAGjzL,QAAYwB,GAAK2xL,EAAK1xL,SAAWD,GAA3D4xL,GAAK,IAAoE,MAAO7yL,GAAOkb,GAAK,EAAMy3K,EAAK3yL,EAAO,QAAU,KAAW6yL,GAAMr9K,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI0F,EAAI,MAAMy3K,GAAQ,OAAOC,EAA6HovB,CAAchpM,EAAK/X,GAAa,MAAM,IAAI6+F,UAAU,yDAEtlB76F,EAAOiD,QAAU,SAAUyhC,GACzB,IAAIpnC,EAAOonC,EAAKpnC,KACZm3M,EAAe/vK,EAAK+vK,aA8BxB,SAAS1oM,EAAK07D,GACZ,IAAIu1I,EAAYjD,EAAetyI,EAAU,GAErC0sI,EAAe6I,EAAU,GACzB5I,EAAY4I,EAAU,GAG1B,OAAIvI,EACgB,OAAdL,GAAsBA,IAAc92M,EAAK62M,GAAgB,EAGtC,QAFrBA,EArCN,SAAkCA,GAOhC,IANqB,OAAjBA,EACFA,EAAe,EAEfA,IAGKA,EAAe72M,EAAKrB,QAAiC,IAAvBqB,EAAK62M,IACxCA,IAGF,OAAOA,IAAiB72M,EAAKrB,OAAS,KAAOk4M,EA0B1B8I,CAAyB9I,IAG/B,CAAC,KAAM,MAGT,CAACA,EAAc,GAGjB,CAACA,EAAcC,EAAY,GAGvB,IAAT92M,GAAc82M,IAAc92M,EAAO,EAC9B,CAAC,KAAM,MAGE,OAAd82M,EACK,CAAC,KAAM,GAGT,CAAC,KAAMA,EAAY,GAuC5B,MAAO,CACLroM,KAAMA,EACN87H,KAtCF,SAAcpgE,GACZ,IAAIy1I,EAAanD,EAAetyI,EAAU,GAEtC0sI,EAAe+I,EAAW,GAC1B9I,EAAY8I,EAAW,GAG3B,OAAIzI,EACgB,OAAdL,GAAoC,IAAdA,EAGH,QAFrBD,EAvDN,SAAkCA,GAOhC,IANqB,OAAjBA,EACFA,EAAe72M,EAAKrB,OAAS,EAE7Bk4M,IAGKA,GAAgB,GAA4B,IAAvB72M,EAAK62M,IAC/BA,IAGF,OAAyB,IAAlBA,EAAsB,KAAOA,EA4CjBgJ,CAAyBhJ,IAG/B,CAAC,KAAM,MAGT,CAACA,EAAc72M,EAAK62M,GAAgB,GAGtC,CAACA,EAAcC,EAAY,GAGvB,IAAT92M,GAA4B,IAAd82M,EACT,CAAC,KAAM,MAGE,OAAdA,EACK,CAAC,KAAM92M,EAAO,GAGhB,CAAC,KAAM82M,EAAY,IAU1BgJ,OAPF,SAAgB31I,GACd,OAA6B,OAAtB17D,EAAK07D,GAAU,O,6BCnG1BpvE,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAGT,IAAIu/M,EAAib,SAAUhmM,EAAK/X,GAAK,GAAI8O,MAAMsF,QAAQ2D,GAAQ,OAAOA,EAAY,GAAIxQ,OAAOujG,YAAYzuG,OAAO0b,GAAQ,OAAxf,SAAuBA,EAAK/X,GAAK,IAAI2xL,EAAO,GAAQC,GAAK,EAAU33K,GAAK,EAAWy3K,OAAK3xL,EAAW,IAAM,IAAK,IAAiC0xL,EAA7Bl9K,EAAKwD,EAAIxQ,OAAOujG,cAAmB8mF,GAAMH,EAAKl9K,EAAGxE,QAAQkqE,QAAoB03G,EAAK7zL,KAAK2zL,EAAGjzL,QAAYwB,GAAK2xL,EAAK1xL,SAAWD,GAA3D4xL,GAAK,IAAoE,MAAO7yL,GAAOkb,GAAK,EAAMy3K,EAAK3yL,EAAO,QAAU,KAAW6yL,GAAMr9K,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAI0F,EAAI,MAAMy3K,GAAQ,OAAOC,EAA6HovB,CAAchpM,EAAK/X,GAAa,MAAM,IAAI6+F,UAAU,yDAIvlB,SAASwiH,EAAmBtpM,GAAO,GAAIjJ,MAAMsF,QAAQ2D,GAAM,CAAE,IAAK,IAAI/X,EAAI,EAAG+qB,EAAOjc,MAAMiJ,EAAI9X,QAASD,EAAI+X,EAAI9X,OAAQD,IAAK+qB,EAAK/qB,GAAK+X,EAAI/X,GAAI,OAAO+qB,EAAe,OAAOjc,MAAMgM,KAAK/C,GAEtL,IAJgC7D,EAI5BotM,EAAgB,EAAQ,KAExBC,GAN4BrtM,EAMYotM,IANSptM,EAAIzM,WAAayM,EAAM,CAAE,QAAWA,GAQrFstM,EAAS,SAAgB11M,GAC3B,OAAOA,GAGT7E,EAAiB,QAAI,SAAUqQ,GAC7B,IAAIoxB,EAAO55B,MAAMsF,QAAQkD,IAA2B,IAAjBA,EAAMrX,OAAeqX,EAAQ,CAACA,EAAO,MAEpEm3D,EAAQsvI,EAAer1K,EAAM,GAE7B1yB,EAAQy4D,EAAM,GACdgzI,EAAqBhzI,EAAM,GAE/B,OAAO,SAAU7mE,GACf,IAAK,IAAI0O,EAAOC,UAAUtW,OAAQ2rB,EAAQ9c,MAAMwH,EAAO,EAAIA,EAAO,EAAI,GAAIjC,EAAO,EAAGA,EAAOiC,EAAMjC,IAC/FuX,EAAMvX,EAAO,GAAKkC,UAAUlC,GAG9B,IAAIhF,EAASuc,EAAMvnB,KAAI,SAAUlG,GAC/B,OAAO6X,EAAM7X,MACZo4B,OAAOirL,GAEV,MAA4B,iBAAdnyM,EAAO,IAAiD,mBAAvBoyM,EAAoC,CAAE75M,IAAKA,EAAKgI,UAAW6xM,EAAqBA,EAAmB1gN,WAAMhB,EAAWshN,EAAmBhyM,IAAWA,EAAO9J,KAAK,MAAS,CAAEqC,IAAKA,EAAKwjE,MAAOm2I,EAAwB,QAAExgN,WAAMhB,EAAW,CAAC,IAAI6E,OAAOy8M,EAAmBhyM,QAIvTrL,EAAOiD,QAAUA,EAAiB,S,6BCxClC,IAAIohG,EAAmBhsG,OAAOC,UAAU+iD,qBAExC,SAASqiK,EAAS1mM,GACjB,GAAW,MAAPA,EACH,MAAM,IAAI6jF,UAAU,yDAGrB,OAAOxiG,OAAO2e,GAGf,SAAS2mM,EAAkBztM,GAC1B,IAAIjO,EAAO5J,OAAOqb,oBAAoBxD,GAMtC,OAJI7X,OAAO8iD,wBACVl5C,EAAOA,EAAKrB,OAAOvI,OAAO8iD,sBAAsBjrC,KAG1CjO,EAAKswB,QAAO,SAAU3uB,GAC5B,OAAOygG,EAAiB7rG,KAAK0X,EAAKtM,MAIpC5D,EAAOiD,QAAU5K,OAAOwmC,QAAU,SAAU4B,EAAQ5E,GAKnD,IAJA,IAAI/kB,EACA7U,EACA4U,EAAK6mM,EAASj9K,GAETx8B,EAAI,EAAGA,EAAIsO,UAAUtW,OAAQgI,IAAK,CAC1C6S,EAAOvE,UAAUtO,GACjBhC,EAAO07M,EAAkBtlN,OAAOye,IAEhC,IAAK,IAAI9a,EAAI,EAAGA,EAAIiG,EAAKhG,OAAQD,IAChC6a,EAAG5U,EAAKjG,IAAM8a,EAAK7U,EAAKjG,IAI1B,OAAO6a,I,6BCnCRxe,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAiB,aAAI,EAErB,IAAIsuM,EAUJ,SAAiCrhM,GAAO,GAAIA,GAAOA,EAAIzM,WAAc,OAAOyM,EAAO,GAAY,OAARA,GAAiC,WAAjB22F,EAAQ32F,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI5E,EAAQkmM,IAA4B,GAAIlmM,GAASA,EAAM83B,IAAIlzB,GAAQ,OAAO5E,EAAMhR,IAAI4V,GAAQ,IAAIuhM,EAAS,GAAQC,EAAwBr5M,OAAOoC,gBAAkBpC,OAAO8lK,yBAA0B,IAAK,IAAIv6J,KAAOsM,EAAO,GAAI7X,OAAOC,UAAUC,eAAeC,KAAK0X,EAAKtM,GAAM,CAAE,IAAI+tM,EAAOD,EAAwBr5M,OAAO8lK,yBAAyBjuJ,EAAKtM,GAAO,KAAU+tM,IAASA,EAAKr3M,KAAOq3M,EAAKp3M,KAAQlC,OAAOoC,eAAeg3M,EAAQ7tM,EAAK+tM,GAAgBF,EAAO7tM,GAAOsM,EAAItM,GAAY6tM,EAAgB,QAAIvhM,EAAS5E,GAASA,EAAM/Q,IAAI2V,EAAKuhM,GAAW,OAAOA,EAVxtBG,CAAwB,EAAQ,IAEzCC,EAAaC,EAAuB,EAAQ,IAE5C8L,EAAkB9L,EAAuB,EAAQ,MAErD,SAASA,EAAuB5hM,GAAO,OAAOA,GAAOA,EAAIzM,WAAayM,EAAM,CAAE,QAAWA,GAEzF,SAASshM,IAA6B,GAAuB,mBAAZ3kD,QAAwB,OAAO,KAAM,IAAIvhJ,EAAQ,IAAIuhJ,QAA6F,OAAlF2kD,EAA2B,WAAsC,OAAOlmM,GAAiBA,EAI1M,SAASu7F,EAAQ32F,GAAmV,OAAtO22F,EAArD,mBAAXtjG,QAAoD,iBAApBA,OAAOujG,SAAmC,SAAiB52F,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX3M,QAAyB2M,EAAIwzB,cAAgBngC,QAAU2M,IAAQ3M,OAAOjL,UAAY,gBAAkB4X,IAAyBA,GAEnX,SAAS6jM,EAAgBx9F,EAAUg9F,GAAe,KAAMh9F,aAAoBg9F,GAAgB,MAAM,IAAI14G,UAAU,qCAEhH,SAAS23G,EAAkB/xK,EAAQhvB,GAAS,IAAK,IAAIzV,EAAI,EAAGA,EAAIyV,EAAMxV,OAAQD,IAAK,CAAE,IAAIy2M,EAAahhM,EAAMzV,GAAIy2M,EAAWp4M,WAAao4M,EAAWp4M,aAAc,EAAOo4M,EAAWr4M,cAAe,EAAU,UAAWq4M,IAAYA,EAAWluK,UAAW,GAAMlsC,OAAOoC,eAAegmC,EAAQgyK,EAAW7uM,IAAK6uM,IAM7S,SAASC,EAA2Bx8H,EAAM19E,GAAQ,OAAIA,GAA2B,WAAlBquG,EAAQruG,IAAsC,mBAATA,EAEpG,SAAgC09E,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI08H,eAAe,6DAAgE,OAAO18H,EAFby8H,CAAuBz8H,GAAtC19E,EAInI,SAASq6M,IAA8B,GAAuB,oBAAZC,UAA4BA,QAAQ9W,UAAW,OAAO,EAAO,GAAI8W,QAAQ9W,UAAU+W,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3El/L,KAAKxb,UAAU4T,SAAS1T,KAAKs6M,QAAQ9W,UAAUloL,KAAM,IAAI,iBAAyB,EAAQ,MAAOpZ,GAAK,OAAO,GAE1T,SAASu4M,EAAgB5vM,GAAwJ,OAAnJ4vM,EAAkB56M,OAAO8L,eAAiB9L,OAAOs+J,eAAiB,SAAyBtzJ,GAAK,OAAOA,EAAEe,WAAa/L,OAAOs+J,eAAetzJ,KAA8BA,GAIxM,SAASa,EAAgBb,EAAGlF,GAA+G,OAA1G+F,EAAkB7L,OAAO8L,gBAAkB,SAAyBd,EAAGlF,GAAsB,OAAjBkF,EAAEe,UAAYjG,EAAUkF,IAA6BA,EAAGlF,GAIrK,IAFyB+R,EAAKtM,EAAKpJ,EAE/BqjN,EAA4B,SAAUzK,IAN1C,SAAmB3kB,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7zF,UAAU,sDAAyD4zF,EAASn2L,UAAYD,OAAOsL,OAAO+qL,GAAcA,EAAWp2L,UAAW,CAAEorC,YAAa,CAAElpC,MAAOi0L,EAAUlqJ,UAAU,EAAMnqC,cAAc,KAAes0L,GAAYxqL,EAAgBuqL,EAAUC,GAOjX2kB,CAAUwK,EAAczK,GAExB,IAnBoBE,EAFAC,EAAaC,EAAYC,EAqBzCC,GAnBgBJ,EAmBMuK,EAnBY,WAAc,IAAsCn+M,EAAlCi0M,EAAQV,EAAgBK,GAAkB,GAAIT,IAA6B,CAAE,IAAIe,EAAYX,EAAgBx2M,MAAMinC,YAAahkC,EAASozM,QAAQ9W,UAAU2X,EAAOphM,UAAWqhM,QAAqBl0M,EAASi0M,EAAM52M,MAAMN,KAAM8V,WAAc,OAAOmgM,EAA2Bj2M,KAAMiD,KAqB3U,SAASm+M,IAGP,OAFA9J,EAAgBt3M,KAAMohN,GAEfnK,EAAO32M,MAAMN,KAAM8V,WA0B5B,OApDoBghM,EA6BPsK,GA7BoBrK,EA6BN,CAAC,CAC1B5vM,IAAK,wBACLpJ,MAAO,SAA+BwmF,GACpC,OAAO,EAAI48H,EAAyB,SAAG58H,EAAWvkF,KAAKgV,SAExD,CACD7N,IAAK,SACLpJ,MAAO,WACL,IAAIk6M,EAAcj4M,KAAKgV,MACnBmsH,EAAU82E,EAAY92E,QACtBy6E,EAAqB3D,EAAY2D,mBACjCrmM,EAAQ0iM,EAAY1iM,MACpBqpM,EAAmB3G,EAAY2G,iBAC/ByB,EAAezE,EAAmBz6E,GAEtC,OAAKk/E,EAIevL,EAAgB,QAAEpyM,cAAc,MAAO6S,EAAM,GAAGpR,OAAOy6M,EAAkB,SAAU,gBAAiByB,GAH/G,UA7C+DtK,EAAkBe,EAAYj7M,UAAWk7M,GAAiBC,GAAajB,EAAkBe,EAAaE,GAoD3KoK,EAlCuB,CAmC9BtM,EAAO99C,WAETxwJ,EAAiB,QAAI46M,EAvCI3tM,EAyCT2tM,EAzCcj6M,EAyCA,YAzCKpJ,EAyCQ,CACzCojI,QAASi0E,EAAoB,QAAEl7J,IAAIC,WACnCyhK,mBAAoBxG,EAAoB,QAAEtgM,KAAKqlC,WAC/C5kC,MAAO6/L,EAAoB,QAAEtgM,KAAKqlC,WAClCykK,iBAAkBxJ,EAAoB,QAAE1hM,OAAOymC,YA7CDhzC,KAAOsM,EAAO7X,OAAOoC,eAAeyV,EAAKtM,EAAK,CAAEpJ,MAAOA,EAAOH,YAAY,EAAMD,cAAc,EAAMmqC,UAAU,IAAkBr0B,EAAItM,GAAOpJ,G,6BCvC3LnC,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAiB,aAAI,EAErB,IAAIsuM,EAYJ,SAAiCrhM,GAAO,GAAIA,GAAOA,EAAIzM,WAAc,OAAOyM,EAAO,GAAY,OAARA,GAAiC,WAAjB22F,EAAQ32F,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI5E,EAAQkmM,IAA4B,GAAIlmM,GAASA,EAAM83B,IAAIlzB,GAAQ,OAAO5E,EAAMhR,IAAI4V,GAAQ,IAAIuhM,EAAS,GAAQC,EAAwBr5M,OAAOoC,gBAAkBpC,OAAO8lK,yBAA0B,IAAK,IAAIv6J,KAAOsM,EAAO,GAAI7X,OAAOC,UAAUC,eAAeC,KAAK0X,EAAKtM,GAAM,CAAE,IAAI+tM,EAAOD,EAAwBr5M,OAAO8lK,yBAAyBjuJ,EAAKtM,GAAO,KAAU+tM,IAASA,EAAKr3M,KAAOq3M,EAAKp3M,KAAQlC,OAAOoC,eAAeg3M,EAAQ7tM,EAAK+tM,GAAgBF,EAAO7tM,GAAOsM,EAAItM,GAAY6tM,EAAgB,QAAIvhM,EAAS5E,GAASA,EAAM/Q,IAAI2V,EAAKuhM,GAAW,OAAOA,EAZxtBG,CAAwB,EAAQ,IAEzCC,EAAaC,EAAuB,EAAQ,IAE5CgM,EAAQhM,EAAuB,EAAQ,MAEvC8L,EAAkB9L,EAAuB,EAAQ,MAErD,SAASA,EAAuB5hM,GAAO,OAAOA,GAAOA,EAAIzM,WAAayM,EAAM,CAAE,QAAWA,GAEzF,SAASshM,IAA6B,GAAuB,mBAAZ3kD,QAAwB,OAAO,KAAM,IAAIvhJ,EAAQ,IAAIuhJ,QAA6F,OAAlF2kD,EAA2B,WAAsC,OAAOlmM,GAAiBA,EAI1M,SAASu7F,EAAQ32F,GAAmV,OAAtO22F,EAArD,mBAAXtjG,QAAoD,iBAApBA,OAAOujG,SAAmC,SAAiB52F,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX3M,QAAyB2M,EAAIwzB,cAAgBngC,QAAU2M,IAAQ3M,OAAOjL,UAAY,gBAAkB4X,IAAyBA,GAEnX,SAASs0B,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAEhT,SAAS2/L,EAAQnuM,EAAQouM,GAAkB,IAAIlwM,EAAO5J,OAAO4J,KAAK8B,GAAS,GAAI1L,OAAO8iD,sBAAuB,CAAE,IAAIya,EAAUv9D,OAAO8iD,sBAAsBp3C,GAAaouM,IAAgBv8I,EAAUA,EAAQrjC,QAAO,SAAU6/K,GAAO,OAAO/5M,OAAO8lK,yBAAyBp6J,EAAQquM,GAAK/3M,eAAgB4H,EAAKnI,KAAKiD,MAAMkF,EAAM2zD,GAAY,OAAO3zD,EAI9U,SAAS8xM,EAAgBx9F,EAAUg9F,GAAe,KAAMh9F,aAAoBg9F,GAAgB,MAAM,IAAI14G,UAAU,qCAEhH,SAAS23G,EAAkB/xK,EAAQhvB,GAAS,IAAK,IAAIzV,EAAI,EAAGA,EAAIyV,EAAMxV,OAAQD,IAAK,CAAE,IAAIy2M,EAAahhM,EAAMzV,GAAIy2M,EAAWp4M,WAAao4M,EAAWp4M,aAAc,EAAOo4M,EAAWr4M,cAAe,EAAU,UAAWq4M,IAAYA,EAAWluK,UAAW,GAAMlsC,OAAOoC,eAAegmC,EAAQgyK,EAAW7uM,IAAK6uM,IAM7S,SAASC,EAA2Bx8H,EAAM19E,GAAQ,OAAIA,GAA2B,WAAlBquG,EAAQruG,IAAsC,mBAATA,EAA8Cm6M,EAAuBz8H,GAAtC19E,EAEnI,SAASm6M,EAAuBz8H,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI08H,eAAe,6DAAgE,OAAO18H,EAE/J,SAAS28H,IAA8B,GAAuB,oBAAZC,UAA4BA,QAAQ9W,UAAW,OAAO,EAAO,GAAI8W,QAAQ9W,UAAU+W,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3El/L,KAAKxb,UAAU4T,SAAS1T,KAAKs6M,QAAQ9W,UAAUloL,KAAM,IAAI,iBAAyB,EAAQ,MAAOpZ,GAAK,OAAO,GAE1T,SAASu4M,EAAgB5vM,GAAwJ,OAAnJ4vM,EAAkB56M,OAAO8L,eAAiB9L,OAAOs+J,eAAiB,SAAyBtzJ,GAAK,OAAOA,EAAEe,WAAa/L,OAAOs+J,eAAetzJ,KAA8BA,GAIxM,SAASa,EAAgBb,EAAGlF,GAA+G,OAA1G+F,EAAkB7L,OAAO8L,gBAAkB,SAAyBd,EAAGlF,GAAsB,OAAjBkF,EAAEe,UAAYjG,EAAUkF,IAA6BA,EAAGlF,GAErK,SAASq5F,EAAgBtnF,EAAKtM,EAAKpJ,GAAiK,OAApJoJ,KAAOsM,EAAO7X,OAAOoC,eAAeyV,EAAKtM,EAAK,CAAEpJ,MAAOA,EAAOH,YAAY,EAAMD,cAAc,EAAMmqC,UAAU,IAAkBr0B,EAAItM,GAAOpJ,EAAgB0V,EAE3M,IAAI6tM,EAAyB,SAAU3K,IANvC,SAAmB3kB,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7zF,UAAU,sDAAyD4zF,EAASn2L,UAAYD,OAAOsL,OAAO+qL,GAAcA,EAAWp2L,UAAW,CAAEorC,YAAa,CAAElpC,MAAOi0L,EAAUlqJ,UAAU,EAAMnqC,cAAc,KAAes0L,GAAYxqL,EAAgBuqL,EAAUC,GAOjX2kB,CAAU0K,EAAW3K,GAErB,IAnBoBE,EAFAC,EAAaC,EAAYC,EAqBzCC,GAnBgBJ,EAmBMyK,EAnBY,WAAc,IAAsCr+M,EAAlCi0M,EAAQV,EAAgBK,GAAkB,GAAIT,IAA6B,CAAE,IAAIe,EAAYX,EAAgBx2M,MAAMinC,YAAahkC,EAASozM,QAAQ9W,UAAU2X,EAAOphM,UAAWqhM,QAAqBl0M,EAASi0M,EAAM52M,MAAMN,KAAM8V,WAAc,OAAOmgM,EAA2Bj2M,KAAMiD,KAqB3U,SAASq+M,IACP,IAAIpxD,EAEJonD,EAAgBt3M,KAAMshN,GAEtB,IAAK,IAAIzrM,EAAOC,UAAUtW,OAAQ2U,EAAO,IAAI9F,MAAMwH,GAAOjC,EAAO,EAAGA,EAAOiC,EAAMjC,IAC/EO,EAAKP,GAAQkC,UAAUlC,GASzB,OAJAmnF,EAAgBm7G,EAFhBhmD,EAAQ+mD,EAAOl7M,KAAKuE,MAAM22M,EAAQ,CAACj3M,MAAMmE,OAAOgQ,KAED,iCAAiC,SAAU4pM,GACxF7tD,EAAMl7I,MAAM8pM,wBAA4C,OAApBf,EAA2B,KAAOA,EAAgBx5M,SAGjF2rJ,EA6DT,OAnGoB4mD,EAyCPwK,GAzCoBvK,EAyCT,CAAC,CACvB5vM,IAAK,wBACLpJ,MAAO,SAA+BwmF,GACpC,OAAO,EAAI48H,EAAyB,SAAG58H,EAAWvkF,KAAKgV,MAAO,CAAC,gBAEhE,CACD7N,IAAK,SACLpJ,MAAO,WACL,IAAIk9M,EAASj7M,KAETi4M,EAAcj4M,KAAKgV,MACnBq8D,EAAQ4mI,EAAY5mI,MACpBurI,EAAY3E,EAAY2E,UACxBJ,EAAavE,EAAYuE,WACzBC,EAAiBxE,EAAYwE,eAC7B/E,EAAeO,EAAYP,aAC3BiF,EAAuB1E,EAAY0E,qBACnCoC,EAAY9G,EAAY8G,UACxBxpM,EAAQ0iM,EAAY1iM,MACpB8lE,EAAY48H,EAAY58H,UACxBkmI,EAAiC,OAAjB7J,EAAwBr8H,EAAY,GAAGl3E,OAAOk3E,EAAW,YAAYl3E,OAAOuzM,EAAc,KAC1G8J,EAA2C,mBAAd5E,EACjC,OAAoB9H,EAAgB,QAAEpyM,cAAc,KAAMqlC,EAAS,CACjEqtC,KAAM,WACL7/D,EAAM,GAAGpR,OAAOo9M,EAAe,cAAe,cAAelwI,EAAMztE,KAAI,SAAUW,EAAMozM,GACxF,IAAI8J,EAAwB,IAAd9J,EACVvwF,EAAgBuwF,IAAcgF,EAC9B+E,EAAU,GAAGv9M,OAAOo9M,EAAe,SAASp9M,OAAOwzM,GACnDgK,EAAeH,EAAsB5E,EAAU,CACjDlF,aAAcA,EACdC,UAAWA,IACRiF,EAEDgF,EAhFZ,SAAuB59K,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAyB,MAAhBtpB,UAAUvW,GAAauW,UAAUvW,GAAK,GAAQA,EAAI,EAAKk2M,EAAQ75M,OAAOwjC,IAAS,GAAM35B,SAAQ,SAAU0B,GAAO4zF,EAAgB/2D,EAAQ78B,EAAKi4B,EAAOj4B,OAAsBvL,OAAOi6M,0BAA6Bj6M,OAAOk6M,iBAAiB9xK,EAAQpoC,OAAOi6M,0BAA0Bz2K,IAAmBq2K,EAAQ75M,OAAOwjC,IAAS35B,SAAQ,SAAU0B,GAAOvL,OAAOoC,eAAegmC,EAAQ78B,EAAKvL,OAAO8lK,yBAAyBtiI,EAAQj4B,OAAe,OAAO68B,EAgFlf4xK,CAAc,CAC/B10M,GAAI69M,EAAUrH,EAAcC,GAC5B,gBAAiBvwF,GAChB7xG,EAAMmsM,EAAS,OAAQD,GAAW,YAAar6F,GAAiB,mBAAoB,GAAIu6F,GAS3F,OAPIv6F,IACFw6F,EAAa3sM,IAAMgmM,EAAO4G,+BAMR/M,EAAgB,QAAEpyM,cAAc2+M,EAAe,QAAGt5K,EAAS,GAAI65K,EAAc,CAC/FlK,aAAcA,EACdtwF,cAAeA,EACfuwF,UAAWA,EACXpzM,KAAMA,EACNi4M,WAAYA,EACZC,eAAgBA,cA5FoD1G,EAAkBe,EAAYj7M,UAAWk7M,GAAiBC,GAAajB,EAAkBe,EAAaE,GAmG3KsK,EAjFoB,CAkF3BxM,EAAO99C,WAETxwJ,EAAiB,QAAI86M,EAErBvmH,EAAgBumH,EAAW,YAAa,CACtCjwI,MAAO+jI,EAAoB,QAAE73L,MAAM48B,WACnCyiK,UAAWxH,EAAoB,QAAEvsK,UAAU,CAACusK,EAAoB,QAAE9tM,OAAQ8tM,EAAoB,QAAEtgM,OAChG0nM,WAAYpH,EAAoB,QAAEtgM,KAAKqlC,WACvCsiK,eAAgBrH,EAAoB,QAAE9tM,OAAO6yC,WAC7Cu9J,aAActC,EAAoB,QAAEl5L,OACpCygM,qBAAsBvH,EAAoB,QAAEl5L,OAC5C4iM,wBAAyB1J,EAAoB,QAAEtgM,KAAKqlC,WACpD4kK,UAAW3J,EAAoB,QAAEtgM,KAAKqlC,WACtC5kC,MAAO6/L,EAAoB,QAAEtgM,KAAKqlC,WAClCkhC,UAAW+5H,EAAoB,QAAE1hM,OAAOymC,aAG1C4gD,EAAgBumH,EAAW,eAAgB,CACzC5J,aAAc,Q,6BCrJhB97M,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAiB,aAAI,EAErB,IAAIsuM,EAUJ,SAAiCrhM,GAAO,GAAIA,GAAOA,EAAIzM,WAAc,OAAOyM,EAAO,GAAY,OAARA,GAAiC,WAAjB22F,EAAQ32F,IAAoC,mBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI5E,EAAQkmM,IAA4B,GAAIlmM,GAASA,EAAM83B,IAAIlzB,GAAQ,OAAO5E,EAAMhR,IAAI4V,GAAQ,IAAIuhM,EAAS,GAAQC,EAAwBr5M,OAAOoC,gBAAkBpC,OAAO8lK,yBAA0B,IAAK,IAAIv6J,KAAOsM,EAAO,GAAI7X,OAAOC,UAAUC,eAAeC,KAAK0X,EAAKtM,GAAM,CAAE,IAAI+tM,EAAOD,EAAwBr5M,OAAO8lK,yBAAyBjuJ,EAAKtM,GAAO,KAAU+tM,IAASA,EAAKr3M,KAAOq3M,EAAKp3M,KAAQlC,OAAOoC,eAAeg3M,EAAQ7tM,EAAK+tM,GAAgBF,EAAO7tM,GAAOsM,EAAItM,GAAY6tM,EAAgB,QAAIvhM,EAAS5E,GAASA,EAAM/Q,IAAI2V,EAAKuhM,GAAW,OAAOA,EAVxtBG,CAAwB,EAAQ,IAEzCC,EAAaC,EAAuB,EAAQ,IAE5C8L,EAAkB9L,EAAuB,EAAQ,MAErD,SAASA,EAAuB5hM,GAAO,OAAOA,GAAOA,EAAIzM,WAAayM,EAAM,CAAE,QAAWA,GAEzF,SAASshM,IAA6B,GAAuB,mBAAZ3kD,QAAwB,OAAO,KAAM,IAAIvhJ,EAAQ,IAAIuhJ,QAA6F,OAAlF2kD,EAA2B,WAAsC,OAAOlmM,GAAiBA,EAI1M,SAASu7F,EAAQ32F,GAAmV,OAAtO22F,EAArD,mBAAXtjG,QAAoD,iBAApBA,OAAOujG,SAAmC,SAAiB52F,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX3M,QAAyB2M,EAAIwzB,cAAgBngC,QAAU2M,IAAQ3M,OAAOjL,UAAY,gBAAkB4X,IAAyBA,GAEnX,SAASs0B,IAA2Q,OAA9PA,EAAWnsC,OAAOwmC,QAAU,SAAU4B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAStpB,UAAUvW,GAAI,IAAK,IAAI4H,KAAOi4B,EAAcxjC,OAAOC,UAAUC,eAAeC,KAAKqjC,EAAQj4B,KAAQ68B,EAAO78B,GAAOi4B,EAAOj4B,IAAY,OAAO68B,IAA2B1jC,MAAMN,KAAM8V,WAEhT,SAAS2/L,EAAQnuM,EAAQouM,GAAkB,IAAIlwM,EAAO5J,OAAO4J,KAAK8B,GAAS,GAAI1L,OAAO8iD,sBAAuB,CAAE,IAAIya,EAAUv9D,OAAO8iD,sBAAsBp3C,GAAaouM,IAAgBv8I,EAAUA,EAAQrjC,QAAO,SAAU6/K,GAAO,OAAO/5M,OAAO8lK,yBAAyBp6J,EAAQquM,GAAK/3M,eAAgB4H,EAAKnI,KAAKiD,MAAMkF,EAAM2zD,GAAY,OAAO3zD,EAI9U,SAASs8M,EAAyB1iL,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAAkEj4B,EAAK5H,EAAnEykC,EAEzF,SAAuC5E,EAAQqJ,GAAY,GAAc,MAAVrJ,EAAgB,MAAO,GAAI,IAA2Dj4B,EAAK5H,EAA5DykC,EAAS,GAAQ0E,EAAa9sC,OAAO4J,KAAK45B,GAAqB,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IAAO4H,EAAMuhC,EAAWnpC,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,IAAa68B,EAAO78B,GAAOi4B,EAAOj4B,IAAQ,OAAO68B,EAFxM2E,CAA8BvJ,EAAQqJ,GAAuB,GAAI7sC,OAAO8iD,sBAAuB,CAAE,IAAIC,EAAmB/iD,OAAO8iD,sBAAsBtf,GAAS,IAAK7/B,EAAI,EAAGA,EAAIo/C,EAAiBn/C,OAAQD,IAAO4H,EAAMw3C,EAAiBp/C,GAAQkpC,EAASrrC,QAAQ+J,IAAQ,GAAkBvL,OAAOC,UAAU+iD,qBAAqB7iD,KAAKqjC,EAAQj4B,KAAgB68B,EAAO78B,GAAOi4B,EAAOj4B,IAAU,OAAO68B,EAIne,SAASszK,EAAgBx9F,EAAUg9F,GAAe,KAAMh9F,aAAoBg9F,GAAgB,MAAM,IAAI14G,UAAU,qCAEhH,SAAS23G,EAAkB/xK,EAAQhvB,GAAS,IAAK,IAAIzV,EAAI,EAAGA,EAAIyV,EAAMxV,OAAQD,IAAK,CAAE,IAAIy2M,EAAahhM,EAAMzV,GAAIy2M,EAAWp4M,WAAao4M,EAAWp4M,aAAc,EAAOo4M,EAAWr4M,cAAe,EAAU,UAAWq4M,IAAYA,EAAWluK,UAAW,GAAMlsC,OAAOoC,eAAegmC,EAAQgyK,EAAW7uM,IAAK6uM,IAM7S,SAASC,EAA2Bx8H,EAAM19E,GAAQ,OAAIA,GAA2B,WAAlBquG,EAAQruG,IAAsC,mBAATA,EAA8Cm6M,EAAuBz8H,GAAtC19E,EAEnI,SAASm6M,EAAuBz8H,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI08H,eAAe,6DAAgE,OAAO18H,EAE/J,SAAS28H,IAA8B,GAAuB,oBAAZC,UAA4BA,QAAQ9W,UAAW,OAAO,EAAO,GAAI8W,QAAQ9W,UAAU+W,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAiF,OAA3El/L,KAAKxb,UAAU4T,SAAS1T,KAAKs6M,QAAQ9W,UAAUloL,KAAM,IAAI,iBAAyB,EAAQ,MAAOpZ,GAAK,OAAO,GAE1T,SAASu4M,EAAgB5vM,GAAwJ,OAAnJ4vM,EAAkB56M,OAAO8L,eAAiB9L,OAAOs+J,eAAiB,SAAyBtzJ,GAAK,OAAOA,EAAEe,WAAa/L,OAAOs+J,eAAetzJ,KAA8BA,GAIxM,SAASa,EAAgBb,EAAGlF,GAA+G,OAA1G+F,EAAkB7L,OAAO8L,gBAAkB,SAAyBd,EAAGlF,GAAsB,OAAjBkF,EAAEe,UAAYjG,EAAUkF,IAA6BA,EAAGlF,GAErK,SAASq5F,EAAgBtnF,EAAKtM,EAAKpJ,GAAiK,OAApJoJ,KAAOsM,EAAO7X,OAAOoC,eAAeyV,EAAKtM,EAAK,CAAEpJ,MAAOA,EAAOH,YAAY,EAAMD,cAAc,EAAMmqC,UAAU,IAAkBr0B,EAAItM,GAAOpJ,EAAgB0V,EAE3M,IAAIsuM,EAAoB,SAAUpL,IANlC,SAAmB3kB,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAI7zF,UAAU,sDAAyD4zF,EAASn2L,UAAYD,OAAOsL,OAAO+qL,GAAcA,EAAWp2L,UAAW,CAAEorC,YAAa,CAAElpC,MAAOi0L,EAAUlqJ,UAAU,EAAMnqC,cAAc,KAAes0L,GAAYxqL,EAAgBuqL,EAAUC,GAOjX2kB,CAAUmL,EAAMpL,GAEhB,IAnBoBE,EAFAC,EAAaC,EAAYC,EAqBzCC,GAnBgBJ,EAmBMkL,EAnBY,WAAc,IAAsC9+M,EAAlCi0M,EAAQV,EAAgBK,GAAkB,GAAIT,IAA6B,CAAE,IAAIe,EAAYX,EAAgBx2M,MAAMinC,YAAahkC,EAASozM,QAAQ9W,UAAU2X,EAAOphM,UAAWqhM,QAAqBl0M,EAASi0M,EAAM52M,MAAMN,KAAM8V,WAAc,OAAOmgM,EAA2Bj2M,KAAMiD,KAqB3U,SAAS8+M,IACP,IAAI7xD,EAEJonD,EAAgBt3M,KAAM+hN,GAEtB,IAAK,IAAIlsM,EAAOC,UAAUtW,OAAQ2U,EAAO,IAAI9F,MAAMwH,GAAOjC,EAAO,EAAGA,EAAOiC,EAAMjC,IAC/EO,EAAKP,GAAQkC,UAAUlC,GAuDzB,OAlDAmnF,EAAgBm7G,EAFhBhmD,EAAQ+mD,EAAOl7M,KAAKuE,MAAM22M,EAAQ,CAACj3M,MAAMmE,OAAOgQ,KAED,sBAAsB,SAAU5P,GAChE,OAATA,IACF2rJ,EAAM3rJ,KAAOA,MAIjBw2F,EAAgBm7G,EAAuBhmD,GAAQ,gBAAgB,SAAUxrH,GACvE,IAAIuzK,EAAc/nD,EAAMl7I,MACpB0iM,EAAeO,EAAYP,aAC3BC,EAAYM,EAAYN,UAE5BznD,EAAMl7I,MAAM0kM,aAAah1K,EAAO,CAC9BgzK,aAAcA,EACdC,UAAWA,OAIf58G,EAAgBm7G,EAAuBhmD,GAAQ,gBAAgB,SAAUxrH,GACvE,IAAI2zK,EAAenoD,EAAMl7I,MACrB0iM,EAAeW,EAAaX,aAC5BC,EAAYU,EAAaV,UAE7BznD,EAAMl7I,MAAM4kM,aAAal1K,EAAO,CAC9BgzK,aAAcA,EACdC,UAAWA,OAIf58G,EAAgBm7G,EAAuBhmD,GAAQ,eAAe,SAAUxrH,GACtE,IAAIq0K,EAAe7oD,EAAMl7I,MACrB0iM,EAAeqB,EAAarB,aAC5BC,EAAYoB,EAAapB,UAE7BznD,EAAMl7I,MAAM8iH,YAAYpzF,EAAO,CAC7BgzK,aAAcA,EACdC,UAAWA,OAIf58G,EAAgBm7G,EAAuBhmD,GAAQ,WAAW,SAAUxrH,GAClE,IAAIq2K,EAAe7qD,EAAMl7I,MACrB0iM,EAAeqD,EAAarD,aAC5BC,EAAYoD,EAAapD,UAE7BznD,EAAMl7I,MAAMqrE,QAAQ37C,EAAO,CACzBgzK,aAAcA,EACdC,UAAWA,OAIRznD,EA+CT,OAnIoB4mD,EAuFPiL,GAvFoBhL,EAuFd,CAAC,CAClB5vM,IAAK,wBACLpJ,MAAO,SAA+BwmF,GACpC,OAAO,EAAI48H,EAAyB,SAAG58H,EAAWvkF,KAAKgV,MAAO,CAAC,qBAEhE,CACD7N,IAAK,SACLpJ,MAAO,WACL,IAAIo9M,EAAen7M,KAAKgV,MACpBoyG,EAAgB+zF,EAAa/zF,cAC7B7iH,EAAO42M,EAAa52M,KACpBi4M,EAAarB,EAAaqB,WAC1BC,EAAiBtB,EAAasB,eAC9Bj0K,EAAYs5K,EAAyB3G,EAAc,CAAC,gBAAiB,OAAQ,aAAc,mBAqB/F,cAnBO3yK,EAAUkvK,oBACVlvK,EAAUmvK,UAEqB,mBAA3BnvK,EAAUkxK,eACnBlxK,EAAUkxK,aAAe15M,KAAK05M,cAGM,mBAA3BlxK,EAAUoxK,eACnBpxK,EAAUoxK,aAAe55M,KAAK45M,cAGK,mBAA1BpxK,EAAUsvF,cACnBtvF,EAAUsvF,YAAc93H,KAAK83H,aAGE,mBAAtBtvF,EAAU63C,UACnB73C,EAAU63C,QAAUrgF,KAAKqgF,SAGPy0H,EAAgB,QAAEpyM,cAAc,KAAMqlC,EAAS,CACjEqtC,KAAM,UACL5sC,EAAW,CACZvzB,IAAKjV,KAAKgiN,qBACRxF,EAAWj4M,EAvIrB,SAAuBy/B,GAAU,IAAK,IAAIzkC,EAAI,EAAGA,EAAIuW,UAAUtW,OAAQD,IAAK,CAAE,IAAI6/B,EAAyB,MAAhBtpB,UAAUvW,GAAauW,UAAUvW,GAAK,GAAQA,EAAI,EAAKk2M,EAAQ75M,OAAOwjC,IAAS,GAAM35B,SAAQ,SAAU0B,GAAO4zF,EAAgB/2D,EAAQ78B,EAAKi4B,EAAOj4B,OAAsBvL,OAAOi6M,0BAA6Bj6M,OAAOk6M,iBAAiB9xK,EAAQpoC,OAAOi6M,0BAA0Bz2K,IAAmBq2K,EAAQ75M,OAAOwjC,IAAS35B,SAAQ,SAAU0B,GAAOvL,OAAOoC,eAAegmC,EAAQ78B,EAAKvL,OAAO8lK,yBAAyBtiI,EAAQj4B,OAAe,OAAO68B,EAuIlf4xK,CAAc,CACjCxuF,cAAeA,GACdq1F,UA/HqE1G,EAAkBe,EAAYj7M,UAAWk7M,GAAiBC,GAAajB,EAAkBe,EAAaE,GAmI3K+K,EAjHe,CAkHtBjN,EAAO99C,WAETxwJ,EAAiB,QAAIu7M,EAErBhnH,EAAgBgnH,EAAM,YAAa,CACjCrK,aAActC,EAAoB,QAAEl5L,OACpCkrG,cAAeguF,EAAoB,QAAEt9J,KAAKqC,WAC1Cw9J,UAAWvC,EAAoB,QAAEl5L,OAAOi+B,WACxC51C,KAAM6wM,EAAoB,QAAEl7J,IAAIC,WAChCqiK,WAAYpH,EAAoB,QAAEtgM,KAAKqlC,WACvCsiK,eAAgBrH,EAAoB,QAAE9tM,OAAO6yC,WAC7Cu/J,aAActE,EAAoB,QAAEtgM,KACpC8kM,aAAcxE,EAAoB,QAAEtgM,KACpCgjH,YAAas9E,EAAoB,QAAEtgM,KACnCurE,QAAS+0H,EAAoB,QAAEtgM,Q,6BCnLjClZ,OAAOoC,eAAewI,EAAS,aAAc,CAC3CzI,OAAO,IAETyI,EAAQq2M,uBAAyBr2M,EAAQu2M,kBAAe,EAiBxDv2M,EAAQu2M,aAhBW,CACjB70M,UAAW,+BACX03M,cAAe,qCACf/oM,MAAO,2BACPgpM,UAAW,iCACXC,aAAc,oCACdtI,qBAAsB,2CACtByK,yBAA0B,iDAC1BC,gBAAiB,sCACjB/hE,WAAY,gCACZgiE,gBAAiB,uCACjBC,sBAAuB,6CACvBjC,iBAAkB,uCAClBC,sBAAuB,8CACvBC,aAAc,oCAyChB75M,EAAQq2M,uBArCqB,SAAgCtnM,GAC3D,IAAItS,EAAS,GAEb,IAAK,IAAIkE,KAAOoO,EACd,OAAQpO,GACN,IAAK,uBACHlE,EAAuB,eAAIsS,EAAMpO,GACjC,MAEF,IAAK,2BACHlE,EAA2B,mBAAIsS,EAAMpO,GACrC,MAEF,IAAK,aACHlE,EAAa,KAAIsS,EAAMpO,GACvB,MAEF,IAAK,kBACHlE,EAAkB,UAAIsS,EAAMpO,GAC5B,MAEF,IAAK,wBACHlE,EAAwB,gBAAIsS,EAAMpO,GAClC,MAEF,IAAK,kBACHlE,EAAkB,UAAIsS,EAAMpO,GAC5B,MAEF,QACElE,EAAOkE,GAAOoO,EAAMpO,GAI1B,OAAOlE,I,kDC3CTM,EAAOiD,QAfP,SAAuC44B,EAAQqJ,GAC7C,GAAc,MAAVrJ,EAAgB,MAAO,GAC3B,IAEIj4B,EAAK5H,EAFLykC,EAAS,GACT0E,EAAa9sC,OAAO4J,KAAK45B,GAG7B,IAAK7/B,EAAI,EAAGA,EAAImpC,EAAWlpC,OAAQD,IACjC4H,EAAMuhC,EAAWnpC,GACbkpC,EAASrrC,QAAQ+J,IAAQ,IAC7B68B,EAAO78B,GAAOi4B,EAAOj4B,IAGvB,OAAO68B,GAITzgC,EAAOiD,QAAiB,QAAIjD,EAAOiD,QAASjD,EAAOiD,QAAQQ,YAAa,G,kDCfxE,SAAS04F,EAASr7F,EAAGC,EAAGiL,GAClBlL,aAAa4c,SAAQ5c,EAAIg+M,EAAWh+M,EAAGkL,IACvCjL,aAAa2c,SAAQ3c,EAAI+9M,EAAW/9M,EAAGiL,IAE3C,IAAI1I,EAAIo2C,EAAM54C,EAAGC,EAAGiL,GAEpB,OAAO1I,GAAK,CACVq2C,MAAOr2C,EAAE,GACTw2C,IAAKx2C,EAAE,GACP65F,IAAKnxF,EAAIjK,MAAM,EAAGuB,EAAE,IACpBs5C,KAAM5wC,EAAIjK,MAAMuB,EAAE,GAAKxC,EAAE7E,OAAQqH,EAAE,IACnC85F,KAAMpxF,EAAIjK,MAAMuB,EAAE,GAAKvC,EAAE9E,SAI7B,SAAS6iN,EAAWC,EAAK/yM,GACvB,IAAI9I,EAAI8I,EAAIwD,MAAMuvM,GAClB,OAAO77M,EAAIA,EAAE,GAAK,KAIpB,SAASw2C,EAAM54C,EAAGC,EAAGiL,GACnB,IAAIgzM,EAAMC,EAAKn6K,EAAMkB,EAAOtmC,EACxB2hL,EAAKr1K,EAAInS,QAAQiH,GACjB0+C,EAAKxzC,EAAInS,QAAQkH,EAAGsgL,EAAK,GACzBrlL,EAAIqlL,EAER,GAAIA,GAAM,GAAK7hI,EAAK,EAAG,CAIrB,IAHAw/J,EAAO,GACPl6K,EAAO94B,EAAI/P,OAEJD,GAAK,IAAM0D,GACZ1D,GAAKqlL,GACP29B,EAAKllN,KAAKkC,GACVqlL,EAAKr1K,EAAInS,QAAQiH,EAAG9E,EAAI,IACA,GAAfgjN,EAAK/iN,OACdyD,EAAS,CAAEs/M,EAAKx+M,MAAOg/C,KAEvBy/J,EAAMD,EAAKx+M,OACDskC,IACRA,EAAOm6K,EACPj5K,EAAQwZ,GAGVA,EAAKxzC,EAAInS,QAAQkH,EAAG/E,EAAI,IAG1BA,EAAIqlL,EAAK7hI,GAAM6hI,GAAM,EAAIA,EAAK7hI,EAG5Bw/J,EAAK/iN,SACPyD,EAAS,CAAEolC,EAAMkB,IAIrB,OAAOtmC,EAxDTM,EAAOiD,QAAUk5F,EAqBjBA,EAASziD,MAAQA,G,gBClBjB,IAAIyiD,EAAW,EAAQ,KAgBvB,SAASC,EAAmBjsF,EAAQ+uM,EAAYpjN,GAC9C,IAAItD,EAAO2X,EACX,OAaF,SAA0B3X,EAAM0mN,GAC9B,IAAIC,EAAc,GAEdC,EAA6B,iBAAfF,EAA0B,IAAIxhM,OAAO,OAASwhM,EAAa,QAAUA,EACvF,EAAG,CACD,IAAIG,EAAcD,EAAKluM,KAAK1Y,GAC5B,IAAK6mN,EACH,OAAOF,EAET,QAAuBpjN,IAAnBsjN,EAAY,GACd,MAAM,IAAIzhN,MAAM,6EAA+EshN,GAEjG,IAAI1lN,EAAK6lN,EAAY,GACjBjiB,EAAaiiB,EAAY1kL,MACzBtK,EAAU8rE,EAAS,IAAK,IAAK3jG,EAAKoO,UAAUw2L,IAEhD,IAAK/sK,GAAWA,EAAQspB,QAAU0lK,EAAY,GAAGpjN,OAAS,EACxD,MAAM,IAAIqjN,YAAY9lN,EAAK,yCAA2ChB,EAAO,KAG/E2mN,EAAYrlN,KAAK,CAACu2B,QAASA,EAASqsE,mBAAoBljG,IACxDhB,EAAO63B,EAAQ+sE,WAEVgiH,EAAKn4M,KAAKzO,IAEjB,OAAO2mN,EAtCAI,CAAiBpvM,EAAQ+uM,GAAYpkJ,QAAO,SAAS3qD,EAAQD,GAClE,OAAOC,EAAO1J,QAAQyJ,EAAIwsF,mBAAqB,IAAMxsF,EAAImgB,QAAQusB,KAAO,IAgD5E,SAA2BzsC,EAAQusF,EAAoB5gG,EAAUtD,EAAM0mN,GAErE,OAAOpjN,EAASsgG,EAAmBjsF,EAAQ+uM,EAAYpjN,GAAW4gG,EAAoBlkG,GAlDPgnN,CAAiBtvM,EAAImgB,QAAQusB,KAAM1sC,EAAIwsF,mBAAoB5gG,EAAUtD,EAAM0mN,MACvJ/uM,GAbLnQ,EAAOiD,QAAUm5F,G,6BCRjB,SAASD,EAASr7F,EAAGC,EAAGiL,GAClBlL,aAAa4c,SAAQ5c,EAAIg+M,EAAWh+M,EAAGkL,IACvCjL,aAAa2c,SAAQ3c,EAAI+9M,EAAW/9M,EAAGiL,IAE3C,IAAI1I,EAAIo2C,EAAM54C,EAAGC,EAAGiL,GAEpB,OAAO1I,GAAK,CACVq2C,MAAOr2C,EAAE,GACTw2C,IAAKx2C,EAAE,GACP65F,IAAKnxF,EAAIjK,MAAM,EAAGuB,EAAE,IACpBs5C,KAAM5wC,EAAIjK,MAAMuB,EAAE,GAAKxC,EAAE7E,OAAQqH,EAAE,IACnC85F,KAAMpxF,EAAIjK,MAAMuB,EAAE,GAAKvC,EAAE9E,SAI7B,SAAS6iN,EAAWC,EAAK/yM,GACvB,IAAI9I,EAAI8I,EAAIwD,MAAMuvM,GAClB,OAAO77M,EAAIA,EAAE,GAAK,KAIpB,SAASw2C,EAAM54C,EAAGC,EAAGiL,GACnB,IAAIgzM,EAAMC,EAAKn6K,EAAMkB,EAAOtmC,EACxB2hL,EAAKr1K,EAAInS,QAAQiH,GACjB0+C,EAAKxzC,EAAInS,QAAQkH,EAAGsgL,EAAK,GACzBrlL,EAAIqlL,EAER,GAAIA,GAAM,GAAK7hI,EAAK,EAAG,CACrB,GAAG1+C,IAAIC,EACL,MAAO,CAACsgL,EAAI7hI,GAKd,IAHAw/J,EAAO,GACPl6K,EAAO94B,EAAI/P,OAEJD,GAAK,IAAM0D,GACZ1D,GAAKqlL,GACP29B,EAAKllN,KAAKkC,GACVqlL,EAAKr1K,EAAInS,QAAQiH,EAAG9E,EAAI,IACA,GAAfgjN,EAAK/iN,OACdyD,EAAS,CAAEs/M,EAAKx+M,MAAOg/C,KAEvBy/J,EAAMD,EAAKx+M,OACDskC,IACRA,EAAOm6K,EACPj5K,EAAQwZ,GAGVA,EAAKxzC,EAAInS,QAAQkH,EAAG/E,EAAI,IAG1BA,EAAIqlL,EAAK7hI,GAAM6hI,GAAM,EAAIA,EAAK7hI,EAG5Bw/J,EAAK/iN,SACPyD,EAAS,CAAEolC,EAAMkB,IAIrB,OAAOtmC,EA3DTM,EAAOiD,QAAUk5F,EAqBjBA,EAASziD,MAAQA,G,gBCtBjB,IAAI+lK,EAAK,EAAQ,KACjBA,EAAKnnN,UAAUonN,YAAc,WAC5B,aAKA,IAJA,IAAaC,EAAKC,EAAKC,EACnBC,EAAK,GAEL/rM,EAAItX,KAAKjC,MACLwB,EAAE,EAAEA,EAAE+X,EAAI9X,OAAOD,IACP,IAAd+X,EAAI/X,GAAGyE,MAAwB,IAAdsT,EAAI/X,GAAGyE,KAC1Bq/M,EAAKhmN,KAAK,CAACU,MAAoB,IAAduZ,EAAI/X,GAAGyE,KAASsT,EAAI/X,GAAG+4G,KAAKhhG,EAAI/X,GAAGxB,MAAMiG,KAAK,IAE1C,KAAdsT,EAAI/X,GAAGyE,KACdq/M,EAAKhmN,KAAK,CAACU,MAAMuZ,EAAI/X,GAAG+4G,KAAKt0G,KAAK,IAEb,IAAdsT,EAAI/X,GAAGyE,KACdq/M,EAAKA,EAAK7jN,OAAO,GAAG,CAACzB,MAAMuZ,EAAI/X,GAAG+4G,MAAmB,KAAbhhG,EAAI/X,GAAG+4G,KAAU,IAAI,IAAI+qG,EAAKA,EAAK7jN,OAAO,GAAGzB,OAAoB,KAAbuZ,EAAI/X,GAAG+4G,KAAU,IAAI,IAAIt0G,KAAK,GAErG,IAAdsT,EAAI/X,GAAGyE,KACdq/M,EAAKA,EAAK7jN,OAAO,GAAG,CAACzB,OAAiC,GAA1BslN,EAAKA,EAAK7jN,OAAO,GAAGwE,KAAQ,IAAI,IAAIq/M,EAAKA,EAAK7jN,OAAO,GAAGzB,OAAiC,GAA1BslN,EAAKA,EAAK7jN,OAAO,GAAGwE,KAAQ,IAAI,IAAIsT,EAAI/X,GAAG+4G,KAAKt0G,KAAK,GAE3H,KAAdsT,EAAI/X,GAAGyE,MACdk/M,EAAKG,EAAKt/M,MACVo/M,EAAKE,EAAKt/M,MACO,MAAduT,EAAI/X,GAAG+4G,MAA0B,MAAdhhG,EAAI/X,GAAG+4G,KAAW+qG,EAAKhmN,KAAK,CAACU,MAAM,QAAQolN,EAAKplN,MAAM,SAASuZ,EAAI/X,GAAG+4G,KAAK,QAAQ4qG,EAAKnlN,MAAM,SAASiG,KAAK,KAC7Hq/M,EAAKhmN,KAAK,CAACU,OAAkB,GAAXolN,EAAKn/M,KAAQ,IAAI,IAAIm/M,EAAKplN,OAAkB,GAAXolN,EAAKn/M,KAAQ,IAAI,IAAI,QAAQk/M,EAAKnlN,MAAM,SAASiG,KAAK,KAEzF,IAAdsT,EAAI/X,GAAGyE,MAAwB,IAAdsT,EAAI/X,GAAGyE,MAC/Bk/M,EAAKG,EAAKt/M,MACVo/M,EAAKE,EAAKt/M,MACVs/M,EAAKhmN,KAAK,CAACU,OAAkB,GAAXolN,EAAKn/M,KAAQ,IAAI,IAAIm/M,EAAKplN,OAAkB,GAAXolN,EAAKn/M,KAAQ,IAAI,IAAIsT,EAAI/X,GAAG+4G,MAAiB,GAAX4qG,EAAKl/M,KAAQ,IAAI,IAAIk/M,EAAKnlN,OAAkB,GAAXmlN,EAAKl/M,KAAQ,IAAI,IAAIA,KAAKsT,EAAI/X,GAAGyE,QAElI,KAAdsT,EAAI/X,GAAGyE,OACdk/M,EAAKG,EAAKt/M,MACVo/M,EAAKE,EAAKt/M,MACVq/M,EAAKC,EAAKt/M,MACVs/M,EAAKhmN,KAAK,CAACU,MAAMuZ,EAAI/X,GAAG+4G,KAAK,IAAI8qG,EAAKrlN,MAAM,IAAIolN,EAAKplN,MAAM,IAAImlN,EAAKnlN,MAAM,IAAIiG,KAAK,MAGrF,OAAOq/M,EAAK,GAAGtlN,OAEhBwF,EAAOiD,QAAQw8M,G,gBCxCf,IAAIA,EAAK,EAAQ,KACjBA,EAAKnnN,UAAUynN,YAAc,SAAUC,GACtC,cACAA,EAAYA,GAAa,IACbrgJ,GAAG5mD,KAAK4mD,GACpBqgJ,EAAY12M,EAAEyP,KAAKzP,EAMnB,IALA,IAAaq2M,EAAKC,EAAKC,EAAnB5nM,EAAM,GAGNlE,EAAItX,KAAKjC,MACT+5C,OAA6B,IAAhByrK,EAAYl8M,EACrB9H,EAAE,EAAEA,EAAE+X,EAAI9X,OAAOD,IACP,IAAd+X,EAAI/X,GAAGyE,KACTwX,EAAMne,KAAK,CAACU,MAAMuZ,EAAI/X,GAAGxB,MAAMiG,KAAK,IAEf,IAAdsT,EAAI/X,GAAGyE,KACdwX,EAAMne,KAAK,CAACU,MAAMwlN,EAAYjsM,EAAI/X,GAAGxB,OAAOiG,KAAK,IAE5B,IAAdsT,EAAI/X,GAAGyE,MAMO,IAAdsT,EAAI/X,GAAGyE,UALyB,IAA7BwX,EAAMA,EAAMhc,OAAO,GAAGwE,KAC/BwX,EAAMA,EAAMhc,OAAO,GAAGzB,MAAMV,KAAKia,EAAI/X,IAEjCic,EAAMA,EAAMhc,OAAO,GAAGzB,MAAMuZ,EAAI/X,GAAGxB,MAAMyd,EAAMA,EAAMhc,OAAO,GAAGzB,OAQ/C,IAAduZ,EAAI/X,GAAGyE,MACdk/M,EAAK1nM,EAAMzX,MACXo/M,EAAK3nM,EAAMzX,MACXyX,EAAMne,KAAK,CAAC2G,KAAK,EAAEjG,MAAMuZ,EAAI/X,GAAGxB,MAAMolN,EAAKplN,MAAMmlN,EAAKnlN,UAEjC,KAAduZ,EAAI/X,GAAGyE,MACdk/M,EAAK1nM,EAAMzX,WAEW,KADtBo/M,EAAK3nM,EAAMzX,OACIC,MACdm/M,EAAKplN,MAAMolN,EAAKh/M,OAAO++M,GACvBC,EAAKplN,MAAMV,KAAKia,EAAI/X,IACpBic,EAAMne,KAAK8lN,SAEgB,IAAZD,EAAKl/M,MACpBk/M,EAAK1xI,QAAQ2xI,GACbD,EAAK7lN,KAAKia,EAAI/X,IACdic,EAAMne,KAAK6lN,IAGX1nM,EAAMne,KAAK,CAAC2G,KAAK,EAAEjG,MAAMuZ,EAAI/X,GAAGxB,MAAMolN,EAAKplN,MAAMmlN,EAAKnlN,UAGlC,IAAduZ,EAAI/X,GAAGyE,MAAwB,IAAdsT,EAAI/X,GAAGyE,MAC/Bk/M,EAAK1nM,EAAMzX,WAEW,KADtBo/M,EAAK3nM,EAAMzX,OACIC,OACdm/M,EAAKA,EAAKh/M,OAAO++M,IACZ7lN,KAAKia,EAAI/X,IACdic,EAAMne,KAAK8lN,SAEgB,IAAZD,EAAKl/M,MACpBk/M,EAAK1xI,QAAQ2xI,GACbD,EAAK7lN,KAAKia,EAAI/X,IACdic,EAAMne,KAAK6lN,IAGX1nM,EAAMne,KAAK,CAAC2G,KAAK,EAAEjG,MAAMuZ,EAAI/X,GAAGxB,MAAMolN,EAAKplN,MAAMmlN,EAAKnlN,UAGlC,KAAduZ,EAAI/X,GAAGyE,WAES,KADvBk/M,EAAK1nM,EAAMzX,OACKC,OACfk/M,EAAK,CAACA,IAEPC,EAAK3nM,EAAMzX,MACXq/M,EAAK5nM,EAAMzX,MACXyX,EAAMne,KAAK,CAAC2G,KAAK,EAAEjG,MAAMuZ,EAAI/X,GAAGxB,MAAMqlN,EAAKrlN,MAAMolN,EAAKplN,MAAM,IAAIilN,EAAKE,OAEhD,KAAd5rM,EAAI/X,GAAGyE,OACX8zC,EACFt8B,EAAMne,KAAK,CAACU,MAAMwlN,EAAYjsM,EAAI/X,GAAGxB,OAAOiG,KAAK,IAE7CwX,EAAMne,KAAK,CAACia,EAAI/X,MAGvB,GAAIic,EAAMhc,OAAO,EAChB,MAAK,IAAKwjN,EAAKQ,UAAU,yBAE1B,OAAOhoM,EAAM,GAAGzd,MAAM,KAAiB,WAAW20B,WAAWlX,EAAM,GAAGzd,MAAM8jC,QAAQ,MAErFmhL,EAAKjiH,KAAK,SAASxxF,EAAI+R,EAAO7N,GAC7B,YAAoB,IAAT6N,EACHthB,KAAKyjN,IAAIl0M,GAAKm0M,YAAYJ,mBAEZ,IAAN7vM,OACY,IAAhB6N,EAAO9hB,OACVQ,KAAKyjN,IAAIl0M,EAAI+R,GAAQoiM,YAAYJ,cAEjCtjN,KAAKyjN,IAAIl0M,GAAKm0M,YAAYJ,YAAYhiM,GAGvCthB,KAAKyjN,IAAIl0M,EAAI+R,GAAQoiM,YAAYJ,YAAY7vM,IAEtDlQ,EAAOiD,QAAQw8M,G,gBCtGf,IAAIA,EAAO,EAAQ,KAEnBA,EAAKnnN,UAAU6nN,UAAY,WAC1B,aAIA,IAHA,IAAe14G,EAAM24G,EAAQC,EAAMljH,EAAKhrF,EAApCirF,EAAO,GACPnlF,EAAQ,CAAC,CAAEzd,MAAO,IAAKiG,KAAM,EAAG08F,IAAK,IACrCppF,EAAMtX,KAAKjC,MACNwB,EAAI,EAAGA,EAAI+X,EAAI9X,OAAQD,IAC/B,GAAoB,IAAhB+X,EAAI/X,GAAGyE,MAA8B,IAAhBsT,EAAI/X,GAAGyE,MAA8B,KAAhBsT,EAAI/X,GAAGyE,KAChC,IAAhBsT,EAAI/X,GAAGyE,OACVsT,EAAI/X,GAAGxB,MAAQ0hD,OAAOnoC,EAAI/X,GAAGxB,QAC9B4iG,EAAKtjG,KAAKia,EAAI/X,SAEV,GAAoB,IAAhB+X,EAAI/X,GAAGyE,KACfwX,EAAMne,KAAKia,EAAI/X,SAEX,GAAoB,IAAhB+X,EAAI/X,GAAGyE,KACf,KAAuC,KAA/B2/M,EAASnoM,EAAMzX,OAAOC,MAC7B28F,EAAKtjG,KAAKsmN,QAGP,GAAoB,KAAhBrsM,EAAI/X,GAAGyE,KAAa,CAC5B,KAAuC,KAA/B2/M,EAASnoM,EAAMzX,OAAOC,MAC7B28F,EAAKtjG,KAAKsmN,GAEXnoM,EAAMne,KAAKsmN,OAEP,CAEJjjH,GADAsK,EAAO1zF,EAAI/X,IACAmhG,IAEXkjH,GADAluM,EAAM8F,EAAMA,EAAMhc,OAAS,IAChBkhG,IACX,IAAImjH,EAAoB,YAAbnuM,EAAI3X,OAAqC,YAAditG,EAAKjtG,MAC3C,GAAI2iG,EAAMkjH,EAAMpoM,EAAMne,KAAK2tG,OACtB,CACJ,KAAO44G,GAAQljH,IAAQmjH,GAAQA,GAAQnjH,EAAMkjH,GAC5CD,EAASnoM,EAAMzX,MACf2R,EAAM8F,EAAMA,EAAMhc,OAAS,GAC3BmhG,EAAKtjG,KAAKsmN,GACVC,EAAOluM,EAAIgrF,IACXmjH,EAAqB,YAAd74G,EAAKjtG,OAAoC,YAAb2X,EAAI3X,MAExCyd,EAAMne,KAAK2tG,IAId,OAAO,IAAIg4G,EAAKriH,IAEjBp9F,EAAOiD,QAAUw8M,G,6BChDjB,IAAIA,EAAO,EAAQ,KACnB,SAASc,EAAKxsM,EAAKiD,GACjB,IAAK,IAAIhb,EAAI,EAAGA,EAAI+X,EAAI9X,OAAQD,IAC9B+X,EAAI/X,IAAMgb,EAEZ,OAAOjD,EAET,IAAI2F,EAAQ,CACV,MACA,MACA,MACA,KACA,IACA,IACA,IACA,IACA,IACA,OACA,OACA,OACA,IACA,IACA,IACA,MACA,OACA,QACA,KACA,IACA,OACA,IACA,IACA,IACA,IACA,IACA,OACA,QACA,MACA,IACA,IACA,IACA,IACA,OACA,QACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,QACA,IACA,KACA,OAEEq7F,EAAO,CACT,MACA,MACA,MACA,OACA,IACA,IACA,IACA,IACA,IACA,OACA,OACA,OACA,IACA,IACA,IACA,MACA,OACA,QACA,MACA,IACA,OACA,IACA,IACA,IACA,WACA,IACA,OACA,QACA,QACA,IACA,IACA,IACA,UACA,OACA,QACA,IACA,OACA,IACA,IACA,IACA,IACA,IACA,UACA,IACA,OACA,OAEEyrG,EAAM,CACRf,EAAKgB,KAAK7/I,IACV6+I,EAAKgB,KAAK9/I,IACV8+I,EAAKgB,KAAKvtJ,IACV,KACA,IACA,IACAusJ,EAAKgB,KAAK95M,EACV84M,EAAKgB,KAAKh4M,EACV,IAAIuqB,OACJysL,EAAKgB,KAAKC,KACVjB,EAAKgB,KAAKhgH,KACVg/G,EAAKgB,KAAKE,KACV,IACA,IACA,IACA5nM,KAAK0C,MACLgkM,EAAKgB,KAAKj/I,KACVi+I,EAAKgB,KAAKG,MACV7nM,KAAKunB,IACLvnB,KAAKG,IACLH,KAAK0nD,KACL,IACA,IACA,IACAg/I,EAAKgB,KAAKI,IACVpB,EAAKgB,KAAKK,KACVrB,EAAKgB,KAAKM,KACVtB,EAAKgB,KAAKO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","file":"main.337ce0e8.js","sourcesContent":[" \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\tif (null) script.crossOrigin = null;\n \t\tdocument.head.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\t}\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentHash = \"337ce0e8934ab68639dc\";\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParents = [];\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParentsTemp = [];\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) {\n \t\t\t\t\tme.children.push(request);\n \t\t\t\t}\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\" &&\n \t\t\t\tname !== \"t\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\tfn.t = function(value, mode) {\n \t\t\tif (mode & 1) value = fn(value);\n \t\t\treturn __webpack_require__.t(value, mode & ~1);\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_selfInvalidated: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n \t\t\tinvalidate: function() {\n \t\t\t\tthis._selfInvalidated = true;\n \t\t\t\tswitch (hotStatus) {\n \t\t\t\t\tcase \"idle\":\n \t\t\t\t\t\thotUpdate = {};\n \t\t\t\t\t\thotUpdate[moduleId] = modules[moduleId];\n \t\t\t\t\t\thotSetStatus(\"ready\");\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"ready\":\n \t\t\t\t\t\thotApplyInvalidatedModule(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"prepare\":\n \t\t\t\t\tcase \"check\":\n \t\t\t\t\tcase \"dispose\":\n \t\t\t\t\tcase \"apply\":\n \t\t\t\t\t\t(hotQueuedInvalidatedModules =\n \t\t\t\t\t\t\thotQueuedInvalidatedModules || []).push(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\t// ignore requests in error states\n \t\t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash, hotQueuedInvalidatedModules;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\") {\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\t}\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(hotApplyInvalidatedModules() ? \"ready\" : \"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tvar chunkId = 0;\n \t\t\t// eslint-disable-next-line no-lone-blocks\n \t\t\t{\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n \t\treturn hotApplyInternal(options);\n \t}\n\n \tfunction hotApplyInternal(options) {\n \t\thotApplyInvalidatedModules();\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (\n \t\t\t\t\t!module ||\n \t\t\t\t\t(module.hot._selfAccepted && !module.hot._selfInvalidated)\n \t\t\t\t)\n \t\t\t\t\tcontinue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted &&\n \t\t\t\t// removed self-accepted modules should not be required\n \t\t\t\tappliedUpdate[moduleId] !== warnUnexpectedRequire &&\n \t\t\t\t// when called invalidate self-accepting is not possible\n \t\t\t\t!installedModules[moduleId].hot._selfInvalidated\n \t\t\t) {\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\tparents: installedModules[moduleId].parents.slice(),\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\tif (hotUpdateNewHash !== undefined) {\n \t\t\thotCurrentHash = hotUpdateNewHash;\n \t\t\thotUpdateNewHash = undefined;\n \t\t}\n \t\thotUpdate = undefined;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = item.parents;\n \t\t\thotCurrentChildModule = moduleId;\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\treturn hotApplyInternal(options).then(function(list) {\n \t\t\t\toutdatedModules.forEach(function(moduleId) {\n \t\t\t\t\tif (list.indexOf(moduleId) < 0) list.push(moduleId);\n \t\t\t\t});\n \t\t\t\treturn list;\n \t\t\t});\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \tfunction hotApplyInvalidatedModules() {\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\tif (!hotUpdate) hotUpdate = {};\n \t\t\thotQueuedInvalidatedModules.forEach(hotApplyInvalidatedModule);\n \t\t\thotQueuedInvalidatedModules = undefined;\n \t\t\treturn true;\n \t\t}\n \t}\n\n \tfunction hotApplyInvalidatedModule(moduleId) {\n \t\tif (!Object.prototype.hasOwnProperty.call(hotUpdate, moduleId))\n \t\t\thotUpdate[moduleId] = modules[moduleId];\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n\n \t// Load entry module and return exports\n \treturn hotCreateRequire(450)(__webpack_require__.s = 450);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  return newProps;\n};\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = /*#__PURE__*/createElement(type, newProps);\n  var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n  return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  if (typeof props.css === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-04d85134.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-04d85134.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return /*#__PURE__*/createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return /*#__PURE__*/createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n\n      {\n        insertStyles(context, serialized, false);\n      }\n\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n    var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n    return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n  });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key;\n                for (i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i;\n            for (i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n                    matched,\n                    p1,\n                    p2,\n                    p3,\n                    p4\n                ) {\n                    return p1 || p2 || p3 || p4;\n                })\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n            '_'\n        ),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n        input,\n        array,\n        config,\n        token\n    ) {\n        var era = config._locale.erasParse(input, token, config._strict);\n        if (era) {\n            getParsingFlags(config).era = era;\n        } else {\n            getParsingFlags(config).invalidEra = input;\n        }\n    });\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n        input,\n        week,\n        config,\n        token\n    ) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","/**\n * Shared 'internal' scope.\n */\nimport {get} from './core/settings.js';\n\n/**\n * CUID Generator\n */\nimport {api as cuid} from '../libs/browser-cuid.js';\n\n/**\n * Record of callbacks to call when a page is tracked.\n */\nconst page_callbacks = [];\n\n/**\n * Log messages to the browser console. Requires 'log' to be set on init.\n *\n * @param {*} args items to log\n * @returns {void}\n */\nfunction log(...args) {\n\tif (get('config').test && window.console) {\n\t\tfor (const arg of args) {\n\t\t\twindow.console.log(arg);\n\t\t}\n\t}\n}\n\n/**\n * Tests if variable is a certain type. Defaults to check for undefined if no type specified.\n *\n * @param {*} variable - The variable to check.\n * @param {string=} type - The type to test for. Defaults to undefined.\n *\n * @returns {boolean} - The answer for if the variable is of type.\n */\nfunction is(variable, type = 'undefined') {\n\treturn typeof variable === type;\n}\n\n/**\n * Merge objects together. Will remove undefined and null values.\n *\n * @param {object} target - The original object to merge in to.\n * @param {object} options - The object to merge into the target. If omitted, will merge target into a new empty Object.\n *\n * @returns {object} The merged object.\n */\nfunction merge(target, options) {\n\tif (!options) {\n\t\toptions = target;\n\t\ttarget = {};\n\t}\n\n\tlet name;\n\tlet src;\n\tlet copy;\n\n\t/* jshint -W089 */\n\t/* eslint guard-for-in: 0 */\n\tfor (name in options) {\n\t\tsrc = target[name];\n\t\tcopy = options[name];\n\n\t\t// Prevent never-ending loop\n\t\tif (target === copy) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Gets rid of missing values too\n\t\tif (typeof copy !== 'undefined' && copy !== null) {\n\t\t\ttarget[name] = src === Object(src) && !is(src, 'function') ? merge(src, copy) : copy;\n\t\t}\n\t}\n\t/* jshint +W089 */\n\t/* jslint forin:true */\n\n\treturn target;\n}\n\n/**\n * URL encode a string.\n *\n * @param {string} str - The string to be encoded.\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n\tif (window.encodeURIComponent) {\n\t\treturn window.encodeURIComponent(str);\n\t} else {\n\t\treturn window.escape(str);\n\t}\n}\n\n/**\n * URL decode a string.\n *\n * @param {string} str - The string to be decoded.\n * @returns {string} The decoded string.\n */\nfunction decode(str) {\n\tif (window.decodeURIComponent) {\n\t\treturn window.decodeURIComponent(str);\n\t} else {\n\t\treturn window.unescape(str);\n\t}\n}\n\n/**\n * Utility to add event listeners.\n *\n * @param {Element} element\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} listener\n * @returns {void}\n */\nfunction addEvent(element, event, listener) {\n\tif (element.addEventListener) {\n\t\telement.addEventListener(event, listener, false);\n\t} else {\n\t\telement.attachEvent('on' + event, listener);\n\t}\n}\n\n/**\n * Utility for dispatching custom events from window\n *\n * @param {string} namespace\n * @param {string} eventType\n * @param {object} detail\n * @returns {void}\n */\nfunction broadcast(namespace, eventType, detail) {\n\tdetail = detail || {};\n\ttry {\n\t\twindow.dispatchEvent(new CustomEvent(namespace + '.' + eventType, {\n\t\t\tdetail: detail,\n\t\t\tbubbles: true\n\t\t}));\n\t} catch (error) {\n\t\t// empty\n\t}\n}\n\n/**\n * Listen for page tracking requests.\n *\n * @param {Function} cb - The callback to be called whenever a page is tracked.\n * @returns {void}\n */\nfunction onPage(cb) {\n\tif (is(cb, 'function') && !page_callbacks.includes(cb)) {\n\t\tpage_callbacks.push(cb);\n\t}\n}\n\n/**\n * Trigger the 'page' listeners.\n *\n * @returns {void}\n */\nfunction triggerPage() {\n\tfor (let i = 0; i < page_callbacks.length; i++) {\n\t\tpage_callbacks[i]();\n\t}\n}\n\n/**\n * Get a value from document.cookie matching the first match of the regexp you supply\n *\n * @param {RegExp} matcher - The Regex to match with\n * @returns {string} - The vale from the cookie\n */\nfunction getValueFromCookie(matcher) {\n\treturn document.cookie.match(matcher) && RegExp.$1 !== '' && RegExp.$1 !== 'null' ? RegExp.$1 : null;\n}\n\n/**\n * Filter an object to only have the properties which are listed in the `allowlist` parameter.\n *\n * @param {object} objectToFilter - An object whose props need to be filtered\n * @param {Array} allowedPropertyNames - The list of props to allow\n * @returns {object} An object containing only the allowed props\n */\nfunction filterProperties (objectToFilter, allowedPropertyNames) {\n\tconst filteredObject = {};\n\tfor (const allowedName of allowedPropertyNames) {\n\t\tif (objectToFilter[allowedName]) {\n\t\t\tfilteredObject[allowedName] = objectToFilter[allowedName];\n\t\t}\n\t}\n\treturn filteredObject;\n}\n\n/**\n * Trim strings\n *\n * @param {string} str - The string to trim.\n * @returns {string} The trimmed string.\n */\nfunction sanitise (str) {\n\treturn typeof str === 'string' ? str.trim() : str;\n}\n\n/**\n * Assign the subject value if the target properties are undefined\n *\n * @param {object} subject - assign the value\n * @param {object} target - be assigned the value\n * @returns {void}\n */\nfunction assignIfUndefined (subject, target) {\n\tfor (const prop in subject) {\n\t\tif (!target[prop]) {\n\t\t\ttarget[prop] = subject[prop];\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`You can't set a custom property called ${prop}`);\n\t\t}\n\t}\n}\n\n/**\n * Used to find out all the paths which contain a circular reference.\n *\n * @param {*} rootObject The object we want to search within for circular references\n * @returns {string[]} Returns an array of strings, the strings are the full paths to the circular references within the rootObject\n */\nfunction findCircularPathsIn(rootObject) {\n\tconst traversedValues = new WeakSet();\n\tconst circularPaths = [];\n\n\tfunction _findCircularPathsIn(currentObject, path) {\n\t\t// If we already saw this object\n\t\t// the rootObject contains a circular reference\n\t\t// and we can stop looking any further into this currentObj\n\t\tif (traversedValues.has(currentObject)) {\n\t\t\tcircularPaths.push(path);\n\t\t\treturn;\n\t\t}\n\n\t\t// Only Objects and things which inherit from Objects can contain circular references\n\t\t// I.E. string/number/boolean/template literals can not contain circular references\n\t\tif (currentObject instanceof Object) {\n\t\t\ttraversedValues.add(currentObject);\n\n\t\t\t// Loop through all the values of the current object and search those for circular references\n\t\t\tfor (const [key, value] of Object.entries(currentObject)) {\n\t\t\t\t// No need to recurse on every value because only things which inherit\n\t\t\t\t// from Objects can contain circular references\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\tconst parentObjectIsAnArray = Array.isArray(currentObject);\n\t\t\t\t\tif (parentObjectIsAnArray) {\n\t\t\t\t\t// Store path in bracket notation when value is an array\n\t\t\t\t\t\t_findCircularPathsIn(value, `${path}[${key}]`);\n\t\t\t\t\t} else {\n\t\t\t\t\t// Store path in dot-notation when value is an object\n\t\t\t\t\t\t_findCircularPathsIn(value, `${path}.${key}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_findCircularPathsIn(rootObject, \"\");\n\treturn circularPaths;\n}\n\n/**\n * Used to find out whether an object contains a circular reference.\n *\n * @param {object} rootObject The object we want to search within for circular references\n * @returns {boolean} Returns true if a circular reference was found, otherwise returns false\n */\nfunction containsCircularPaths(rootObject) {\n\t// Used to keep track of all the values the rootObject contains\n\tconst traversedValues = new WeakSet();\n\n\t/**\n\t *\n\t * @param {*} currentObject The current object we want to search within for circular references\n\t * @returns {boolean|undefined} Returns true if a circular reference was found, otherwise returns undefined\n\t */\n\tfunction _containsCircularPaths(currentObject) {\n\t\t// If we already saw this object\n\t\t// the rootObject contains a circular reference\n\t\t// and we can stop looking any further\n\t\tif (traversedValues.has(currentObject)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Only Objects and things which inherit from Objects can contain circular references\n\t\t// I.E. string/number/boolean/template literals can not contain circular references\n\t\tif (currentObject instanceof Object) {\n\t\t\ttraversedValues.add(currentObject);\n\t\t\t// Loop through all the values of the current object and search those for circular references\n\t\t\tfor (const value of Object.values(currentObject)) {\n\t\t\t\t// No need to recurse on every value because only things which inherit\n\t\t\t\t// from Objects can contain circular references\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\tif (_containsCircularPaths(value)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// _containsCircularPaths returns true or undefined.\n\t// By using Boolean we convert the undefined into false.\n\treturn Boolean(\n\t\t_containsCircularPaths(\n\t\t\trootObject\n\t\t)\n\t);\n}\n\n/**\n * Find out whether two objects are deeply equal to each other.\n *\n * @param {*} a\n * @param {*} b\n * @returns {boolean} - true if the two arguments are deeply equal\n */\nfunction isDeepEqual(a, b) {\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\ta &&\n\t\tb &&\n\t\ttypeof a === \"object\" &&\n\t\ttypeof b === \"object\"\n\t) {\n\t\tif (a.constructor !== b.constructor) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (Array.isArray(a)) {\n\t\t\tconst length = a.length;\n\t\t\tif (length !== b.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\t\tif (!isDeepEqual(a[i], b[i])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (a.constructor === RegExp) {\n\t\t\treturn (\n\t\t\t\ta.source === b.source && a.flags === b.flags\n\t\t\t);\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) {\n\t\t\treturn a.valueOf() === b.valueOf();\n\t\t}\n\t\tif (a.toString !== Object.prototype.toString) {\n\t\t\treturn a.toString() === b.toString();\n\t\t}\n\n\t\tconst keys = Object.keys(a);\n\t\tconst length = keys.length;\n\t\tif (length !== Object.keys(b).length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\tconst key = keys[i];\n\n\t\t\tif (!isDeepEqual(a[key], b[key])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n}\n\nexport {\n\tlog,\n\tis,\n\tis as isUndefined,\n\tmerge,\n\tencode,\n\tdecode,\n\tcuid as guid,\n\taddEvent,\n\tbroadcast,\n\tonPage,\n\ttriggerPage,\n\tgetValueFromCookie,\n\tsanitise,\n\tassignIfUndefined,\n\tfilterProperties,\n\tfindCircularPathsIn,\n\tcontainsCircularPaths,\n\tisDeepEqual\n};\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","function _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import _pt from \"prop-types\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Group(_ref) {\n  var _ref$top = _ref.top,\n      top = _ref$top === void 0 ? 0 : _ref$top,\n      _ref$left = _ref.left,\n      left = _ref$left === void 0 ? 0 : _ref$left,\n      transform = _ref.transform,\n      className = _ref.className,\n      children = _ref.children,\n      innerRef = _ref.innerRef,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"top\", \"left\", \"transform\", \"className\", \"children\", \"innerRef\"]);\n\n  return /*#__PURE__*/React.createElement(\"g\", _extends({\n    ref: innerRef,\n    className: cx('visx-group', className),\n    transform: transform || \"translate(\" + left + \", \" + top + \")\"\n  }, restProps), children);\n}\nGroup.propTypes = {\n  top: _pt.number,\n  left: _pt.number,\n  transform: _pt.string,\n  className: _pt.string,\n  children: _pt.node,\n  innerRef: _pt.oneOfType([_pt.string, _pt.func, _pt.object])\n};","import { letterFrequency, genDateValue } from '@visx/mock-data';\nimport { scaleLinear, scaleOrdinal, scaleThreshold, scaleSqrt } from '@visx/scale';\nimport categoricalUsSampleData from '../../sample-data/categorical-us';\nimport { Light } from '../chart-frame/watermarks';\nimport { identity } from '../../util';\n\nconst genLines = (num) => new Array(num).fill(1).map(() => genDateValue(25));\n\nexport const baseComponentDefaultProps = {\n  width: false,\n  height: false,\n  margin: false,\n  padding: { top: 0, right: 50, bottom: 0, left: 20 },\n  type: 'web',\n};\n\nexport const chartFrameDefaultProps = {\n  type: 'web',\n};\n\nexport const frameDefaultProps = {\n  ...baseComponentDefaultProps,\n  ...chartFrameDefaultProps,\n  background: '#fff1e5',\n  children: [],\n  description:\n    'A chart made with Visual Vocabulary Components from the Financial Times visual and data journalism team.',\n  hideTitleTooltip: false,\n  watermark: false,\n  hideTopper: false,\n  hideFooter: false,\n  watermarkOffset: { x: 40, y: 0 },\n  tooltipComponent: identity,\n};\n\nexport const frameSocialDefaultProps = {\n  // <Frame />\n  width: 612,\n  height: 612,\n  margin: { top: 140, right: 40, bottom: 80, left: 40 },\n  background: '#262a33',\n  watermark: Light,\n  watermarkOffset: { x: 40, y: 40 },\n  // <ChartTopper />\n  stabRule: true,\n  subtitleFontSize: 24,\n  subtitleLineHeight: 28,\n  subtitlePosition: { x: 40, y: 112 },\n  titleFontSize: 30,\n  titleLineHeight: 32,\n  titlePosition: { x: 40, y: 80 },\n  // <ChartFooter />\n  copyright: null,\n  sourceFontSize: 20,\n  sourceLineHeight: 20,\n  sourcePosition: { x: 40, y: 40 },\n};\n\nexport const frameVideoDefaultProps = {\n  // <Frame />\n  width: 1920,\n  height: 1080,\n  margin: { top: 250, right: 207, bottom: 160, left: 207 },\n  background: '#262a33',\n  watermark: false,\n  // <ChartTopper />\n  stabRule: false,\n  subtitleFontSize: 48,\n  subtitleLineHeight: 48,\n  subtitlePosition: { x: 207, y: 200 },\n  titleFontSize: 72,\n  titleLineHeight: 68,\n  titlePosition: { x: 207, y: 130 },\n  // <ChartFooter />\n  copyright: null,\n  sourceFontSize: 36,\n  sourceLineHeight: 38,\n  sourcePosition: { x: 207, y: 60 },\n};\n\nexport const framePrintDefaultProps = {\n  // <Frame />\n  width: 53.71,\n  height: 69.85,\n  padding: { top: 0, right: 0, bottom: 0, left: 0 },\n  margin: { top: 40, right: 7, bottom: 35, left: 7 },\n  background: '#FFFFFF',\n  watermark: false,\n  watermarkOffset: { x: 0, y: 0 },\n  // <ChartTopper />\n  stabRule: false,\n  subtitleFontSize: 9.6,\n  subtitleLineHeight: 10,\n  subtitlePosition: { x: 7, y: 27 },\n  titleFontSize: 12,\n  titleLineHeight: 13,\n  titlePosition: { x: 7, y: 15 },\n  // <ChartFooter />\n  copyright: null,\n  sourceFontSize: 7.2,\n  sourceLineHeight: 8,\n  sourcePosition: { x: 7, y: 8 },\n};\n\nexport const chartTopperDefaultProps = {\n  ...baseComponentDefaultProps,\n  ...chartFrameDefaultProps,\n  stabRule: true,\n  subtitle: 'Subtitle TKTK',\n  subtitleMarkupCustom: false,\n  title: 'Chart title TK',\n  titleMarkupCustom: false,\n};\n\nexport const chartFooterDefaultProps = {\n  ...baseComponentDefaultProps,\n  ...chartFrameDefaultProps,\n  copyright: '© FT',\n  source: 'Source: FT research',\n  sourcePosition: { x: 1, y: 2 },\n};\n\nexport const legendComponentDefaultProps = {\n  legendWidth: 500,\n  legendHeight: 250,\n  posX: 10,\n  posY: 10,\n  legendType: 'categorical',\n  invert: false,\n  geometry: 'rect',\n  draggable: true,\n  orientation: 'vertical',\n  median: '',\n  label: 'Label not yet added',\n};\n\n// TODO: Remove “component” from names\n\nexport const axisArrowsComponentDefaultProps = {\n  axisArrows: false,\n  axisArrowsScale: false,\n  axisArrowsPadding: {\n    top: 0,\n    right: 10,\n    bottom: 0,\n    left: 10,\n  },\n};\n\nexport const axisBandingComponentDefaultProps = {\n  axisBanding: false,\n  bandingScale: false,\n};\n\nexport const axisComponentDefaultProps = {\n  ...baseComponentDefaultProps,\n  ...axisArrowsComponentDefaultProps,\n  orientation: 'bottom',\n  scale: false,\n  fullLengthTick: false,\n  hideEndTicks: false,\n  invertScale: false,\n  automaticallyAddPaddingForTicks: true,\n  automaticallySetRange: true,\n  tickLengthOverride: false,\n  tickPositionVariable: false,\n  tickLabelVariable: 'label',\n  additionalTickValues: false,\n  labelOffset: 10,\n};\n\nexport const barsComponentDefaultProps = {\n  ...baseComponentDefaultProps,\n  data: letterFrequency,\n  fill: 'steelblue',\n  xScale: false,\n  xVariable: 'frequency',\n  yScale: false,\n  yVariable: 'letter',\n  colorScale: false,\n  colorVariable: 'name',\n  barHeightVariable: false,\n  fixedBarHeight: false,\n  automaticallySetRange: false,\n};\n\nexport const dotsComponentDefaultProps = {\n  ...baseComponentDefaultProps,\n  opacity: 1,\n  xScale: false,\n  yScale: false,\n  sizeScale: () => 5,\n  colorScale: () => '#0f5499',\n  hollowDots: false,\n  labelColumn: 'name',\n  labelProps: false,\n  showTooltips: false,\n  labelStrokeWidth: 4,\n  highlightDotsOnHover: false,\n  offChartLabelPosition: 'intersection',\n  customTooltipComponent: false,\n};\n\nexport const lineComponentDefaultProps = {\n  data: genLines(3), // Generates 3 x date-value series\n  xVariable: 'date',\n  yVariable: 'value',\n  strokeWidth: 3,\n};\n\nexport const linesComponentDefaultProps = {\n  ...lineComponentDefaultProps,\n  highlightedLineOutlineWidth: 0,\n  highlightedLineOutlineColor: '#fff1e5',\n  hoveredLineStrokeWidth: 3,\n  hoveredLinesColorScale: () => '#b3a9a0',\n};\n\nexport const marimekkoKeyDefaultProps = {\n  ...baseComponentDefaultProps,\n  barHeightAnnotation: 'Bar height annotation',\n  barHeightAnnotationLineHeight: 20,\n  barHeightAnnotationWidth: 80,\n  keyBarsWidth: 40,\n  keyData: [\n    { bar: 'top', width: 40, height: 8 },\n    { bar: 'middle', width: 36, height: 20 },\n    { bar: 'bottom', width: 31, height: 8 },\n  ],\n  keyMarginBottom: 86,\n  keyHeight: 42,\n  keyTitle: 'Key',\n  keyTitleWidth: 36,\n};\n\nexport const barChartDefaultProps = {\n  ...barsComponentDefaultProps,\n  xAxisOrientation: 'bottom',\n  yAxisOrientation: 'left',\n  automaticallyAddPaddingForTicks: true,\n  // <Bars />\n  data: letterFrequency,\n  xVariable: 'frequency',\n  yVariable: 'letter',\n  colorScale: () => '#0f5499',\n  paddingInner: 0.1,\n  paddingOuter: 0.1,\n  roundScale: true,\n};\n\nexport const marimekkoChartDefaultProps = {\n  ...barsComponentDefaultProps,\n  ...marimekkoKeyDefaultProps,\n  marimekkoKey: false,\n  xAxisOrientation: 'top',\n  yAxisOrientation: 'left',\n  xHideAxisLine: true,\n  xFullLengthTicks: true,\n  xMin: false,\n  xMax: false,\n  xTicks: false,\n  // <Bars />\n  data: categoricalUsSampleData,\n  xVariable: 'margin',\n  yVariable: 'ecvotes',\n  yLabelVariable: 'state',\n  yAutomaticallyAddPaddingForTicks: true,\n  yTickLength: false,\n  barPaddingInner: 1,\n  barPaddingOuter: 2,\n};\n\nexport const connectedScatterChartDefaultProps = {\n  ...baseComponentDefaultProps,\n  data: [],\n  xVariable: 'x',\n  yVariable: 'y',\n  colorVariable: 'group',\n  orderVariable: 'date',\n  xAxisOrientation: 'bottom',\n  yAxisOrientation: 'left',\n  labelColumn: 'date',\n};\n\nexport const lineChartDefaultProps = {\n  ...baseComponentDefaultProps,\n  xAxisOrientation: 'bottom',\n  yAxisOrientation: 'left',\n  xFullLengthTicks: false,\n  yFullLengthTicks: false,\n  showLegend: true,\n  // <Lines />\n  data: genLines(3), // Generates 3 x date-value series\n  xVariable: 'date',\n  yVariable: [], // if elements of the array are passed in, then all columns are displayed as separate lines\n  xScaleType: 'time',\n  logScale: false,\n  showLineEndDots: false,\n  hideEndTicks: false,\n  showTooltips: false,\n  yTransformFunction: identity, // Identity function\n  showTooltipLine: false,\n  tooltipComponent: ({ seriesName, yValue }) => `${seriesName}: ${yValue}`,\n  // <Frame />\n  hideTopper: false,\n  hideFooter: false,\n  hideTitleTooltip: false,\n  seriesToHighlight: null,\n  labelStrokeColor: '#fff1e5',\n  labelStrokeWidth: 4,\n  // Color\n  ghostLineColor: '#b3a9a0',\n  ghostLineHoverColorScale: () => '#b3a9a0',\n  ghostLineHoverLabelColorScale: () => '#66605C',\n  additionalYTickValues: false,\n};\n\nexport const smallBarChartDefaultProps = {\n  ...barChartDefaultProps,\n};\n\nexport const scatterChartDefaultProps = {\n  ...baseComponentDefaultProps,\n  type: 'web',\n  data: [],\n  xVariable: 'x',\n  yVariable: 'y',\n  sizeVariable: false,\n  colorVariable: 'group',\n  colorScale: false,\n  xAxisOrientation: 'bottom',\n  yAxisOrientation: 'left',\n  xAxisLabel: false,\n  yAxisLabel: false,\n  logScaleX: false,\n  logScaleY: false,\n  maxCircleSize: {\n    web: 16,\n    print: 9.6,\n    social: 24,\n    video: 48,\n  },\n  opacity: 0.7,\n  scaleFactor: 1,\n  hollowDots: false,\n  dotsStrokeWidth: 0,\n  lineOfRegression: false,\n  labelColumn: 'name',\n  xDomain: [0, 10],\n  yDomain: [0, 10],\n  sizeDomain: [0, 0],\n  legendGeometry: 'circle',\n  legendOrientation: 'horizontal',\n  hideLegend: false,\n  hideSizeLegend: false,\n  sizeLegendX: 0,\n  sizeLegendY: 0,\n  showTooltips: false,\n  tooltipComponent: ({ seriesName, yValue }) => `${seriesName}: ${yValue}`,\n  tooltipPositionOverride: false,\n  tooltipHoverRadius: false,\n  hoveredDotsStrokeColor: '#000',\n  hoveredDotsStrokeWidth: 1,\n};\n\nexport const delaunayDefaultProps = {\n  colorScale: () => '#0f5499',\n  debug: false,\n  showLine: false,\n  showCircle: false,\n  yTransformFunction: false,\n  tooltipPositionOverride: false,\n  lineConfig: false,\n  circleConfig: false,\n  hoverRadius: false,\n};\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","const months = '[\"' + 'January,February,March,April,May,June,July,August,September,October,November,December'.split(',').join('\",\"') + '\"]';\nconst days = '[\"' + 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(',').join('\",\"') + '\"]';\nconst formats = {\n\tdatetime: 'MMMM d yyyy h:mm a',\n\tdate: 'MMMM d yyyy'\n};\n\nconst compiledTemplates = {};\n\n/**\n * See http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html for formatting conventions used\n *\n *Comments indicate the value returned for 3.05 pm on Tuesday 4th February 2014\n */\nconst formatReplacementsMap = {\n\tMMMM: 'months[date.getMonth()]', // e.g. February\n\tMMM: 'months[date.getMonth()].substr(0,3)', // Feb\n\tMM: 'pad2(date.getMonth() + 1, 2)', // 02\n\tM: '(date.getMonth() + 1)', // 2\n\tyyyy: 'date.getFullYear()', // 2014\n\tyy: '(\"\"+date.getFullYear()).substr(-2, 2)', // 14\n\tEEEE: 'days[date.getDay()]', // Tuesday\n\tEEE: 'days[date.getDay()].substr(0,3)', // Tue\n\td: 'date.getDate()', // 4\n\tdd: 'pad2(date.getDate())', // 04\n\tdo: 'ordinal(date.getDate())', // 4th\n\tm: 'date.getMinutes()', // 5\n\tmm: 'pad2(date.getMinutes())', // 05\n\th: '(((date.getHours() + 11) % 12) + 1)', // 3\n\thh: 'pad2(((date.getHours() + 11) % 12) + 1)', // 03\n\tH: 'date.getHours()', // 15\n\tHH: 'pad2(date.getHours())', // 15\n\ta: '(date.getHours() >= 12 ? \"pm\" : \"am\")' // pm\n};\n\nconst inSeconds = {\n\tminute: 60,\n\thour: 60 * 60,\n\tday: 24 * 60 * 60,\n\tweek: 7 * 24 * 60 * 60,\n\tmonth: 60 * 60 * 24 * 30,\n\tyear: 365 * 24 * 60 * 60\n};\n\nfunction compile(format) {\n\tconst tpl = formats[format] || format;\n\n\tlet funcString = 'var months= ' + months + ', days= ' + days + ';';\n\tfuncString += 'function pad2 (number) {return (\"0\" + number).slice(-2)}';\n\tfuncString += `function ordinal(number) {\n\t\tconst suffixes = [\"th\", \"st\", \"nd\", \"rd\"];\n\t\tconst v = number % 100;\n\t\treturn number + (suffixes[(v - 20) % 10] || suffixes[v] || suffixes[0]);\n\t}`;\n\tfuncString += 'return \"' + tpl.replace(/\\\\?[a-z]+/ig, function (match) {\n\t\tif (match.charAt(0) === '\\\\') {\n\t\t\treturn match.substr(1);\n\t\t}\n\t\tconst replacer = formatReplacementsMap[match];\n\n\t\treturn replacer ? '\" + ' + replacer + ' + \"' : match;\n\t}) + '\"';\n\n\treturn (compiledTemplates[format] = new Function('date', funcString)); // eslint-disable-line no-new-func\n}\n\nconst ftDateFormat = {\n\ttoDate: function (date) {\n\t\tdate = date instanceof Date ? date : new Date(date);\n\t\tif (date.toString() !== 'Invalid Date') {\n\t\t\treturn date;\n\t\t}\n\t},\n\tasTodayOrYesterdayOrNothing: function (date) {\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, date);\n\n\t\tlet dateString;\n\n\t\t// If this was less than a day ago\n\t\tif (ftDateFormat.isToday(date, now, interval)) {\n\t\t\tdateString = 'today';\n\t\t} else if (ftDateFormat.isYesterday(date, now, interval)) {\n\t\t\tdateString = 'yesterday';\n\t\t} else {\n\t\t\tdateString = '';\n\t\t}\n\n\t\treturn dateString;\n\t},\n\tformat: function (date, dateFormat) {\n\t\tdateFormat = dateFormat || 'datetime';\n\t\tconst tpl = compiledTemplates[dateFormat] || compile(dateFormat);\n\t\tdate = ftDateFormat.toDate(date);\n\t\treturn date && tpl(date);\n\t},\n\ttimeAgo: function (date, interval, options) {\n\n\t\tdate = ftDateFormat.toDate(date);\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Accept an interval argument for backwards compatibility\n\t\tif (arguments.length === 2 && typeof interval === 'object') {\n\t\t\toptions = interval;\n\t\t\tinterval = options.interval;\n\t\t}\n\n\t\t// Default the interval option to the time since the given date\n\t\tif (!interval) {\n\t\t\tinterval = ftDateFormat.getSecondsBetween(new Date(), date);\n\t\t}\n\n\t\t// If a limit has been supplied and the interval is longer ago than that limit\n\t\tif (options && options.limit > 0 && (!interval || interval > options.limit)) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst abbreviated = options ? options.abbreviated : false;\n\n\t\tlet suffix = interval < 0 ? \"from now\" : \"ago\";\n\n\t\tinterval = Math.abs(interval);\n\n\t\tif (interval < inSeconds.minute) {\n\t\t\treturn `${abbreviated ? interval + 's' : interval + ' seconds'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.minute)) {\n\t\t\treturn `${abbreviated ? '1m' : 'a minute'} ${suffix}`;\n\t\t} else if (interval < (59 * inSeconds.minute)) {\n\t\t\treturn `${Math.round(interval / inSeconds.minute)}${abbreviated ? 'm' : ' minutes'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.hour)) {\n\t\t\treturn `${abbreviated ? '1h' : 'an hour'} ${suffix}`;\n\t\t} else if (interval < 22 * inSeconds.hour) {\n\t\t\treturn `${Math.round(interval / inSeconds.hour)}${abbreviated ? 'h' : ' hours'} ${suffix}`;\n\t\t} else if (interval < (1.5 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1d' : 'a day'} ${suffix}`;\n\t\t} else if (interval < 25 * inSeconds.day) {\n\t\t\treturn `${Math.round(interval / inSeconds.day)}${abbreviated ? 'd' : ' days'} ${suffix}`;\n\t\t} else if (interval < (45 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1mth' : 'a month'} ${suffix}`;\n\t\t} else if (interval < 345 * inSeconds.day) {\n\t\t\treturn `${Math.round(interval / inSeconds.month)}${abbreviated ? 'mth' : ' months'} ${suffix}`;\n\t\t} else if (interval < (547 * inSeconds.day)) {\n\t\t\treturn `${abbreviated ? '1y' : 'a year'} ${suffix}`;\n\t\t} else {\n\t\t\treturn `${ Math.max(2, Math.floor(interval / inSeconds.year))}${abbreviated ? 'y' : ' years'} ${suffix}`;\n\t\t}\n\t},\n\ttimeAgoNoSeconds: function (date) {\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, date);\n\n\t\t// If this was less than a minute ago\n\t\tif (interval < 60) {\n\t\t\treturn 'Less than a minute ago';\n\t\t}\n\t\treturn ftDateFormat.timeAgo(date);\n\t},\n\tftTime: function (dateObj) {\n\t\tconst now = new Date();\n\t\tconst interval = ftDateFormat.getSecondsBetween(now, dateObj);\n\t\tlet dateString;\n\n\t\t// If the date will occur in the next 5 minutes. This check is to allow for\n\t\t// reasonably differences in machine clocks.\n\t\tif (ftDateFormat.isNearFuture(interval)) {\n\t\t\tdateString = 'just now';\n\n\t\t\t// If it's beyond 5 minutes, fall back to printing the whole date, the machine\n\t\t\t// clock could be way out.\n\t\t} else if (ftDateFormat.isFarFuture(interval)) {\n\t\t\tdateString = ftDateFormat.format(dateObj, 'date');\n\n\t\t\t// Relative times for today or within the last 4 hours\n\t\t} else if (ftDateFormat.isToday(dateObj, now, interval) || (interval < (4 * inSeconds.hour))) {\n\t\t\tdateString = ftDateFormat.timeAgo(dateObj, interval);\n\n\t\t\t// 'Yesterday' for dates that occurred yesterday\n\t\t} else if (ftDateFormat.isYesterday(dateObj, now, interval)) {\n\t\t\tdateString = 'yesterday';\n\n\t\t\t// Else print the date\n\t\t} else {\n\t\t\tdateString = ftDateFormat.format(dateObj, 'date');\n\t\t}\n\n\t\treturn dateString;\n\t},\n\tgetSecondsBetween: function (time, otherTime) {\n\t\treturn Math.round((time - otherTime) / 1000);\n\t},\n\tisNearFuture: function (interval) {\n\t\t// If the interval within the next 5 minutes\n\t\treturn (interval < 0 && interval > -(5 * inSeconds.minute));\n\t},\n\tisFarFuture: function (interval) {\n\t\t// If the interval is further in the future than 5 minutes\n\t\treturn interval < -(5 * inSeconds.minute);\n\t},\n\tisToday: function (date, now, interval) {\n\t\tconst within24Hours = interval < inSeconds.day;\n\t\tconst sameDayOfWeek = now.getDay() === date.getDay();\n\t\treturn (within24Hours && sameDayOfWeek);\n\t},\n\tisYesterday: function (date, now, interval) {\n\t\tconst within48Hours = interval < 2 * inSeconds.day;\n\t\tconst consecutiveDaysOfTheWeek = now.getDay() === date.getDay() + 1;\n\t\treturn (within48Hours && consecutiveDaysOfTheWeek);\n\t},\n\tinSeconds\n};\n\nmodule.exports = ftDateFormat;\n","/**\n * @file\n * Utility functions\n */\n\nexport const convertMMtoPX = (x) => x * 2.83464480558843;\n\nexport const getResponsiveValues = (width, { topper = true, footer = true } = {}) => {\n  // Web extra large\n  if (width >= 1220) {\n    return {\n      height: 700,\n      margin: { top: topper ? 100 : 0, right: 5, bottom: footer ? 60 : 0, left: 20 },\n      sourceFontSize: 14,\n      sourceLineHeight: 16,\n      subtitleFontSize: 18,\n      subtitleLineHeight: 20,\n      subtitlePosition: { x: 1, y: 68 },\n      tickLabelStyle: {\n        fontSize: 18,\n      },\n      tickLength: 12,\n      titleFontSize: 28,\n      titleLineHeight: 28,\n      titlePosition: { x: 1, y: 36 },\n      axisLabelStyle: {\n        fontSize: 18,\n      },\n      width,\n    };\n  }\n  // Web large\n  if (width >= 980) {\n    return {\n      height: 500,\n      margin: { top: topper ? 100 : 0, right: 5, bottom: footer ? 60 : 0, left: 20 },\n      sourceFontSize: 14,\n      sourceLineHeight: 16,\n      subtitleFontSize: 18,\n      subtitleLineHeight: 20,\n      subtitlePosition: { x: 1, y: 68 },\n      tickLabelStyle: {\n        fontSize: 18,\n      },\n      tickLength: 12,\n      titleFontSize: 28,\n      titleLineHeight: 28,\n      titlePosition: { x: 1, y: 36 },\n      axisLabelStyle: {\n        fontSize: 18,\n      },\n      width,\n    };\n  }\n  // Web medium\n  if (width >= 490) {\n    return {\n      height: 400,\n      margin: { top: topper ? 90 : 0, right: 5, bottom: footer ? 50 : 0, left: 20 },\n      sourceFontSize: 14,\n      sourceLineHeight: 16,\n      subtitleFontSize: 18,\n      subtitleLineHeight: 20,\n      subtitlePosition: { x: 1, y: 64 },\n      tickLabelStyle: {\n        fontSize: 16,\n      },\n      tickLength: 12,\n      titleFontSize: 24,\n      titleLineHeight: 24,\n      titlePosition: { x: 1, y: 32 },\n      axisLabelStyle: {\n        fontSize: 16,\n      },\n      width,\n    };\n  }\n  // Web small\n  return {\n    height: 400,\n    margin: { top: topper ? 90 : 0, right: 5, bottom: footer ? 50 : 0, left: 15 },\n    sourceFontSize: 12,\n    sourceLineHeight: 14,\n    subtitleFontSize: 18,\n    subtitleLineHeight: 20,\n    subtitlePosition: { x: 1, y: 60 },\n    tickLength: 8,\n    tickLabelStyle: {\n      fontSize: 14,\n    },\n    titleFontSize: 20,\n    titleLineHeight: 20,\n    titlePosition: { x: 1, y: 28 },\n    axisLabelStyle: {\n      fontSize: 16,\n    },\n    width,\n  };\n};\n\nexport const identity = (d) => d;\n\nexport const isZeroOrDefined = (value) => value === 0 || value;\n\nexport const stripHTMLTags = (string) =>\n  string.replace(/(<([^>]+)>)/gi, '').replace(/(&nbsp;)/gi, ' ');\n","/**\n * @file\n * Assorted prop types used throughout\n */\n\nimport PropTypes from 'prop-types';\n\nexport const marginProp = PropTypes.shape({\n  top: PropTypes.number,\n  right: PropTypes.number,\n  bottom: PropTypes.number,\n  left: PropTypes.number,\n});\n\nexport const xyProp = PropTypes.shape({\n  x: PropTypes.number,\n  y: PropTypes.number,\n});\n\nexport const frameTypes = PropTypes.oneOf([\n  'Print',\n  'Social',\n  'Video',\n  'Web',\n  'print',\n  'social',\n  'video',\n  'web',\n]);\n\nexport const baseComponentPropTypes = {\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n  margin: PropTypes.oneOfType([marginProp, PropTypes.bool]),\n  padding: marginProp,\n  type: frameTypes,\n};\n\nexport const chartFramePropTypes = {\n  type: frameTypes,\n};\n\nexport const framePropTypes = {\n  ...baseComponentPropTypes,\n  ...chartFramePropTypes,\n  background: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),\n  description: PropTypes.string,\n  hideTitleTooltip: PropTypes.bool,\n  watermark: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  watermarkOffset: xyProp,\n  hideTopper: PropTypes.bool,\n  hideFooter: PropTypes.bool,\n  tooltipStyle: PropTypes.object,\n  tooltipComponent: PropTypes.func,\n};\n\nexport const frameSocialPropTypes = {\n  ...framePropTypes,\n};\n\nexport const frameVideoPropTypes = {\n  ...framePropTypes,\n};\n\nexport const framePrintPropTypes = {\n  ...framePropTypes,\n};\n\nexport const chartTopperPropTypes = {\n  ...baseComponentPropTypes,\n  ...chartFramePropTypes,\n  stabRule: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  subtitle: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  subtitleFontSize: PropTypes.number,\n  subtitleLineHeight: PropTypes.number,\n  subtitleMarkupCustom: PropTypes.bool,\n  subtitlePosition: xyProp,\n  subtitleStylesCustom: PropTypes.objectOf(\n    PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n  ),\n  title: PropTypes.string,\n  titleFontSize: PropTypes.number,\n  titleLineHeight: PropTypes.number,\n  titleMarkupCustom: PropTypes.bool,\n  titlePosition: xyProp,\n  titleStylesCustom: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n};\n\nexport const chartFooterPropTypes = {\n  ...baseComponentPropTypes,\n  ...chartFramePropTypes,\n  copyright: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  source: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  sourceFontSize: PropTypes.number,\n  sourceLineHeight: PropTypes.number,\n  sourcePosition: xyProp,\n};\n\n// TODO: Remove “component” from names\n\nexport const axisArrowsComponentPropTypes = {\n  axisArrows: PropTypes.oneOfType([\n    PropTypes.bool,\n    PropTypes.arrayOf(\n      PropTypes.shape({\n        direction: PropTypes.oneOf(['left', 'right']),\n        startValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n        length: PropTypes.number,\n        value: PropTypes.string,\n      })\n    ),\n  ]),\n  axisArrowsScale: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n  axisArrowsPadding: PropTypes.shape({\n    top: PropTypes.number,\n    right: PropTypes.number,\n    bottom: PropTypes.number,\n    left: PropTypes.number,\n  }),\n};\n\n// @vx/axis (https://vx-demo.now.sh/static/docs/vx-axis.html)\nexport const axisComponentPropTypes = {\n  ...baseComponentPropTypes,\n  ...axisArrowsComponentPropTypes,\n  axisClassName: PropTypes.string,\n  axisLineClassName: PropTypes.string,\n  children: PropTypes.func,\n  hideAxisLine: PropTypes.bool,\n  hideTicks: PropTypes.bool,\n  hideZero: PropTypes.bool,\n  label: PropTypes.string,\n  labelClassName: PropTypes.string,\n  labelOffset: PropTypes.number,\n  labelProps: PropTypes.object,\n  left: PropTypes.number,\n  numTicks: PropTypes.number,\n  orientation: PropTypes.string, // Tick orientation. Only applies to <Axis />\n  rangePadding: PropTypes.number,\n  scale: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  stroke: PropTypes.string,\n  strokeDasharray: PropTypes.string,\n  strokeWidth: PropTypes.number,\n  tickClassName: PropTypes.string,\n  tickComponent: PropTypes.func,\n  tickFormat: PropTypes.func,\n  tickLabelProps: PropTypes.func,\n  tickLengthOverride: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n  tickStroke: PropTypes.string,\n  tickTransform: PropTypes.string,\n  tickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n  top: PropTypes.number,\n  fullLengthTick: PropTypes.bool,\n  hideEndTicks: PropTypes.bool,\n  additionalAxisStyles: PropTypes.object,\n  automaticallyAddPaddingForTicks: PropTypes.bool,\n  automaticallySetRange: PropTypes.bool,\n  tickPositionVariable: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  tickLabelVariable: PropTypes.string,\n  additionalTickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n};\n\nexport const legendComponentPropTypes = {\n  draggable: PropTypes.bool,\n  shape: PropTypes.string,\n  pinnedPosition: PropTypes.oneOfType([\n    PropTypes.shape({\n      x: PropTypes.number,\n      y: PropTypes.number,\n    }),\n    PropTypes.bool,\n  ]),\n  orientation: PropTypes.oneOf(['vertical', 'horizontal']),\n};\n\nexport const regressionLineComponentPropTypes = {\n  data: PropTypes.arrayOf(PropTypes.any).isRequired,\n  xVariable: PropTypes.string.isRequired,\n  yVariable: PropTypes.string.isRequired,\n  xScale: PropTypes.func.isRequired,\n  yScale: PropTypes.func.isRequired,\n};\n\nexport const barsComponentPropTypes = {\n  ...baseComponentPropTypes,\n  data: PropTypes.arrayOf(PropTypes.any),\n  colorScale: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  colorVariable: PropTypes.string,\n  fill: PropTypes.string,\n  xScale: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  xVariable: PropTypes.string,\n  yScale: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  yVariable: PropTypes.string,\n  barHeightVariable: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  fixedBarHeight: PropTypes.bool,\n  automaticallySetRange: PropTypes.bool,\n};\n\nexport const dotsComponentPropTypes = {\n  ...baseComponentPropTypes,\n  data: PropTypes.arrayOf(PropTypes.any).isRequired,\n  xVariable: PropTypes.string.isRequired,\n  yVariable: PropTypes.string.isRequired,\n  sizeVariable: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  colorVariable: PropTypes.string.isRequired,\n  opacity: PropTypes.number,\n  xScale: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  yScale: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  sizeScale: PropTypes.func,\n  colorScale: PropTypes.func,\n  hollowDots: PropTypes.bool,\n  labelColumn: PropTypes.string,\n  labelProps: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  showTooltips: PropTypes.bool,\n  yTransformFunction: PropTypes.func,\n  strokeColor: PropTypes.string,\n  strokeWidth: PropTypes.number,\n  labelStrokeColor: PropTypes.string,\n  labelStrokeWidth: PropTypes.number,\n  highlightDotsOnHover: PropTypes.bool,\n  hoveredDotsColorScale: PropTypes.func,\n  hoveredDotsLabelColorScale: PropTypes.func,\n  labelColorScale: PropTypes.func,\n  offChartLabelPosition: PropTypes.oneOf(['intersection', 'end']),\n  customTooltipComponent: PropTypes.bool,\n};\n\nexport const lineComponentPropTypes = {\n  data: PropTypes.arrayOf(PropTypes.any),\n  fill: PropTypes.string,\n  xVariable: PropTypes.string,\n  yVariable: PropTypes.string,\n  xScale: PropTypes.func,\n  yScale: PropTypes.func,\n  colorScale: PropTypes.func,\n  strokeWidth: PropTypes.number,\n  yTransformFunction: PropTypes.func,\n  defined: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n};\n\nexport const linesComponentPropTypes = {\n  width: PropTypes.number,\n  height: PropTypes.number,\n  seriesNames: PropTypes.arrayOf(PropTypes.string),\n  data: PropTypes.arrayOf(PropTypes.any),\n  xVariable: PropTypes.string,\n  xScale: PropTypes.func,\n  yScale: PropTypes.func,\n  colorScale: PropTypes.func,\n  strokeWidth: PropTypes.number,\n  yTransformFunction: PropTypes.func,\n  defined: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  highlightedLineOutlineWidthh: PropTypes.number,\n  highlightedLineOutlineColor: PropTypes.string,\n  // Props for hoverable lines\n  highlightLinesOnHover: PropTypes.bool,\n  hoveredLineStrokeWidth: PropTypes.number,\n  hoveredLinesColorScale: PropTypes.func,\n};\n\nexport const marimekkoKeyPropTypes = {\n  ...baseComponentPropTypes,\n  barHeightAnnotation: PropTypes.string,\n  barHeightAnnotationLineHeight: PropTypes.number,\n  barHeightAnnotationWidth: PropTypes.number,\n  keyBarsWidth: PropTypes.number,\n  keyData: PropTypes.arrayOf(PropTypes.any),\n  keyHeight: PropTypes.number,\n  keyMarginBottom: PropTypes.number,\n  keyTitle: PropTypes.string,\n  keyTitleWidth: PropTypes.number,\n  keyX: PropTypes.number,\n  keyY: PropTypes.number,\n};\n\nexport const barChartPropTypes = {\n  ...barsComponentPropTypes,\n  xAxisOrientation: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  yAxisOrientation: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  hideTopper: PropTypes.bool,\n  hideFooter: PropTypes.bool,\n  automaticallyAddPaddingForTicks: PropTypes.bool,\n  paddingInner: PropTypes.number,\n  paddingOuter: PropTypes.number,\n  yTickLength: PropTypes.number,\n  xTickLength: PropTypes.number,\n  hideXAxisLine: PropTypes.bool,\n  hideYAxisLine: PropTypes.bool,\n  background: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  xMax: PropTypes.number,\n  roundScale: PropTypes.bool,\n};\n\nexport const marimekkoChartPropTypes = {\n  ...barsComponentPropTypes,\n  ...marimekkoKeyPropTypes,\n  marimekkoKey: PropTypes.bool,\n  xAxisOrientation: PropTypes.string,\n  yAxisOrientation: PropTypes.string,\n  yLabelVariable: PropTypes.string,\n  yAutomaticallyAddPaddingForTicks: PropTypes.bool,\n  yTickLength: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n  barPaddingInner: PropTypes.number,\n  barPaddingOuter: PropTypes.number,\n  xHideAxisLine: PropTypes.bool,\n  xFullLengthTicks: PropTypes.bool,\n  xMax: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n  xMin: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n  xTicks: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n};\n\nexport const connectedScatterChartPropTypes = {\n  ...dotsComponentPropTypes,\n  ...linesComponentPropTypes,\n  orderVariable: PropTypes.string,\n  xAxisOrientation: PropTypes.string,\n  yAxisOrientation: PropTypes.string,\n};\n\nexport const lineChartPropTypes = {\n  ...linesComponentPropTypes,\n  xAxisOrientation: PropTypes.string,\n  yAxisOrientation: PropTypes.string,\n  yVariable: PropTypes.arrayOf(PropTypes.string),\n  logScale: PropTypes.bool,\n  yTickValues: PropTypes.array,\n  xFullLengthTicks: PropTypes.bool,\n  yFullLengthTicks: PropTypes.bool,\n  yMin: PropTypes.number,\n  yMax: PropTypes.number,\n  xScaleType: PropTypes.oneOf(['time', 'linear']),\n  showLegend: PropTypes.bool,\n  showLineEndDots: PropTypes.bool,\n  yTickFormat: PropTypes.func,\n  xTickFormat: PropTypes.func,\n  hideEndTicks: PropTypes.bool,\n  additionalAxisStyles: PropTypes.object,\n  stabRule: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  xAxisLabel: PropTypes.string,\n  xAxisLabelOffset: PropTypes.number,\n  xAxisLabelProps: PropTypes.object,\n  showTooltips: PropTypes.bool,\n  tooltipStyle: PropTypes.object,\n  tooltipComponent: PropTypes.func,\n  showTooltipLine: PropTypes.bool,\n  hideTopper: PropTypes.bool,\n  hideFooter: PropTypes.bool,\n  hideTitleTooltip: PropTypes.bool,\n  seriesToHighlight: PropTypes.arrayOf(PropTypes.string),\n  labelStrokeColor: PropTypes.string,\n  labelStrokeWidth: PropTypes.number,\n  allLinesHoverable: PropTypes.bool,\n  lineColorPalette: PropTypes.array,\n  labelColorPalette: PropTypes.array,\n  ghostLineColor: PropTypes.string,\n  ghostLineHoverColorScale: PropTypes.func,\n  ghostLineHoverLabelColorScale: PropTypes.func,\n  highlightedLineOutlineWidth: PropTypes.number,\n  hoverRadius: PropTypes.number,\n  additionalYTickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n};\n\nexport const smallBarChartPropTypes = {\n  ...barChartPropTypes,\n};\n\nexport const scatterChartPropTypes = {\n  ...dotsComponentPropTypes,\n  type: PropTypes.string,\n  xAxisOrientation: PropTypes.string,\n  yAxisOrientation: PropTypes.string,\n  xAxisLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  yAxisLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  colorScale: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  logScaleX: PropTypes.bool,\n  logScaleY: PropTypes.bool,\n  legendGeometry: PropTypes.string,\n  legendOrientation: PropTypes.string,\n  hideLegend: PropTypes.bool,\n  hideSizeLegend: PropTypes.bool,\n  sizeLegendX: PropTypes.number,\n  sizeLegendY: PropTypes.number,\n  lineOfRegression: PropTypes.bool,\n  showTooltips: PropTypes.bool,\n  tooltipStyle: PropTypes.object,\n  tooltipComponent: PropTypes.func,\n  dotsStrokeWidth: PropTypes.number,\n  sizeDomain: PropTypes.arrayOf(PropTypes.number),\n  hoveredDotsStrokeColor: PropTypes.string,\n  hoveredDotsStrokeWidth: PropTypes.number,\n};\n\nexport const delaunayPropTypes = {\n  xScale: PropTypes.func.isRequired,\n  yScale: PropTypes.func.isRequired,\n  colorScale: PropTypes.func,\n  yTransformFunction: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  xVariable: PropTypes.string.isRequired,\n  yVariable: PropTypes.string.inRequired,\n  data: PropTypes.array.isRequired,\n  debug: PropTypes.bool,\n  tooltipPositionOverride: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  showLine: PropTypes.bool,\n  showCircle: PropTypes.bool,\n  lineConfig: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n  circleConfig: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n  hoverRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n};\n","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","\nconst settings = {config:{}};\n\n/**\n * Very basic implementation of deep clone, and only supports simple POJO objects and\n * native arrays.\n *\n * @param  {*} value Any value\n * @returns {*}       Copy of value\n * @private\n */\nfunction clone(value) {\n\tif (value === undefined) {\n\t\treturn value;\n\t}\n\tswitch (Object.prototype.toString.call(value)) {\n\t\tcase '[object Object]':\n\t\t\treturn JSON.parse(JSON.stringify(value));\n\t\tcase '[object Array]':\n\t\t\treturn [].slice.call(value);\n\t\tdefault:\n\t\t\treturn value;\n\t}\n}\n\n/**\n * Saves a value. Stores a copy rather than a reference, to avoid mutations leaking.\n *\n * @param {string} key - The key to use to store the object\n * @param {*} value - The value\n * @returns {void}\n */\nfunction setValue(key, value) {\n\tsettings[key] = clone(value);\n}\n\n/**\n * Retrieves a value from the settings object. Returns a copy rather than reference, to\n * avoid mutations leaking.\n *\n * @param {string} key - The key to get\n * @returns {*} - The setting.\n */\nfunction getValue(key) {\n\treturn clone(settings[key]);\n}\n\n/**\n * Deletes a value\n *\n * @param  {string} key - The key to delete\n * @returns {void}\n */\nfunction destroy(key) {\n\tdelete settings[key];\n}\nconst set = setValue;\nconst get = getValue;\n\nexport {\n\tset,\n\tget,\n\tdestroy\n};\n","/**\n * @file\n * Grid components reflecting o-grid API\n */\n\nimport { GridChild } from './grid-child';\nimport { GridRow } from './grid-row';\nimport { GridContainer } from './grid-container';\n\nexport { GridChild };\nexport { GridRow };\nexport { GridContainer };\n\nexport default {\n  GridRow,\n  GridChild,\n  GridContainer,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const Label = ({ x, y, category, textAnchor }) => {\n  return (\n    <text className=\"legend\" x={x} y={y} text-anchor={textAnchor}>\n      {category}\n    </text>\n  );\n};\n\nLabel.propTypes = {\n  x: PropTypes.number.isRequired,\n  y: PropTypes.number.isRequired,\n  category: PropTypes.string.isRequired,\n};\n\nexport default Label;\n","var Orientation = {\n  top: 'top',\n  left: 'left',\n  right: 'right',\n  bottom: 'bottom'\n};\nexport default Orientation;","'use strict'\n\nfunction markdownLineEnding(code) {\n  return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n  if (source == null) return {};\n  var target = objectWithoutPropertiesLoose(source, excluded);\n  var key, i;\n\n  if (Object.getOwnPropertySymbols) {\n    var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n    for (i = 0; i < sourceSymbolKeys.length; i++) {\n      key = sourceSymbolKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","import * as d3 from 'd3-time-format';\n\nexport const queryParamDateFormat = '%Y-%m-%d';\nexport const datePickerDateFormat = '%Y-%m-%d';\n\nexport const queryParamDateFormatter = d3.timeFormat(queryParamDateFormat);\nexport const queryParamDateParser = d3.timeParse(queryParamDateFormat);\n\nexport const datePickerDateFormatter = d3.timeFormat(datePickerDateFormat);\nexport const datePickerDateParser = d3.timeParse(datePickerDateFormat);\n\nexport const getDateNDaysAgo = (date, n) => {\n  const copiedDate = new Date(date.getTime());\n  copiedDate.setDate(copiedDate.getDate() - n);\n  return copiedDate;\n};\n\nexport const monthsList = [\n  'Jan',\n  'Feb',\n  'Mar',\n  'Apr',\n  'May',\n  'Jun',\n  'Jul',\n  'Aug',\n  'Sep',\n  'Oct',\n  'Nov',\n  'Dec',\n];\n\nexport const getDaysInMonth = (month, year) => {\n  // The zero day of next month will give us the last day of given month\n  // as days are not zero-indexed\n  return new Date(year, Number(month) + 1, 0).getDate();\n};\n\nexport const getYearRange = (minDate, maxDate) => {\n  const minYear = minDate.getFullYear();\n  const maxYear = maxDate.getFullYear();\n\n  return Array(maxYear - minYear + 1)\n    .fill()\n    .map((_, index) => minYear + index);\n};\n\nexport const getDayMonthYear = date => {\n  const day = date.getDate();\n  const month = date.getMonth(); // Zero indexed\n  const year = date.getFullYear();\n\n  return { day, month, year };\n};\n\nexport const getReadableDateFormat = () => {\n  const year = 2020;\n  const month = 11; // Zero-indexed\n  const day = 31;\n\n  const fixedDate = new Date(year, month, day);\n  const localeString = fixedDate.toLocaleDateString();\n  const readableDateFormat = localeString\n    .replace(year, 'Year')\n    .replace(month + 1, 'Month')\n    .replace(day, 'Day');\n\n  return readableDateFormat;\n};\n\nexport default null;\n","import * as Utils from '@financial-times/o-utils';\n\nlet debug;\n\n/**\n *\n * @param {string} eventType the name of the event\n * @param {object} data the payload of the event\n * @param {EventTarget} target the target of the event\n */\nfunction broadcast(eventType, data, target) {\n\ttarget = target || document.body;\n\n\tif (debug) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log('o-viewport', eventType, data);\n\t}\n\n\ttarget.dispatchEvent(\n\t\tnew CustomEvent('oViewport.' + eventType, {\n\t\t\tdetail: data,\n\t\t\tbubbles: true,\n\t\t})\n\t);\n}\n\n/**\n * Get the viewport height.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar height.\n * @returns {number} viewport height\n */\nfunction getHeight(ignoreScrollbars) {\n\treturn ignoreScrollbars\n\t\t? document.documentElement.clientHeight\n\t\t: Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n}\n\n/**\n * Get the viewport width.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width\n * @returns {number} viewport width\n */\nfunction getWidth(ignoreScrollbars) {\n\treturn ignoreScrollbars\n\t\t? document.documentElement.clientWidth\n\t\t: Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n}\n\n/**\n * Viewport size.\n *\n * @typedef {object} Size\n * @property {number} height viewport height\n * @property {number} width viewport width\n */\n\n/**\n * Get the viewport width and height.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width/height.\n * @returns {Size} viewport width and height object\n */\nfunction getSize(ignoreScrollbars) {\n\treturn {\n\t\theight: getHeight(ignoreScrollbars),\n\t\twidth: getWidth(ignoreScrollbars),\n\t};\n}\n\n/**\n * Scroll position.\n *\n * @typedef {object} ScrollPosition\n * @property {number} height - `document.body.scrollHeight`\n * @property {number} width - `document.body.scrollWidth`\n * @property {number} left - `window.pageXOffset || window.scrollX`\n * @property {number} top - `window.pageYOffset || window.scrollY`\n */\n\n/**\n * @returns {ScrollPosition} current scroll info\n */\nfunction getScrollPosition() {\n\treturn {\n\t\theight: document.body.scrollHeight,\n\t\twidth: document.body.scrollWidth,\n\t\tleft: window.pageXOffset || window.scrollX,\n\t\ttop: window.pageYOffset || window.scrollY,\n\t};\n}\n\n/**\n * @returns {string} - 'portrait' or 'landscape'\n */\nfunction getOrientation() {\n\tconst orientation = window.screen.orientation;\n\tif (orientation) {\n\t\treturn typeof orientation === 'string'\n\t\t\t? orientation.split('-')[0]\n\t\t\t: orientation.type.split('-')[0];\n\t} else if (window.matchMedia) {\n\t\treturn window.matchMedia('(orientation: portrait)').matches\n\t\t\t? 'portrait'\n\t\t\t: 'landscape';\n\t} else {\n\t\treturn getHeight() >= getWidth() ? 'portrait' : 'landscape';\n\t}\n}\n\n/**\n * @returns {boolean} - true if the viewport is visible\n */\nfunction getVisibility() {\n\treturn document.hidden;\n}\n\nexport default {\n\tdebug: function () {\n\t\tdebug = true;\n\t},\n\tbroadcast,\n\tgetWidth,\n\tgetHeight,\n\tgetSize,\n\tgetScrollPosition,\n\tgetVisibility,\n\tgetOrientation,\n\tdebounce: Utils.debounce,\n\tthrottle: Utils.throttle,\n};\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n  var limit = max ? max - 1 : Infinity\n  var size = 0\n  return start\n\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type)\n      return prefix(code)\n    }\n\n    return ok(code)\n  }\n\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code)\n      return prefix\n    }\n\n    effects.exit(type)\n    return ok(code)\n  }\n}\n\nmodule.exports = spaceFactory\n","function _extends() {\n  module.exports = _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","/**\n * @file\n * The plot Context object\n */\nimport { createContext } from 'react';\nimport { frameDefaultProps } from '../default-props';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const PlotContext = createContext({\n  frameWidth: frameDefaultProps.width,\n  frameHeight: frameDefaultProps.height,\n  width: frameDefaultProps.width,\n  height: frameDefaultProps.height,\n  margin: frameDefaultProps.margin,\n  padding: { top: 0, right: 50, bottom: 0, left: 20 },\n  type: frameDefaultProps.type,\n  updatePadding: () => {},\n});\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","'use strict';\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n  // To do in next major: remove `source`.\n  var src = props.source || props.children || '';\n\n  if (props.allowedTypes && props.disallowedTypes) {\n    throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n  }\n\n  var renderers = xtend(defaultRenderers, props.renderers);\n  var processor = unified().use(parse).use(props.plugins || []); // eslint-disable-next-line no-sync\n\n  var tree = processor.runSync(processor.parse(src));\n  var renderProps = xtend(props, {\n    renderers: renderers,\n    definitions: getDefinitions(tree)\n  });\n  determineAstToReactTransforms(props).forEach(function (transform) {\n    tree = transform(tree, renderProps);\n  });\n  return tree;\n};\n\nfunction determineAstToReactTransforms(props) {\n  var transforms = [wrapTableRows, addListMetadata()];\n  var disallowedTypes = props.disallowedTypes;\n\n  if (props.allowedTypes) {\n    disallowedTypes = allTypes.filter(function (type) {\n      return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n    });\n  }\n\n  var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n  if (disallowedTypes && disallowedTypes.length > 0) {\n    transforms.push(disallowNode.ofType(disallowedTypes, removalMethod));\n  }\n\n  if (props.allowNode) {\n    transforms.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n  } // To do in next major: remove `escapeHtml`.\n\n\n  var renderHtml = (props.allowDangerousHtml || props.escapeHtml === false) && !props.skipHtml;\n  var hasHtmlParser = (props.astPlugins || []).some(function (transform) {\n    return transform.identity === symbols.HtmlParser;\n  });\n\n  if (renderHtml && !hasHtmlParser) {\n    transforms.push(naiveHtml);\n  }\n\n  if (props.astPlugins) {\n    transforms = transforms.concat(props.astPlugins);\n  } // Add the final transform to turn everything into React.\n\n\n  transforms.push(astToReact);\n  return transforms;\n}\n\nReactMarkdown.defaultProps = {\n  transformLinkUri: uriTransformer\n};\nReactMarkdown.propTypes = {\n  className: PropTypes.string,\n  source: PropTypes.string,\n  children: PropTypes.string,\n  sourcePos: PropTypes.bool,\n  rawSourcePos: PropTypes.bool,\n  escapeHtml: PropTypes.bool,\n  allowDangerousHtml: PropTypes.bool,\n  skipHtml: PropTypes.bool,\n  allowNode: PropTypes.func,\n  allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n  disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n  transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n  transformImageUri: PropTypes.func,\n  astPlugins: PropTypes.arrayOf(PropTypes.func),\n  unwrapDisallowed: PropTypes.bool,\n  renderers: PropTypes.object,\n  plugins: PropTypes.array\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import {addAndRun} from './core/send.js';\nimport { userID } from './core/user.js';\nimport { session } from './core/session.js';\nimport { get } from './core/settings.js';\nimport { guid, getValueFromCookie, merge, log } from './utils.js';\n\nlet rootID;\n\n/**\n * Generate and store a new rootID, used to mark a new root event that\n * subsequent events will be linked to.\n *\n * @returns {string|*} The rootID.\n */\nfunction setRootID() {\n\trootID = guid();\n\treturn rootID;\n}\n\n/**\n * Get the current rootID.\n *\n * @returns {string|*} The rootID.\n */\nfunction getRootID() {\n\tif (!rootID) {\n\t\tsetRootID();\n\t}\n\n\treturn rootID;\n}\n\n/**\n * Make a tracking request.\n *\n * @param {object} config - Should be passed an object containing a format and the values for that format\n * @param {Function} [callback] - Fired when the request has been made.\n *\n * @returns {object} request\n */\nfunction track(config, callback = function(){ /* empty */}) {\n\tconst currentSession = session();\n\n\t// Set up the base request object with some values which should always be sent.\n\tconst request = {\n\t\tcallback,\n\t\tcontext: {\n\t\t\tid: config.id || guid(), // Use a supplied id or generate one for this request\n\t\t\troot_id: getRootID(),\n\t\t},\n\t\tuser: {\n\t\t\tft_session: getValueFromCookie(/FTSession=([^;]+)/),\n\t\t\tft_session_s: getValueFromCookie(/FTSession_s=([^;]+)/)\n\t\t},\n\t\tdevice: {\n\t\t\tspoor_session: currentSession.id,\n\t\t\tspoor_session_is_new: currentSession.isNew,\n\t\t\tspoor_id: userID(),\n\t\t},\n\t};\n\n\t// Override any context, user, and device values with object-wide settings\n\tconst settingsConfig = get('config') || {};\n\tif (settingsConfig.context) {\n\t\tmerge(request.context, settingsConfig.context);\n\t}\n\tif (settingsConfig.user) {\n\t\tmerge(request.user, settingsConfig.user);\n\t}\n\tif (settingsConfig.device) {\n\t\tmerge(request.device, settingsConfig.device);\n\t}\n\n\t// Update the base config with the parameter-supplied config\n\tmerge(request, config);\n\n\tlog('Core.Track', request);\n\n\t// Send it.\n\taddAndRun(request);\n\n\treturn request;\n}\n\nexport default {\n\tsetRootID,\n\tgetRootID,\n\ttrack\n};\n","import utils from './src/utils.js';\n\nconst throttle = utils.throttle;\nconst debounce = utils.debounce;\n\nconst listeners = {};\nconst intervals = {\n\tresize: 100,\n\torientation: 100,\n\tvisibility: 100,\n\tscroll: 100\n};\n\n/**\n *\n * @param {string} eventType - The type of event to throttle for this duration.\n * @param {number} interval - The duration to throttle in ms.\n * @returns {void}\n * @example\n * \t   // throttle for different events at different durations\n *     setThrottleInterval('scroll', 100)\n *     setThrottleInterval('resize', 300)\n *     setThrottleInterval('orientation', 30)\n *     setThrottleInterval('visibility', 30)\n * \t\t// throttle all events at 30ms\n *     setThrottleInterval(30);\n */\nfunction setThrottleInterval(eventType, interval) {\n\tif (typeof arguments[0] === 'number') {\n\t\tsetThrottleInterval('scroll', arguments[0]);\n\t\tsetThrottleInterval('resize', arguments[1]);\n\t\tsetThrottleInterval('orientation', arguments[2]);\n\t\tsetThrottleInterval('visibility', arguments[3]);\n\t} else if (interval) {\n\t\tintervals[eventType] = interval;\n\t}\n}\n\n/**\n * @access private\n */\nfunction listenToResize() {\n\tif (listeners.resize) {\n\t\treturn;\n\t}\n\tconst eventType = 'resize';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('resize', {\n\t\t\tviewport: utils.getSize(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.resize);\n\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.resize = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToOrientation() {\n\n\tif (listeners.orientation) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'orientationchange';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('orientation', {\n\t\t\tviewport: utils.getSize(),\n\t\t\torientation: utils.getOrientation(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.orientation);\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.orientation = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToVisibility() {\n\n\tif (listeners.visibility) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'visibilitychange';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('visibility', {\n\t\t\thidden: utils.getVisibility(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.visibility);\n\n\twindow.addEventListener(eventType, handler);\n\n\tlisteners.visibility = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToScroll() {\n\n\tif (listeners.scroll) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'scroll';\n\tconst handler = throttle(function(ev) {\n\t\tconst scrollPos = utils.getScrollPosition();\n\t\tutils.broadcast('scroll', {\n\t\t\tviewport: utils.getSize(),\n\t\t\tscrollHeight: scrollPos.height,\n\t\t\tscrollLeft: scrollPos.left,\n\t\t\tscrollTop: scrollPos.top,\n\t\t\tscrollWidth: scrollPos.width,\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.scroll);\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.scroll = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * Start listening for an event(s).\n *\n * @param {string} eventType - The event to start listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n *\n * \t\t// It is now possible to listen for debounce o-viewport events such as `oViewport.orientation`.\n *      document.body.addEventListener('oViewport.orientation', function(event) {\n *      \tconsole.log(event.type); // oViewport.orientation\n *      });\n */\nfunction listenTo(eventType) {\n\tif (eventType === 'resize' || eventType === 'all') {\n\t\tlistenToResize();\n\t}\n\n\tif (eventType === 'scroll' || eventType === 'all') {\n\t\tlistenToScroll();\n\t}\n\n\tif (eventType === 'orientation' || eventType === 'all') {\n\t\tlistenToOrientation();\n\t}\n\n\tif (eventType === 'visibility' || eventType === 'all') {\n\t\tlistenToVisibility();\n\t}\n}\n\n/**\n * Stop listening for an event(s).\n *\n * @param {string} eventType - The event to stop listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n * \t\t// We're done. Stop listening for all events.\n * \t\toViewport.stopListeningTo('all');\n */\nfunction stopListeningTo(eventType) {\n\tif (eventType === 'all') {\n\t\tObject.keys(listeners).forEach(stopListeningTo);\n\t} else if (listeners[eventType]) {\n\t\twindow.removeEventListener(listeners[eventType].eventType, listeners[eventType].handler);\n\t\tdelete listeners[eventType];\n\t}\n}\n\nexport default {\n\tdebug: function () {\n\t\tutils.debug();\n\t},\n\tlistenTo,\n\tstopListeningTo,\n\tsetThrottleInterval,\n\tgetOrientation: utils.getOrientation,\n\tgetSize: utils.getSize,\n\tgetScrollPosition: utils.getScrollPosition,\n\tgetVisibility: utils.getVisibility\n};\n","/**\n * Encodes a date as a string in YYYY-MM-DD format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDate(date) {\n    if (date == null) {\n        return undefined;\n    }\n    var year = date.getFullYear();\n    var month = date.getMonth() + 1;\n    var day = date.getDate();\n    return year + \"-\" + (month < 10 ? \"0\" + month : month) + \"-\" + (day < 10 ? \"0\" + day : day);\n}\n/**\n * Converts a date in the format 'YYYY-mm-dd...' into a proper date, because\n * new Date() does not do that correctly. The date can be as complete or incomplete\n * as necessary (aka, '2015', '2015-10', '2015-10-01').\n * It will not work for dates that have times included in them.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param  {String} input String date form like '2015-10-01'\n * @return {Date} parsed date\n */\nexport function decodeDate(input) {\n    if (input == null || !input.length) {\n        return undefined;\n    }\n    var dateString = input instanceof Array ? input[0] : input;\n    if (dateString == null || !dateString.length) {\n        return undefined;\n    }\n    var parts = dateString.split('-');\n    // may only be a year so won't even have a month\n    if (parts[1] != null) {\n        parts[1] -= 1; // Note: months are 0-based\n    }\n    else {\n        // just a year, set the month and day to the first\n        parts[1] = 0;\n        parts[2] = 1;\n    }\n    var decoded = new (Date.bind.apply(Date, [void 0].concat(parts)))();\n    if (isNaN(decoded.getTime())) {\n        return undefined;\n    }\n    return decoded;\n}\n/**\n * Encodes a date as a string in ISO 8601 (\"2019-05-28T10:58:40Z\") format.\n *\n * @param {Date} date\n * @return {String} the encoded date\n */\nexport function encodeDateTime(date) {\n    if (date == null) {\n        return undefined;\n    }\n    return date.toISOString();\n}\n/**\n * Converts a date in the https://en.wikipedia.org/wiki/ISO_8601 format.\n * For allowed inputs see specs:\n *  - https://tools.ietf.org/html/rfc2822#page-14\n *  - http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15\n *\n * If an array is provided, only the first entry is used.\n *\n * @param  {String} input String date form like '1995-12-17T03:24:00'\n * @return {Date} parsed date\n */\nexport function decodeDateTime(input) {\n    if (input == null || !input.length) {\n        return undefined;\n    }\n    var dateString = input instanceof Array ? input[0] : input;\n    if (dateString == null || !dateString.length) {\n        return undefined;\n    }\n    var decoded = new Date(dateString);\n    if (isNaN(decoded.getTime())) {\n        return undefined;\n    }\n    return decoded;\n}\n/**\n * Encodes a boolean as a string. true -> \"1\", false -> \"0\".\n *\n * @param {Boolean} bool\n * @return {String} the encoded boolean\n */\nexport function encodeBoolean(bool) {\n    if (bool === undefined) {\n        return undefined;\n    }\n    return bool ? '1' : '0';\n}\n/**\n * Decodes a boolean from a string. \"1\" -> true, \"0\" -> false.\n * Everything else maps to undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded boolean string\n * @return {Boolean} the boolean value\n */\nexport function decodeBoolean(input) {\n    if (input == null) {\n        return undefined;\n    }\n    var boolStr = input instanceof Array ? input[0] : input;\n    if (boolStr === '1') {\n        return true;\n    }\n    else if (boolStr === '0') {\n        return false;\n    }\n    return undefined;\n}\n/**\n * Encodes a number as a string.\n *\n * @param {Number} num\n * @return {String} the encoded number\n */\nexport function encodeNumber(num) {\n    if (num == null) {\n        return undefined;\n    }\n    return String(num);\n}\n/**\n * Decodes a number from a string. If the number is invalid,\n * it returns undefined.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded number string\n * @return {Number} the number value\n */\nexport function decodeNumber(input) {\n    if (input == null) {\n        return undefined;\n    }\n    var numStr = input instanceof Array ? input[0] : input;\n    if (numStr == null || numStr === '') {\n        return undefined;\n    }\n    var result = +numStr;\n    if (isNaN(result)) {\n        return undefined;\n    }\n    return result;\n}\n/**\n * Encodes a string while safely handling null and undefined values.\n *\n * @param {String} str a string to encode\n * @return {String} the encoded string\n */\nexport function encodeString(str) {\n    if (str == null) {\n        return undefined;\n    }\n    return String(str);\n}\n/**\n * Decodes a string while safely handling null and undefined values.\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input the encoded string\n * @return {String} the string value\n */\nexport function decodeString(input) {\n    if (input == null) {\n        return undefined;\n    }\n    var str = input instanceof Array ? input[0] : input;\n    if (str == null) {\n        return undefined;\n    }\n    return String(str);\n}\n/**\n * Encodes anything as a JSON string.\n *\n * @param {Any} any The thing to be encoded\n * @return {String} The JSON string representation of any\n */\nexport function encodeJson(any) {\n    if (any == null) {\n        return undefined;\n    }\n    return JSON.stringify(any);\n}\n/**\n * Decodes a JSON string into javascript\n *\n * If an array is provided, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @return {Any} The javascript representation\n */\nexport function decodeJson(input) {\n    if (input == null) {\n        return undefined;\n    }\n    var jsonStr = input instanceof Array ? input[0] : input;\n    if (!jsonStr) {\n        return undefined;\n    }\n    var result;\n    try {\n        result = JSON.parse(jsonStr);\n    }\n    catch (e) {\n        /* ignore errors, returning undefined */\n    }\n    return result;\n}\n/**\n * Encodes an array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeArray(array) {\n    if (!array) {\n        return undefined;\n    }\n    return array;\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeArray(input) {\n    if (!input) {\n        return undefined;\n    }\n    if (!(input instanceof Array)) {\n        return [input];\n    }\n    return input\n        .map(function (item) { return (item === '' ? undefined : item); })\n        .filter(function (item) { return item !== undefined; });\n}\n/**\n * Encodes a numeric array as a JSON string.\n *\n * @param {Array} array The array to be encoded\n * @return {String[]} The array of strings to be put in the URL\n * as repeated query parameters\n */\nexport function encodeNumericArray(array) {\n    if (!array) {\n        return undefined;\n    }\n    return array.map(function (d) { return \"\" + d; });\n}\n/**\n * Decodes an array or singular value and returns it as an array\n * or undefined if falsy. Filters out undefined and NaN values.\n *\n * @param {String | Array} input The input value\n * @return {Array} The javascript representation\n */\nexport function decodeNumericArray(input) {\n    var arr = decodeArray(input);\n    if (!arr) {\n        return undefined;\n    }\n    return arr\n        .map(function (item) { return +item; })\n        .filter(function (item) { return item !== undefined && !isNaN(item); });\n}\n/**\n * Encodes an array as a delimited string. For example,\n * ['a', 'b'] -> 'a_b' with entrySeparator='_'\n *\n * @param array The array to be encoded\n * @param entrySeparator The string used to delimit entries\n * @return The array as a string with elements joined by the\n * entry separator\n */\nexport function encodeDelimitedArray(array, entrySeparator) {\n    if (entrySeparator === void 0) { entrySeparator = '_'; }\n    if (!array) {\n        return undefined;\n    }\n    return array.join(entrySeparator);\n}\n/**\n * Decodes a delimited string into javascript array. For example,\n * 'a_b' -> ['a', 'b'] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The JSON string representation\n * @param entrySeparator The array as a string with elements joined by the\n * entry separator\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedArray(input, entrySeparator) {\n    if (entrySeparator === void 0) { entrySeparator = '_'; }\n    if (input == null) {\n        return undefined;\n    }\n    var arrayStr = input instanceof Array ? input[0] : input;\n    if (!arrayStr) {\n        return undefined;\n    }\n    return arrayStr\n        .split(entrySeparator)\n        .map(function (item) { return (item === '' ? undefined : item); })\n        .filter(function (item) { return item !== undefined; });\n}\n/**\n * Encodes a numeric array as a delimited string. (alias of encodeDelimitedArray)\n * For example, [1, 2] -> '1_2' with entrySeparator='_'\n *\n * @param {Array} array The array to be encoded\n * @return {String} The JSON string representation of array\n */\nexport var encodeDelimitedNumericArray = encodeDelimitedArray;\n/**\n * Decodes a delimited string into javascript array where all entries are numbers\n * For example, '1_2' -> [1, 2] with entrySeparator='_'\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} jsonStr The JSON string representation\n * @return {Array} The javascript representation\n */\nexport function decodeDelimitedNumericArray(arrayStr, entrySeparator) {\n    if (entrySeparator === void 0) { entrySeparator = '_'; }\n    var decoded = decodeDelimitedArray(arrayStr, entrySeparator);\n    if (!decoded) {\n        return undefined;\n    }\n    return decoded\n        .map(function (d) { return (d == null ? undefined : +d); })\n        .filter(function (d) { return d !== undefined && !isNaN(d); });\n}\n/**\n * Encode simple objects as readable strings. Works only for simple,\n * flat objects where values are numbers, strings.\n *\n * For example { foo: bar, boo: baz } -> \"foo-bar_boo-baz\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport function encodeObject(obj, keyValSeparator, entrySeparator) {\n    if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n    if (entrySeparator === void 0) { entrySeparator = '_'; }\n    if (!obj || !Object.keys(obj).length) {\n        return undefined;\n    }\n    return Object.keys(obj)\n        .map(function (key) { return \"\" + key + keyValSeparator + obj[key]; })\n        .join(entrySeparator);\n}\n/**\n * Decodes a simple object to javascript. Currently works only for simple,\n * flat objects where values are strings.\n *\n * For example \"foo-bar_boo-baz\" -> { foo: bar, boo: baz }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeObject(input, keyValSeparator, entrySeparator) {\n    if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n    if (entrySeparator === void 0) { entrySeparator = '_'; }\n    if (input == null) {\n        return undefined;\n    }\n    var objStr = input instanceof Array ? input[0] : input;\n    if (!objStr || !objStr.length) {\n        return undefined;\n    }\n    var obj = {};\n    var keyValSeparatorRegExp = new RegExp(keyValSeparator + \"(.*)\");\n    objStr.split(entrySeparator).forEach(function (entryStr) {\n        var _a = entryStr.split(keyValSeparatorRegExp), key = _a[0], value = _a[1];\n        obj[key] = value;\n    });\n    return obj;\n}\n/**\n * Encode simple objects as readable strings. Alias of encodeObject.\n *\n * For example { foo: 123, boo: 521 } -> \"foo-123_boo-521\"\n *\n * @param {Object} object The object to encode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {String} The encoded object\n */\nexport var encodeNumericObject = encodeObject;\n/**\n * Decodes a simple object to javascript where all values are numbers.\n * Currently works only for simple, flat objects.\n *\n * For example \"foo-123_boo-521\" -> { foo: 123, boo: 521 }\n *\n * If an array is provided as input, only the first entry is used.\n *\n * @param {String} input The object string to decode\n * @param {String} keyValSeparator=\"-\" The separator between keys and values\n * @param {String} entrySeparator=\"_\" The separator between entries\n * @return {Object} The javascript object\n */\nexport function decodeNumericObject(input, keyValSeparator, entrySeparator) {\n    if (keyValSeparator === void 0) { keyValSeparator = '-'; }\n    if (entrySeparator === void 0) { entrySeparator = '_'; }\n    var decoded = decodeObject(input, keyValSeparator, entrySeparator);\n    //console.log(\"input:\", input);\n    //console.log(\"decoded:\", decoded);\n    if (!decoded) {\n        return undefined;\n    }\n    //console.log(\"x\");\n    // convert to numbers\n    Object.keys(decoded).forEach(function (key) {\n        if (decoded[key] !== undefined) {\n            decoded[key] = decodeNumber(decoded[key]);\n        }\n    });\n    return decoded;\n}\n","import * as Serialize from './serialize';\n/**\n * String values\n */\nexport var StringParam = {\n    encode: Serialize.encodeString,\n    decode: Serialize.decodeString,\n};\n/**\n * Numbers (integers or floats)\n */\nexport var NumberParam = {\n    encode: Serialize.encodeNumber,\n    decode: Serialize.decodeNumber,\n};\n/**\n * For flat objects where values are strings\n */\nexport var ObjectParam = {\n    encode: Serialize.encodeObject,\n    decode: Serialize.decodeObject,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var ArrayParam = {\n    encode: Serialize.encodeArray,\n    decode: Serialize.decodeArray,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var NumericArrayParam = {\n    encode: Serialize.encodeNumericArray,\n    decode: Serialize.decodeNumericArray,\n};\n/**\n * For any type of data, encoded via JSON.stringify\n */\nexport var JsonParam = {\n    encode: Serialize.encodeJson,\n    decode: Serialize.decodeJson,\n};\n/**\n * For simple dates (YYYY-MM-DD)\n */\nexport var DateParam = {\n    encode: Serialize.encodeDate,\n    decode: Serialize.decodeDate,\n};\n/**\n * For dates in simplified extended ISO format (YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ)\n */\nexport var DateTimeParam = {\n    encode: Serialize.encodeDateTime,\n    decode: Serialize.decodeDateTime,\n};\n/**\n * For boolean values: 1 = true, 0 = false\n */\nexport var BooleanParam = {\n    encode: Serialize.encodeBoolean,\n    decode: Serialize.decodeBoolean,\n};\n/**\n * For flat objects where the values are numbers\n */\nexport var NumericObjectParam = {\n    encode: Serialize.encodeNumericObject,\n    decode: Serialize.decodeNumericObject,\n};\n/**\n * For flat arrays of strings, filters out undefined values during decode\n */\nexport var DelimitedArrayParam = {\n    encode: Serialize.encodeDelimitedArray,\n    decode: Serialize.decodeDelimitedArray,\n};\n/**\n * For flat arrays where the values are numbers, filters out undefined values during decode\n */\nexport var DelimitedNumericArrayParam = {\n    encode: Serialize.encodeDelimitedNumericArray,\n    decode: Serialize.decodeDelimitedNumericArray,\n};\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport { stringify, parse as parseQueryString } from 'query-string';\n/**\n * remove query params that are nully or an empty strings.\n * note: these values are assumed to be already encoded as strings.\n */\nfunction filterNully(query) {\n    var filteredQuery = Object.keys(query).reduce(function (queryAccumulator, queryParam) {\n        // get encoded value for this param\n        var encodedValue = query[queryParam];\n        // if it isn't null or empty string, add it to the accumulated obj\n        if (encodedValue != null && encodedValue !== '') {\n            queryAccumulator[queryParam] = encodedValue;\n        }\n        return queryAccumulator;\n    }, {});\n    return filteredQuery;\n}\n/**\n * Update a location, wiping out parameters not included in encodedQuery\n */\nexport function updateLocation(encodedQuery, location) {\n    var encodedSearchString = stringify(filterNully(encodedQuery));\n    var newLocation = __assign({}, location, { key: \"\" + Date.now(), search: encodedSearchString.length ? \"?\" + encodedSearchString : '', query: encodedQuery });\n    return newLocation;\n}\n/**\n * Update a location while retaining existing parameters\n */\nexport function updateInLocation(encodedQueryReplacements, location) {\n    // if a query is there, use it, otherwise parse the search string\n    var currQuery = location.query || parseQueryString(location.search);\n    var newQuery = __assign({}, currQuery, encodedQueryReplacements);\n    return updateLocation(filterNully(newQuery), location);\n}\n","/**\n * Convert the values in query to strings via the encode functions configured\n * in paramConfigMap\n *\n * @param paramConfigMap Map from query name to { encode, decode } config\n * @param query Query updates mapping param name to decoded value\n */\nexport function encodeQueryParams(paramConfigMap, query) {\n    var encodedQuery = {};\n    var paramNames = Object.keys(query);\n    for (var _i = 0, paramNames_1 = paramNames; _i < paramNames_1.length; _i++) {\n        var paramName = paramNames_1[_i];\n        var decodedValue = query[paramName];\n        if (decodedValue == null) {\n            encodedQuery[paramName] = undefined;\n            continue;\n        }\n        if (!paramConfigMap[paramName]) {\n            if (process.env.NODE_ENV === 'development') {\n                console.warn(\"Encoding parameter \" + paramName + \" as string since it was not configured.\");\n            }\n            // NOTE: we could just not encode it, but it is probably convenient to have\n            // it be included by default as a string type.\n            encodedQuery[paramName] = String(decodedValue);\n        }\n        else {\n            encodedQuery[paramName] = paramConfigMap[paramName].encode(query[paramName]);\n        }\n    }\n    return encodedQuery;\n}\nexport default encodeQueryParams;\n","var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * Adapts standard DOM window history to work with our\n * { replace, push } interface.\n *\n * @param history Standard history provided by DOM\n */\nfunction adaptWindowHistory(history) {\n    return {\n        replace: function (location) {\n            history.replaceState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n        },\n        push: function (location) {\n            history.pushState(location.state, '', location.protocol + \"//\" + location.host + location.pathname + location.search);\n        },\n    };\n}\n/**\n * Adapts @reach/router history to work with our\n * { replace, push } interface.\n *\n * @param history globalHistory from @reach/router\n */\nfunction adaptReachHistory(history) {\n    return {\n        replace: function (location) {\n            history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, { replace: true });\n        },\n        push: function (location) {\n            history.navigate(location.protocol + \"//\" + location.host + location.pathname + location.search, { replace: false });\n        },\n    };\n}\n/**\n * Helper to produce the context value falling back to\n * window history and location if not provided.\n */\nfunction getContextValue(contextValue) {\n    if (contextValue === void 0) { contextValue = {}; }\n    var value = __assign({}, contextValue);\n    var hasWindow = typeof window !== 'undefined';\n    if (hasWindow) {\n        if (!value.history) {\n            value.history = adaptWindowHistory(window.history);\n        }\n        if (!value.location) {\n            value.location = window.location;\n        }\n    }\n    return value;\n}\nexport var QueryParamContext = React.createContext(getContextValue());\n/**\n * Context provider for query params to have access to the\n * active routing system, enabling updates to the URL.\n */\nexport function QueryParamProvider(_a) {\n    var children = _a.children, ReactRouterRoute = _a.ReactRouterRoute, reachHistory = _a.reachHistory, history = _a.history, location = _a.location;\n    // if we have React Router, use it to get the context value\n    if (ReactRouterRoute) {\n        return (React.createElement(ReactRouterRoute, null, function (routeProps) {\n            return (React.createElement(QueryParamContext.Provider, { value: getContextValue(routeProps) }, children));\n        }));\n    }\n    // if we are using reach router, use its history\n    if (reachHistory) {\n        return (React.createElement(QueryParamContext.Provider, { value: getContextValue({\n                history: adaptReachHistory(reachHistory),\n                location: location,\n            }) }, children));\n    }\n    // neither reach nor react-router, so allow manual overrides\n    return (React.createElement(QueryParamContext.Provider, { value: getContextValue({ history: history, location: location }) }, children));\n}\nexport default QueryParamProvider;\n","import { updateLocation, updateInLocation, } from 'serialize-query-params';\n/**\n * Updates the URL to match the specified query changes.\n * If replaceIn or pushIn are used as the updateType, then parameters\n * not specified in queryReplacements are retained. If replace or push\n * are used, only the values in queryReplacements will be available.\n */\nexport function updateUrlQuery(queryReplacements, location, history, updateType) {\n    if (updateType === void 0) { updateType = 'replaceIn'; }\n    switch (updateType) {\n        case 'replaceIn':\n            history.replace(updateInLocation(queryReplacements, location));\n            break;\n        case 'pushIn':\n            history.push(updateInLocation(queryReplacements, location));\n            break;\n        case 'replace':\n            history.replace(updateLocation(queryReplacements, location));\n            break;\n        case 'push':\n            history.push(updateLocation(queryReplacements, location));\n            break;\n        default:\n    }\n}\nexport default updateUrlQuery;\n","import * as React from 'react';\nimport { parse as parseQueryString, encodeQueryParams, } from 'serialize-query-params';\nimport { useQueryParam } from './useQueryParam';\nimport updateUrlQuery from './updateUrlQuery';\nimport { QueryParamContext } from './QueryParamProvider';\n// from https://usehooks.com/usePrevious/\nfunction usePrevious(value) {\n    var ref = React.useRef(value);\n    React.useEffect(function () {\n        ref.current = value;\n    }, [value]);\n    return ref.current;\n}\n// from https://github.com/lodash/lodash/issues/2340#issuecomment-360325395\nfunction isShallowEqual(objA, objB) {\n    for (var key in objA)\n        if (!(key in objB) || objA[key] !== objB[key])\n            return false;\n    for (var key in objB)\n        if (!(key in objA) || objA[key] !== objB[key])\n            return false;\n    return true;\n}\n/**\n * Given a query parameter configuration (mapping query param name to { encode, decode }),\n * return an object with the decoded values and a setter for updating them.\n */\nexport var useQueryParams = function (paramConfigMap) {\n    var _a = React.useContext(QueryParamContext), history = _a.history, location = _a.location;\n    var locationIsObject = typeof location === 'object';\n    // memoize paramConfigMap to make the API nicer for consumers.\n    // otherwise we'd have to useQueryParams(useMemo(() => { foo: NumberParam }, []))\n    var prevParamConfigMap = usePrevious(paramConfigMap);\n    var hasNewParamConfig = isShallowEqual(prevParamConfigMap, paramConfigMap);\n    // prettier-ignore\n    var memoParamConfigMap = React.useMemo(function () { return paramConfigMap; }, [\n        hasNewParamConfig,\n    ]);\n    paramConfigMap = memoParamConfigMap;\n    // ref with current version history object (see #46)\n    var refHistory = React.useRef(history);\n    React.useEffect(function () {\n        refHistory.current = history;\n    }, [history]);\n    // ref with current version location object (see #46)\n    var refLocation = React.useRef(location);\n    React.useEffect(function () {\n        refLocation.current = location;\n    }, [location]);\n    var search = locationIsObject ? location.search : '';\n    // read in the raw query\n    var rawQuery = React.useMemo(function () { return parseQueryString(search) || {}; }, [\n        search,\n    ]);\n    // parse each parameter via useQueryParam\n    // we reuse the logic to not recreate objects\n    var paramNames = Object.keys(paramConfigMap);\n    var paramValues = paramNames.map(function (paramName) {\n        return useQueryParam(paramName, paramConfigMap[paramName], rawQuery)[0];\n    });\n    // we use a memo here to prevent recreating the containing decodedValues object\n    // which would break === comparisons even if no values changed.\n    var decodedValues = React.useMemo(function () {\n        // iterate over the decoded values and build an object\n        var decodedValues = {};\n        for (var i = 0; i < paramNames.length; ++i) {\n            decodedValues[paramNames[i]] = paramValues[i];\n        }\n        return decodedValues;\n    }, paramValues); // eslint-disable-line react-hooks/exhaustive-deps\n    // create a setter for updating multiple query params at once\n    var setQuery = React.useCallback(function (changes, updateType) {\n        // encode as strings for the URL\n        var encodedChanges = encodeQueryParams(paramConfigMap, changes);\n        // update the URL\n        updateUrlQuery(encodedChanges, refHistory.current.location || refLocation.current, // see #46\n        refHistory.current, updateType);\n    }, [paramConfigMap]);\n    // no longer Partial\n    return [decodedValues, setQuery];\n};\nexport default useQueryParams;\n","import * as React from 'react';\nimport { parse as parseQueryString, parseUrl as parseQueryURL, stringify, StringParam, } from 'serialize-query-params';\nimport { QueryParamContext } from './QueryParamProvider';\nimport { updateUrlQuery } from './updateUrlQuery';\n/**\n * Given a query param name and query parameter configuration ({ encode, decode })\n * return the decoded value and a setter for updating it.\n *\n * The setter takes two arguments (newValue, updateType) where updateType\n * is one of 'replace' | 'replaceIn' | 'push' | 'pushIn', defaulting to\n * 'replaceIn'.\n *\n * You may optionally pass in a rawQuery object, otherwise the query is derived\n * from the location available in the QueryParamContext.\n *\n * D = decoded type\n * D2 = return value from decode (typically same as D)\n */\nexport var useQueryParam = function (name, paramConfig, rawQuery) {\n    var _a;\n    if (paramConfig === void 0) { paramConfig = StringParam; }\n    var _b = React.useContext(QueryParamContext), history = _b.history, location = _b.location;\n    // ref with current version history object (see #46)\n    var refHistory = React.useRef(history);\n    React.useEffect(function () {\n        refHistory.current = history;\n    }, [history]);\n    // ref with current version location object (see #46)\n    var refLocation = React.useRef(location);\n    React.useEffect(function () {\n        refLocation.current = location;\n    }, [location]);\n    // read in the raw query\n    if (!rawQuery) {\n        var locationIsObject_1 = typeof location === 'object';\n        var windowIsDefined_1 = typeof window !== 'undefined';\n        rawQuery = React.useMemo(function () {\n            var pathname = {};\n            // handle checking SSR (#13)\n            if (locationIsObject_1) {\n                // in browser\n                if (windowIsDefined_1) {\n                    pathname = parseQueryString(location.search);\n                }\n                else {\n                    // not in browser\n                    var url = location.pathname;\n                    if (location.search) {\n                        url += location.search;\n                    }\n                    pathname = parseQueryURL(url).query;\n                }\n            }\n            return pathname || {};\n        }, [location.search, location.pathname, locationIsObject_1, windowIsDefined_1]);\n    }\n    // read in the encoded string value\n    var encodedValue = rawQuery[name];\n    // note that we use the stringified encoded value since the encoded\n    // value may be an array that is recreated if a different query param\n    // changes. It is sufficient to use this instead of encodedValue in\n    // the useMemo dependency array since it will change any time the actual\n    // meaningful value of encodedValue changes.\n    var arraySafeEncodedValue = encodedValue instanceof Array\n        ? stringify((_a = {}, _a[name] = encodedValue, _a))\n        : encodedValue;\n    // decode if the encoded value has changed, otherwise\n    // re-use memoized value\n    var decodedValue = React.useMemo(function () {\n        if (encodedValue == null) {\n            return undefined;\n        }\n        return paramConfig.decode(encodedValue);\n    }, [arraySafeEncodedValue, paramConfig]); // eslint-disable-line react-hooks/exhaustive-deps\n    // create the setter, memoizing via useCallback\n    var setValue = React.useCallback(function (newValue, updateType) {\n        var _a;\n        var newEncodedValue = paramConfig.encode(newValue);\n        updateUrlQuery((_a = {}, _a[name] = newEncodedValue, _a), refHistory.current.location || refLocation.current, // see #46 for why we use a ref here\n        refHistory.current, updateType);\n    }, [paramConfig, name]);\n    return [decodedValue, setValue];\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Line(_ref) {\n  var _ref$from = _ref.from,\n      from = _ref$from === void 0 ? {\n    x: 0,\n    y: 0\n  } : _ref$from,\n      _ref$to = _ref.to,\n      to = _ref$to === void 0 ? {\n    x: 1,\n    y: 1\n  } : _ref$to,\n      _ref$fill = _ref.fill,\n      fill = _ref$fill === void 0 ? 'transparent' : _ref$fill,\n      className = _ref.className,\n      innerRef = _ref.innerRef,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"from\", \"to\", \"fill\", \"className\", \"innerRef\"]);\n\n  var isRectilinear = from.x === to.x || from.y === to.y;\n  return /*#__PURE__*/React.createElement(\"line\", _extends({\n    ref: innerRef,\n    className: cx('visx-line', className),\n    x1: from.x,\n    y1: from.y,\n    x2: to.x,\n    y2: to.y,\n    fill: fill,\n    shapeRendering: isRectilinear ? 'crispEdges' : 'auto'\n  }, restProps));\n}","/**\n * @file\n * Origami o-buttons wrapped\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport validIcons from './icons';\nimport './styles.scss';\n\n/* eslint-disable react/button-has-type */\nexport const Button = ({\n  className,\n  selected,\n  type,\n  buttonType,\n  children,\n  big,\n  icon,\n  theme,\n  disabled,\n  label,\n  inverse,\n  ...props\n}) => (\n  <button\n    className={classnames(\n      className,\n      'o-buttons',\n      `o-buttons--${type}`,\n      theme && `o-buttons--${theme}`,\n      big && 'o-buttons--big',\n      icon && `o-buttons-icon o-buttons-icon--${icon}`,\n      icon && label && 'o-buttons-icon--icon-only',\n      inverse && 'o-buttons--inverse',\n    )}\n    type={buttonType}\n    aria-pressed={selected}\n    disabled={disabled}\n    {...props}\n  >\n    {label && icon ? <span className=\"o-buttons-icon__label\">{label}</span> : children}\n  </button>\n);\n\nButton.propTypes = {\n  className: PropTypes.string,\n  theme: PropTypes.oneOf(['mono', 'b2c', '']),\n  selected: PropTypes.bool,\n  disabled: PropTypes.bool,\n  big: PropTypes.bool,\n  buttonType: PropTypes.oneOf(['button', 'submit', 'reset']),\n  type: PropTypes.oneOf(['primary', 'secondary']),\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),\n  icon: PropTypes.oneOf([...validIcons, '']),\n  label: PropTypes.string,\n  inverse: PropTypes.bool,\n};\n\nButton.defaultProps = {\n  className: '',\n  theme: '',\n  selected: undefined,\n  disabled: false,\n  big: false,\n  icon: '',\n  type: 'secondary',\n  buttonType: 'button',\n  label: '',\n  inverse: false,\n  children: 'Click me',\n};\n\nexport const ButtonGroup = ({ children, className }) => (\n  <div className={classnames(className, 'o-buttons-group')}>{children}</div>\n);\n\nButtonGroup.propTypes = {\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,\n  className: PropTypes.string,\n};\n\nButtonGroup.defaultProps = {\n  className: undefined,\n};\n\nexport const ButtonPaginationGroup = ({ children, className }) => (\n  <div className={classnames(className, 'o-buttons-pagination')}>{children}</div>\n);\n\nButtonPaginationGroup.propTypes = {\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,\n  className: PropTypes.string,\n};\n\nButtonPaginationGroup.defaultProps = {\n  className: undefined,\n};\n\nexport default Button;\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter: function(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * rad2deg;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * deg2rad;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return hcl2lab(this).rgb();\n  }\n}));\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import { interpolateRgb, interpolateLab, interpolateHcl, interpolateHclLong, interpolateHsl, interpolateHslLong, interpolateCubehelix, interpolateCubehelixLong } from 'd3-interpolate';\nvar interpolatorMap = {\n  lab: interpolateLab,\n  hcl: interpolateHcl,\n  'hcl-long': interpolateHclLong,\n  hsl: interpolateHsl,\n  'hsl-long': interpolateHslLong,\n  cubehelix: interpolateCubehelix,\n  'cubehelix-long': interpolateCubehelixLong,\n  rgb: interpolateRgb\n};\nexport default function createColorInterpolator(interpolate) {\n  switch (interpolate) {\n    case 'lab':\n    case 'hcl':\n    case 'hcl-long':\n    case 'hsl':\n    case 'hsl-long':\n    case 'cubehelix':\n    case 'cubehelix-long':\n    case 'rgb':\n      return interpolatorMap[interpolate];\n\n    default:\n  }\n\n  var type = interpolate.type,\n      gamma = interpolate.gamma;\n  var interpolator = interpolatorMap[type];\n  return typeof gamma === 'undefined' ? interpolator : interpolator.gamma(gamma);\n}","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n","import { timeSecond, timeMinute, timeHour, timeDay, timeYear, timeMonth, timeWeek, utcSecond, utcMinute, utcHour, utcDay, utcWeek, utcMonth, utcYear } from 'd3-time';\nimport isUtcScale from '../utils/isUtcScale';\nvar localTimeIntervals = {\n  day: timeDay,\n  hour: timeHour,\n  minute: timeMinute,\n  month: timeMonth,\n  second: timeSecond,\n  week: timeWeek,\n  year: timeYear\n};\nvar utcIntervals = {\n  day: utcDay,\n  hour: utcHour,\n  minute: utcMinute,\n  month: utcMonth,\n  second: utcSecond,\n  week: utcWeek,\n  year: utcYear\n};\nexport default function applyNice(scale, config) {\n  if ('nice' in config && typeof config.nice !== 'undefined' && 'nice' in scale) {\n    var nice = config.nice;\n\n    if (typeof nice === 'boolean') {\n      if (nice) {\n        scale.nice();\n      }\n    } else if (typeof nice === 'number') {\n      scale.nice(nice);\n    } else {\n      var timeScale = scale;\n      var isUtc = isUtcScale(timeScale);\n\n      if (typeof nice === 'string') {\n        timeScale.nice(isUtc ? utcIntervals[nice] : localTimeIntervals[nice]);\n      } else {\n        var interval = nice.interval,\n            step = nice.step;\n        var parsedInterval = (isUtc ? utcIntervals[interval] : localTimeIntervals[interval]).every(step);\n\n        if (parsedInterval != null) {\n          timeScale.nice(parsedInterval);\n        }\n      }\n    }\n  }\n}","import domain from './domain';\nimport range from './range';\nimport align from './align';\nimport base from './base';\nimport clamp from './clamp';\nimport constant from './constant';\nimport exponent from './exponent';\nimport interpolate from './interpolate';\nimport nice from './nice';\nimport padding from './padding';\nimport reverse from './reverse';\nimport round from './round';\nimport unknown from './unknown';\nimport zero from './zero';\n/**\n * List of all operators, in order of execution\n */\n\nexport var ALL_OPERATORS = [// domain => nice => zero\n'domain', 'nice', 'zero', // interpolate before round\n'interpolate', 'round', // set range then reverse\n'range', 'reverse', // Order does not matter for these operators\n'align', 'base', 'clamp', 'constant', 'exponent', 'padding', 'unknown'];\n// Use Record to enforce that all keys in OperatorType must exist.\nvar operators = {\n  domain: domain,\n  nice: nice,\n  zero: zero,\n  interpolate: interpolate,\n  round: round,\n  align: align,\n  base: base,\n  clamp: clamp,\n  constant: constant,\n  exponent: exponent,\n  padding: padding,\n  range: range,\n  reverse: reverse,\n  unknown: unknown\n};\nexport default function scaleOperator() {\n  for (var _len = arguments.length, ops = new Array(_len), _key = 0; _key < _len; _key++) {\n    ops[_key] = arguments[_key];\n  }\n\n  var selection = new Set(ops);\n  var selectedOps = ALL_OPERATORS.filter(function (o) {\n    return selection.has(o);\n  });\n  return function applyOperators(scale, config) {\n    if (typeof config !== 'undefined') {\n      selectedOps.forEach(function (op) {\n        operators[op](scale, config);\n      });\n    }\n\n    return scale;\n  };\n}","export default function applyDomain(scale, config) {\n  if (config.domain) {\n    if ('nice' in scale || 'quantiles' in scale) {\n      // continuous input scales\n      scale.domain(config.domain);\n    } else if ('padding' in scale) {\n      // point and band scales\n      scale.domain(config.domain);\n    } else {\n      // ordinal and threshold scale\n      scale.domain(config.domain);\n    }\n  }\n}","export default function applyZero(scale, config) {\n  if ('zero' in config && config.zero === true) {\n    var domain = scale.domain();\n    var a = domain[0],\n        b = domain[1];\n    var isDescending = b < a;\n\n    var _ref = isDescending ? [b, a] : [a, b],\n        min = _ref[0],\n        max = _ref[1];\n\n    var domainWithZero = [Math.min(0, min), Math.max(0, max)];\n    scale.domain(isDescending ? domainWithZero.reverse() : domainWithZero);\n  }\n}","import createColorInterpolator from '../utils/createColorInterpolator';\nexport default function applyInterpolate(scale, config) {\n  if ('interpolate' in config && 'interpolate' in scale && typeof config.interpolate !== 'undefined') {\n    var interpolator = createColorInterpolator(config.interpolate);\n    scale.interpolate(interpolator);\n  }\n}","import { interpolateRound } from 'd3-interpolate';\nexport default function applyRound(scale, config) {\n  if ('round' in config && typeof config.round !== 'undefined') {\n    if (config.round && 'interpolate' in config && typeof config.interpolate !== 'undefined') {\n      console.warn(\"[visx/scale/applyRound] ignoring round: scale config contains round and interpolate. only applying interpolate. config:\", config);\n    } else if ('round' in scale) {\n      // for point and band scales\n      scale.round(config.round);\n    } else if ('interpolate' in scale && config.round) {\n      // for continuous output scales\n      // setting config.round = true\n      // is actually setting interpolator to interpolateRound\n      // as these scales do not have scale.round() function\n      scale.interpolate(interpolateRound);\n    }\n  }\n}","export default function applyAlign(scale, config) {\n  if ('align' in scale && 'align' in config && typeof config.align !== 'undefined') {\n    scale.align(config.align);\n  }\n}","export default function applyBase(scale, config) {\n  if ('base' in scale && 'base' in config && typeof config.base !== 'undefined') {\n    scale.base(config.base);\n  }\n}","export default function applyClamp(scale, config) {\n  if ('clamp' in scale && 'clamp' in config && typeof config.clamp !== 'undefined') {\n    scale.clamp(config.clamp);\n  }\n}","export default function applyConstant(scale, config) {\n  if ('constant' in scale && 'constant' in config && typeof config.constant !== 'undefined') {\n    scale.constant(config.constant);\n  }\n}","export default function applyExponent(scale, config) {\n  if ('exponent' in scale && 'exponent' in config && typeof config.exponent !== 'undefined') {\n    scale.exponent(config.exponent);\n  }\n}","export default function applyPadding(scale, config) {\n  if ('padding' in scale && 'padding' in config && typeof config.padding !== 'undefined') {\n    scale.padding(config.padding);\n  }\n\n  if ('paddingInner' in scale && 'paddingInner' in config && typeof config.paddingInner !== 'undefined') {\n    scale.paddingInner(config.paddingInner);\n  }\n\n  if ('paddingOuter' in scale && 'paddingOuter' in config && typeof config.paddingOuter !== 'undefined') {\n    scale.paddingOuter(config.paddingOuter);\n  }\n}","export default function applyRange(scale, config) {\n  if (config.range) {\n    if ('padding' in scale) {\n      // point and band scales\n      scale.range(config.range);\n    } else {\n      // the rest\n      scale.range(config.range);\n    }\n  }\n}","export default function applyReverse(scale, config) {\n  if (config.reverse) {\n    var reversedRange = scale.range().slice().reverse();\n\n    if ('padding' in scale) {\n      // point and band scales\n      scale.range(reversedRange);\n    } else {\n      // the rest\n      scale.range(reversedRange);\n    }\n  }\n}","export default function applyUnknown(scale, config) {\n  if ('unknown' in scale && 'unknown' in config && typeof config.unknown !== 'undefined') {\n    scale.unknown(config.unknown);\n  }\n}","/**\n * @file\n * Reusable proptypes\n */\n\nimport PropTypes from 'prop-types';\n\nexport const StringBoolPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.bool]);\n\nexport const flagsPropType = PropTypes.shape({\n  prod: StringBoolPropType.isRequired,\n  errorReporting: StringBoolPropType.isRequired,\n  analytics: StringBoolPropType.isRequired,\n  googleAnalytics: StringBoolPropType.isRequired,\n  ads: StringBoolPropType.isRequired,\n  mainImage: StringBoolPropType.isRequired,\n  summary: StringBoolPropType.isRequired,\n  bylines: StringBoolPropType.isRequired,\n  onwardjourney: StringBoolPropType.isRequired,\n  shareButtons: StringBoolPropType.isRequired,\n  header: StringBoolPropType.isRequired,\n  footer: StringBoolPropType.isRequired,\n  comments: StringBoolPropType.isRequired,\n  data: StringBoolPropType.isRequired,\n  dark: StringBoolPropType.isRequired,\n});\n\nexport const mainImagePropType = PropTypes.oneOfType([\n  PropTypes.shape({\n    uuid: PropTypes.string.isRequired,\n  }),\n  PropTypes.shape({\n    url: PropTypes.string.isRequired,\n  }),\n]).isRequired;\n\nexport const trackingPropType = PropTypes.shape({\n  micrositeName: PropTypes.string,\n  product: PropTypes.string,\n});\n\nexport const topicPropType = PropTypes.shape({\n  url: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n});\n\nexport const dataMetaPropType = PropTypes.shape({\n  '@context': PropTypes.oneOf(['https://schema.org/']),\n  '@type': PropTypes.oneOf(['Dataset']),\n  name: PropTypes.string.isRequired,\n  description: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  sameAs: PropTypes.string.isRequired,\n  keywords: PropTypes.arrayOf(PropTypes.string).isRequired,\n  creator: PropTypes.shape({\n    '@type': PropTypes.oneOf(['Organization']),\n    url: PropTypes.string.isRequired,\n    name: PropTypes.string.isRequired,\n    contactPoint: PropTypes.shape({\n      '@type': PropTypes.oneOf(['ContactPoint']),\n      contactType: PropTypes.string,\n      telephone: PropTypes.string,\n      email: PropTypes.string,\n    }),\n  }).isRequired,\n  includedInDataCatalog: PropTypes.shape({\n    '@type': PropTypes.oneOf(['DataCatalog']),\n    name: PropTypes.string.isRequired,\n  }),\n  distribution: PropTypes.arrayOf(\n    PropTypes.shape({\n      '@type': PropTypes.oneOf(['DataDownload']),\n      encodingFormat: PropTypes.string.isRequired,\n      contentUrl: PropTypes.string.isRequired,\n    }),\n  ),\n  // Dates the dataset covers\n  temporalCoverage: PropTypes.string.isRequired,\n  // Where the dataset covers. See spec.\n  spatialCoverage: PropTypes.shape({\n    '@type': PropTypes.oneOf(['Place']),\n    geo: PropTypes.shape({\n      '@type': PropTypes.oneOf(['GeoShape']),\n      box: PropTypes.string.isRequired,\n    }),\n  }),\n});\n\nexport const bylinesPropType = PropTypes.oneOfType([\n  PropTypes.string,\n  PropTypes.arrayOf(\n    PropTypes.shape({\n      name: PropTypes.string.isRequired,\n      url: PropTypes.string,\n      location: PropTypes.string,\n    }),\n  )\n]);\n\nexport default '';\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * @file\n * CSS styles for <ChartTopper />\n */\n\nimport { css } from '@emotion/core';\n\nconst base = css`\n  font-family: MetricWeb, sans-serif;\n  font-weight: 400;\n`;\n\nexport const stabRuleStyles = css`\n  fill: #000000;\n`;\n\nexport const stabRuleStylesSocial = css`\n  fill: #ffffff;\n`;\n\nexport const goalpostsStyles = css`\n  fill: none;\n  stroke: #000000;\n  stroke-width: 0.3;\n`;\n\nexport const titleStylesBase = css`\n  ${base};\n  fill: #000000;\n`;\n\nexport const titleStylesPrint = css`\n  font-weight: 600;\n`;\n\nexport const titleStylesSocial = css`\n  fill: #ffffff;\n`;\n\nexport const titleStylesVideo = css`\n  fill: #ffffff;\n`;\n\nexport const subtitleStylesBase = css`\n  ${base};\n  fill: #66605c;\n`;\n\nexport const subtitleStylesPrint = css`\n  fill: #000000;\n`;\n\nexport const subtitleStylesSocial = css`\n  fill: #8e9095;\n`;\n\nexport const subtitleStylesVideo = css`\n  fill: #8e9095;\n`;\n","/**\n * @file\n * Article layout\n */\n\nimport React, { createContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { flagsPropType, StringBoolPropType } from '../shared/proptypes';\nimport Header from '../header';\nimport Analytics from '../analytics';\nimport { TopAd } from '../ads';\nimport OnwardJourney from '../onwardjourney';\nimport Comments from '../comments';\nimport Footer from '../footer';\nimport './styles.scss';\nimport { useAds, useLayoutChangeEvents } from '../shared/hooks';\n\nexport const Context = createContext({});\n\nconst ArticleLayout = ({ flags, ads, children, ...props }) => {\n  const breakpoint = useLayoutChangeEvents();\n  useAds(ads, flags.ads);\n\n  return (\n    <Context.Provider\n      value={{\n        flags,\n        ads,\n        breakpoint,\n        ...props,\n      }}\n    >\n      {flags.analytics && <Analytics {...{ ...props, flags, breakpoint }} />}\n      {flags.ads && <TopAd />}\n      {flags.header && <Header key=\"header\" {...{ ...props, flags, breakpoint }} />}\n      {children}\n      {flags.onwardjourney && <OnwardJourney key=\"oj\" {...{ ...props, breakpoint }} />}\n      {flags.comments && <Comments key=\"comments\" {...{ ...props, flags, breakpoint }} />}\n      {flags.footer && <Footer key=\"footer\" {...{ ...props, flags, breakpoint }} />}\n    </Context.Provider>\n  );\n};\n\nArticleLayout.displayName = 'GArticleLayout';\n\nArticleLayout.propTypes = {\n  flags: flagsPropType.isRequired,\n  ads: PropTypes.exact({\n    gptSite: PropTypes.string.isRequired,\n    gptZone: StringBoolPropType.isRequired,\n    targeting: StringBoolPropType.isRequired,\n  }),\n  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]).isRequired,\n};\n\nArticleLayout.defaultProps = {\n  ads: {\n    gptSite: 'test.5887.origami', // Ad unit hierarchy makes ads more granular.\n    gptZone: false, // Start with ft.com and /companies /markets /world as appropriate to your story\n    targeting: false, // granular targeting is optional and will be specified by the ads team\n  },\n};\n\nexport default ArticleLayout;\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","'use strict'\n\nfunction markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","/**\n * @file\n * Basic loading throbber\n */\n\nimport React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nexport const Loading = ({ size, theme }) => (\n  <div className={classNames('g-loading', `g-loading--${size}`, `g-loading--${theme}`)} />\n);\n\nLoading.propTypes = {\n  size: PropTypes.oneOf(['small', 'medium', 'large']),\n  theme: PropTypes.oneOf(['light', 'dark']),\n};\n\nLoading.defaultProps = {\n  size: 'small',\n  theme: 'dark',\n};\n\nLoading.displayName = 'GLoading';\nexport default Loading;\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import memoize from 'lodash/memoize';\nvar MEASUREMENT_ELEMENT_ID = '__react_svg_text_measurement_id';\n\nfunction getStringWidth(str, style) {\n  try {\n    // Calculate length of each word to be used to determine number of words per line\n    var textEl = document.getElementById(MEASUREMENT_ELEMENT_ID);\n\n    if (!textEl) {\n      var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n      svg.style.width = '0';\n      svg.style.height = '0';\n      svg.style.position = 'absolute';\n      svg.style.top = '-100%';\n      svg.style.left = '-100%';\n      textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n      textEl.setAttribute('id', MEASUREMENT_ELEMENT_ID);\n      svg.appendChild(textEl);\n      document.body.appendChild(svg);\n    }\n\n    Object.assign(textEl.style, style);\n    textEl.textContent = str;\n    return textEl.getComputedTextLength();\n  } catch (e) {\n    return null;\n  }\n}\n\nexport default memoize(getStringWidth, function (str, style) {\n  return str + \"_\" + JSON.stringify(style);\n});","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { useMemo } from 'react';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport getStringWidth from '../util/getStringWidth';\n\nfunction isNumber(val) {\n  return typeof val === 'number';\n}\n\nfunction isXOrYInValid(xOrY) {\n  return (// number that is not NaN or Infinity\n    typeof xOrY === 'number' && Number.isFinite(xOrY) || // for percentage\n    typeof xOrY === 'string'\n  );\n}\n\nexport default function useText(props) {\n  var _props$verticalAnchor = props.verticalAnchor,\n      verticalAnchor = _props$verticalAnchor === void 0 ? 'end' : _props$verticalAnchor,\n      _props$scaleToFit = props.scaleToFit,\n      scaleToFit = _props$scaleToFit === void 0 ? false : _props$scaleToFit,\n      angle = props.angle,\n      width = props.width,\n      _props$lineHeight = props.lineHeight,\n      lineHeight = _props$lineHeight === void 0 ? '1em' : _props$lineHeight,\n      _props$capHeight = props.capHeight,\n      capHeight = _props$capHeight === void 0 ? '0.71em' : _props$capHeight,\n      children = props.children,\n      style = props.style,\n      textProps = _objectWithoutPropertiesLoose(props, [\"verticalAnchor\", \"scaleToFit\", \"angle\", \"width\", \"lineHeight\", \"capHeight\", \"children\", \"style\"]);\n\n  var _textProps$x = textProps.x,\n      x = _textProps$x === void 0 ? 0 : _textProps$x,\n      _textProps$y = textProps.y,\n      y = _textProps$y === void 0 ? 0 : _textProps$y;\n  var isXOrYNotValid = !isXOrYInValid(x) || !isXOrYInValid(y);\n\n  var _useMemo = useMemo(function () {\n    var words = children == null ? [] : children.toString().split(/(?:(?!\\u00A0+)\\s+)/);\n    return {\n      wordsWithWidth: words.map(function (word) {\n        return {\n          word: word,\n          wordWidth: getStringWidth(word, style) || 0\n        };\n      }),\n      spaceWidth: getStringWidth(\"\\xA0\", style) || 0\n    };\n  }, [children, style]),\n      wordsWithWidth = _useMemo.wordsWithWidth,\n      spaceWidth = _useMemo.spaceWidth;\n\n  var wordsByLines = useMemo(function () {\n    if (isXOrYNotValid) {\n      return [];\n    } // Only perform calculations if using features that require them (multiline, scaleToFit)\n\n\n    if (width || scaleToFit) {\n      return wordsWithWidth.reduce(function (result, _ref) {\n        var word = _ref.word,\n            wordWidth = _ref.wordWidth;\n        var currentLine = result[result.length - 1];\n\n        if (currentLine && (width == null || scaleToFit || (currentLine.width || 0) + wordWidth + spaceWidth < width)) {\n          // Word can be added to an existing line\n          currentLine.words.push(word);\n          currentLine.width = currentLine.width || 0;\n          currentLine.width += wordWidth + spaceWidth;\n        } else {\n          // Add first word to line or word is too long to scaleToFit on existing line\n          var newLine = {\n            words: [word],\n            width: wordWidth\n          };\n          result.push(newLine);\n        }\n\n        return result;\n      }, []);\n    }\n\n    return [{\n      words: children == null ? [] : children.toString().split(/(?:(?!\\u00A0+)\\s+)/)\n    }];\n  }, [isXOrYNotValid, width, scaleToFit, children, wordsWithWidth, spaceWidth]);\n  var startDy = useMemo(function () {\n    var startDyStr = isXOrYNotValid ? '' : verticalAnchor === 'start' ? reduceCSSCalc(\"calc(\" + capHeight + \")\") : verticalAnchor === 'middle' ? reduceCSSCalc(\"calc(\" + (wordsByLines.length - 1) / 2 + \" * -\" + lineHeight + \" + (\" + capHeight + \" / 2))\") : reduceCSSCalc(\"calc(\" + (wordsByLines.length - 1) + \" * -\" + lineHeight + \")\");\n    return startDyStr;\n  }, [isXOrYNotValid, verticalAnchor, capHeight, wordsByLines.length, lineHeight]);\n  var transform = useMemo(function () {\n    var transforms = [];\n\n    if (isXOrYNotValid) {\n      return '';\n    }\n\n    if (isNumber(x) && isNumber(y) && isNumber(width) && scaleToFit && wordsByLines.length > 0) {\n      var lineWidth = wordsByLines[0].width || 1;\n      var sx = width / lineWidth;\n      var sy = sx;\n      var originX = x - sx * x;\n      var originY = y - sy * y;\n      transforms.push(\"matrix(\" + sx + \", 0, 0, \" + sy + \", \" + originX + \", \" + originY + \")\");\n    }\n\n    if (angle) {\n      transforms.push(\"rotate(\" + angle + \", \" + x + \", \" + y + \")\");\n    }\n\n    return transforms.length > 0 ? transforms.join(' ') : '';\n  }, [isXOrYNotValid, x, y, width, scaleToFit, wordsByLines, angle]);\n  return {\n    wordsByLines: wordsByLines,\n    startDy: startDy,\n    transform: transform\n  };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport useText from './hooks/useText';\nimport { TextProps } from './types';\nexport { TextProps } from './types';\nvar SVG_STYLE = {\n  overflow: 'visible'\n};\nexport default function Text(props) {\n  var _props$dx = props.dx,\n      dx = _props$dx === void 0 ? 0 : _props$dx,\n      _props$dy = props.dy,\n      dy = _props$dy === void 0 ? 0 : _props$dy,\n      _props$textAnchor = props.textAnchor,\n      textAnchor = _props$textAnchor === void 0 ? 'start' : _props$textAnchor,\n      innerRef = props.innerRef,\n      innerTextRef = props.innerTextRef,\n      verticalAnchor = props.verticalAnchor,\n      angle = props.angle,\n      _props$lineHeight = props.lineHeight,\n      lineHeight = _props$lineHeight === void 0 ? '1em' : _props$lineHeight,\n      _props$scaleToFit = props.scaleToFit,\n      scaleToFit = _props$scaleToFit === void 0 ? false : _props$scaleToFit,\n      capHeight = props.capHeight,\n      width = props.width,\n      textProps = _objectWithoutPropertiesLoose(props, [\"dx\", \"dy\", \"textAnchor\", \"innerRef\", \"innerTextRef\", \"verticalAnchor\", \"angle\", \"lineHeight\", \"scaleToFit\", \"capHeight\", \"width\"]);\n\n  var _textProps$x = textProps.x,\n      x = _textProps$x === void 0 ? 0 : _textProps$x,\n      fontSize = textProps.fontSize;\n\n  var _useText = useText(props),\n      wordsByLines = _useText.wordsByLines,\n      startDy = _useText.startDy,\n      transform = _useText.transform;\n\n  return /*#__PURE__*/React.createElement(\"svg\", {\n    ref: innerRef,\n    x: dx,\n    y: dy,\n    fontSize: fontSize,\n    style: SVG_STYLE\n  }, wordsByLines.length > 0 ? /*#__PURE__*/React.createElement(\"text\", _extends({\n    ref: innerTextRef,\n    transform: transform\n  }, textProps, {\n    textAnchor: textAnchor\n  }), wordsByLines.map(function (line, index) {\n    return /*#__PURE__*/React.createElement(\"tspan\", {\n      key: index,\n      x: x,\n      dy: index === 0 ? startDy : lineHeight\n    }, line.words.join(' '));\n  })) : null);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { Line } from '@visx/shape';\nimport { Group } from '@visx/group';\nimport { Text } from '@visx/text';\nimport Orientation from '../constants/orientation';\nexport default function Ticks(_ref) {\n  var hideTicks = _ref.hideTicks,\n      horizontal = _ref.horizontal,\n      orientation = _ref.orientation,\n      tickClassName = _ref.tickClassName,\n      tickComponent = _ref.tickComponent,\n      allTickLabelProps = _ref.tickLabelProps,\n      _ref$tickStroke = _ref.tickStroke,\n      tickStroke = _ref$tickStroke === void 0 ? '#222' : _ref$tickStroke,\n      tickTransform = _ref.tickTransform,\n      ticks = _ref.ticks,\n      strokeWidth = _ref.strokeWidth,\n      tickLineProps = _ref.tickLineProps;\n  return ticks.map(function (_ref2) {\n    var _allTickLabelProps$in;\n\n    var value = _ref2.value,\n        index = _ref2.index,\n        from = _ref2.from,\n        to = _ref2.to,\n        formattedValue = _ref2.formattedValue;\n    var tickLabelProps = (_allTickLabelProps$in = allTickLabelProps[index]) != null ? _allTickLabelProps$in : {};\n    var tickLabelFontSize = Math.max(10, typeof tickLabelProps.fontSize === 'number' && tickLabelProps.fontSize || 0);\n    var tickYCoord = to.y + (horizontal && orientation !== Orientation.top ? tickLabelFontSize : 0);\n    return /*#__PURE__*/React.createElement(Group, {\n      key: \"visx-tick-\" + value + \"-\" + index,\n      className: cx('visx-axis-tick', tickClassName),\n      transform: tickTransform\n    }, !hideTicks && /*#__PURE__*/React.createElement(Line, _extends({\n      from: from,\n      to: to,\n      stroke: tickStroke,\n      strokeWidth: strokeWidth,\n      strokeLinecap: \"square\"\n    }, tickLineProps)), tickComponent ? tickComponent(_extends({}, tickLabelProps, {\n      x: to.x,\n      y: tickYCoord,\n      formattedValue: formattedValue\n    })) : /*#__PURE__*/React.createElement(Text, _extends({\n      x: to.x,\n      y: tickYCoord\n    }, tickLabelProps), formattedValue));\n  });\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { Line } from '@visx/shape';\nimport { Text } from '@visx/text';\nimport getLabelTransform from '../utils/getLabelTransform';\nimport Ticks from './Ticks';\nimport { Orientation } from '..';\nvar defaultTextProps = {\n  textAnchor: 'middle',\n  fontFamily: 'Arial',\n  fontSize: 10,\n  fill: '#222'\n};\nexport default function AxisRenderer(_ref) {\n  var axisFromPoint = _ref.axisFromPoint,\n      axisLineClassName = _ref.axisLineClassName,\n      axisToPoint = _ref.axisToPoint,\n      hideAxisLine = _ref.hideAxisLine,\n      hideTicks = _ref.hideTicks,\n      horizontal = _ref.horizontal,\n      _ref$label = _ref.label,\n      label = _ref$label === void 0 ? '' : _ref$label,\n      labelClassName = _ref.labelClassName,\n      _ref$labelOffset = _ref.labelOffset,\n      labelOffset = _ref$labelOffset === void 0 ? 14 : _ref$labelOffset,\n      _ref$labelProps = _ref.labelProps,\n      labelProps = _ref$labelProps === void 0 ? defaultTextProps : _ref$labelProps,\n      _ref$orientation = _ref.orientation,\n      orientation = _ref$orientation === void 0 ? Orientation.bottom : _ref$orientation,\n      scale = _ref.scale,\n      _ref$stroke = _ref.stroke,\n      stroke = _ref$stroke === void 0 ? '#222' : _ref$stroke,\n      strokeDasharray = _ref.strokeDasharray,\n      _ref$strokeWidth = _ref.strokeWidth,\n      strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,\n      tickClassName = _ref.tickClassName,\n      tickComponent = _ref.tickComponent,\n      tickLineProps = _ref.tickLineProps,\n      _ref$tickLabelProps = _ref.tickLabelProps,\n      tickLabelProps = _ref$tickLabelProps === void 0 ? function () {\n    return (\n      /** tickValue, index, tickValues */\n      defaultTextProps\n    );\n  } : _ref$tickLabelProps,\n      _ref$tickLength = _ref.tickLength,\n      tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n      _ref$tickStroke = _ref.tickStroke,\n      tickStroke = _ref$tickStroke === void 0 ? '#222' : _ref$tickStroke,\n      tickTransform = _ref.tickTransform,\n      ticks = _ref.ticks,\n      _ref$ticksComponent = _ref.ticksComponent,\n      ticksComponent = _ref$ticksComponent === void 0 ? Ticks : _ref$ticksComponent;\n  // compute the max tick label size to compute label offset\n  var allTickLabelProps = ticks.map(function (_ref2) {\n    var value = _ref2.value,\n        index = _ref2.index;\n    return tickLabelProps(value, index, ticks);\n  });\n  var maxTickLabelFontSize = Math.max.apply(Math, [10].concat(allTickLabelProps.map(function (props) {\n    return typeof props.fontSize === 'number' ? props.fontSize : 0;\n  })));\n  return /*#__PURE__*/React.createElement(React.Fragment, null, ticksComponent({\n    hideTicks: hideTicks,\n    horizontal: horizontal,\n    orientation: orientation,\n    scale: scale,\n    tickClassName: tickClassName,\n    tickComponent: tickComponent,\n    tickLabelProps: allTickLabelProps,\n    tickStroke: tickStroke,\n    tickTransform: tickTransform,\n    ticks: ticks,\n    strokeWidth: strokeWidth,\n    tickLineProps: tickLineProps\n  }), !hideAxisLine && /*#__PURE__*/React.createElement(Line, {\n    className: cx('visx-axis-line', axisLineClassName),\n    from: axisFromPoint,\n    to: axisToPoint,\n    stroke: stroke,\n    strokeWidth: strokeWidth,\n    strokeDasharray: strokeDasharray\n  }), label && /*#__PURE__*/React.createElement(Text, _extends({\n    className: cx('visx-axis-label', labelClassName)\n  }, getLabelTransform({\n    labelOffset: labelOffset,\n    labelProps: labelProps,\n    orientation: orientation,\n    range: scale.range(),\n    tickLabelFontSize: maxTickLabelFontSize,\n    tickLength: tickLength\n  }), labelProps), label));\n}","import Orientation from '../constants/orientation';\nexport default function getLabelTransform(_ref) {\n  var labelOffset = _ref.labelOffset,\n      labelProps = _ref.labelProps,\n      orientation = _ref.orientation,\n      range = _ref.range,\n      tickLabelFontSize = _ref.tickLabelFontSize,\n      tickLength = _ref.tickLength;\n  var sign = orientation === Orientation.left || orientation === Orientation.top ? -1 : 1;\n  var x;\n  var y;\n  var transform;\n\n  if (orientation === Orientation.top || orientation === Orientation.bottom) {\n    var yBottomOffset = orientation === Orientation.bottom && typeof labelProps.fontSize === 'number' ? labelProps.fontSize : 0;\n    x = (Number(range[0]) + Number(range[range.length - 1])) / 2;\n    y = sign * (tickLength + labelOffset + tickLabelFontSize + yBottomOffset);\n  } else {\n    x = sign * ((Number(range[0]) + Number(range[range.length - 1])) / 2);\n    y = -(tickLength + labelOffset);\n    transform = \"rotate(\" + sign * 90 + \")\";\n  }\n\n  return {\n    x: x,\n    y: y,\n    transform: transform\n  };\n}","export default function toString(x) {\n  return x == null ? void 0 : x.toString();\n}","import { Point } from '@visx/point';\nexport default function createPoint(_ref, horizontal) {\n  var x = _ref.x,\n      y = _ref.y;\n  return new Point(horizontal ? {\n    x: x,\n    y: y\n  } : {\n    x: y,\n    y: x\n  });\n}","import _pt from \"prop-types\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { Group } from '@visx/group';\nimport { getTicks, coerceNumber } from '@visx/scale';\nimport AxisRenderer from './AxisRenderer';\nimport getTickPosition from '../utils/getTickPosition';\nimport getTickFormatter from '../utils/getTickFormatter';\nimport createPoint from '../utils/createPoint';\nimport Orientation from '../constants/orientation';\nexport default function Axis(_ref) {\n  var _ref$children = _ref.children,\n      children = _ref$children === void 0 ? AxisRenderer : _ref$children,\n      axisClassName = _ref.axisClassName,\n      _ref$hideAxisLine = _ref.hideAxisLine,\n      hideAxisLine = _ref$hideAxisLine === void 0 ? false : _ref$hideAxisLine,\n      _ref$hideTicks = _ref.hideTicks,\n      hideTicks = _ref$hideTicks === void 0 ? false : _ref$hideTicks,\n      _ref$hideZero = _ref.hideZero,\n      hideZero = _ref$hideZero === void 0 ? false : _ref$hideZero,\n      _ref$left = _ref.left,\n      left = _ref$left === void 0 ? 0 : _ref$left,\n      _ref$numTicks = _ref.numTicks,\n      numTicks = _ref$numTicks === void 0 ? 10 : _ref$numTicks,\n      _ref$orientation = _ref.orientation,\n      orientation = _ref$orientation === void 0 ? Orientation.bottom : _ref$orientation,\n      _ref$rangePadding = _ref.rangePadding,\n      rangePadding = _ref$rangePadding === void 0 ? 0 : _ref$rangePadding,\n      scale = _ref.scale,\n      tickFormat = _ref.tickFormat,\n      _ref$tickLength = _ref.tickLength,\n      tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n      tickValues = _ref.tickValues,\n      _ref$top = _ref.top,\n      top = _ref$top === void 0 ? 0 : _ref$top,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"axisClassName\", \"hideAxisLine\", \"hideTicks\", \"hideZero\", \"left\", \"numTicks\", \"orientation\", \"rangePadding\", \"scale\", \"tickFormat\", \"tickLength\", \"tickValues\", \"top\"]);\n\n  var format = tickFormat != null ? tickFormat : getTickFormatter(scale);\n  var isLeft = orientation === Orientation.left;\n  var isTop = orientation === Orientation.top;\n  var horizontal = isTop || orientation === Orientation.bottom;\n  var tickPosition = getTickPosition(scale);\n  var tickSign = isLeft || isTop ? -1 : 1;\n  var range = scale.range();\n  var axisFromPoint = createPoint({\n    x: Number(range[0]) + 0.5 - rangePadding,\n    y: 0\n  }, horizontal);\n  var axisToPoint = createPoint({\n    x: Number(range[range.length - 1]) + 0.5 + rangePadding,\n    y: 0\n  }, horizontal);\n  var filteredTickValues = (tickValues != null ? tickValues : getTicks(scale, numTicks)).filter(function (value) {\n    return !hideZero || value !== 0 && value !== '0';\n  }).map(function (value, index) {\n    return {\n      value: value,\n      index: index\n    };\n  });\n  var ticks = filteredTickValues.map(function (_ref2) {\n    var value = _ref2.value,\n        index = _ref2.index;\n    var scaledValue = coerceNumber(tickPosition(value));\n    return {\n      value: value,\n      index: index,\n      from: createPoint({\n        x: scaledValue,\n        y: 0\n      }, horizontal),\n      to: createPoint({\n        x: scaledValue,\n        y: tickLength * tickSign\n      }, horizontal),\n      formattedValue: format(value, index, filteredTickValues)\n    };\n  });\n  return /*#__PURE__*/React.createElement(Group, {\n    className: cx('visx-axis', axisClassName),\n    top: top,\n    left: left\n  }, children(_extends({}, restProps, {\n    axisFromPoint: axisFromPoint,\n    axisToPoint: axisToPoint,\n    hideAxisLine: hideAxisLine,\n    hideTicks: hideTicks,\n    hideZero: hideZero,\n    horizontal: horizontal,\n    numTicks: numTicks,\n    orientation: orientation,\n    rangePadding: rangePadding,\n    scale: scale,\n    tickFormat: format,\n    tickLength: tickLength,\n    tickPosition: tickPosition,\n    tickSign: tickSign,\n    ticks: ticks\n  })));\n}","import { toString } from '@visx/scale';\n\n/**\n * Returns a tick position for the given tick value\n */\nexport default function getTickFormatter(scale) {\n  // Broaden type before using 'xxx' in s as typeguard.\n  var s = scale; // For point or band scales,\n  // have to add offset to make the tick centered.\n\n  if ('tickFormat' in s) {\n    return s.tickFormat();\n  }\n\n  return toString;\n}","/**\n * Create a function that returns a tick position for the given tick value\n */\nexport default function getTickPosition(scale, align) {\n  if (align === void 0) {\n    align = 'center';\n  }\n\n  // Broaden type before using 'xxx' in s as typeguard.\n  var s = scale; // For point or band scales,\n  // have to add offset to make the tick at center or end.\n\n  if (align !== 'start' && 'bandwidth' in s) {\n    var offset = s.bandwidth();\n    if (align === 'center') offset /= 2;\n    if (s.round()) offset = Math.round(offset);\n    return function (d) {\n      var scaledValue = s(d);\n      return typeof scaledValue === 'number' ? scaledValue + offset : scaledValue;\n    };\n  }\n\n  return scale;\n}","export default function getTicks(scale, numTicks) {\n  // Because `Scale` is generic type which maybe a subset of AnyD3Scale\n  // that may not have `ticks` field,\n  // TypeScript will not let us do the `'ticks' in scale` check directly.\n  // Have to manually cast and expand type first.\n  var s = scale;\n\n  if ('ticks' in s) {\n    return s.ticks(numTicks);\n  }\n\n  return s.domain().filter(function (_, index, arr) {\n    return numTicks == null || arr.length <= numTicks || index % Math.round((arr.length - 1) / numTicks) === 0;\n  });\n}","export default function coerceNumber(val) {\n  if ((typeof val === 'function' || typeof val === 'object' && !!val) && 'valueOf' in val) {\n    var num = val.valueOf();\n    if (typeof num === 'number') return num;\n  }\n\n  return val;\n}","/**\n * @file\n * Basic card component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport './styles.scss';\n\nconst Icon = ({ className, iconName, iconColor, width, height }) => {\n  const colorHex = iconColor.replace('#', '');\n  return (\n    <i\n      className={classNames(className, 'g-icon')}\n      style={{\n        backgroundImage: `url('https://www.ft.com/__origami/service/image/v2/images/raw/fticon-v1:${iconName}?source=o-icons&tint=%23${colorHex},%23${colorHex}&format=svg')`,\n        width,\n        height,\n      }}\n    />\n  );\n};\n\nIcon.propTypes = {\n  className: PropTypes.string,\n  iconName: PropTypes.string.isRequired,\n  iconColor: PropTypes.string,\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n};\n\nIcon.defaultProps = {\n  className: null,\n  iconColor: '#000000',\n  width: 20,\n  height: 20,\n};\n\nexport default Icon;\n","import isUtcScale from './isUtcScale';\nexport default function inferScaleType(scale) {\n  // Try a sequence of typeguards to figure out the scale type\n  if ('paddingInner' in scale) {\n    return 'band';\n  }\n\n  if ('padding' in scale) {\n    return 'point';\n  }\n\n  if ('quantiles' in scale) {\n    return 'quantile';\n  }\n\n  if ('base' in scale) {\n    return 'log';\n  }\n\n  if ('exponent' in scale) {\n    return scale.exponent() === 0.5 ? 'sqrt' : 'pow';\n  }\n\n  if ('constant' in scale) {\n    return 'symlog';\n  }\n\n  if ('clamp' in scale) {\n    // Linear, Time or Utc scales\n    if (scale.ticks()[0] instanceof Date) {\n      return isUtcScale(scale) ? 'utc' : 'time';\n    }\n\n    return 'linear';\n  }\n\n  if ('nice' in scale) {\n    return 'quantize';\n  }\n\n  if ('invertExtent' in scale) {\n    return 'threshold';\n  }\n\n  return 'ordinal';\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Circle(_ref) {\n  var className = _ref.className,\n      innerRef = _ref.innerRef,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"className\", \"innerRef\"]);\n\n  return /*#__PURE__*/React.createElement(\"circle\", _extends({\n    ref: innerRef,\n    className: cx('visx-circle', className)\n  }, restProps));\n}","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n  var end = list.length\n  var chunkStart = 0\n  var parameters // Make start between zero and `end` (included).\n\n  if (start < 0) {\n    start = -start > end ? 0 : end + start\n  } else {\n    start = start > end ? end : start\n  }\n\n  remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n  if (items.length < 10000) {\n    parameters = Array.from(items)\n    parameters.unshift(start, remove)\n    splice.apply(list, parameters)\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000)\n      parameters.unshift(start, 0)\n      splice.apply(list, parameters)\n      chunkStart += 10000\n      start += 10000\n    }\n  }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n  return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n  return check\n\n  function check(code) {\n    return regex.test(fromCharCode(code))\n  }\n}\n\nmodule.exports = regexCheck\n","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nfunction extract(str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n}\n\nfunction parse(str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tif (opts.sort === false) {\n\t\topts.sort = function () {};\n\t}\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort(opts.sort).map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\nexports.parseUrl = function (str, opts) {\n\treturn {\n\t\turl: str.split('?')[0] || '',\n\t\tquery: parse(extract(str), opts)\n\t};\n};\n","/**\n * @file\n * Base component for chart-frame\n */\nimport React, { useReducer, Children, isValidElement, cloneElement } from 'react';\nimport { Group } from '@visx/group';\nimport { useTooltip } from '@visx/tooltip';\nimport { ParentSize } from '@visx/responsive';\nimport TooltipWithBounds from '../tooltip';\nimport ChartTopper from '../chart-topper';\nimport ChartFooter from '../chart-footer';\nimport { getResponsiveValues, stripHTMLTags } from '../../util';\nimport { frameStyles } from './styles';\nimport { framePropTypes } from '../prop-types';\nimport { frameDefaultProps } from '../default-props';\nimport { PlotContext } from './plot-context';\n\nconst Frame = ({\n  background,\n  children,\n  description,\n  watermark: Watermark,\n  watermarkOffset,\n  // Base\n  margin,\n  width,\n  height,\n  padding,\n  // <ChartFrame />\n  type,\n  // <ChartTopper />\n  stabRule,\n  subtitle,\n  subtitleFontSize,\n  subtitleLineHeight,\n  subtitleMarkupCustom,\n  subtitlePosition,\n  subtitleStylesCustom,\n  title,\n  titleFontSize,\n  titleLineHeight,\n  titleMarkupCustom,\n  titlePosition,\n  titleStylesCustom,\n  // <ChartFooter />\n  copyright,\n  source,\n  sourceFontSize,\n  sourceLineHeight,\n  sourcePlotYOffset,\n  sourcePosition,\n  hideTitleTooltip,\n  hideTopper,\n  hideFooter,\n  // Tooltip\n  tooltipStyle,\n  tooltipComponent,\n  ...props\n}) => {\n  const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, ...tooltipFunctions } = useTooltip();\n  const [paddingState, updatePaddingState] = useReducer(\n    (currentPadding, newPadding) => ({\n      ...currentPadding,\n      ...newPadding,\n    }),\n    padding\n  );\n\n  return (\n    <>\n      <ParentSize>\n        {({ width: parentWidth }) => {\n          // Gets various values based on width\n          const {\n            height: responsiveHeight,\n            margin: responsiveMargin,\n            sourceFontSize: responsiveSourceFontSize,\n            sourceLineHeight: responsiveSourceLineHeight,\n            tickLength,\n            subtitleFontSize: responsiveSubtitleFontSize,\n            subtitleLineHeight: responsiveSubtitleLineHeight,\n            subtitlePosition: responsiveSubtitlePosition,\n            titleFontSize: responsiveTitleFontSize,\n            titleLineHeight: responsiveTitleLineHeight,\n            titlePosition: responsiveTitlePosition,\n            width: responsiveWidth,\n          } = getResponsiveValues(width || parentWidth, {\n            topper: !hideTopper,\n            footer: !hideFooter,\n          });\n\n          // Use dimensions from props when they are truthy; otherwise use responsive values\n          const svgWidth = width || responsiveWidth;\n          const svgHeight = height || responsiveHeight;\n          const plotMargin = margin || responsiveMargin;\n\n          // Use font sizes from props when they are truthy; otherwise use responsive values\n          const renderSourceFontSize = sourceFontSize || responsiveSourceFontSize;\n          const renderSourceLineHeight = sourceLineHeight || responsiveSourceLineHeight;\n          const renderSubtitleFontSize = subtitleFontSize || responsiveSubtitleFontSize;\n          const renderSubtitleLineHeight = subtitleLineHeight || responsiveSubtitleLineHeight;\n          const renderSubtitlePosition = subtitlePosition || responsiveSubtitlePosition;\n          const renderTitleFontSize = titleFontSize || responsiveTitleFontSize;\n          const renderTitleLineHeight = titleLineHeight || responsiveTitleLineHeight;\n          const renderTitlePosition = titlePosition || responsiveTitlePosition;\n\n          // Calculate inner (plot) dimensions\n          const plotPadding = paddingState;\n          const innerWidth =\n            svgWidth -\n            (plotMargin.left + plotPadding.left) -\n            (plotMargin.right + plotPadding.right);\n          const innerHeight =\n            svgHeight -\n            (plotMargin.top + plotPadding.top) -\n            (plotMargin.bottom + plotPadding.bottom);\n\n          return (\n            <PlotContext.Provider\n              value={{\n                frameWidth: svgWidth,\n                frameHeight: svgHeight,\n                width: innerWidth,\n                height: innerHeight,\n                margin: plotMargin,\n                padding: paddingState,\n                tickLength,\n                type,\n                updatePadding: (newPadding = {}) => updatePaddingState(newPadding),\n                ...tooltipFunctions,\n                hoveredSeries: tooltipData && !tooltipData.data && tooltipData.seriesName,\n                hoveredData: tooltipData && tooltipData.data,\n                mousePoint: tooltipData && tooltipData.mousePoint,\n              }}\n            >\n              <svg\n                aria-labelledby={`ft-webgraphic-${type}__chart-a11y-title ft-webgraphic-${type}__chart-a11y-desc`}\n                css={frameStyles}\n                fontFamily=\"MetricWeb,sans-serif\"\n                height={svgHeight}\n                role=\"img\"\n                viewBox={`0 0 ${svgWidth} ${svgHeight}`}\n                width={svgWidth}\n                {\n                  ...props /* @TODO this line is throwing lots of warnings */\n                }\n              >\n                {\n                  hideTitleTooltip && (\n                    <title />\n                  ) /* This prevent tooltips on hover; see https://stackoverflow.com/a/57971234/467760 */\n                }\n\n                <title id={`ft-webgraphic-${type}__chart-a11y-title`}>\n                  {titleMarkupCustom ? stripHTMLTags(title) : title}\n                </title>\n\n                <desc id={`ft-webgraphic-${type}__chart-a11y-desc`}>{description}</desc>\n\n                {background && (\n                  <rect\n                    data-id=\"chart-background\"\n                    fill={background}\n                    height={svgHeight}\n                    role=\"presentation\"\n                    width={svgWidth}\n                    x=\"0\"\n                    y=\"0\"\n                  />\n                )}\n\n                {!hideTopper && (\n                  <ChartTopper\n                    height={svgHeight}\n                    margin={plotMargin}\n                    stabRule={stabRule}\n                    subtitle={subtitle}\n                    subtitleFontSize={renderSubtitleFontSize}\n                    subtitleLineHeight={renderSubtitleLineHeight}\n                    subtitleMarkupCustom={subtitleMarkupCustom}\n                    subtitlePosition={renderSubtitlePosition}\n                    subtitleStylesCustom={subtitleStylesCustom}\n                    title={title}\n                    titleFontSize={renderTitleFontSize}\n                    titleLineHeight={renderTitleLineHeight}\n                    titleMarkupCustom={titleMarkupCustom}\n                    titlePosition={renderTitlePosition}\n                    titleStylesCustom={titleStylesCustom}\n                    type={type}\n                    width={svgWidth}\n                  />\n                )}\n\n                <Group\n                  className=\"chart-plot\"\n                  role=\"presentation\"\n                  transform={`translate(${plotMargin.left + plotPadding.left}, ${\n                    plotMargin.top + plotPadding.top\n                  })`}\n                >\n                  {Children.map(children, (child) => {\n                    if (!isValidElement(child)) {\n                      return null;\n                    }\n\n                    return cloneElement(child, {\n                      width: innerWidth,\n                      height: innerHeight,\n                      margin: plotMargin,\n                      padding: plotPadding,\n                      type,\n                    });\n                  })}\n                </Group>\n\n                {!hideFooter && (\n                  <ChartFooter\n                    copyright={copyright}\n                    height={svgHeight}\n                    margin={plotMargin}\n                    source={source}\n                    sourceFontSize={renderSourceFontSize}\n                    sourceLineHeight={renderSourceLineHeight}\n                    sourcePlotYOffset={sourcePlotYOffset}\n                    sourcePosition={sourcePosition}\n                    type={type}\n                    width={svgWidth}\n                  />\n                )}\n\n                {Watermark && (\n                  <Group\n                    className=\"chart-watermark\"\n                    role=\"presentation\"\n                    transform={`translate(${width - Watermark.width - watermarkOffset.x}, ${\n                      height - Watermark.height - watermarkOffset.y\n                    }) scale(1)`}\n                  >\n                    {\n                      React.createElement(\n                        Watermark\n                      ) /* JSX does not like it when this is a boolean */\n                    }\n                  </Group>\n                )}\n              </svg>\n            </PlotContext.Provider>\n          );\n        }}\n      </ParentSize>\n      {tooltipOpen && tooltipData && tooltipData.content && (\n        <TooltipWithBounds\n          // set this to random so it correctly updates with parent bounds\n          key={Math.random()}\n          top={tooltipTop}\n          left={tooltipLeft}\n          offsetTop={0}\n          offsetLeft={0}\n          style={{ ...tooltipStyle, pointerEvents: 'none' }}\n          // @TODO should this be an option?\n          offsetX=\"-50%\"\n          offsetY=\"-50%\"\n          dataYPosition={tooltipData.dataYPosition}\n          maxOffsetY={tooltipData.maxOffsetY}\n        >\n          {tooltipComponent(tooltipData.content)}\n        </TooltipWithBounds>\n      )}\n    </>\n  );\n};\n\nFrame.propTypes = framePropTypes;\nFrame.defaultProps = frameDefaultProps;\n\nexport default Frame;\n","/**\n * @file\n * CSS styles for <ChartFrame />\n */\n\nimport { css } from '@emotion/core';\n\nexport const frameStyles = css`\n  display: block;\n  margin: 0 auto;\n\n  text {\n    font-feature-settings: 'tnum', 1;\n    -moz-font-feature-settings: 'tnum';\n    -webkit-font-feature-settings: 'tnum';\n    -webkit-font-smoothing: antialiased;\n  }\n`;\n\nexport const socialChartFrameStyles = css`\n  .axis text {\n    fill: #8e9095;\n    font-family: metric;\n    font-size: 20px;\n  }\n\n  .highlighted-label {\n    fill: #ffffff;\n    opacity: 1;\n    font-family: metric;\n    font-size: 20px;\n  }\n\n  .yAxis text {\n    fill: #8e9095;\n    text-anchor: end;\n  }\n\n  .yAxis line {\n    stroke: #47494d;\n    stroke-width: 1px;\n  }\n\n  .domain {\n    stroke-width: 0px;\n  }\n\n  .timelineHolder .domain {\n    stroke: #ffffff;\n  }\n\n  .timelineHolder .domain {\n    stroke-width: 1px;\n  }\n\n  .xAxis text {\n    fill: #8e9095;\n    text-anchor: middle;\n  }\n\n  .xAxis line {\n    stroke: #47494d;\n    stroke-width: 1px;\n  }\n\n  .baseline line {\n    stroke: #8e9095;\n    stroke-width: 1px;\n  }\n\n  .lines {\n    stroke-linecap: square;\n    stroke-linejoin: round;\n    stroke-width: 4px;\n    fill: none;\n  }\n\n  .annotations-holder line {\n    stroke: #8e9095;\n    stroke-width: 1px;\n  }\n\n  .annotations-holder path {\n    stroke: #8e9095;\n    stroke-width: 1px;\n  }\n\n  .annotations-holder text {\n    font-size: 24px;\n    fill: #ffffff;\n  }\n\n  .highlights {\n    fill: #ffffff;\n    opacity: 0.2;\n  }\n\n  .timeline-label,\n  .legend text {\n    font-family: metric;\n    fill: #8e9095;\n    font-size: 20px;\n  }\n`;\n\nexport const videoChartFrameStyles = css``;\n\nexport const printChartFrameStyles = css``;\n\nexport default frameStyles;\n","/**\n * @file\n * Various helper functions\n */\n\nimport React from 'react';\nimport removeMarkdown from 'remove-markdown';\nimport { getGridBreakpoints } from '@financial-times/o-grid';\n\nexport function plain(str, stripListLeaders = true) {\n  return removeMarkdown(str, { stripListLeaders, gfm: true });\n}\n\nexport function encodedJSON(_data) {\n  const data = _data instanceof String ? JSON.parse(_data) : _data;\n  try {\n    return encodeURIComponent(JSON.stringify(data, null, ''));\n  } catch (e) {\n    return '';\n  }\n}\n\nexport function spoorTrackingPixel(data) {\n  const jsonString = encodedJSON(data);\n  if (document) {\n    const ieVersion = document.documentMode ? document.documentMode : 99; // eslint-disable-line\n    const img = `<img src=\"https://spoor-api.ft.com/px.gif?data=${jsonString}\" height=\"1\" width=\"1\" />`;\n    return ieVersion < 9 ? img : <noscript data-o-component=\"o-tracking\">{img}</noscript>;\n  }\n\n  return null;\n}\n\nexport function imageUUID(uuid) {\n  return `https://www.ft.com/__origami/service/image/v2/images/raw/ftcms%3A${uuid}?source=ig`;\n}\n\nexport function getMainImage(img = {}) {\n  if (Object.prototype.hasOwnProperty.call(img, 'uuid')) return imageUUID(img.uuid);\n  if (Object.prototype.hasOwnProperty.call(img, 'url')) return img.url;\n  return '';\n}\n\n// Via: https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html\n\nexport const makeCancelable = (promise) => {\n  let hasCanceled = false;\n\n  const wrappedPromise = new Promise((resolve, reject) => {\n    /* eslint-disable prefer-promise-reject-errors */\n    promise.then(\n      (val) => (hasCanceled ? reject({ isCanceled: true }) : resolve(val)),\n      (error) => (hasCanceled ? reject({ isCanceled: true }) : reject(error)),\n    );\n    /* eslint-enable */\n  });\n\n  return {\n    promise: wrappedPromise,\n    cancel() {\n      hasCanceled = true;\n    },\n  };\n};\n\nexport const registerLayoutChangeEvents = () => {\n  // Create a map containing all breakpoints exposed via html:before\n  const { layouts } = getGridBreakpoints();\n  if (layouts) {\n    const breakpoints = new Map([...Object.entries(layouts), ['default', '240px']]);\n    const decr1 = (val) => `${Number(val.replace('px', '') - 1)}px`;\n\n    const setupQuery = (query, size) => {\n      // matchMedia listener handler: Dispatch `o-grid.layoutChange` event if a match\n      const handleMQChange = (mql) => {\n        if (mql.matches) {\n          window.dispatchEvent(\n            new CustomEvent('o-grid.layoutChange', {\n              detail: size,\n            }),\n          );\n        }\n      };\n\n      const mql = window.matchMedia(query);\n      mql.addListener(handleMQChange);\n      handleMQChange(mql);\n\n      return [query, handleMQChange];\n    };\n\n    // Generate media queries for each\n    return [...breakpoints].map(([size, width]) => {\n      switch (size) {\n        case 'S':\n          return setupQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('M'))})`,\n            size,\n          );\n        case 'M':\n          return setupQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('L'))})`,\n            size,\n          );\n        case 'L':\n          return setupQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('XL'))})`,\n            size,\n          );\n        case 'XL':\n          return setupQuery(`(min-width: ${width})`, size);\n        case 'default':\n        default:\n          return setupQuery(`(max-width: ${decr1(breakpoints.get('S'))})`, size);\n      }\n    });\n  }\n\n  throw new Error(\n    'To enable grid layout change events, include oGridSurfaceLayoutSizes in your Sass',\n  );\n};\n\nexport const unregisterLayoutChangeEvents = (listeners) => {\n  const { layouts } = getGridBreakpoints();\n  if (layouts) {\n    const breakpoints = new Map([...Object.entries(layouts), ['default', '240px']]);\n    const decr1 = (val) => `${Number(val.replace('px', '') - 1)}px`;\n\n    const removeQuery = (query) => {\n      const [, listener] = listeners.find(([q]) => q === query);\n      const mql = window.matchMedia(query);\n      mql.removeListener(listener);\n    };\n\n    breakpoints.forEach((width, size) => {\n      switch (size) {\n        case 'S':\n          removeQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('M'))})`,\n            size,\n          );\n          break;\n        case 'M':\n          removeQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('L'))})`,\n            size,\n          );\n          break;\n        case 'L':\n          removeQuery(\n            `(min-width: ${width}) and (max-width: ${decr1(breakpoints.get('XL'))})`,\n            size,\n          );\n          break;\n        case 'XL':\n          removeQuery(`(min-width: ${width})`, size);\n          break;\n        case 'default':\n        default:\n          removeQuery(`(max-width: ${decr1(breakpoints.get('S'))})`, size);\n          break;\n      }\n    });\n  }\n};\n\n/**\n * @function\n * Tests whether an object is a DOM node.\n * Via: https://stackoverflow.com/a/384380/467760\n */\nexport function isNode(o) {\n  return typeof Node === 'object'\n    ? o instanceof Node\n    : o &&\n        typeof o === 'object' &&\n        typeof o.nodeType === 'number' &&\n        typeof o.nodeName === 'string';\n}\n\n/**\n * @function\n * Tests whether an object is a DOM element.\n * Via: https://stackoverflow.com/a/384380/467760\n */\nexport function isElement(o) {\n  return typeof HTMLElement === 'object'\n    ? o instanceof HTMLElement // DOM2\n    : o &&\n        typeof o === 'object' &&\n        o !== null &&\n        o.nodeType === 1 &&\n        typeof o.nodeName === 'string';\n}\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","import Toggle from './src/js/toggle.js';\n\nconst constructAll = () => {\n\tToggle.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Toggle;\n","/**\n*\n* Debounces function so it is only called after n milliseconds\n* without it not being called\n*\n* @example\n* Utils.debounce(myFunction() {}, 100);\n*\n* @param {Function} func - Function to be debounced\n* @param {number} wait - Time in miliseconds\n*\n* @returns {Function} - Debounced function\n*/\nfunction debounce(func, wait) {\n\tlet timeout;\n\treturn function() {\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tfunc.apply(this, args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\n/**\n*\n* Throttle function so it is only called once every n milliseconds\n*\n* @example\n* Utils.throttle(myFunction() {}, 100);\n*\n* @param {Function} func - Function to be throttled\n* @param {number} wait - Time in miliseconds\n*\n* @returns {Function} - Throttled function\n*/\nfunction throttle(func, wait) {\n\tlet timeout;\n\treturn function() {\n\t\tif (timeout) {\n\t\t\treturn;\n\t\t}\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tfunc.apply(this, args);\n\t\t};\n\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport {\n\tdebounce,\n\tthrottle\n};\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\n\nfunction _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n        args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n\n      _next(undefined);\n    });\n  };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default {\n\tunCapitalise: function(str) {\n\t\treturn str.charAt(0).toLowerCase() + str.substr(1);\n\t},\n\n\tcapitalise: function(str) {\n\t\treturn str.charAt(0).toUpperCase() + str.substr(1);\n\t},\n\n\tcopyContentFromElement: function(content, callback) {\n\t\tconst html = content.nodeName === 'SCRIPT' ? content.innerHTML : content.outerHTML;\n\t\tcallback(html);\n\t},\n\n\tcopyContentFromUrl: function(url, callback) {\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.onload = function() { // eslint complains of e not being used\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tcallback(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tcallback('Content failed to load correctly');\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.onerror = function(e) {\n\t\t\tthrow new Error('\"o-overlay error\": Fetching content from ' + url + ' failed with errror ' + e);\n\t\t};\n\n\t\txhr.send(null);\n\t},\n\n\toptionsFromKey: function(key, value, opts) {\n\t\tconst dashIndex = key.indexOf('-');\n\t\tif (dashIndex === -1) {\n\t\t\ttry {\n\t\t\t\t// If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n\t\t\t\t// We also replace all ' with \" so JSON strings are parsed correctly\n\t\t\t\topts[key] = JSON.parse(value.replace(/\\'/g, '\"'));\n\t\t\t} catch (e) {\n\t\t\t\topts[key] = value;\n\t\t\t}\n\t\t} else {\n\t\t\t// Key that holds an object instead of a value\n\t\t\tconst subKey = key.substr(0, dashIndex);\n\n\t\t\t// If sub-object doesn't exist already, create it\n\t\t\tif (!opts[subKey]){\n\t\t\t\topts[subKey] = {};\n\t\t\t}\n\n\t\t\t// Run function again starting with the rest of the key\n\t\t\topts[subKey] = this.optionsFromKey(key.substr(dashIndex+1), value, opts[subKey]);\n\t\t}\n\n\t\treturn opts;\n\t},\n\n\t// Code based on this article to get coordinates independent of scroll: http://javascript.info/tutorial/coordinates\n\tgetOffsetRect: function(e) {\n\t\tconst eClientRect = e.getBoundingClientRect();\n\n\t\tconst body = document.body;\n\t\tconst docElem = document.documentElement;\n\n\t\t// docElem.scrollTop/Left for IE, use body as a last resort\n\t\tconst scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tconst scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\n\t\t// IE sometimes shifts the upper left corner\n\t\tconst clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tconst clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\n\t\treturn {\n\t\t\t// IE8 doesn't support getBoundingClientRect().height and .weight\n\t\t\twidth: eClientRect.width || eClientRect.right - eClientRect.left,\n\t\t\theight: eClientRect.height || eClientRect.bottom - eClientRect.top,\n\t\t\ttop: eClientRect.top + scrollTop - clientTop,\n\t\t\tleft: eClientRect.left + scrollLeft - clientLeft\n\t\t};\n\t}\n};\n","/**\n * @file\n * CSS styles for <Axis />\n */\n\nimport { css } from '@emotion/core';\n\nexport const baseAxisStyles = css`\n  font-size: inherit !important;\n`;\n\nexport const webAxisStyles = css`\n  ${baseAxisStyles}\n\n  text {\n    font-family: metric, MetricWeb;\n    fill: #66605c;\n    font-size: 16px;\n  }\n\n  line {\n    stroke: #e6d9ce;\n    stroke-width: 1px;\n  }\n\n  .visx-axis-banding rect {\n    fill: #ccc1b7;\n    opacity: 0.4;\n  }\n\n  /* tick text on yAxis */\n  .visx-axis-left text,\n  .visx-axis-right text {\n    fill: #66605c;\n  }\n\n  .visx-axis-left text {\n    text-anchor: end;\n  }\n\n  .visx-axis-right text {\n    text-anchor: start;\n  }\n\n  /* tick line on yAxis */\n  .visx-axis-left line,\n  .visx-axis-right line {\n    stroke: #e6d9ce;\n    stroke-width: 1px;\n  }\n\n  /* tick text on xAxis */\n  .visx-axis-top text,\n  .visx-axis-bottom text {\n    fill: #66605c;\n    text-anchor: middle;\n  }\n\n  /* tick line on xAxis */\n  .visx-axis-top line,\n  .visx-axis-bottom line {\n    stroke: #e6d9ce;\n    stroke-width: 1px;\n  }\n`;\n\nexport const socialAxisStyles = css`\n  ${baseAxisStyles}\n\n  text {\n    fill: #8e9095;\n    font-size: 20px;\n  }\n\n  line {\n    stroke: #47494d;\n    stroke-width: 1px;\n  }\n\n  .visx-axis-banding rect {\n    fill: #ffffff;\n    opacity: 0.4;\n  }\n\n  /* tick text on yAxis */\n  .visx-axis-left text,\n  .visx-axis-right text {\n    fill: #8e9095;\n  }\n\n  .visx-axis-left text {\n    text-anchor: end;\n  }\n\n  .visx-axis-right text {\n    text-anchor: start;\n  }\n\n  /* tick line on yAxis */\n  .visx-axis-left line,\n  .visx-axis-right line {\n    stroke: #47494d;\n    stroke-width: 1px;\n  }\n\n  /* tick text on xAxis */\n  .visx-axis-top text,\n  .visx-axis-bottom text {\n    fill: #8e9095;\n    text-anchor: middle;\n  }\n\n  /* tick line on xAxis */\n  .visx-axis-top line,\n  .visx-axis-bottom line {\n    stroke: #47494d;\n    stroke-width: 1px;\n  }\n`;\n\nexport const videoAxisStyles = css`\n  ${baseAxisStyles}\n\n  text {\n    fill: #8e9095;\n    font-size: 48px;\n  }\n\n  line {\n    stroke: #47494d;\n    stroke-width: 3px;\n  }\n\n  .visx-axis-banding rect {\n    fill: #ffffff;\n    opacity: 0.4;\n  }\n\n  /* tick text on yAxis */\n  .visx-axis-left text,\n  .visx-axis-right text {\n    fill: #8e9095;\n  }\n\n  .visx-axis-left text {\n    text-anchor: end;\n  }\n\n  .visx-axis-right text {\n    text-anchor: start;\n  }\n\n  /* tick line on yAxis */\n  .visx-axis-left line,\n  .visx-axis-right line {\n    stroke: #47494d;\n    stroke-width: 3px;\n  }\n\n  /* tick text on xAxis */\n  .visx-axis-top text,\n  .visx-axis-bottom text {\n    fill: #8e9095;\n    text-anchor: middle;\n  }\n\n  /* tick line on xAxis */\n  .visx-axis-top line,\n  .visx-axis-bottom line {\n    stroke: #47494d;\n    stroke-width: 3px;\n  }\n`;\n\nexport const printAxisStyles = css`\n  ${baseAxisStyles}\n\n  text {\n    font-family: metric;\n    font-size: 9.6px;\n    fill: #000000;\n    text-anchor: end;\n  }\n\n  line {\n    stroke: #000000;\n    stroke-width: 0.3px;\n  }\n\n  .visx-axis-banding rect {\n    fill: #95bfc5;\n    opacity: 0.4;\n  }\n\n  /* tick text on yAxis */\n  .visx-axis-left text {\n    text-anchor: end;\n  }\n\n  .visx-axis-right text {\n    text-anchor: start;\n  }\n\n  /* tick line on yAxis */\n  .visx-axis-left line,\n  .visx-axis-right line {\n    stroke: #000000;\n    stroke-width: 0.3px;\n  }\n\n  /* tick text on xAxis */\n  .visx-axis-top text,\n  .visx-axis-bottom text {\n    text-anchor: middle;\n  }\n\n  /* tick line on xAxis */\n  .visx-axis-top line,\n  .visx-axis-bottom line {\n    stroke: #000000;\n    stroke-width: 0.3px;\n  }\n`;\n\nexport const combineStyles = (initialStyles, additionalStyles) =>\n  css`\n    ${initialStyles}\n    ${additionalStyles}\n  `;\n\nexport default webAxisStyles;\n","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n  return assign({}, object)\n}\n\nmodule.exports = shallow\n","import {broadcast, containsCircularPaths, decode, encode, findCircularPathsIn, is} from '../utils.js';\n\n/**\n * Class for storing data\n * Will choose the 'best' storage method available. Can also specify a type of storage.\n *\n * @class  Store\n * @param {string} name - The name of the store\n * @param {object} config - Optional, config object for extra configuration\n * @param {string} [config.nameOverride] - The internal name for the store\n * @param {string} [config.domain] - The domain that should be used to store cookies on\n */\nconst Store = function (name, config = {}) {\n\n\t/**\n\t * Internal Storage key prefix.\n\t */\n\tconst keyPrefix = 'o-tracking';\n\n\n\tif (typeof name !== 'string' || name === '') {\n\t\tconst undefinedName = new Error('You must specify a name for the store.');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: undefinedName.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow undefinedName;\n\t}\n\n\tthis.config = Object.assign({}, config);\n\n\t/**\n\t * Store data.\n\t */\n\tthis.data = null;\n\n\t/**\n\t * The key/name of this store.\n\t */\n\tthis.storageKey = this.config.nameOverride ? this.config.nameOverride : [keyPrefix, name].join('_');\n\n\t/**\n\t * The storage method to use.\n\t *\n\t * @type {object}\n\t */\n\tthis.storage = {\n\t\t_type: 'localStorage',\n\t\tload: function (name) {\n\t\t\treturn window.localStorage.getItem(name);\n\t\t},\n\t\tsave: function (name, value) {\n\t\t\treturn window.localStorage.setItem(name, value);\n\t\t},\n\t\tremove: function (name) {\n\t\t\t// We attempt to remove the item from the old cookie storage\n\t\t\t// because otherwise the next time o-tracking is initialised for\n\t\t\t// this user, it will import the old value which was meant to\n\t\t\t// have been removed.\n\t\t\tcookieRemove(name);\n\t\t\treturn window.localStorage.removeItem(name);\n\t\t}\n\t};\n\n\tfunction cookieLoad(name) {\n\t\tname = name + '=';\n\n\t\tconst cookies = window.document.cookie.split(';');\n\t\tlet i;\n\t\tlet cookie;\n\n\t\tfor (i = 0; i < cookies.length; i = i + 1) {\n\t\t\tcookie = cookies[i].replace(/^\\s+|\\s+$/g, '');\n\t\t\tif (cookie.indexOf(name) === 0) {\n\t\t\t\treturn decode(cookie.substring(name.length, cookie.length));\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction cookieSave(name, value, expiry) {\n\t\tlet d;\n\t\tlet expires = '';\n\n\t\tif (is(expiry, 'number')) {\n\t\t\td = new Date();\n\t\t\td.setTime(d.getTime() + expiry);\n\t\t\texpires = 'expires=' + d.toUTCString() + ';';\n\t\t}\n\n\t\tconst cookie = encode(name) + '=' + encode(value) + ';' + expires + 'path=/;' + (config.domain ? 'domain=.' + config.domain + ';' : '');\n\t\twindow.document.cookie = cookie;\n\t}\n\n\tfunction cookieRemove(name) {\n\t\tcookieSave(name, '', -1);\n\t}\n\n\t/**\n\t * Temporary var containing data from a previously saved store.\n\t *\n\t * @property {string|undefined} loadStore - JSON string of the previously saved store or undefined.\n\t */\n\t// Retrieve any previous store with the same name.\n\tconst loadStore = this.storage.load(this.storageKey);\n\tif (loadStore) {\n\t\ttry {\n\t\t\tthis.data = JSON.parse(loadStore);\n\t\t} catch (error) {\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tmodule: 'o-tracking'\n\t\t\t});\n\t\t\tthis.data = loadStore;\n\t\t}\n\t}\n\n\t// If the user has previous data stored in the old cookie storage system\n\t// import the data into the new storage system and remove them from the cookie.\n\tconst oldCookieStoreData = cookieLoad(this.storageKey);\n\tif (oldCookieStoreData) {\n\t\ttry {\n\t\t\tif (this.storageKey === 'spoor-id') {\n\t\t\t\t// spoor-id is stored directly as a string and not as an object\n\t\t\t\tthis.data = oldCookieStoreData;\n\t\t\t} else {\n\t\t\t\tconst data = JSON.parse(oldCookieStoreData);\n\t\t\t\tif (this.data) {\n\t\t\t\t\tObject.assign(this.data, data);\n\t\t\t\t} else {\n\t\t\t\t\tthis.data = data;\n\t\t\t\t}\n\t\t\t\tfor (const name of Object.keys(data)) {\n\t\t\t\t\tif (name !== 'spoor-id') {\n\t\t\t\t\t\tcookieRemove(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tmodule: 'o-tracking'\n\t\t\t});\n\t\t\tthis.data = loadStore;\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Get/Read the current data.\n *\n * @returns {object} Returns the data from the store.\n */\nStore.prototype.read = function () {\n\treturn this.data;\n};\n\n/**\n * Write the supplied data to the store.\n *\n * @param {string} data - The data to write.\n * @returns {Store} - The instance of the store\n */\nStore.prototype.write = function (data) {\n\t// Set this.data, in-case we're on a file:// domain and can't set cookies.\n\tthis.data = data;\n\tlet value;\n\n\tif (typeof this.data === 'string') {\n\t\tvalue = this.data;\n\t} else {\n\t\tif (containsCircularPaths(this.data)) {\n\t\t\tconst errorMessage = \"o-tracking does not support circular references in the analytics data.\\n\" +\n\t\t\t\"Please remove the circular references in the data.\\n\" +\n\t\t\t\"Here are the paths in the data which are circular:\\n\" +\n\t\t\tJSON.stringify(findCircularPathsIn(this.data), undefined, 4);\n\t\t\tthrow new Error(errorMessage);\n\t\t}\n\t\tvalue = JSON.stringify(this.data);\n\t}\n\n\tthis.storage.save(this.storageKey, value);\n\n\treturn this;\n};\n\n/**\n * Delete the current data.\n *\n * @returns {Store} - The instance of the store\n */\nStore.prototype.destroy = function () {\n\tthis.data = null;\n\tthis.storage.remove(this.storageKey);\n\treturn this;\n};\n\nexport { Store };\n","/* eslint-disable no-console */\nconst missingDataMessage = 'Could not find layout information. ' +\n\t'You may need to include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) ' +\n\t'for more information.';\n\n/**\n * Grab grid properties\n *\n * @returns {object} layout names and gutter widths\n */\nfunction getGridProperties() {\n\tconst properties = getGridFromDoc('after');\n\tif (Object.keys(properties).length === 0) {\n\t\tconsole.warn(missingDataMessage);\n\t}\n\treturn properties;\n}\n\n/**\n * Get all layout sizes.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {object} layout names and sizes\n */\nfunction getGridBreakpoints() {\n\tconst breakpoints = getGridFromDoc('before');\n\tif (Object.keys(breakpoints).length === 0) {\n\t\tconsole.warn(missingDataMessage);\n\t}\n\treturn breakpoints;\n}\n\n/**\n * Grab grid properties surfaced in html:after and html:before's content\n *\n * @param {string} position Whether to get all properties in :before, or current properties in :after\n * @returns {object} layout names and gutter widths\n */\nfunction getGridFromDoc(position) {\n\t// Contained in a try/catch as it should not error if o-grid styles are not (deliberately or accidentally) loaded\n\t// e.g. o-tracking will always try to read this property, but the page is not obliged to use o-grid for layout\n\ttry {\n\t\tlet gridProperties = window.getComputedStyle(document.documentElement, ':' + position).getPropertyValue('content');\n\t\t// Firefox computes: \"{\\\"foo\\\": \\\"bar\\\"}\"\n\t\t// We want readable JSON: {\"foo\": \"bar\"}\n\t\tgridProperties = gridProperties.replace(/'/g, '').replace(/\\\\/g, '').replace(/^\"/, '').replace(/\"$/, '');\n\t\treturn JSON.parse(gridProperties);\n\t} catch (e) {\n\t\treturn {};\n\t}\n}\n\n/**\n * Grab the current layout.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {string} Layout name\n */\nfunction getCurrentLayout() {\n\treturn getGridProperties().layout;\n}\n\n/**\n * Grab the current space between columns.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {string} Gutter width in pixels\n */\nfunction getCurrentGutter() {\n\treturn getGridProperties().gutter;\n}\n\n/**\n * This sets MediaQueryListeners on all the o-grid breakpoints\n * and fires a `o-grid.layoutChange` event on layout change.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {void}\n */\nfunction enableLayoutChangeEvents() {\n\t// Create a map containing all breakpoints exposed via html:before\n\tconst gridLayouts = getGridBreakpoints();\n\t// eslint-disable-next-line no-prototype-builtins\n\tif (gridLayouts.hasOwnProperty('layouts')) {\n\t\tconst layouts = gridLayouts.layouts;\n\t\tconst breakpoints = [\n\t\t\t...Object.entries(layouts),\n\t\t\t['default', '240px']\n\t\t].sort((a, b) => parseFloat(a[1]) - parseFloat(b[1]));\n\n\t\tconst setupQuery = (query, size) => {\n\t\t\t// matchMedia listener handler: Dispatch `o-grid.layoutChange` event if a match\n\t\t\tconst handleMQChange = mql => {\n\t\t\t\tif (mql.matches) {\n\t\t\t\t\twindow.dispatchEvent(new CustomEvent('o-grid.layoutChange', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tlayout: size,\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst mql = window.matchMedia(query);\n\t\t\tmql.addListener(handleMQChange);\n\t\t\thandleMQChange(mql);\n\t\t};\n\n\t\t// Generate media queries for each\n\t\tconst decr1 = val => `${Number(val.replace('px', '') - 1)}px`;\n\t\tfor (let index = 0; index < breakpoints.length; index++) {\n\t\t\tconst [layoutName, layoutWidth] = breakpoints[index];\n\t\t\tconst isLast = index === breakpoints.length - 1;\n\t\t\tif (isLast) {\n\t\t\t\tsetupQuery(`(min-width: ${layoutWidth})`, layoutName);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [,nextLayoutWidth] = breakpoints[index + 1];\n\t\t\tsetupQuery(`(min-width: ${layoutWidth}) and (max-width: ${decr1(nextLayoutWidth)})`, layoutName);\n\t\t}\n\t} else {\n\t\tconsole.error('Could not enable grid layout change events. Include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) for more details.');\n\t}\n}\n\nexport {\n\tgetCurrentLayout,\n\tgetCurrentGutter,\n\tgetGridBreakpoints,\n\tenableLayoutChangeEvents\n};\n\nexport default {\n\tgetCurrentLayout,\n\tgetCurrentGutter,\n\tgetGridBreakpoints,\n\tenableLayoutChangeEvents\n};\n","/**\n * @file\n * Shared custom prop-types\n */\n\nimport PropTypes from 'prop-types';\n\nexport const ContextPropType = {\n  id: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  publishedDate: PropTypes.string.isRequired,\n  headline: PropTypes.string.isRequired,\n  summary: PropTypes.string.isRequired,\n  topic: PropTypes.shape({\n    name: PropTypes.string.isRequired,\n    url: PropTypes.string.isRequired,\n  }).isRequired,\n  relatedArticle: PropTypes.shape({\n    text: PropTypes.string,\n    url: PropTypes.string,\n  }),\n  mainImage: PropTypes.shape({\n    title: PropTypes.string,\n    description: PropTypes.string,\n    credit: PropTypes.string,\n    url: PropTypes.string,\n  }),\n  bylines: PropTypes.arrayOf(\n    PropTypes.shape({\n      name: PropTypes.string.isRequired,\n      url: PropTypes.string,\n    })\n  ).isRequired,\n  title: PropTypes.string,\n  description: PropTypes.string,\n  twitterCard: PropTypes.string,\n  ads: PropTypes.shape({\n    gptSite: PropTypes.string,\n    gptZone: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n    dfpTargeting: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  }).isRequired,\n  tracking: PropTypes.any,\n  flags: PropTypes.shape({\n    prod: PropTypes.bool,\n    errorReporting: PropTypes.bool,\n    analytics: PropTypes.bool,\n    googleAnalytics: PropTypes.bool,\n    ads: PropTypes.bool,\n    onwardjourney: PropTypes.bool,\n    shareButtons: PropTypes.bool,\n    header: PropTypes.bool,\n    footer: PropTypes.bool,\n    dark: PropTypes.bool,\n    comments: PropTypes.bool,\n  }).isRequired,\n  relatedContent: PropTypes.arrayOf(\n    PropTypes.shape({\n      rows: PropTypes.number.isRequired,\n      list: PropTypes.string.isRequired,\n    })\n  ),\n  buildTime: PropTypes.string,\n};\n\nexport const ContextDefaultProps = {\n  id: '3a499586-b2e0-11e4-a058-00144feab7de',\n  url: 'https://ig.ft.com/',\n  publishedDate: new Date().toISOString(),\n  headline: 'Ik kie neġi æpude pōsÞpriskribo',\n  summary:\n    'Ik kie neġi æpude pōsÞpriskribo, anċ ēg tiel subtegmenÞo.Giga gārði esperǣntigo vi jes. Ċit plēj esceptīnte hu, ōl vola eksploðæ poǽ.',\n  topic: {\n    name: 'Starter Kit',\n    url: '/foo',\n  },\n  relatedArticle: {\n    text: 'Related article »',\n    url: 'https://en.wikipedia.org/wiki/Esperanto',\n  },\n  mainImage: {\n    title: 'Map of Esperanto groups in Europe in 1905',\n    description:\n      'Disvastiĝo de Esperanto. Mapo pri Esperanto-grupoj en Eŭropo, farita de la frankfurta grupo, en Germana Esperantisto, marto 1905',\n    credit: 'Wikipedia',\n    url:\n      'https://www.ft.com/__origami/service/image/v2/images/raw/https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2F3%2F3a%2F1905-03-ge-frankf-mapo.jpg?source=ig',\n  },\n  bylines: [\n    {\n      name: 'Author One',\n      url: '/foo/bar',\n    },\n    {\n      name: 'Author Two',\n    },\n  ],\n  title: '',\n  description: '',\n  twitterCard: 'summary_large_image',\n  ads: {\n    gptSite: 'ft.com',\n    gptZone: false,\n    targeting: false,\n  },\n  tracking: {},\n  flags: {\n    prod: false,\n    errorReporting: true,\n    analytics: true,\n    googleAnalytics: false,\n    ads: true,\n    onwardjourney: true,\n    shareButtons: true,\n    header: true,\n    footer: true,\n    dark: false,\n    comments: true,\n  },\n  relatedContent: [\n    {\n      rows: 2,\n      list: 'thing/adae44ca-4ea7-3cf8-8332-bf85ec89a558',\n    },\n  ],\n  buildTime: new Date().toISOString(),\n};\n\nexport default null;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","/**\n * @file\n * Various hooks\n */\nimport { useCallback } from 'react';\nimport localPoint from '@visx/event/lib/localPoint';\n\nexport default null;\n\nexport const useTooltipEvents = ({ enabled, updateTooltip }) => {\n  const callbacks = useCallback(\n    (datum, overrides) => {\n      const handleMouseOver = event => {\n        if (!datum) updateTooltip({ tooltipOpen: false });\n        const coords = overrides || localPoint(event.currentTarget.ownerSVGElement, event);\n        updateTooltip({\n          tooltipOpen: true,\n          tooltipLeft: coords.x,\n          tooltipTop: coords.y,\n          tooltipData: datum,\n        });\n      };\n      return {\n        onMouseOver: handleMouseOver,\n        onFocus: handleMouseOver,\n        onMouseOut: () => updateTooltip({ tooltipOpen: false }),\n        onBlur: () => updateTooltip({ tooltipOpen: false }),\n      };\n    },\n    [updateTooltip]\n  );\n\n  return enabled ? callbacks : () => ({});\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@financial-times/g-components/button';\nimport Loading from '@financial-times/g-components/loading';\nimport './styles.scss';\n\nconst ButtonSelectionGroup = ({\n  items,\n  selected,\n  updateSelection,\n  width,\n  title,\n  equalButtons,\n  loadingTime,\n}) => {\n  const [loading, setLoading] = useState(false);\n\n  useEffect(() => {\n    let timer;\n    if (loading && loadingTime > 0) {\n      timer = setTimeout(() => {\n        setLoading(false);\n        updateSelection(loading);\n      }, loadingTime); // Defaults to 100ms\n    }\n    return () => clearTimeout(timer);\n  }, [loading]);\n\n  const buttonsClassName = `button-selection-group__buttons${\n    !equalButtons ? ' button-selection-group__buttons--fit' : ''\n  }`;\n\n  return (\n    <div className=\"button-selection-group\" style={{ width }}>\n      {title && <div className=\"button-selection-group__title\">{title}</div>}\n      <div className={buttonsClassName}>\n        {items.map(({ value, display }) => (\n          <Button\n            id={value}\n            big\n            selected={value === selected}\n            theme=\"mono\"\n            key={value}\n            onClick={() => {\n              if (loadingTime > 0 && selected !== value) {\n                setLoading(value);\n              } else {\n                updateSelection(value);\n              }\n            }}\n          >\n            {display}\n            {loading === value && (\n              <div className=\"button-selection-group__loading\">\n                <Loading size=\"small\" />\n              </div>\n            )}\n          </Button>\n        ))}\n      </div>\n    </div>\n  );\n};\n\nButtonSelectionGroup.propTypes = {\n  items: PropTypes.arrayOf(\n    PropTypes.shape({\n      value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n      display: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n    })\n  ).isRequired,\n  selected: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n  updateSelection: PropTypes.func.isRequired,\n  width: PropTypes.string,\n  title: PropTypes.string,\n  equalButtons: PropTypes.bool,\n  loadingTime: PropTypes.number,\n};\n\nButtonSelectionGroup.defaultProps = {\n  equalButtons: true,\n  loadingTime: 100,\n};\n\nexport default ButtonSelectionGroup;\n","const generateWords = text => text.toLowerCase().split(' ');\n\nexport const cleanSearchValue = searchValue => searchValue.toLowerCase().replace(/\\s/g, '');\n\nexport const findMatch = (searchList, searchValue) => {\n  return searchList.find(({ display, alternatives }) => {\n    const cleanedDisplay = cleanSearchValue(display);\n    const cleanedAlternatives = alternatives ? alternatives.map(a => cleanSearchValue(a)) : [];\n    const cleanedSearchValue = cleanSearchValue(searchValue);\n    return (\n      cleanedDisplay === cleanedSearchValue || cleanedAlternatives.includes(cleanedSearchValue)\n    );\n  });\n};\n\n// Function to score and get closest suggestions from list\nexport const getSuggestions = (value, searchList) => {\n  const inputValue = value.trim().toLowerCase();\n  const inputLength = inputValue.length;\n  const inputValueWords = inputValue.split(' ');\n\n  // Match from the beginning of the string, after N characters\n  const minimumInputLength = 1;\n  if (inputLength < minimumInputLength) {\n    return [];\n  }\n\n  // Score each entry in the list\n  const scoredList = searchList.map(({ display, words, alternativeWords, ...d }) => {\n    // Combine words with alternatives\n    const allWords = [words, ...alternativeWords];\n\n    // Calculate score for alternatives at the same time\n    const allScores = allWords.map(w => {\n      // Score each word in the country name\n      const scores = w.reduce((acc, word) => {\n        // For each word, try and find a partial match with one of the input value words\n        // (up to the length of the input word)\n        const match = inputValueWords.find(\n          inputValueWord => word.toLowerCase().slice(0, inputValueWord.length) === inputValueWord\n        );\n        return [\n          ...acc,\n          {\n            // Return the length of the match\n            matchLength: match ? match.length : 0,\n            // The total word length\n            wordLength: word.length,\n            // And the percentage of the word matched\n            pcMatch: match ? match.length / word.length : 0,\n          },\n        ];\n      }, []);\n\n      // Calculate total match length\n      const totalMatchLength = scores.reduce((acc, { matchLength }) => acc + matchLength, 0);\n      // Calculate total length\n      const totalLength = scores.reduce((acc, { wordLength }) => acc + wordLength, 0);\n\n      return {\n        totalMatchLength,\n        totalPercentageMatch: totalMatchLength > 0 ? totalMatchLength / totalLength : 0,\n      };\n    });\n\n    const highestScore = Math.max(...allScores.map(s => s.totalMatchLength));\n    const highestPercentageScore = Math.max(...allScores.map(s => s.totalPercentageMatch));\n\n    return {\n      display,\n      ...d,\n      score: highestScore,\n      pcScore: highestPercentageScore,\n    };\n  });\n\n  // Filter and score list by score (match scores below minimum input length if complete match)\n  return scoredList\n    .filter(d => d.score >= minimumInputLength || d.pcScore === 1)\n    .sort((a, b) => b.score - a.score);\n};\n\nexport const formatAreaList = (areaList, areasInData, selectedAreas) =>\n  areaList.map(area => {\n    const areaInData = areasInData.includes(area.display);\n    const areaSelected = selectedAreas.includes(area.value);\n    return {\n      ...area,\n      disabled: !areaInData,\n      selected: areaSelected,\n      words: generateWords(area.display),\n      alternativeWords: (area.alternatives || []).map(alt => generateWords(alt)),\n    };\n  });\n\nconst generateErrorTextFromOptions = (\n  selectedAreasNotInData,\n  { cumulative, values, per100K, daysSinceN }\n) => {\n  const cumulativeText = cumulative ? 'total' : 'average daily';\n  const valuesText = `${values}${per100K ? ' (per 100k)' : ''}`;\n  const daysText = daysSinceN === 3 ? 'three' : daysSinceN;\n\n  return `because ${\n    selectedAreasNotInData.length > 1 ? 'they have' : 'it has'\n  } not yet passed ${daysText} ${cumulativeText} ${valuesText} in our dataset`;\n};\n\nexport const generateErrorMessage = (selectedAreas, areasInData, options) => {\n  const selectedAreasNotInData = selectedAreas\n    .filter(({ display }) => !areasInData.includes(display))\n    .map(({ display }) => display);\n  const selectedAreasNotInDataText = selectedAreasNotInData.reduce(\n    (acc, curr, i, arr) => `${acc}${i > 0 ? (i === arr.length - 1 ? ' and ' : ', ') : ''}${curr}`,\n    ''\n  );\n\n  const errorMessageFromOptions = generateErrorTextFromOptions(selectedAreasNotInData, options);\n  const errorMessage =\n    selectedAreasNotInData.length > 0\n      ? `${selectedAreasNotInDataText} ${\n          selectedAreasNotInData.length > 1 ? 'do' : 'does'\n        } not appear on this view of the chart ${errorMessageFromOptions}. Please try other options`\n      : null;\n\n  return errorMessage;\n};\n\nexport default { findMatch, generateWords, getSuggestions, formatAreaList };\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","/**\n * @file\n * CSS styles for <ChartFooter />\n */\n\nimport { css } from '@emotion/core';\n\nconst base = css`\n  font-family: MetricWeb, sans-serif;\n  font-weight: 400;\n`;\n\nexport const copyrightStylesBase = css`\n  ${base};\n  fill: #66605c;\n  font-style: italic;\n`;\n\nexport const sourceStylesBase = css`\n  ${base};\n  fill: #66605c;\n`;\n\nexport const sourceStylesPrint = css`\n  fill: #000000;\n`;\n\nexport const sourceStylesSocial = css`\n  fill: #8e9095;\n`;\n\nexport const sourceStylesVideo = css`\n  fill: #8e9095;\n`;\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","/**\n * @file\n * Lines geometry\n */\n\nimport React, { useContext } from 'react';\nimport { LinePath } from '@visx/shape';\nimport { Group } from '@visx/group';\nimport { inferScaleType } from '@visx/scale';\nimport { PlotContext } from '../chart-frame/plot-context';\nimport { lineComponentPropTypes, linesComponentPropTypes } from '../prop-types';\nimport { lineComponentDefaultProps, linesComponentDefaultProps } from '../default-props';\nimport { isZeroOrDefined } from '../../util';\n\n// Original line component\nconst LineWithContext = ({\n  data,\n  xVariable,\n  yVariable,\n  color, // @TODO This is a weird API. Should be like <Dots />\n  xScale,\n  yScale,\n  yTransformFunction,\n  yAccessor,\n  xAccessor,\n  width: propWidth,\n  height: propHeight,\n  strokeWidth,\n  defined,\n}) => {\n  const { width, height } = useContext(PlotContext);\n\n  xScale.rangeRound([0, propWidth || width]);\n  yScale.rangeRound([propHeight || height, 0]);\n\n  const xPosition = xAccessor || ((datum) => xScale(datum[xVariable]));\n  const yPosition =\n    yAccessor ||\n    ((datum) =>\n      yScale(yTransformFunction ? yTransformFunction(datum[yVariable]) : datum[yVariable]));\n\n  return (\n    <LinePath\n      defined={defined}\n      data={data}\n      x={(datum) => datum && xPosition(datum)}\n      y={(datum) => datum && yPosition(datum)}\n      stroke={color}\n      strokeWidth={strokeWidth}\n      strokeLinecap=\"square\"\n      strokeLinejoin=\"round\"\n    />\n  );\n};\n\n// Single line\nconst Line = ({ data, xPosition, yPosition, color, strokeWidth, defined }) => (\n  <LinePath\n    defined={defined}\n    data={data}\n    x={(datum) => datum && xPosition(datum)}\n    y={(datum) => datum && yPosition(datum)}\n    stroke={color}\n    strokeWidth={strokeWidth}\n    strokeLinecap=\"square\"\n    strokeLinejoin=\"round\"\n  />\n);\n\n// Series of lines\nconst Lines = ({\n  width,\n  height,\n  seriesNames,\n  data,\n  xScale,\n  xVariable,\n  yScale,\n  yTransformFunction,\n  colorScale,\n  strokeWidth,\n  defined,\n  highlightedLineOutlineWidth,\n  highlightedLineOutlineColor,\n}) => {\n  xScale.rangeRound([0, width]);\n  yScale.rangeRound([height, 0]);\n\n  const xPosition = (datum) => xScale(datum[xVariable]);\n  // yVariable is the seriesName\n  const yPosition = (yVariable) => (datum) =>\n    yScale(yTransformFunction ? yTransformFunction(datum[yVariable]) : datum[yVariable]);\n\n  return seriesNames.map((seriesName) => (\n    <Group key={`series_${seriesName}`}>\n      {highlightedLineOutlineWidth > 0 && (\n        <Line\n          width={width}\n          height={height}\n          data={data.filter((d) => isZeroOrDefined(d[seriesName]))}\n          xPosition={xPosition}\n          yPosition={yPosition(seriesName)}\n          color={highlightedLineOutlineColor}\n          strokeWidth={highlightedLineOutlineWidth}\n          defined={defined}\n        />\n      )}\n      <Line\n        width={width}\n        height={height}\n        data={data.filter((d) => isZeroOrDefined(d[seriesName]))}\n        xPosition={xPosition}\n        yPosition={yPosition(seriesName)}\n        color={colorScale(seriesName)}\n        strokeWidth={strokeWidth}\n        defined={defined}\n      />\n    </Group>\n  ));\n};\n\nconst MemoisedLines = React.memo(\n  Lines,\n  (prevProps, nextProps) => JSON.stringify(prevProps) === JSON.stringify(nextProps)\n);\n\nconst LinesWithContext = ({\n  data,\n  width: propWidth,\n  height: propHeight,\n  highlightLinesOnHover,\n  hoveredLineStrokeWidth,\n  hoveredLinesColorScale,\n  highlightedLineOutlineWidth,\n  ...props\n}) => {\n  const { width, height, hoveredSeries } = useContext(PlotContext);\n\n  const scaleProperties = {\n    yScaleType: inferScaleType(props.yScale),\n    yScaleDomain: props.yScale.domain(),\n    yScaleRange: props.yScale.range(),\n    xScaleType: inferScaleType(props.xScale),\n    xScaleDomain: props.xScale.domain(),\n    xScaleRange: props.xScale.range(),\n  };\n\n  return (\n    <Group>\n      <MemoisedLines\n        {...props}\n        data={data}\n        width={propWidth || width}\n        height={propHeight || height}\n        // This should force the lines to rerender when the scale properties change\n        {...scaleProperties}\n        highlightedLineOutlineWidth={highlightLinesOnHover ? 0 : highlightedLineOutlineWidth}\n      />\n      <MemoisedLines\n        {...props}\n        data={data}\n        width={propWidth || width}\n        height={propHeight || height}\n        // This should force the lines to rerender when the scale properties change\n        {...scaleProperties}\n        strokeWidth={hoveredLineStrokeWidth}\n        colorScale={hoveredLinesColorScale}\n        seriesNames={highlightLinesOnHover ? [hoveredSeries] : []}\n        highlightedLineOutlineWidth={highlightedLineOutlineWidth}\n      />\n    </Group>\n  );\n};\n\nLineWithContext.propTypes = lineComponentPropTypes;\nLineWithContext.defaultProps = lineComponentDefaultProps;\nLinesWithContext.propTypes = linesComponentPropTypes;\nLinesWithContext.defaultProps = linesComponentDefaultProps;\n\nexport { LineWithContext as Line, LinesWithContext as Lines };\nexport default null;\n","import { isZeroOrDefined, identity } from '@financial-times/vvc/util';\n\nconst repositionLabels = (\n  initialLabelPositions,\n  positionVariable = 'yPosition',\n  orderVariable = 'y',\n  spacing = 18,\n  alpha = 0.5\n) => {\n  const copiedLabelPositions = initialLabelPositions.map(d => ({ ...d }));\n\n  const automaticallyRepositionLabels = labelPositions =>\n    labelPositions.forEach(d1 => {\n      const position1 = d1[positionVariable];\n      const order1 = d1[orderVariable];\n\n      labelPositions.forEach(d2 => {\n        const position2 = d2[positionVariable];\n        const order2 = d2[orderVariable];\n\n        /* Difference between current order variables for each label\n          This ensures the labels are always in the correct order */\n        const deltaOrder = order1 - order2;\n        /* Difference between current positions\n          When this is below the required minimum spacing the positioning\n          algorithm should stop */\n        const deltaPosition = position1 - position2;\n\n        if (d1 !== d2 && Math.abs(deltaPosition) <= spacing) {\n          const sign = deltaOrder > 0 ? -1 : 1;\n          const adjust = sign * alpha;\n\n          d1[positionVariable] = +position1 + adjust;\n          d2[positionVariable] = +position2 - adjust;\n\n          automaticallyRepositionLabels(\n            labelPositions,\n            positionVariable,\n            orderVariable,\n            spacing,\n            alpha\n          );\n        }\n      });\n    });\n\n  automaticallyRepositionLabels(copiedLabelPositions);\n\n  return copiedLabelPositions;\n};\n\nconst getLineEndPositions = (data, seriesNames, xVariable, yVariable, yMax) => {\n  // Generate object with entry for each line end position\n  const lineEndPositions = seriesNames.reduce((acc, series) => {\n    const sortedData = [...data].sort((a, b) => a[xVariable] - b[xVariable]);\n    const reverseSortedData = [...sortedData].reverse();\n    const endEntry = reverseSortedData.find(d => isZeroOrDefined(d[series]));\n    // Find the first entry that is greater than yMax\n    const firstIntersectionEntry = sortedData.find(\n      d => isZeroOrDefined(d[series]) && d[series] > yMax\n    );\n\n    return {\n      ...acc,\n      // Add single dot for each series\n      [series]: [\n        {\n          x: endEntry[xVariable],\n          y: endEntry[series],\n          yAxisIntersectionX: firstIntersectionEntry && firstIntersectionEntry[xVariable],\n          label: series,\n          color: series,\n        },\n      ],\n    };\n  }, {});\n\n  return lineEndPositions;\n};\n\nexport { getLineEndPositions, repositionLabels };\nexport default null;\n","import {guid} from '../utils.js';\nimport {Store} from './store.js';\n\nlet userID;\nlet store;\n\n/**\n * Init\n *\n * @param {string} value The value of a userID to use if one is not stored\n * @param {string} cookieDomain The domain that should be used to cookie te user\n * @returns {string} - The user ID if present, or a generated UID if not\n */\nfunction init(value, cookieDomain) {\n\tconst defaultUserConfig = {\n\t\tstorage: 'cookie',\n\t\tname: 'spoor-id',\n\t\tnameOverride: 'spoor-id',\n\t\tvalue: null,\n\n\t\t// Set the store cookie domain to .ft.com for ft.com and all its subdomains\n\t\tdomain: location.hostname.match(/^(?:.+\\.)?ft\\.com$/) ? 'ft.com' : null,\n\t};\n\tif ( cookieDomain ) {\n\t\tdefaultUserConfig.domain = cookieDomain;\n\t}\n\n\tstore = new Store(defaultUserConfig.name, defaultUserConfig);\n\tlet id = store.read();\n\n\tif (!id) {\n\t\tid = value;\n\t}\n\n\treturn setUser(id); // Refresh cookies and update state\n}\n\n/**\n * setUser\n *\n * @param {string} id The userID to set.\n * @returns {string} - The user ID if present, or a generated UID if not\n */\nfunction setUser(id) {\n\tuserID = id;\n\n\tif (!userID) {\n\t\tuserID = guid();\n\t}\n\n\tstore.write(userID); // Refreshes the cookie...\n\n\treturn userID;\n}\n\n/**\n * Delete the current user data.\n *\n * @returns {void}\n */\nfunction destroy() {\n\tstore.destroy();\n}\n\n/**\n * Get the user ID\n *\n * @returns {string} - The user ID\n */\nfunction id() {\n\treturn userID;\n}\n\nexport {\n\tinit,\n\tsetUser,\n\tid as userID,\n\tdestroy\n};\n","/* eslint-disable no-magic-numbers, no-underscore-dangle, no-prototype-builtins */\n// Source: https://github.com/FormidableLabs/victory/blob/7aa02aa0d7462e64f186e5a318a4e8d4299c29ca/packages/victory-core/src/victory-util/textsize.js\n// http://www.pearsonified.com/2012/01/characters-per-line.php\n\nimport assign from 'lodash.assign';\nimport defaults from 'lodash.defaults';\n\nconst fontDictionary = {\n  // Via: https://github.com/Financial-Times/font-profiler\n  Metric: 2.6127,\n  'MetricWeb-Regular': 2.6127,\n  'Metric Bold': 2.4775,\n  'MetricWeb-Bold': 2.4775,\n\n  // Remainder via: http://www.pearsonified.com/2012/01/characters-per-line.php\n  'American Typewriter': 2.09,\n  Baskerville: 2.51,\n  Georgia: 2.27,\n  'Hoefler Text': 2.39,\n  Palatino: 2.26,\n  'Times New Roman': 2.48,\n  Arial: 2.26,\n  'Gill Sans': 2.47,\n  'Gill Sans 300': 2.58,\n  'Helvetica Neue': 2.24,\n  'Lucida Grande': 2.05,\n  Tahoma: 2.25,\n  'Trebuchet MS': 2.2,\n  Verdana: 1.96,\n  'Courier New': 1.67,\n  cursive: 1.84,\n  fantasy: 2.09,\n  monospace: 1.81,\n  serif: 2.04,\n  'sans-serif': 1.89,\n};\n// https://developer.mozilla.org/en/docs/Web/CSS/length\n// Absolute sizes in pixels for obsolete measurement units.\nconst absoluteMeasurementUnitsToPixels = {\n  mm: 3.8,\n  sm: 38,\n  pt: 1.33,\n  pc: 16,\n  in: 96,\n  px: 1,\n};\nconst relativeMeasurementUnitsCoef = {\n  em: 1,\n  ex: 0.5,\n};\n\nconst coefficients = {\n  averageFontConstant: 2.1675, // Average pixels per glyph in existing font.\n  widthOverlapCoef: 1.25, // Coefficient for width value to prevent overlap.\n  heightOverlapCoef: 1.05, // Coefficient for height value to prevent overlap.\n  lineCapitalCoef: 1.15, // Coefficient for height value. Reserve space for capital chars.\n  lineSpaceHeightCoef: 0.2, // Coefficient for height value. Reserve space between lines.\n};\nconst defaultStyle = {\n  lineHeight: 1,\n  letterSpacing: '0px',\n  fontSize: 0,\n  angle: 0,\n  fontFamily: '',\n};\n\nconst _degreeToRadian = angle => (angle * Math.PI) / 180;\n\nconst _getFontCharacterConstant = fontFamily => {\n  const firstFont = fontFamily.split(',')[0].replace(/'|\"/g, '');\n  return fontDictionary[firstFont] || coefficients.averageFontConstant;\n};\n\nconst _splitToLines = text => {\n  return Array.isArray(text) ? text : text.toString().split(/\\r\\n|\\r|\\n/g);\n};\n\nconst _getSizeWithRotate = (axisSize, dependentSize, angle) => {\n  const angleInRadian = _degreeToRadian(angle);\n  return (\n    Math.abs(Math.cos(angleInRadian) * axisSize) + Math.abs(Math.sin(angleInRadian) * dependentSize)\n  );\n};\n\n/**\n * Convert length-type parameters from specific measurement units to pixels\n * @param  {string} length Css length string value.\n * @param  {number} fontSize Current text font-size.\n * @returns {number} Approximate Css length in pixels.\n */\nexport const convertLengthToPixels = (length, fontSize) => {\n  const attribute = length.match(/[a-zA-Z%]+/)[0];\n  const value = length.match(/[0-9.,]+/);\n  let result;\n  if (absoluteMeasurementUnitsToPixels.hasOwnProperty(attribute)) {\n    result = value * absoluteMeasurementUnitsToPixels[attribute];\n  } else if (relativeMeasurementUnitsCoef.hasOwnProperty(attribute)) {\n    result =\n      (fontSize ? value * fontSize : value * defaultStyle.fontSize) *\n      relativeMeasurementUnitsCoef[attribute];\n  } else {\n    result = value;\n  }\n  return result;\n};\n\nconst _prepareParams = (inputStyle, index) => {\n  const lineStyle = Array.isArray(inputStyle) ? inputStyle[index] : inputStyle;\n  const style = defaults({}, lineStyle, defaultStyle);\n  return assign({}, style, {\n    characterConstant: style.characterConstant || _getFontCharacterConstant(style.fontFamily),\n    letterSpacing: convertLengthToPixels(style.letterSpacing, style.fontSize),\n    fontSize:\n      typeof style.fontSize === 'number'\n        ? style.fontSize\n        : convertLengthToPixels(String(style.fontSize)),\n  });\n};\n\nconst _approximateTextWidthInternal = (text, style) => {\n  if (!text) {\n    return 0;\n  }\n  const widths = _splitToLines(text).map((line, index) => {\n    const len = line.toString().length;\n    const { fontSize, characterConstant, letterSpacing } = _prepareParams(style, index);\n    return (len * fontSize) / characterConstant + letterSpacing * Math.max(len - 1, 0);\n  });\n  return Math.max(...widths);\n};\n\nconst _approximateTextHeightInternal = (text, style) => {\n  if (!text) {\n    return 0;\n  }\n  return _splitToLines(text).reduce((total, line, index) => {\n    const lineStyle = _prepareParams(style, index);\n    const containsCaps = line.toString().match(/[(A-Z)(0-9)]/);\n    const height = containsCaps\n      ? lineStyle.fontSize * coefficients.lineCapitalCoef\n      : lineStyle.fontSize;\n    const emptySpace = index === 0 ? 0 : lineStyle.fontSize * coefficients.lineSpaceHeightCoef;\n    return total + lineStyle.lineHeight * (height + emptySpace);\n  }, 0);\n};\n\n/**\n * Predict text size by font params.\n * @param {string} text Content for width calculation.\n * @param {Object} style Text styles, ,fontFamily, fontSize, etc.\n * @param {string} style.fontFamily Text fontFamily.\n * @param {(number|string)} style.fontSize Text fontSize.\n * @param {number} style.angle Text rotate angle.\n * @param {string} style.letterSpacing Text letterSpacing(space between letters).\n * @param {number} style.characterConstant Average pixels per glyph.\n * @param {number} style.lineHeight Line height coefficient.\n * @returns {number} Approximate text label height.\n */\nexport const approximateTextSize = (text, style) => {\n  const angle = Array.isArray(style) ? style[0] && style[0].angle : style && style.angle;\n  const height = _approximateTextHeightInternal(text, style);\n  const width = _approximateTextWidthInternal(text, style);\n  const widthWithRotate = angle ? _getSizeWithRotate(width, height, angle) : width;\n  const heightWithRotate = angle ? _getSizeWithRotate(height, width, angle) : height;\n  return {\n    width: widthWithRotate * coefficients.widthOverlapCoef,\n    height: heightWithRotate * coefficients.heightOverlapCoef,\n  };\n};\n","import PropTypes from 'prop-types';\nimport { linesComponentPropTypes } from '@financial-times/vvc/components/prop-types';\nimport { baseComponentDefaultProps } from '@financial-times/vvc/components/default-props';\n\nexport const lineChartPropTypes = {\n  ...linesComponentPropTypes,\n  xAxisOrientation: PropTypes.string,\n  yAxisOrientation: PropTypes.string,\n  yVariable: PropTypes.arrayOf(PropTypes.string),\n  logScale: PropTypes.bool,\n  yTickValues: PropTypes.array,\n  xFullLengthTicks: PropTypes.bool,\n  yFullLengthTicks: PropTypes.bool,\n  yMin: PropTypes.number,\n  yMax: PropTypes.number,\n  xScaleType: PropTypes.oneOf(['time', 'linear']),\n  showLegend: PropTypes.bool,\n  showLineEndDots: PropTypes.bool,\n  yTickFormat: PropTypes.func,\n  xTickFormat: PropTypes.func,\n  hideEndTicks: PropTypes.bool,\n  additionalAxisStyles: PropTypes.object,\n  stabRule: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n  xAxisLabel: PropTypes.string,\n  xAxisLabelOffset: PropTypes.number,\n  xAxisLabelProps: PropTypes.object,\n  showTooltips: PropTypes.bool,\n  tooltipStyle: PropTypes.object,\n  tooltipComponent: PropTypes.func,\n  showTooltipLine: PropTypes.bool,\n  hideTopper: PropTypes.bool,\n  hideFooter: PropTypes.bool,\n  hideTitleTooltip: PropTypes.bool,\n  seriesToHighlight: PropTypes.arrayOf(PropTypes.string),\n  labelStrokeColor: PropTypes.string,\n  labelStrokeWidth: PropTypes.number,\n  allLinesHoverable: PropTypes.bool,\n  lineColorPalette: PropTypes.array,\n  labelColorPalette: PropTypes.array,\n  ghostLineColor: PropTypes.string,\n  ghostLineHoverColorScale: PropTypes.func,\n  ghostLineHoverLabelColorScale: PropTypes.func,\n  highlightedLineOutlineWidth: PropTypes.number,\n  hoverRadius: PropTypes.number,\n  additionalYTickValues: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n};\n\nexport const lineChartDefaultProps = {\n  ...baseComponentDefaultProps,\n  xAxisOrientation: 'bottom',\n  yAxisOrientation: 'left',\n  xFullLengthTicks: false,\n  yFullLengthTicks: false,\n  showLegend: true,\n  // <Lines />\n  data: [], // Generates 3 x date-value series\n  xVariable: 'date',\n  yVariable: [], // if elements of the array are passed in, then all columns are displayed as separate lines\n  xScaleType: 'time',\n  logScale: false,\n  showLineEndDots: false,\n  hideEndTicks: false,\n  showTooltips: false,\n  yTransformFunction: i => i, // Identity function\n  showTooltipLine: false,\n  tooltipComponent: ({ seriesName, yValue }) => `${seriesName}: ${yValue}`,\n  // <Frame />\n  hideTopper: false,\n  hideFooter: false,\n  hideTitleTooltip: false,\n  seriesToHighlight: null,\n  labelStrokeColor: '#fff1e5',\n  labelStrokeWidth: 4,\n  // Color\n  ghostLineColor: '#b3a9a0',\n  ghostLineHoverColorScale: () => '#b3a9a0',\n  ghostLineHoverLabelColorScale: () => '#66605C',\n  additionalYTickValues: false,\n};\n\nexport const labelComponentDefaultProps = {\n  fill: '#000000',\n  anchor: 'start',\n  fontSize: 14,\n  strokeColor: '#fff1e5',\n  strokeWidth: 4,\n  x: 0,\n  y: 0,\n  dx: 0,\n  dy: 0,\n  showArrow: false,\n  arrowWidth: 10,\n};\n\nexport default null;\n","/* @license\nPapa Parse\nv4.6.3\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\nArray.isArray||(Array.isArray=function(e){return\"[object Array]\"===Object.prototype.toString.call(e)}),function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function(){\"use strict\";var s,e,f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{},n=!f.document&&!!f.postMessage,o=n&&/(\\?|&)papaworker(=|&|$)/.test(f.location.search),a=!1,h={},u=0,k={parse:function(e,t){var r=(t=t||{}).dynamicTyping||!1;z(r)&&(t.dynamicTypingFunction=r,r={});if(t.dynamicTyping=r,t.transform=!!z(t.transform)&&t.transform,t.worker&&k.WORKERS_SUPPORTED){var i=function(){if(!k.WORKERS_SUPPORTED)return!1;if(!a&&null===k.SCRIPT_PATH)throw new Error(\"Script path cannot be determined automatically when Papa Parse is loaded asynchronously. You need to set Papa.SCRIPT_PATH manually.\");var e=k.SCRIPT_PATH||s;e+=(-1!==e.indexOf(\"?\")?\"&\":\"?\")+\"papaworker\";var t=new f.Worker(e);return t.onmessage=m,t.id=u++,h[t.id]=t}();return i.userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=z(t.step),t.chunk=z(t.chunk),t.complete=z(t.complete),t.error=z(t.error),delete t.worker,void i.postMessage({input:e,config:t,workerId:i.id})}var n=null;k.NODE_STREAM_INPUT,\"string\"==typeof e?n=t.download?new c(t):new _(t):!0===e.readable&&z(e.read)&&z(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new p(t));return n.stream(e)},unparse:function(e,t){var i=!1,g=!0,m=\",\",y=\"\\r\\n\",n='\"',r=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||k.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||Array.isArray(t.quotes))&&(i=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(r=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(n=t.quoteChar);\"boolean\"==typeof t.header&&(g=t.header)}();var s=new RegExp(M(n),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return o(null,e,r);if(\"object\"==typeof e[0])return o(a(e[0]),e,r)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:a(e.data[0])),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),o(e.fields||[],e.data||[],r);throw\"exception: Unable to serialize unrecognized input\";function a(e){if(\"object\"!=typeof e)return[];var t=[];for(var r in e)t.push(r);return t}function o(e,t,r){var i=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0<e.length,s=!Array.isArray(t[0]);if(n&&g){for(var a=0;a<e.length;a++)0<a&&(i+=m),i+=v(e[a],a);0<t.length&&(i+=y)}for(var o=0;o<t.length;o++){var h=n?e.length:t[o].length,u=!1,f=n?0===Object.keys(t[o]).length:0===t[o].length;if(r&&!n&&(u=\"greedy\"===r?\"\"===t[o].join(\"\").trim():1===t[o].length&&0===t[o][0].length),\"greedy\"===r&&n){for(var d=[],l=0;l<h;l++){var c=s?e[l]:l;d.push(t[o][c])}u=\"\"===d.join(\"\").trim()}if(!u){for(var p=0;p<h;p++){0<p&&!f&&(i+=m);var _=n&&s?e[p]:p;i+=v(t[o][_],p)}o<t.length-1&&(!r||0<h&&!f)&&(i+=y)}}return i}function v(e,t){if(null==e)return\"\";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);e=e.toString().replace(s,n+n);var r=\"boolean\"==typeof i&&i||Array.isArray(i)&&i[t]||function(e,t){for(var r=0;r<t.length;r++)if(-1<e.indexOf(t[r]))return!0;return!1}(e,k.BAD_DELIMITERS)||-1<e.indexOf(m)||\" \"===e.charAt(0)||\" \"===e.charAt(e.length-1);return r?n+e+n:e}}};if(k.RECORD_SEP=String.fromCharCode(30),k.UNIT_SEP=String.fromCharCode(31),k.BYTE_ORDER_MARK=\"\\ufeff\",k.BAD_DELIMITERS=[\"\\r\",\"\\n\",'\"',k.BYTE_ORDER_MARK],k.WORKERS_SUPPORTED=!n&&!!f.Worker,k.SCRIPT_PATH=null,k.NODE_STREAM_INPUT=1,k.LocalChunkSize=10485760,k.RemoteChunkSize=5242880,k.DefaultDelimiter=\",\",k.Parser=v,k.ParserHandle=r,k.NetworkStreamer=c,k.FileStreamer=p,k.StringStreamer=_,k.ReadableStreamStreamer=g,f.jQuery){var d=f.jQuery;d.fn.parse=function(o){var r=o.config||{},h=[];return this.each(function(e){if(!(\"INPUT\"===d(this).prop(\"tagName\").toUpperCase()&&\"file\"===d(this).attr(\"type\").toLowerCase()&&f.FileReader)||!this.files||0===this.files.length)return!0;for(var t=0;t<this.files.length;t++)h.push({file:this.files[t],inputElem:this,instanceConfig:d.extend({},r)})}),e(),this;function e(){if(0!==h.length){var e,t,r,i,n=h[0];if(z(o.before)){var s=o.before(n.file,n.inputElem);if(\"object\"==typeof s){if(\"abort\"===s.action)return e=\"AbortError\",t=n.file,r=n.inputElem,i=s.reason,void(z(o.error)&&o.error({name:e},t,r,i));if(\"skip\"===s.action)return void u();\"object\"==typeof s.config&&(n.instanceConfig=d.extend(n.instanceConfig,s.config))}else if(\"skip\"===s)return void u()}var a=n.instanceConfig.complete;n.instanceConfig.complete=function(e){z(a)&&a(e,n.file,n.inputElem),u()},k.parse(n.file,n.instanceConfig)}else z(o.complete)&&o.complete()}function u(){h.splice(0,1),e()}}}function l(e){this._handle=null,this._finished=!1,this._completed=!1,this._input=null,this._baseIndex=0,this._partialLine=\"\",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=E(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null);this._handle=new r(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,t){if(this.isFirstChunk&&z(this._config.beforeFirstChunk)){var r=this._config.beforeFirstChunk(e);void 0!==r&&(e=r)}this.isFirstChunk=!1;var i=this._partialLine+e;this._partialLine=\"\";var n=this._handle.parse(i,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var s=n.meta.cursor;this._finished||(this._partialLine=i.substring(s-this._baseIndex),this._baseIndex=s),n&&n.data&&(this._rowCount+=n.data.length);var a=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(o)f.postMessage({results:n,workerId:k.WORKER_ID,finished:a});else if(z(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return;n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!z(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}},this._sendError=function(e){z(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:k.WORKER_ID,error:e,finished:!1})}}function c(e){var i;(e=e||{}).chunkSize||(e.chunkSize=k.RemoteChunkSize),l.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),n||(i.onload=w(this._chunkLoaded,this),i.onerror=w(this._chunkError,this)),i.open(\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)i.setRequestHeader(t,e[t])}if(this._config.chunkSize){var r=this._start+this._config.chunkSize-1;i.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+r),i.setRequestHeader(\"If-None-Match\",\"webkit-no-cache\")}try{i.send()}catch(e){this._chunkError(e.message)}n&&0===i.status?this._chunkError():this._start+=this._config.chunkSize}},this._chunkLoaded=function(){4===i.readyState&&(i.status<200||400<=i.status?this._chunkError():(this._finished=!this._config.chunkSize||this._start>function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substr(t.lastIndexOf(\"/\")+1))}(i),this.parseChunk(i.responseText)))},this._chunkError=function(e){var t=i.statusText||e;this._sendError(new Error(t))}}function p(e){var i,n;(e=e||{}).chunkSize||(e.chunkSize=k.LocalChunkSize),l.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((i=new FileReader).onload=w(this._chunkLoaded,this),i.onerror=w(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var t=Math.min(this._start+this._config.chunkSize,this._input.size);e=n.call(e,this._start,t)}var r=i.readAsText(e,this._config.encoding);s||this._chunkLoaded({target:{result:r}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function _(e){var r;l.call(this,e=e||{}),this.stream=function(e){return r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e=this._config.chunkSize,t=e?r.substr(0,e):r;return r=e?r.substr(e):\"\",this._finished=!r,this.parseChunk(t)}}}function g(e){l.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){i&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=w(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=w(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=w(function(){this._streamCleanUp(),i=!0,this._streamData(\"\")},this),this._streamCleanUp=w(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function r(g){var a,o,h,i=/^\\s*-?(\\d*\\.?\\d+|\\d+\\.?\\d*)(e[-+]?\\d+)?\\s*$/i,n=/(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/,t=this,r=0,s=0,u=!1,e=!1,f=[],d={data:[],errors:[],meta:{}};if(z(g.step)){var l=g.step;g.step=function(e){if(d=e,p())c();else{if(c(),0===d.data.length)return;r+=e.data.length,g.preview&&r>g.preview?o.abort():l(d,t)}}}function m(e){return\"greedy\"===g.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function c(){if(d&&h&&(y(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+k.DefaultDelimiter+\"'\"),h=!1),g.skipEmptyLines)for(var e=0;e<d.data.length;e++)m(d.data[e])&&d.data.splice(e--,1);return p()&&function(){if(!d)return;for(var e=0;p()&&e<d.data.length;e++)for(var t=0;t<d.data[e].length;t++){var r=d.data[e][t];g.trimHeaders&&(r=r.trim()),f.push(r)}d.data.splice(0,1)}(),function(){if(!d||!g.header&&!g.dynamicTyping&&!g.transform)return d;for(var e=0;e<d.data.length;e++){var t,r=g.header?{}:[];for(t=0;t<d.data[e].length;t++){var i=t,n=d.data[e][t];g.header&&(i=t>=f.length?\"__parsed_extra\":f[t]),g.transform&&(n=g.transform(n,i)),n=_(i,n),\"__parsed_extra\"===i?(r[i]=r[i]||[],r[i].push(n)):r[i]=n}d.data[e]=r,g.header&&(t>f.length?y(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+f.length+\" fields but parsed \"+t,s+e):t<f.length&&y(\"FieldMismatch\",\"TooFewFields\",\"Too few fields: expected \"+f.length+\" fields but parsed \"+t,s+e))}g.header&&d.meta&&(d.meta.fields=f);return s+=d.data.length,d}()}function p(){return g.header&&0===f.length}function _(e,t){return r=e,g.dynamicTypingFunction&&void 0===g.dynamicTyping[r]&&(g.dynamicTyping[r]=g.dynamicTypingFunction(r)),!0===(g.dynamicTyping[r]||g.dynamicTyping)?\"true\"===t||\"TRUE\"===t||\"false\"!==t&&\"FALSE\"!==t&&(i.test(t)?parseFloat(t):n.test(t)?new Date(t):\"\"===t?null:t):t;var r}function y(e,t,r,i){d.errors.push({type:e,code:t,message:r,row:i})}this.parse=function(e,t,r){var i=g.quoteChar||'\"';if(g.newline||(g.newline=function(e,t){e=e.substr(0,1048576);var r=new RegExp(M(t)+\"([^]*?)\"+M(t),\"gm\"),i=(e=e.replace(r,\"\")).split(\"\\r\"),n=e.split(\"\\n\"),s=1<n.length&&n[0].length<i[0].length;if(1===i.length||s)return\"\\n\";for(var a=0,o=0;o<i.length;o++)\"\\n\"===i[o][0]&&a++;return a>=i.length/2?\"\\r\\n\":\"\\r\"}(e,i)),h=!1,g.delimiter)z(g.delimiter)&&(g.delimiter=g.delimiter(e),d.meta.delimiter=g.delimiter);else{var n=function(e,t,r,i){for(var n,s,a,o=[\",\",\"\\t\",\"|\",\";\",k.RECORD_SEP,k.UNIT_SEP],h=0;h<o.length;h++){var u=o[h],f=0,d=0,l=0;a=void 0;for(var c=new v({comments:i,delimiter:u,newline:t,preview:10}).parse(e),p=0;p<c.data.length;p++)if(r&&m(c.data[p]))l++;else{var _=c.data[p].length;d+=_,void 0!==a?1<_&&(f+=Math.abs(_-a),a=_):a=0}0<c.data.length&&(d/=c.data.length-l),(void 0===s||s<f)&&1.99<d&&(s=f,n=u)}return{successful:!!(g.delimiter=n),bestDelimiter:n}}(e,g.newline,g.skipEmptyLines,g.comments);n.successful?g.delimiter=n.bestDelimiter:(h=!0,g.delimiter=k.DefaultDelimiter),d.meta.delimiter=g.delimiter}var s=E(g);return g.preview&&g.header&&s.preview++,a=e,o=new v(s),d=o.parse(a,t,r),c(),u?{meta:{paused:!0}}:d||{meta:{paused:!1}}},this.paused=function(){return u},this.pause=function(){u=!0,o.abort(),a=a.substr(o.getCharIndex())},this.resume=function(){u=!1,t.streamer.parseChunk(a,!0)},this.aborted=function(){return e},this.abort=function(){e=!0,o.abort(),d.meta.aborted=!0,z(g.complete)&&g.complete(d),a=\"\"}}function M(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function v(e){var S,O=(e=e||{}).delimiter,x=e.newline,T=e.comments,I=e.step,A=e.preview,D=e.fastMode,L=S=void 0===e.quoteChar?'\"':e.quoteChar;if(void 0!==e.escapeChar&&(L=e.escapeChar),(\"string\"!=typeof O||-1<k.BAD_DELIMITERS.indexOf(O))&&(O=\",\"),T===O)throw\"Comment character same as delimiter\";!0===T?T=\"#\":(\"string\"!=typeof T||-1<k.BAD_DELIMITERS.indexOf(T))&&(T=!1),\"\\n\"!==x&&\"\\r\"!==x&&\"\\r\\n\"!==x&&(x=\"\\n\");var P=0,F=!1;this.parse=function(i,t,r){if(\"string\"!=typeof i)throw\"Input must be a string\";var n=i.length,e=O.length,s=x.length,a=T.length,o=z(I),h=[],u=[],f=[],d=P=0;if(!i)return C();if(D||!1!==D&&-1===i.indexOf(S)){for(var l=i.split(x),c=0;c<l.length;c++){if(f=l[c],P+=f.length,c!==l.length-1)P+=x.length;else if(r)return C();if(!T||f.substr(0,a)!==T){if(o){if(h=[],k(f.split(O)),R(),F)return C()}else k(f.split(O));if(A&&A<=c)return h=h.slice(0,A),C(!0)}}return C()}for(var p,_=i.indexOf(O,P),g=i.indexOf(x,P),m=new RegExp(M(L)+M(S),\"g\");;)if(i[P]!==S)if(T&&0===f.length&&i.substr(P,a)===T){if(-1===g)return C();P=g+s,g=i.indexOf(x,P),_=i.indexOf(O,P)}else if(-1!==_&&(_<g||-1===g))f.push(i.substring(P,_)),P=_+e,_=i.indexOf(O,P);else{if(-1===g)break;if(f.push(i.substring(P,g)),w(g+s),o&&(R(),F))return C();if(A&&h.length>=A)return C(!0)}else for(p=P,P++;;){if(-1===(p=i.indexOf(S,p+1)))return r||u.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:h.length,index:P}),E();if(p===n-1)return E(i.substring(P,p).replace(m,S));if(S!==L||i[p+1]!==L){if(S===L||0===p||i[p-1]!==L){var y=b(-1===g?_:Math.min(_,g));if(i[p+1+y]===O){f.push(i.substring(P,p).replace(m,S)),P=p+1+y+e,_=i.indexOf(O,P),g=i.indexOf(x,P);break}var v=b(g);if(i.substr(p+1+v,s)===x){if(f.push(i.substring(P,p).replace(m,S)),w(p+1+v+s),_=i.indexOf(O,P),o&&(R(),F))return C();if(A&&h.length>=A)return C(!0);break}u.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:h.length,index:P}),p++}}else p++}return E();function k(e){h.push(e),d=P}function b(e){var t=0;if(-1!==e){var r=i.substring(p+1,e);r&&\"\"===r.trim()&&(t=r.length)}return t}function E(e){return r||(void 0===e&&(e=i.substr(P)),f.push(e),P=n,k(f),o&&R()),C()}function w(e){P=e,k(f),f=[],g=i.indexOf(x,P)}function C(e){return{data:h,errors:u,meta:{delimiter:O,linebreak:x,aborted:F,truncated:!!e,cursor:d+(t||0)}}}function R(){I(C()),h=[],u=[]}},this.abort=function(){F=!0},this.getCharIndex=function(){return P}}function m(e){var t=e.data,r=h[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,y(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:b,resume:b};if(z(r.userStep)){for(var s=0;s<t.results.data.length&&(r.userStep({data:[t.results.data[s]],errors:t.results.errors,meta:t.results.meta},n),!i);s++);delete t.results}else z(r.userChunk)&&(r.userChunk(t.results,n,t.file),delete t.results)}t.finished&&!i&&y(t.workerId,t.results)}function y(e,t){var r=h[e];z(r.userComplete)&&r.userComplete(t),r.terminate(),delete h[e]}function b(){throw\"Not implemented.\"}function E(e){if(\"object\"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var r in e)t[r]=E(e[r]);return t}function w(e,t){return function(){e.apply(t,arguments)}}function z(e){return\"function\"==typeof e}return o?f.onmessage=function(e){var t=e.data;void 0===k.WORKER_ID&&t&&(k.WORKER_ID=t.workerId);if(\"string\"==typeof t.input)f.postMessage({workerId:k.WORKER_ID,results:k.parse(t.input,t.config),finished:!0});else if(f.File&&t.input instanceof File||t.input instanceof Object){var r=k.parse(t.input,t.config);r&&f.postMessage({workerId:k.WORKER_ID,results:r,finished:!0})}}:k.WORKERS_SUPPORTED&&(e=document.getElementsByTagName(\"script\"),s=e.length?e[e.length-1].src:\"\",document.body?document.addEventListener(\"DOMContentLoaded\",function(){a=!0},!0):a=!0),(c.prototype=Object.create(l.prototype)).constructor=c,(p.prototype=Object.create(l.prototype)).constructor=p,(_.prototype=Object.create(_.prototype)).constructor=_,(g.prototype=Object.create(l.prototype)).constructor=g,k});","/**\n * @file\n * Sundry hooks that have multiple use-cases\n */\n\nimport { useRef, useEffect, useState } from 'react';\nimport OAds from '@financial-times/ads-legacy-o-ads';\nimport { isElement, registerLayoutChangeEvents, unregisterLayoutChangeEvents } from './helpers';\n\n/**\n * @function\n * Provides a standardised way of creating the container DOM elements for portals\n * Usage:\n  ```\n  const SomeComponent = () => {\n    const target = usePortal();\n    return createPortal(<div>my modal</div>, target);\n  }\n  ```\n *\n * Modified from: https://www.jayfreestone.com/writing/react-portals-with-hooks/\n */\nexport const usePortal = (parent) => {\n  const rootRef = useRef(null);\n\n  useEffect(() => {\n    if (!rootRef.current) {\n      const rootEl = document.createElement('div');\n      rootEl.classList.add('g-portal');\n      rootRef.current = rootEl;\n    }\n    /* eslint-disable no-nested-ternary */\n    const parentEl = isElement(parent)\n      ? parent\n      : typeof parent === 'string'\n      ? document.querySelector(parent) || document.createElement('div')\n      : document.createElement('div');\n    /* eslint-enable no-nested-ternary */\n\n    // Unmounted\n    if (!parentEl.parentElement) {\n      parentEl.classList.add('g-portal-parent');\n      document.body.insertBefore(parentEl, document.body.firstElementChild);\n    }\n\n    parentEl.appendChild(rootRef.current);\n\n    return () => {\n      rootRef.current.remove();\n      // Remove parent element if empty.\n      if (parentEl.childNodes.length === 0) parentEl.remove();\n    };\n  }, [parent]);\n\n  return rootRef.current;\n};\n\n/**\n * @function\n * Initialises o-ads\n */\nexport const useAds = (config, enabled = true) => {\n  useEffect(() => {\n    // Async side-effects should be in an IIFE in useEffect; don't make the CB async!\n    (async () => {\n      try {\n        if (enabled) {\n          const initialised = await OAds.init({\n            gpt: {\n              network: 5887,\n              site: config.gptSite || 'ft.com',\n              zone: config.gptZone || 'unclassified',\n            },\n            targeting: config.targeting,\n            lazyLoad: true,\n          });\n\n          const slots = Array.from(document.querySelectorAll('.o-ads, [data-o-ads-name]'));\n          slots.forEach(initialised.slots.initSlot.bind(initialised.slots));\n        }\n      } catch (e) {\n        if (!global.STORYBOOK_ENV) console.error(e); // eslint-disable-line no-console\n      }\n    })();\n  }, [config, enabled]);\n};\n\n/**\n * @function\n * Initialises o-grid's layout change events on first call;\n * then returns the current breakpoint.\n */\nexport const useLayoutChangeEvents = () => {\n  const [breakpoint, setBreakpoint] = useState('default');\n\n  const listenersRef = useRef();\n\n  const update = ({ detail }) => {\n    setBreakpoint({ breakpoint: detail });\n  };\n\n  useEffect(() => {\n    try {\n      window.addEventListener('o-grid.layoutChange', update);\n      listenersRef.current = registerLayoutChangeEvents();\n\n      return () => {\n        unregisterLayoutChangeEvents(listenersRef.current);\n        window.removeEventListener('o-grid.layoutChange', update);\n      };\n    } catch (e) {\n      // Suppress errors in Jest\n      if (!global.STORYBOOK_ENV) console.error(e); // eslint-disable-line no-console\n    }\n  }, []);\n\n  return breakpoint;\n};\n\n/**\n * @file\n * Sets up global keyboard shortcuts\n */\nexport const useKeyboardShortcuts = (shortcuts) => {\n  const handlers = useRef(null);\n  useEffect(() => {\n    handlers.current = shortcuts;\n  }, [shortcuts]);\n  useEffect(() => {\n    const listener = ({ keyCode, target }) => {\n      if (target === document.body && handlers.current[keyCode]) {\n        handlers.current[keyCode]();\n      }\n    };\n\n    document.addEventListener('keydown', listener);\n    return () => {\n      window.removeEventListener('keydown', listener);\n    };\n  }, []);\n\n  // Returns synthetic event listeners\n  return Object.entries(shortcuts).reduce(\n    (a, [k, v]) => ({\n      ...a,\n      [k]: ({ keyPress }) => keyPress === k && v(),\n    }),\n    {},\n  );\n};\n\nexport default {\n  usePortal,\n  useAds,\n  useLayoutChangeEvents,\n  useKeyboardShortcuts,\n};\n","export const generateHeaderText = ({ cumulative, values, areasToDisplay, areasInData }) => {\n  const cumulativeText = cumulative ? 'Cumulative' : 'New';\n  const valuesText = values === 'deaths' ? 'deaths attributed to' : 'confirmed cases of';\n  // Areas to display that will be shown in the chart — don't want to show a country name in the title that has not met the criteria to be shown in the chart\n  const areaText = areasToDisplay.reduce(\n    (acc, curr, i, arr) => `${acc}${i > 0 ? (i === arr.length - 1 ? ' and ' : ', ') : ''}${curr}`,\n    ''\n  );\n  const areaTextWithPrefix = areaText !== '' ? `in ${areaText}` : '';\n\n  return `${cumulativeText} ${valuesText} Covid-19 ${areaTextWithPrefix}`;\n};\n\nexport const generateSubheadText = ({ cumulative, values, per100K, daysSinceN, byDate }) => {\n  const cumulativeText = cumulative ? 'Cumulative' : 'Seven-day rolling average of new';\n  const averageText = cumulative ? 'total' : 'average daily';\n  const valuesText = `${values}${per100K ? ' (per 100k)' : ''}`;\n\n  return `${cumulativeText} ${valuesText}${\n    !byDate\n      ? `, by number of days since ` + `${daysSinceN} ${averageText} ${valuesText} first recorded`\n      : ''\n  }`;\n};\n\nexport const generateSourceText = ({ source, timestamp }) => {\n  return `${source}. | Data updated ${timestamp}. Interactive version: ft.com/covid19`;\n};\n\nexport const generateXAxisText = ({ cumulative, values, per100K, daysSinceN, isSmall }) => {\n  const cumulativeText = cumulative ? 'total' : 'average daily';\n  const valuesText = `${values}${per100K ? ' (per 100k)' : ''}`;\n\n  return `Number of days since ${daysSinceN}${\n    isSmall ? '|' : ''\n  } ${cumulativeText} ${valuesText} first recorded`;\n};\n\nexport default { generateHeaderText, generateSubheadText, generateSourceText };\n","import { timeDay, timeWeek, timeMonth, timeYear } from 'd3-time';\nimport { timeFormat } from 'd3-time-format';\n\nexport const generateXTickValues = (\n  xMax,\n  increment,\n  maxXTicks,\n  hideEndTicks,\n  skipEveryNthTick = 2\n) => {\n  let n = 0;\n  let tickSeries = [0];\n\n  /* Keep generating new values in the series until the value is greater\n      than or equal to the max x value */\n  while (tickSeries[n] <= xMax) {\n    // Get previous value\n    const previous = tickSeries[n];\n    const newValue = previous + increment;\n    tickSeries = [...tickSeries, newValue];\n    // Increment n\n    n++;\n  }\n\n  /* If the number of ticks is even and max ticks has been exceeded, add another\n    tick in the series so we can skip ticks without having uneven spacing at the end\n    of the chart */\n  if (tickSeries.length > maxXTicks && tickSeries.length % 2 === 0) {\n    tickSeries = [...tickSeries, tickSeries[tickSeries.length - 1] + increment];\n  }\n\n  // Get the final tick before we start filtering other ticks out\n  const maxXTickValue = tickSeries[tickSeries.length - 1];\n\n  if (tickSeries.length > maxXTicks) {\n    tickSeries = tickSeries.filter((d, i) => i % skipEveryNthTick === 0);\n  }\n\n  if (hideEndTicks) {\n    tickSeries = tickSeries.filter((d, i) => i !== 0 && i !== tickSeries.length - 1);\n  }\n\n  return { tickSeries, maxXTickValue };\n};\n\nconst getUniqueDateTicks = ticks =>\n  ticks.filter((date, i, arr) => arr.findIndex(d => d.getTime() === date.getTime()) === i);\n\nexport const generateXTickDateValues = (xMin, xMax, breakpoint, minTicks = 4) => {\n  // By default we want a tick for each month\n  const monthTicks = timeMonth.range(xMin, xMax);\n  // If less than 4 month ticks, generate a tick for each fortnight instead\n  if (monthTicks.length >= minTicks) {\n    return { uniqueTicks: getUniqueDateTicks([xMin, ...monthTicks]), tickIncrement: 'month' };\n  }\n\n  const fortnightTicks = timeWeek.range(xMin, xMax, 2);\n  // If less than 4 fortnight ticks, generate a tick for each week instead\n  if (fortnightTicks.length >= minTicks) {\n    return {\n      uniqueTicks: getUniqueDateTicks([xMin, ...fortnightTicks]),\n      tickIncrement: 'fortnight',\n    };\n  }\n\n  const weekTicks = timeWeek.range(xMin, xMax);\n  // If less than 4 week ticks, generate a tick for every 3 days instead\n  if (weekTicks.length >= minTicks) {\n    return {\n      uniqueTicks: getUniqueDateTicks([xMin, ...weekTicks]),\n      tickIncrement: 'week',\n    };\n  }\n\n  const threeDayTicks = timeDay.range(xMin, xMax, 3);\n  // If less than 4 three day ticks, generate a tick for every day instead\n  if (threeDayTicks.length >= minTicks) {\n    return {\n      uniqueTicks: getUniqueDateTicks([xMin, ...threeDayTicks]),\n      tickIncrement: 'three-day',\n    };\n  }\n\n  const dayTicks = timeDay.range(xMin, xMax);\n  return {\n    uniqueTicks: getUniqueDateTicks([xMin, ...dayTicks]),\n    tickIncrement: 'day',\n  };\n};\n\nexport const filterXTickDateValues = (\n  ticks,\n  xMin,\n  xMax,\n  tickSpacingMin = 0.05,\n  maxNumTicks = 12,\n  hideEveryNTicks = 2\n) => {\n  const totalNumberOfDaysInRange = timeDay.count(xMin, xMax);\n  const daysBetweenFirstTwoTicks = timeDay.count(ticks[0], ticks[1]);\n  const spaceBetweenFirstTwoTicks = daysBetweenFirstTwoTicks / totalNumberOfDaysInRange;\n\n  // Ignore first tick when getting ticks length\n  const maxTicksBreached = ticks.length - 1 > maxNumTicks;\n  // If number of ticks above max, hide every Nth tick\n  const ticksToHide = maxTicksBreached\n    ? ticks.slice(1).filter((t, index) => index % hideEveryNTicks === 0)\n    : [];\n  // Hide first tick label if spacing between first two ticks is below minimum\n  const hideFirstTick = spaceBetweenFirstTwoTicks < tickSpacingMin && !maxTicksBreached;\n\n  return [hideFirstTick && ticks[0].getTime(), ...ticksToHide.map(t => t.getTime())].filter(\n    Boolean\n  );\n};\n\nexport const generateXTickFormatFunction = (ticks, breakpoint, tickIncrement, tickLabelsToHide) => {\n  const firstYear = timeYear.floor(ticks[0]);\n  const secondYear = timeYear.floor(ticks[ticks.length - 1]);\n\n  const ticksSpanMoreThanOneYear = firstYear.getTime() !== secondYear.getTime();\n  const ticksToShow = ticks.filter(t => !tickLabelsToHide.includes(t.getTime()));\n  const firstTickInSecondYear = ticksToShow.find(tick => tick >= secondYear);\n\n  return (t, index) => {\n    // Hide tick label if in array\n    if (tickLabelsToHide.includes(t.getTime())) {\n      return '';\n    }\n\n    // Always show full date if first tick\n    if (index === 0) {\n      // e.g. Sep 1 | 2020\n      return timeFormat('%b %-d | %Y')(t);\n    }\n\n    // Default e.g. Sep 1\n    let tickFormatString = '%b %-d';\n    if (tickIncrement === 'month') {\n      // e.g. Sep\n      tickFormatString = '%b';\n    }\n\n    // Add year to format if first tick in second year\n    if (firstTickInSecondYear && t.getTime() === firstTickInSecondYear.getTime()) {\n      tickFormatString += ' | %Y';\n    }\n\n    return timeFormat(tickFormatString)(t);\n  };\n};\n\nexport default null;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import * as d3 from 'd3-time-format';\n\nconst parseTime = d3.timeParse('%Y-%m-%d');\n\nconst transformInputDataFeeds = inputData => {\n  return [\n    ...inputData\n      // Group by area\n      .reduce(\n        (map, { area, population, code, ...daily }) =>\n          map.set(area, {\n            population,\n            code,\n            timeSeries: [...((map.get(area) && map.get(area).timeSeries) || []), daily],\n          }),\n        new Map()\n      ),\n  ]\n    .filter(([, { code }]) => code && code !== 'N/A')\n    .map(([area, { population, code, timeSeries }]) => ({\n      area: area.replace(/_/g, ' '),\n      population,\n      code: code.toLowerCase(),\n      // Sort time series by date for each country\n      timeSeries: timeSeries\n        .map(({ date, ...t }) => ({ ...t, date: parseTime(date) }))\n        .sort((a, b) => a.date - b.date),\n    }));\n};\n\nexport default transformInputDataFeeds;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport default function Bar(_ref) {\n  var className = _ref.className,\n      innerRef = _ref.innerRef,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"className\", \"innerRef\"]);\n\n  return /*#__PURE__*/React.createElement(\"rect\", _extends({\n    ref: innerRef,\n    className: cx('visx-bar', className)\n  }, restProps));\n}","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n  tokenize: tokenizePartialBlankLine,\n  partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n  return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n  function afterWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n  var tail = events[events.length - 1]\n  if (!tail || tail[1].type !== type) return 0\n  return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  function overload(node, parents) {\n    var parent = parents[parents.length - 1]\n    var index = parent ? parent.children.indexOf(node) : null\n    return visitor(node, index, parent)\n  }\n}\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\nmodule.exports = getMapData;\n","export { default as Point } from './Point';","import React, { createElement } from 'react';\nimport { Group } from '@visx/group';\nimport { css } from '@emotion/core';\nimport {\n  goalpostsStyles,\n  stabRuleStyles,\n  stabRuleStylesSocial,\n  subtitleStylesBase,\n  subtitleStylesPrint,\n  subtitleStylesSocial,\n  subtitleStylesVideo,\n  titleStylesBase,\n  titleStylesPrint,\n  titleStylesSocial,\n  titleStylesVideo,\n} from './styles';\nimport { chartTopperPropTypes } from '../prop-types';\nimport { chartTopperDefaultProps } from '../default-props';\n\nconst titleStylesMap = {\n  print: titleStylesPrint,\n  social: titleStylesSocial,\n  video: titleStylesVideo,\n  web: null,\n};\nconst subtitleStylesMap = {\n  print: subtitleStylesPrint,\n  social: subtitleStylesSocial,\n  video: subtitleStylesVideo,\n  web: null,\n};\n\nconst ChartTopper = ({\n  height,\n  margin,\n  stabRule,\n  subtitle,\n  subtitleFontSize,\n  subtitleLineHeight,\n  subtitleMarkupCustom,\n  subtitlePosition,\n  subtitleStylesCustom,\n  title,\n  titleFontSize,\n  titleLineHeight,\n  titleMarkupCustom,\n  titlePosition,\n  titleStylesCustom,\n  type,\n  width,\n}) => {\n  return (\n    <Group>\n      {/* Stab rule */}\n      {typeof stabRule === 'boolean' && stabRule ? (\n        <rect\n          css={\n            type === 'social'\n              ? css`\n                  ${stabRuleStylesSocial};\n                  transform: translate(${margin.left}px, ${margin.left}px);\n                `\n              : stabRuleStyles\n          }\n          data-id=\"accent-bar\"\n          height=\"4\"\n          width=\"60\"\n        />\n      ) : (\n        stabRule && createElement(stabRule)\n      )}\n\n      {/* Goalposts for print */}\n      {type === 'print' && (\n        <path\n          css={goalpostsStyles}\n          d={[\n            `M 0, ${height} L ${width}, ${height}`,\n            `M 0, 15 L 0, 0 L ${width}, 0 L ${width}, 15`,\n          ]}\n        />\n      )}\n\n      {/* Title */}\n      <text\n        css={css`\n          font-size: ${titleFontSize}px;\n          ${titleStylesBase};\n          ${titleStylesMap[type]};\n          ${titleStylesCustom};\n        `}\n        data-id={`ft-webgraphic-${type}__title`}\n      >\n        {title && !titleMarkupCustom\n          ? title.split('|').map((line, i) => (\n              <tspan\n                data-id={`ft-webgraphic-${type}__title-line-${i}`}\n                key={`ft-webgraphic-${type}__title-line-${i}`} // eslint-disable-line react/no-array-index-key\n                x={titlePosition.x}\n                y={titlePosition.y + i * titleLineHeight}\n              >\n                {line}\n              </tspan>\n            ))\n          : title &&\n            title.split('|').map((line, i) => (\n              <tspan\n                dangerouslySetInnerHTML={{ __html: line }} // eslint-disable-line react/no-danger\n                data-id={`ft-webgraphic-${type}__title-line-${i}`}\n                key={`ft-webgraphic-${type}__title-line-${i}`} // eslint-disable-line react/no-array-index-key\n                x={titlePosition.x}\n                y={titlePosition.y + i * titleLineHeight}\n              />\n            ))}\n      </text>\n\n      {/* Subtitle */}\n      <text\n        css={css`\n          font-size: ${subtitleFontSize}px;\n          ${subtitleStylesBase};\n          ${subtitleStylesMap[type]};\n          ${subtitleStylesCustom};\n        `}\n        data-id={`ft-webgraphic-${type}__subtitle`}\n      >\n        {subtitle && !subtitleMarkupCustom\n          ? subtitle.split('|').map((line, i) => (\n              <tspan\n                data-id={`ft-webgraphic-${type}__subtitle-line-${i}`}\n                key={`ft-webgraphic-${type}__subtitle-line-${i}`} // eslint-disable-line react/no-array-index-key\n                x={subtitlePosition.x}\n                y={\n                  title && title.split('|').length > 1\n                    ? subtitlePosition.y +\n                      (title.split('|').length - 1) * titleLineHeight +\n                      i * subtitleLineHeight\n                    : subtitlePosition.y + i * subtitleLineHeight\n                }\n              >\n                {line}\n              </tspan>\n            ))\n          : subtitle &&\n            subtitle.split('|').map((line, i) => (\n              <tspan\n                dangerouslySetInnerHTML={{ __html: line }}\n                data-id={`ft-webgraphic-${type}__subtitle-line-${i}`}\n                key={`ft-webgraphic-${type}__subtitle-line-${i}`} // eslint-disable-line react/no-array-index-key\n                x={subtitlePosition.x}\n                y={\n                  title && title.split('|').length > 1\n                    ? subtitlePosition.y +\n                      (title.split('|').length - 1) * titleLineHeight +\n                      i * subtitleLineHeight\n                    : subtitlePosition.y + i * subtitleLineHeight\n                }\n              />\n            ))}\n      </text>\n    </Group>\n  );\n};\n\nChartTopper.propTypes = chartTopperPropTypes;\nChartTopper.defaultProps = chartTopperDefaultProps;\n\nexport default ChartTopper;\n","import {is, merge, isUndefined, guid} from '../utils.js';\nimport {Store} from './store.js';\n\n/**\n * @typedef {object} Session\n * @property {string} id - The id of the session\n * @property {boolean} isNew - Whether it is a brand new session\n */\n\nlet store;\nconst defaultSessionConfig = {\n\tstorage: 'best',\n\tname: 'session',\n\texpires: 30 * 60 * 1000 // 30 minutes\n};\n\n/**\n * Set the session in the store.\n *\n * @param {string} session - The session to be stored.\n * @returns {void}\n */\nfunction setSession(session) {\n\tconst d = new Date();\n\td.setTime(d.getTime() + store.config.expires);\n\n\tstore.write({\n\t\tvalue: session,\n\t\texpiry: d.valueOf()\n\t});\n}\n\n/**\n * Get the session from the store. Expiry and gen of a new session are handled here.\n *\n * @returns {Session} the current session\n */\nfunction getSession() {\n\tconst s = store.read();\n\tlet session;\n\tlet isNew = false;\n\n\tif (s) {\n\t\tconst d = new Date().valueOf();\n\t\tconst exp = parseInt(s.expiry, 10);\n\n\t\t// If current session is active.\n\t\tif (exp >= d) {\n\t\t\tsession = s.value;\n\t\t}\n\t}\n\n\t// No active session, gen a new one.\n\tif (!session) {\n\t\tsession = guid();\n\t\tisNew = true;\n\t}\n\n\t// Refreshes the cookie...\n\tsetSession(session);\n\n\treturn {\n\t\tid: session,\n\t\tisNew: isNew\n\t};\n}\n\n/**\n * Init\n *\n * @param {string|object} [config] The name used to store the session or configuration object.\n * @returns {Session} - The session\n */\nfunction init(config) {\n\tif (is(config, 'string')) {\n\t\tconfig = { name: config };\n\t}\n\n\tif (isUndefined(config)) {\n\t\tconfig = {};\n\t}\n\n\tconst c = merge(defaultSessionConfig, config);\n\n\t// config.name is important here, means the user has specifically asked for a cookie name.\n\tif (c.storage === 'cookie' && config.name) {\n\t\tc.nameOverride = c.name;\n\t}\n\n\tstore = new Store(c.name, c);\n\n\treturn getSession();\n}\n\nexport { getSession as session, init };\n","import {get as getSetting} from './settings.js';\nimport {broadcast, is, findCircularPathsIn, containsCircularPaths, merge, addEvent, log} from '../utils.js';\nimport {Queue} from './queue.js';\nimport {get as getTransport} from './transports/index.js';\n\n/**\n * Queue queue.\n *\n * @type {Queue}\n */\nlet queue;\n\n/**\n * Consistent check to see if we should use sendBeacon or not.\n *\n * @returns {boolean} Should we use sendBeacon?\n */\nfunction should_use_sendBeacon() {\n\treturn Boolean(navigator.sendBeacon);\n}\n\n/**\n * Attempts to send a tracking request.\n *\n * @param {object} request The request to be sent.\n * @param {Function=} callback Callback to fire the next item in the queue.\n * @returns {void}\n */\nfunction sendRequest(request, callback) {\n\tconst queueTime = request.queueTime;\n\tconst offlineLag = new Date().getTime() - queueTime;\n\n\tconst transport = should_use_sendBeacon() ? getTransport('sendBeacon')() :\n\t\twindow.XMLHttpRequest && 'withCredentials' in new window.XMLHttpRequest() ? getTransport('xhr')() :\n\t\t\tgetTransport('image')();\n\tconst user_callback = request.callback;\n\n\tconst core_system = getSetting('config') && getSetting('config').system || {};\n\tconst system = merge(core_system, {\n\t\tversion: getSetting('version'), // Version of the tracking client e.g. '1.2'\n\t\tsource: getSetting('source'), // Source of the tracking client e.g. 'o-tracking'\n\t\ttransport: transport.name, // The transport method used.\n\t});\n\n\tif (getSetting('config').test) {\n\t\tsystem.is_live = false;\n\t} else {\n\t\tsystem.is_live = true;\n\t}\n\n\n\trequest = merge({ system: system }, request);\n\n\t// Only bothered about offlineLag if it's longer than a second, but less than 12 months. (Especially as Date can be dodgy)\n\tif (offlineLag > 1000 && offlineLag < 12 * 30 * 24 * 60 * 60 * 1000) {\n\t\trequest.time = request.time || {};\n\t\trequest.time.offset = offlineLag;\n\t}\n\tdelete request.callback;\n\tdelete request.type;\n\tdelete request.queueTime;\n\n\tlog('user_callback', user_callback);\n\tlog('PreSend', request);\n\n\tif (containsCircularPaths(request)) {\n\t\tconst errorMessage = \"o-tracking does not support circular references in the analytics data.\\n\" +\n\t\t\"Please remove the circular references in the data.\\n\" +\n\t\t\"Here are the paths in the data which are circular:\\n\" +\n\t\tJSON.stringify(findCircularPathsIn(request), undefined, 4);\n\t\tthrow new Error(errorMessage);\n\t}\n\n\tconst stringifiedData = JSON.stringify(request);\n\n\ttransport.complete(function (error) {\n\t\tif (is(user_callback, 'function')) {\n\t\t\tuser_callback.call(request);\n\t\t\tlog('calling user_callback');\n\t\t}\n\n\t\tif (error) {\n\t\t\t// Re-add to the queue if it failed.\n\t\t\t// Re-apply queueTime here\n\t\t\trequest.queueTime = queueTime;\n\t\t\tqueue.add(request).save();\n\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tinfo: { module: 'o-tracking' }\n\t\t\t});\n\t\t} else if (callback) {\n\t\t\tcallback();\n\t\t}\n\t});\n\t/**\n\t * Default collection server.\n\t */\n\tlet url = 'https://spoor-api.ft.com/ingest';\n\n\tif (request && request.category && request.action) {\n\t\turl += `?type=${request.category}:${request.action}`;\n\t}\n\n\ttransport.send(url, stringifiedData);\n}\n\n/**\n * Adds a new request to the list of pending requests\n *\n * @param {object} request The request to queue\n * @returns {void}\n */\nfunction add(request) {\n\trequest.queueTime = new Date().getTime();\n\tif (should_use_sendBeacon()) {\n\t\tsendRequest(request);\n\t} else {\n\t\tqueue.add(request).save();\n\t}\n\tlog('AddedToQueue', queue);\n}\n\n/**\n * If there are any requests queued, attempts to send the next one\n * Otherwise, does nothing\n *\n * @param {Function} [callback] - Optional callback\n * @returns {void}\n */\nfunction run(callback = function () { /* empty */}) {\n\t// Investigate queue lengths bug\n\t// https://jira.ft.com/browse/DTP-330\n\tconst all_events = queue.all();\n\n\tif (all_events.length > 200) {\n\t\tconst counts = {};\n\n\t\tall_events.forEach(function (event) {\n\t\t\tconst label = [event.category, event.action].join(':');\n\n\t\t\tif (!Object.prototype.hasOwnProperty.call(counts, label)) {\n\t\t\t\tcounts[label] = 0;\n\t\t\t}\n\n\t\t\tcounts[label] += 1;\n\t\t});\n\n\t\tqueue.replace([]);\n\n\t\tqueue.add({\n\t\t\tcategory: 'o-tracking',\n\t\t\taction: 'queue-bug',\n\t\t\tcontext: {\n\t\t\t\turl: document.URL,\n\t\t\t\tqueue_length: all_events.length,\n\t\t\t\tcounts: counts,\n\t\t\t\tstorage: queue.storage.storage._type\n\t\t\t}\n\t\t});\n\t}\n\n\tconst next = function () {\n\t\trun();\n\t\tcallback();\n\t};\n\tconst nextRequest = queue.shift();\n\n\t// Cancel if we've run out of requests.\n\tif (!nextRequest) {\n\t\treturn callback();\n\t}\n\n\t// Send this request, then try run again.\n\treturn sendRequest(nextRequest, next);\n}\n\n/**\n * Convenience function to add and run a request all in one go.\n *\n * @param {object} request The request to queue and run.\n * @returns {void}\n */\nfunction addAndRun(request) {\n\tadd(request);\n\trun();\n}\n\n/**\n * Init a queue and send any leftover events.\n *\n * @returns {Queue} An initialised queue.\n */\nfunction init() {\n\tqueue = new Queue('requests');\n\n\t// If any tracking calls are made whilst offline, try sending them the next time the device comes online\n\taddEvent(window, 'online', function() {\n\t\trun();\n\t});\n\n\t// On startup, try sending any requests queued from a previous session.\n\trun();\n\n\treturn queue;\n}\n\nexport {\n\tinit,\n\tadd,\n\trun,\n\taddAndRun\n};\n","import {is, isUndefined, broadcast} from '../utils.js';\nimport {Store} from './store.js';\n\n/**\n * Class for handling a queue backed up by a store.\n *\n * @class Queue\n *\n * @param {string} name - The name of the queue.\n * @returns {Queue} - Returns the instance of the queue.\n */\nfunction Queue (name) {\n\tif (isUndefined(name)) {\n\t\tconst undefinedName = new Error('You must specify a name for the queue.');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: undefinedName.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow undefinedName;\n\t}\n\n\t/**\n\t * Queue data.\n\t *\n\t * @type {Array}\n\t */\n\tthis.queue = [];\n\n\t/**\n\t * The storage method to use. Determines best storage method.\n\t *\n\t * @type {object}\n\t */\n\tthis.storage = new Store(name);\n\n\t// Retrieve any previous store with the same name.\n\tif (this.storage.read()) {\n\t\tthis.queue = this.storage.read();\n\t}\n\n\treturn this;\n}\n\n/**\n * Gets the contents of the store.\n *\n * @returns {Array} The array of items.\n */\nQueue.prototype.all = function () {\n\tif (this.queue.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst items = [];\n\n\tfor (let i = 0; i < this.queue.length; i = i + 1) {\n\t\titems.push(this.queue[i].item);\n\t}\n\n\treturn items;\n};\n\n/**\n * Gets the first item in the store.\n *\n * @returns {object} Returns the item.\n */\nQueue.prototype.first = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn this.queue[0].item;\n};\n\n/**\n * Gets the last item in the store.\n *\n * @returns {object} Returns the item.\n */\nQueue.prototype.last = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn this.queue.slice(-1)[0].item;\n};\n\n/**\n * Add data to the store.\n *\n * @param {object} item - An item or an array of items.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.add = function (item) {\n\t// I was trying to turn this whole add function into a little module, to stop doAdd function being created everytime, but couldn't work out how to get to 'this' from within the module.\n\n\tconst self = this;\n\tlet i;\n\n\tfunction doAdd(item) {\n\t\tself.queue.push({\n\t\t\tcreated_at: new Date().valueOf(),\n\t\t\titem: item\n\t\t});\n\t}\n\n\tif (is(item, 'object') && item.constructor.toString().match(/array/i)) {\n\t\tfor (i = 0; i < item.length; i = i + 1) {\n\t\t\tdoAdd(item[i]);\n\t\t}\n\t} else {\n\t\tdoAdd(item);\n\t}\n\n\treturn self;\n};\n\n/**\n * Overwrite the store with something completely new.\n *\n * @param {Array} items The new array of data.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.replace = function (items) {\n\tif (Array.isArray(items)) {\n\t\tthis.queue = [];\n\t\tthis.add(items).save();\n\n\t\treturn this;\n\t}\n\n\tconst invalidArg = new Error('Argument invalid, must be an array.');\n\tbroadcast('oErrors', 'log', {\n\t\terror: invalidArg.message,\n\t\tinfo: { module: 'o-tracking' }\n\t});\n\tthrow invalidArg;\n};\n\n/**\n * Pop the first item from the queue.\n *\n * @returns {object} The item.\n */\nQueue.prototype.shift = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst item = this.queue.shift().item;\n\n\tthis.save();\n\n\treturn item;\n};\n\n/**\n * Save the current store to localStorage so that old requests can still be sent after a page refresh.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.save = function () {\n\tthis.storage.write(this.queue);\n\n\treturn this;\n};\n\nexport { Queue };\n","// Trace the element and all of its parents, collecting properties as we go\nimport {sanitise, assignIfUndefined} from '../javascript/utils.js';\n\n// For a given container element, get the number of elements that match the\n// original element (siblings); and the index of the original element (position).\nconst getSiblingsAndPosition = (el, originalEl, selector) => {\n\tconst siblings = Array.from(el.querySelectorAll(selector));\n\tconst position = siblings.findIndex(item => item === originalEl);\n\tif(position === -1) {return;}\n\treturn {\n\t\tsiblings: siblings.length,\n\t\tposition,\n\t};\n};\n\n\nconst elementPropertiesToCollect = [\n\t\"nodeName\",\n\t\"className\",\n\t\"id\",\n\t\"href\",\n\t\"text\",\n\t\"role\",\n];\n// Get all (sanitised) properties of a given element.\nconst getAllElementProperties = element => {\n\n\tconst properties = {};\n\tfor (const property of elementPropertiesToCollect) {\n\t\tconst value = element[property] || element.getAttribute(property) || element.hasAttribute(property);\n\t\tif (value !== undefined) {\n\t\t\tif (typeof value === 'boolean') {\n\t\t\t\tproperties[property] = value;\n\t\t\t} else {\n\t\t\t\tproperties[property] = sanitise(value);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn properties;\n};\n\n// Get some properties of a given element.\nconst getDomPathProps = (attrs, props) => {\n\n\t// Collect any attribute that matches given strings.\n\tattrs\n\t\t.filter(attribute => attribute.name.match(/^data-trackable|^data-o-|^aria-/i))\n\t\t.forEach(attribute => {\n\t\t\tprops[attribute.name] = attribute.value;\n\t\t});\n\n\treturn props;\n};\n\n// Get only the custom data-trackable-context-? properties of a given element\nconst getContextProps = (attrs, props, isOriginalEl) => {\n\n\tconst customProps = {};\n\n\t// for the original element collect properties like className, nodeName\n\tif (isOriginalEl) {\n\t\telementPropertiesToCollect.forEach(name => {\n\t\t\tif (typeof props[name] !== 'undefined' && name !== 'id') {\n\t\t\t\tcustomProps[name] = props[name];\n\t\t\t}\n\t\t});\n\t}\n\n\t// Collect any attribute that matches given strings.\n\tattrs\n\t\t.filter(attribute => attribute.name.match(/^data-trackable-context-/i))\n\t\t.forEach(attribute => {\n\t\t\tcustomProps[attribute.name.replace('data-trackable-context-', '')] = attribute.value;\n\t\t});\n\n\treturn customProps;\n};\n\nexport function getTrace (el) {\n\tconst rootEl = document;\n\tconst originalEl = el;\n\tconst selector = originalEl.getAttribute('data-trackable') ? `[data-trackable=\"${originalEl.getAttribute('data-trackable')}\"]` : originalEl.nodeName;\n\tconst trace = [];\n\tconst customContext = {};\n\twhile (el && el !== rootEl) {\n\t\tconst props = getAllElementProperties(el);\n\t\tconst attrs = Array.from(el.attributes);\n\t\tlet domPathProps = getDomPathProps(attrs, props);\n\n\t\t// If the element happens to have a data-trackable attribute, get the siblings\n\t\t// and position of the element (relative to the current element).\n\t\tif (domPathProps[\"data-trackable\"]) {\n\t\t\tdomPathProps = Object.assign(\n\t\t\t\tdomPathProps,\n\t\t\t\tgetSiblingsAndPosition(el, originalEl, selector)\n\t\t\t);\n\t\t}\n\n\t\ttrace.push(domPathProps);\n\n\t\tconst contextProps = getContextProps(attrs, props, el === originalEl);\n\n\t\tassignIfUndefined(contextProps, customContext);\n\n\t\tel = el.parentNode;\n\t}\n\treturn { trace, customContext };\n}\n","\nimport Overlay from './src/js/overlay.js';\n\nconst constructAll = function() {\n\tOverlay.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Overlay;\n","/**\n * @file\n * Basic card component\n */\n\nimport React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst Card = ({ children, className, ...props }) =>\n  children && <div className={classNames(className, 'g-card')}>{children}</div>;\n\nCard.propTypes = {\n  children: PropTypes.node.isRequired,\n  className: PropTypes.string,\n};\n\nCard.defaultProps = {\n  className: null,\n};\n\nexport default Card;\n","const addDays = (date, days) => {\n  const result = new Date(date);\n  result.setDate(result.getDate() + days);\n  return result;\n};\n\nexport default addDays;\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Point = /*#__PURE__*/function () {\n  function Point(_ref) {\n    var _ref$x = _ref.x,\n        x = _ref$x === void 0 ? 0 : _ref$x,\n        _ref$y = _ref.y,\n        y = _ref$y === void 0 ? 0 : _ref$y;\n\n    _defineProperty(this, \"x\", 0);\n\n    _defineProperty(this, \"y\", 0);\n\n    this.x = x;\n    this.y = y;\n  }\n\n  var _proto = Point.prototype;\n\n  _proto.value = function value() {\n    return {\n      x: this.x,\n      y: this.y\n    };\n  };\n\n  _proto.toArray = function toArray() {\n    return [this.x, this.y];\n  };\n\n  return Point;\n}();\n\nexport { Point as default };","var TEST_TIME = new Date(Date.UTC(2020, 1, 2, 3, 4, 5));\nvar TEST_FORMAT = '%Y-%m-%d %H:%M';\n/**\n * Check if the scale is UTC or Time scale\n * When local time is equal to UTC, always return true\n * @param scale time or utc scale\n */\n\nexport default function isUtcScale(scale) {\n  // The only difference between time and utc scale is\n  // whether the tick format function is utcFormat or timeFormat\n  var output = scale.tickFormat(1, TEST_FORMAT)(TEST_TIME);\n  return output === '2020-02-02 03:04';\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = localPoint;\n\nvar _localPointGeneric = _interopRequireDefault(require(\"./localPointGeneric\"));\n\nvar _typeGuards = require(\"./typeGuards\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/** Handles two signatures for backwards compatibility. */\nfunction localPoint(nodeOrEvent, maybeEvent) {\n  // localPoint(node, event)\n  if ((0, _typeGuards.isElement)(nodeOrEvent) && maybeEvent) {\n    return (0, _localPointGeneric.default)(nodeOrEvent, maybeEvent);\n  } // localPoint(event)\n\n\n  if ((0, _typeGuards.isEvent)(nodeOrEvent)) {\n    var event = nodeOrEvent;\n    var node = event.target;\n    if (node) return (0, _localPointGeneric.default)(node, event);\n  }\n\n  return null;\n}","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import tracking from './src/javascript/tracking.js';\n\n/**\n * Automatically initilise o-tracking\n *\n * @returns {void}\n */\nfunction initialise() {\n\ttracking.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', initialise);\n}\n\n// Try and initialise on o.DOMContentLoaded. If it fails, defer to the\n// consumer of the library.\ndocument.addEventListener('o.DOMContentLoaded', initialise);\n\n/**\n * A constructed object, this module is a Singleton as we only want one\n * instance sending events. See {@link Tracking} for the publicly available\n * interface.\n *\n * @type {tracking}\n */\nexport default tracking;\n","import {xhr} from './xhr.js';\nimport {sendBeacon} from './send-beacon.js';\nimport {image} from './image.js';\n\nexport {\n\txhr,\n\tsendBeacon,\n\timage\n};\n\n/**\n * @type {object|undefined} - mock transport for testing\n */\nexport const mock = {};\n\n/**\n * Given the name of a transport, returns that transport if it exists.\n *\n * @param {string} name - The name of the transport to use\n * @returns {Function|undefined} - The transport function or undefined if not found.\n */\nexport function get(name) {\n\tif (mock.transport) {\n\t\treturn mock.transport;\n\t}\n\tswitch (name) {\n\t\tcase 'xhr': {\n\t\t\treturn xhr;\n\t\t}\n\t\tcase 'sendBeacon': {\n\t\t\treturn sendBeacon;\n\t\t}\n\t\tcase 'image': {\n\t\t\treturn image;\n\t\t}\n\t\tdefault: {\n\t\t\treturn undefined;\n\t\t}\n\t}\n}\n","import Overlay from '@financial-times/o-overlay';\n\nconst form = `<form id=\"o-comments-displayname-form\" class=\"o-forms o-forms o-comments__displayname-form\">\n\t\t\t<label for=\"o-comments-displayname-input\" class=\"o-forms-field o-comments__displayname-field\">\n\t\t\t\t<span class=\"o-forms-title\">Display name</span>\n\t\t\t</label>\n\t\t\t<div class=\"o-comments__displayname-container\">\n\t\t\t\t<span class=\"o-forms-input o-forms-input--text o-comments__displayname-input\">\n\t\t\t\t\t<input id=\"o-comments-displayname-input\" type=\"text\" name=\"text\" value=\"\" required=\"\">\n\t\t\t\t</span>\n\t\t\t\t<button type=\"submit\" class=\"o-comments__displayname-submit\">Save</button>\n\t\t\t</div>\n\t\t\t<span id=\"o-comments-displayname-error\" class=\"o-forms-input__error o-comments__displayname-error\" aria-live=\"assertive\"></span>\n\t</form>\n</form>`;\n\nconst isUnique = (displayName) => {\n\tconst url = `https://comments-api.ft.com/displayname/isavailable/${encodeURIComponent(displayName)}`;\n\n\treturn fetch(url, { method: 'GET' })\n\t\t.then(response => response.json())\n\t\t.then(({available}) => {\n\t\t\treturn available;\n\t\t});\n};\n\nconst findInvalidCharacters = (displayName) => {\n\t/*\n\t * Allowed Characters\n\t * The below regex matches any character not in the allowed characters set\n\t * All allowed characters are case insensitive\n\t * Anything in the range A-Z or 0-9 is allowed\n\t * Any of the below special characters are allowed\n\t * !#$%'`()*+,-./:;=@[]^_{|}\n\t * Spaces are allowed\n\t */\n\n\tconst matchInvalidCharacters = /[^0-9a-z!#$%'`()*+,\\-.\\/:;=@[\\]\\^_{}\\|\\s]/gi;\n\tconst matchingCharacters = displayName\n\t\t.match(matchInvalidCharacters);\n\tconst uniqueMatchingCharacters = matchingCharacters && matchingCharacters.length ?\n\t\tmatchingCharacters\n\t\t\t.filter((character, position) => matchingCharacters.indexOf(character) === position) :\n\t\t[];\n\n\treturn uniqueMatchingCharacters.length ?\n\t\tuniqueMatchingCharacters.join('') :\n\t\tfalse;\n};\n\nconst prompt = () => {\n\tconst overlay = new Overlay('displayName', {\n\t\thtml: form,\n\t\tclass: 'o-comments__displayname-prompt',\n\t\tcompact: true,\n\t\theading: {\n\t\t\ttitle: 'Choose a commenting display name'\n\t\t}\n\t});\n\n\toverlay.open();\n\n\treturn overlay;\n};\n\nconst validation = (displayName) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!displayName) {\n\t\t\treturn reject(new Error('Empty display name'));\n\t\t}\n\n\t\tconst invalidCharacters = findInvalidCharacters(displayName);\n\n\t\tif (invalidCharacters) {\n\t\t\treturn reject(new Error(`The display name contains the following invalid characters: ${invalidCharacters}`));\n\t\t} else {\n\t\t\tisUnique(displayName)\n\t\t\t\t.then(isUnique => {\n\t\t\t\t\tif (!isUnique) {\n\t\t\t\t\t\treturn reject(new Error('Unfortunately that display name is already taken'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn resolve(displayName);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tconst apiError = new Error('Sorry, we are unable to update display names. Please try again later.');\n\n\t\t\t\t\tapiError.name = 'CommentsApiError';\n\n\t\t\t\t\treturn reject(apiError);\n\t\t\t\t});\n\t\t}\n\t});\n};\n\nconst promptValidation = (event) => {\n\tevent.preventDefault();\n\n\treturn new Promise(resolve => {\n\t\tconst displayNameForm = event.srcElement;\n\t\tconst input = displayNameForm.querySelector('input');\n\t\tconst displayName = input.value.trim();\n\t\tconst errorMessage = displayNameForm.querySelector('#o-comments-displayname-error');\n\n\t\terrorMessage.innerText = '';\n\t\tdisplayNameForm.classList.remove('o-forms-input--invalid');\n\n\n\t\treturn validation(displayName)\n\t\t\t.then(displayName => resolve(displayName))\n\t\t\t.catch(error => {\n\t\t\t\terrorMessage.innerText = error.message;\n\t\t\t\tdisplayNameForm.classList.add('o-forms-input--invalid');\n\n\t\t\t\tif (error.name === 'CommentsApiError') {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t});\n\t});\n};\n\nexport default {\n\tprompt,\n\tvalidation,\n\tpromptValidation\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n  /**\n   * Maintain a map of listener\n   * lists, keyed by event name.\n   *\n   * @type Object\n   */\n  this.listenerMap = [{}, {}];\n\n  if (root) {\n    this.root(root);\n  }\n  /** @type function() */\n\n\n  this.handle = Delegate.prototype.handle.bind(this); // Cache of event listeners removed during an event cycle\n\n  this._removedListeners = [];\n}\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.root = function (root) {\n  var listenerMap = this.listenerMap;\n  var eventType; // Remove master event listeners\n\n  if (this.rootElement) {\n    for (eventType in listenerMap[1]) {\n      if (listenerMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, true);\n      }\n    }\n\n    for (eventType in listenerMap[0]) {\n      if (listenerMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, false);\n      }\n    }\n  } // If no root or root is not\n  // a dom node, then remove internal\n  // root reference and exit here\n\n\n  if (!root || !root.addEventListener) {\n    if (this.rootElement) {\n      delete this.rootElement;\n    }\n\n    return this;\n  }\n  /**\n   * The root node at which\n   * listeners are attached.\n   *\n   * @type Node\n   */\n\n\n  this.rootElement = root; // Set up master event listeners\n\n  for (eventType in listenerMap[1]) {\n    if (listenerMap[1].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, true);\n    }\n  }\n\n  for (eventType in listenerMap[0]) {\n    if (listenerMap[0].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, false);\n    }\n  }\n\n  return this;\n};\n/**\n * @param {string} eventType\n * @returns boolean\n */\n\n\nDelegate.prototype.captureForType = function (eventType) {\n  return ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n  var root;\n  var listenerMap;\n  var matcher;\n  var matcherParam;\n\n  if (!eventType) {\n    throw new TypeError('Invalid event type: ' + eventType);\n  } // handler can be passed as\n  // the second or third argument\n\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // Fallback to sensible defaults\n  // if useCapture not set\n\n\n  if (useCapture === undefined) {\n    useCapture = this.captureForType(eventType);\n  }\n\n  if (typeof handler !== 'function') {\n    throw new TypeError('Handler must be a type of Function');\n  }\n\n  root = this.rootElement;\n  listenerMap = this.listenerMap[useCapture ? 1 : 0]; // Add master handler for type if not created yet\n\n  if (!listenerMap[eventType]) {\n    if (root) {\n      root.addEventListener(eventType, this.handle, useCapture);\n    }\n\n    listenerMap[eventType] = [];\n  }\n\n  if (!selector) {\n    matcherParam = null; // COMPLEX - matchesRoot needs to have access to\n    // this.rootElement, so bind the function to this.\n\n    matcher = matchesRoot.bind(this); // Compile a matcher for the given selector\n  } else if (/^[a-z]+$/i.test(selector)) {\n    matcherParam = selector;\n    matcher = matchesTag;\n  } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n    matcherParam = selector.slice(1);\n    matcher = matchesId;\n  } else {\n    matcherParam = selector;\n    matcher = Element.prototype.matches;\n  } // Add to the list of listeners\n\n\n  listenerMap[eventType].push({\n    selector: selector,\n    handler: handler,\n    matcher: matcher,\n    matcherParam: matcherParam\n  });\n  return this;\n};\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n  var i;\n  var listener;\n  var listenerMap;\n  var listenerList;\n  var singleEventType; // Handler can be passed as\n  // the second or third argument\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // If useCapture not set, remove\n  // all event listeners\n\n\n  if (useCapture === undefined) {\n    this.off(eventType, selector, handler, true);\n    this.off(eventType, selector, handler, false);\n    return this;\n  }\n\n  listenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n  if (!eventType) {\n    for (singleEventType in listenerMap) {\n      if (listenerMap.hasOwnProperty(singleEventType)) {\n        this.off(singleEventType, selector, handler);\n      }\n    }\n\n    return this;\n  }\n\n  listenerList = listenerMap[eventType];\n\n  if (!listenerList || !listenerList.length) {\n    return this;\n  } // Remove only parameter matches\n  // if specified\n\n\n  for (i = listenerList.length - 1; i >= 0; i--) {\n    listener = listenerList[i];\n\n    if ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n      this._removedListeners.push(listener);\n\n      listenerList.splice(i, 1);\n    }\n  } // All listeners removed\n\n\n  if (!listenerList.length) {\n    delete listenerMap[eventType]; // Remove the main handler\n\n    if (this.rootElement) {\n      this.rootElement.removeEventListener(eventType, this.handle, useCapture);\n    }\n  }\n\n  return this;\n};\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\n\n\nDelegate.prototype.handle = function (event) {\n  var i;\n  var l;\n  var type = event.type;\n  var root;\n  var phase;\n  var listener;\n  var returned;\n  var listenerList = [];\n  var target;\n  var eventIgnore = 'ftLabsDelegateIgnore';\n\n  if (event[eventIgnore] === true) {\n    return;\n  }\n\n  target = event.target; // Hardcode value of Node.TEXT_NODE\n  // as not defined in IE8\n\n  if (target.nodeType === 3) {\n    target = target.parentNode;\n  } // Handle SVG <use> elements in IE\n\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  root = this.rootElement;\n  phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2); // eslint-disable-next-line default-case\n\n  switch (phase) {\n    case 1:\n      //Event.CAPTURING_PHASE:\n      listenerList = this.listenerMap[1][type];\n      break;\n\n    case 2:\n      //Event.AT_TARGET:\n      if (this.listenerMap[0] && this.listenerMap[0][type]) {\n        listenerList = listenerList.concat(this.listenerMap[0][type]);\n      }\n\n      if (this.listenerMap[1] && this.listenerMap[1][type]) {\n        listenerList = listenerList.concat(this.listenerMap[1][type]);\n      }\n\n      break;\n\n    case 3:\n      //Event.BUBBLING_PHASE:\n      listenerList = this.listenerMap[0][type];\n      break;\n  }\n\n  var toFire = []; // Need to continuously check\n  // that the specific list is\n  // still populated in case one\n  // of the callbacks actually\n  // causes the list to be destroyed.\n\n  l = listenerList.length;\n\n  while (target && l) {\n    for (i = 0; i < l; i++) {\n      listener = listenerList[i]; // Bail from this loop if\n      // the length changed and\n      // no more listeners are\n      // defined between i and l.\n\n      if (!listener) {\n        break;\n      }\n\n      if (target.tagName && [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 && target.hasAttribute(\"disabled\")) {\n        // Remove things that have previously fired\n        toFire = [];\n      } // Check for match and fire\n      // the event if there's one\n      //\n      // TODO:MCG:20120117: Need a way\n      // to check if event#stopImmediatePropagation\n      // was called. If so, break both loops.\n      else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n    } // TODO:MCG:20120117: Need a way to\n    // check if event#stopPropagation\n    // was called. If so, break looping\n    // through the DOM. Stop if the\n    // delegation root has been reached\n\n\n    if (target === root) {\n      break;\n    }\n\n    l = listenerList.length; // Fall back to parentNode since SVG children have no parentElement in IE\n\n    target = target.parentElement || target.parentNode; // Do not traverse up to document root when using parentNode, though\n\n    if (target instanceof HTMLDocument) {\n      break;\n    }\n  }\n\n  var ret;\n\n  for (i = 0; i < toFire.length; i++) {\n    // Has it been removed during while the event function was fired\n    if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n      continue;\n    }\n\n    returned = this.fire.apply(this, toFire[i]); // Stop propagation to subsequent\n    // callbacks if the callback returned\n    // false\n\n    if (returned === false) {\n      toFire[i][0][eventIgnore] = true;\n      toFire[i][0].preventDefault();\n      ret = false;\n      break;\n    }\n  }\n\n  return ret;\n};\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\n\n\nDelegate.prototype.fire = function (event, target, listener) {\n  return listener.handler.call(target, event, target);\n};\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesTag(tagName, element) {\n  return tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesRoot(selector, element) {\n  if (this.rootElement === window) {\n    return (// Match the outer document (dispatched from document)\n      element === document || // The <html> element (dispatched from document.body or document.documentElement)\n      element === document.documentElement || // Or the window itself (dispatched from window)\n      element === window\n    );\n  }\n\n  return this.rootElement === element;\n}\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesId(id, element) {\n  return id === element.id;\n}\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\n\n\nDelegate.prototype.destroy = function () {\n  this.off();\n  this.root();\n};\n\nvar _default = Delegate;\nexports.default = _default;\nmodule.exports = exports.default;","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n","/**\n * General data munging functionality\n */\n\nimport { extent } from 'd3-array';\nimport { timeParse } from 'd3-time-format';\n\n/**\n * Returns dataset with date types in date column\n * @param  {[type]} data       [description]\n * @param  {[type]} dateFormat [description]\n * @return {[type]}            [description]\n */\nexport function formatData(data, dateFormat) {\n  const parseDate = timeParse(dateFormat);\n  // eslint-disable-next-line no-prototype-builtins\n  if (data[0].hasOwnProperty('date')) {\n    return data.map(point => ({\n      ...point,\n      date: parseDate(point.date),\n    }));\n  }\n  return data;\n}\n\n/**\n * Returns the seriesNames from the the dataset, excluding specified\n * @param  {[type]} data    [description]\n * @return {[type]}         [description]\n */\nexport function getSeriesNames(data, excludeColumns) {\n  const exclude = excludeColumns || ['date', 'label', 'annotate', 'highlight', 'type'];\n  const allSeriesNames = (Array.isArray(data)\n    ? data.reduce((acc, curr) => [...acc, ...Object.keys(curr)], [])\n    : Object.keys(data)\n  ).filter(d => !exclude.includes(d));\n  return [...new Set(allSeriesNames)];\n}\n\n/**\n * Calculates the extent of multiple columns\n * @param  {[type]} d       [description]\n * @param  {[type]} columns [description]\n * @param  {[type]} yMin    [description]\n * @return {[type]}         [description]\n */\nexport function extentMulti(d, columns, yMin) {\n  const ext = d.reduce((acc, row) => {\n    const values = columns\n      .map(key => row[key])\n      .map(item => {\n        if (item !== 0 && (!item || item === '*')) {\n          return yMin;\n        }\n        return Number(item);\n      });\n    const rowExtent = extent(values);\n    if (!acc.max) {\n      acc.max = rowExtent[1];\n      acc.min = rowExtent[0];\n    } else {\n      acc.max = Math.max(acc.max, rowExtent[1]);\n      acc.min = Math.min(acc.min, rowExtent[0]);\n    }\n    return acc;\n  }, {});\n  return [ext.min, ext.max];\n}\n","/**\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\nvar reduceFunctionCall = require(\"reduce-function-call\")\nvar mexp = require(\"math-expression-evaluator\")\n\n/**\n * Constantes\n */\nvar MAX_STACK = 100 // should be enough for a single calc()...\nvar NESTED_CALC_RE = /(\\+|\\-|\\*|\\\\|[^a-z]|)(\\s*)(\\()/g\n\n/**\n * Global variables\n */\nvar stack\n\n/**\n * Expose reduceCSSCalc plugin\n *\n * @type {Function}\n */\nmodule.exports = reduceCSSCalc\n\n/**\n * Reduce CSS calc() in a string, whenever it's possible\n *\n * @param {String} value css input\n */\nfunction reduceCSSCalc(value, decimalPrecision) {\n  stack = 0\n  decimalPrecision = Math.pow(10, decimalPrecision === undefined ? 5 : decimalPrecision)\n\n  // Allow calc() on multiple lines\n  value = value.replace(/\\n+/g, \" \")\n\n  /**\n   * Evaluates an expression\n   *\n   * @param {String} expression\n   * @returns {String}\n   */\n  function evaluateExpression (expression, functionIdentifier, call) {\n    if (stack++ > MAX_STACK) {\n      stack = 0\n      throw new Error(\"Call stack overflow for \" + call)\n    }\n\n    if (expression === \"\") {\n      throw new Error(functionIdentifier + \"(): '\" + call + \"' must contain a non-whitespace string\")\n    }\n\n    expression = evaluateNestedExpression(expression, call)\n\n    var units = getUnitsInExpression(expression)\n\n    // If the expression contains multiple units or CSS variables,\n    // then let the expression be (i.e. browser calc())\n    if (units.length > 1 || expression.indexOf(\"var(\") > -1) {\n      return functionIdentifier + \"(\" + expression + \")\"\n    }\n\n    var unit = units[0] || \"\"\n\n    if (unit === \"%\") {\n      // Convert percentages to numbers, to handle expressions like: 50% * 50% (will become: 25%):\n      // console.log(expression)\n      expression = expression.replace(/\\b[0-9\\.]+%/g, function(percent) {\n        return parseFloat(percent.slice(0, -1)) * 0.01\n      })\n    }\n\n    // Remove units in expression:\n    var toEvaluate = expression.replace(new RegExp(unit, \"gi\"), \"\")\n    var result\n\n    try {\n      result = mexp.eval(toEvaluate)\n    }\n    catch (e) {\n      return functionIdentifier + \"(\" + expression + \")\"\n    }\n\n    // Transform back to a percentage result:\n    if (unit === \"%\") {\n      result *= 100\n    }\n\n    // adjust rounding shit\n    // (0.1 * 0.2 === 0.020000000000000004)\n    if (functionIdentifier.length || unit === \"%\") {\n      result = Math.round(result * decimalPrecision) / decimalPrecision\n    }\n\n    // Add unit\n    result += unit\n\n    return result\n  }\n\n  /**\n   * Evaluates nested expressions\n   *\n   * @param {String} expression\n   * @returns {String}\n   */\n  function evaluateNestedExpression(expression, call) {\n    // Remove the calc part from nested expressions to ensure\n    // better browser compatibility\n    expression = expression.replace(/((?:\\-[a-z]+\\-)?calc)/g, \"\")\n    var evaluatedPart = \"\"\n    var nonEvaluatedPart = expression\n    var matches\n    while ((matches = NESTED_CALC_RE.exec(nonEvaluatedPart))) {\n      if (matches[0].index > 0) {\n        evaluatedPart += nonEvaluatedPart.substring(0, matches[0].index)\n      }\n\n      var balancedExpr = balanced(\"(\", \")\", nonEvaluatedPart.substring([0].index))\n      if (balancedExpr.body === \"\") {\n        throw new Error(\"'\" + expression + \"' must contain a non-whitespace string\")\n      }\n\n      var evaluated = evaluateExpression(balancedExpr.body, \"\", call)\n\n      evaluatedPart += balancedExpr.pre + evaluated\n      nonEvaluatedPart = balancedExpr.post\n    }\n\n    return evaluatedPart + nonEvaluatedPart\n  }\n\n  return reduceFunctionCall(value, /((?:\\-[a-z]+\\-)?calc)\\(/, evaluateExpression)\n}\n\n/**\n * Checks what units are used in an expression\n *\n * @param {String} expression\n * @returns {Array}\n */\n\nfunction getUnitsInExpression(expression) {\n  var uniqueUnits = []\n  var uniqueLowerCaseUnits = []\n  var unitRegEx = /[\\.0-9]([%a-z]+)/gi\n  var matches = unitRegEx.exec(expression)\n\n  while (matches) {\n    if (!matches || !matches[1]) {\n      continue\n    }\n\n    if (uniqueLowerCaseUnits.indexOf(matches[1].toLowerCase()) === -1) {\n      uniqueUnits.push(matches[1])\n      uniqueLowerCaseUnits.push(matches[1].toLowerCase())\n    }\n\n    matches = unitRegEx.exec(expression)\n  }\n\n  return uniqueUnits\n}\n","/**\n * @file\n * CSS styles for VVC <Legend>\n */\n\nimport { css } from '@emotion/core';\n\nexport const baseAxisStyles = css`\n  font-size: inherit !important;\n`;\n\nexport const legendCategoricalStyles = css`\n  ${baseAxisStyles}\n\n  text {\n    font-family: metric, MetricWeb;\n    fill: #66605c;\n    font-size: 16px;\n  }\n\n  line {\n    stroke-width: 3px;\n    stroke-linejoin: round;\n    stroke-linecap: but;\n  }\n\n  svg text {\n    font-feature-settings: 'tnum', 1;\n    -webkit-font-feature-settings: 'tnum';\n    -moz-font-feature-settings: 'tnum';\n  }\n`;\n\nexport const legendThresholdStyles = css`\n  ${baseAxisStyles}\n\n  text {\n    font-family: metric, MetricWeb;\n    fill: #66605c;\n    font-size: 16px;\n  }\n\n  polygon {\n    fill: #e6d9ce;\n  }\n\n  line {\n    stroke: #66605c;\n    stroke-width: 0.6px;\n    stroke-linejoin: round;\n    stroke-linecap: but;\n  }\n\n  circle {\n    stroke: #66605c;\n    stroke-width: 0.6px;\n    stroke-linejoin: round;\n    stroke-linecap: but;\n  }\n\n  svg text {\n    font-feature-settings: 'tnum', 1;\n    -webkit-font-feature-settings: 'tnum';\n    -moz-font-feature-settings: 'tnum';\n  }\n`;\n\nexport const legendMagnitudeStyles = css`\n  ${baseAxisStyles}\n\n  text {\n    font-family: metric, MetricWeb;\n    fill: #66605c;\n    font-size: 16px;\n  }\n\n  line {\n    stroke: #6b6e68;\n    stroke-width: 1pt;\n  }\n\n  circle {\n    stroke: #6b6e68;\n    stroke-width: 1pt;\n    fill: none;\n  }\n\n  svg text {\n    font-feature-settings: 'tnum', 1;\n    -webkit-font-feature-settings: 'tnum';\n    -moz-font-feature-settings: 'tnum';\n  }\n`;\n","export default {\n\tweb:'#FFF1e5',\n\tsocial:'#333',\n\tvideo:'#335',\n\tprint:'#FEE',\n\tclean:'#FFF',\n};","export default ['#006a93','#ddb831','#aad1d1','#ad1c21','#55a2c7','#0083b3'];\n","export default ['#ff0055','#0066ff','#b1e645','#00ccff','#f2e5da','#65798c'];\n","export default ['#0f5499','#EB5E8D','#70DCE6','#9dbf57','#208fce','#7f062e','#c2b7af'];\n","import _pt from \"prop-types\";\nimport React from 'react';\nimport cx from 'classnames';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nexport default function LinePathAnnotation(_ref) {\n  var _ref$top = _ref.top,\n      top = _ref$top === void 0 ? 0 : _ref$top,\n      _ref$left = _ref.left,\n      left = _ref$left === void 0 ? 0 : _ref$left,\n      _ref$points = _ref.points,\n      points = _ref$points === void 0 ? [] : _ref$points,\n      _ref$stroke = _ref.stroke,\n      stroke = _ref$stroke === void 0 ? 'black' : _ref$stroke,\n      _ref$strokeWidth = _ref.strokeWidth,\n      strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth,\n      className = _ref.className,\n      label = _ref.label,\n      _ref$labelAnchor = _ref.labelAnchor,\n      labelAnchor = _ref$labelAnchor === void 0 ? 'middle' : _ref$labelAnchor,\n      _ref$labelDx = _ref.labelDx,\n      labelDx = _ref$labelDx === void 0 ? 0 : _ref$labelDx,\n      _ref$labelDy = _ref.labelDy,\n      labelDy = _ref$labelDy === void 0 ? 0 : _ref$labelDy,\n      labelFill = _ref.labelFill,\n      _ref$labelFontSize = _ref.labelFontSize,\n      labelFontSize = _ref$labelFontSize === void 0 ? 10 : _ref$labelFontSize,\n      _ref$labelStroke = _ref.labelStroke,\n      labelStroke = _ref$labelStroke === void 0 ? 'white' : _ref$labelStroke,\n      _ref$labelStrokeWidth = _ref.labelStrokeWidth,\n      labelStrokeWidth = _ref$labelStrokeWidth === void 0 ? 3 : _ref$labelStrokeWidth,\n      _ref$labelPaintOrder = _ref.labelPaintOrder,\n      labelPaintOrder = _ref$labelPaintOrder === void 0 ? 'stroke' : _ref$labelPaintOrder;\n  var endPoint = points[points.length - 1];\n  return /*#__PURE__*/React.createElement(Group, {\n    className: \"visx-line-path-annotation-group\",\n    top: top,\n    left: left\n  }, /*#__PURE__*/React.createElement(LinePath, {\n    className: cx('visx-line-path-annotation', className),\n    data: points,\n    x: function x(p) {\n      return p.x;\n    },\n    y: function y(p) {\n      return p.y;\n    },\n    stroke: stroke,\n    strokeWidth: strokeWidth\n  }), label && endPoint && /*#__PURE__*/React.createElement(\"text\", {\n    x: endPoint.x,\n    y: endPoint.y,\n    dx: labelDx,\n    dy: labelDy,\n    fontSize: labelFontSize,\n    fill: labelFill || stroke,\n    stroke: labelStroke,\n    strokeWidth: labelStrokeWidth,\n    textAnchor: labelAnchor,\n    paintOrder: labelPaintOrder\n  }, label));\n}\nLinePathAnnotation.propTypes = {\n  top: _pt.number,\n  left: _pt.number,\n  points: _pt.array,\n  stroke: _pt.string,\n  strokeWidth: _pt.number,\n  className: _pt.string,\n  label: _pt.string,\n  labelAnchor: _pt.oneOf(['start', 'middle', 'end']),\n  labelDx: _pt.number,\n  labelDy: _pt.number,\n  labelFill: _pt.string,\n  labelFontSize: _pt.number,\n  labelStroke: _pt.string,\n  labelStrokeWidth: _pt.number,\n  labelPaintOrder: _pt.string\n};","var pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n  var x = pointX,\n      y = pointY,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function line(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n","export var slice = Array.prototype.slice;\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n","export default function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n","export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n","/**\n * This is a workaround for TypeScript not inferring the correct\n * method overload/signature for some d3 shape methods.\n */\nexport default function setNumberOrNumberAccessor(func, value) {\n  if (typeof value === 'number') func(value);else func(value);\n}","import none from \"./none.js\";\n\nexport default function(series) {\n  var sums = series.map(sum);\n  return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  var peaks = series.map(peak);\n  return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum),\n      order = appearance(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n}\n","import { stackOrderAscending, stackOrderDescending, stackOrderInsideOut, stackOrderNone, stackOrderReverse } from 'd3-shape';\nexport var STACK_ORDERS = {\n  ascending: stackOrderAscending,\n  descending: stackOrderDescending,\n  insideout: stackOrderInsideOut,\n  none: stackOrderNone,\n  reverse: stackOrderReverse\n};\nexport var STACK_ORDER_NAMES = Object.keys(STACK_ORDERS);\nexport default function stackOrder(order) {\n  return order && STACK_ORDERS[order] || STACK_ORDERS.none;\n}","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n  return ascending(series).reverse();\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n","import { stackOffsetExpand, stackOffsetDiverging, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nexport var STACK_OFFSETS = {\n  expand: stackOffsetExpand,\n  diverging: stackOffsetDiverging,\n  none: stackOffsetNone,\n  silhouette: stackOffsetSilhouette,\n  wiggle: stackOffsetWiggle\n};\nexport var STACK_OFFSET_NAMES = Object.keys(STACK_OFFSETS);\nexport default function stackOffset(offset) {\n  return offset && STACK_OFFSETS[offset] || STACK_OFFSETS.none;\n}","export default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { line } from '../util/D3ShapeFactories';\nexport default function LinePath(_ref) {\n  var children = _ref.children,\n      _ref$data = _ref.data,\n      data = _ref$data === void 0 ? [] : _ref$data,\n      x = _ref.x,\n      y = _ref.y,\n      _ref$fill = _ref.fill,\n      fill = _ref$fill === void 0 ? 'transparent' : _ref$fill,\n      className = _ref.className,\n      curve = _ref.curve,\n      innerRef = _ref.innerRef,\n      _ref$defined = _ref.defined,\n      defined = _ref$defined === void 0 ? function () {\n    return true;\n  } : _ref$defined,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"data\", \"x\", \"y\", \"fill\", \"className\", \"curve\", \"innerRef\", \"defined\"]);\n\n  var path = line({\n    x: x,\n    y: y,\n    defined: defined,\n    curve: curve\n  }); // eslint-disable-next-line react/jsx-no-useless-fragment\n\n  if (children) return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n    path: path\n  }));\n  return /*#__PURE__*/React.createElement(\"path\", _extends({\n    ref: innerRef,\n    className: cx('visx-linepath', className),\n    d: path(data) || '',\n    fill: fill // without this a datum surrounded by nulls will not be visible\n    // https://github.com/d3/d3-shape#line_defined\n    ,\n    strokeLinecap: \"round\"\n  }, restProps));\n}","import { arc as d3Arc, area as d3Area, line as d3Line, pie as d3Pie, radialLine as d3RadialLine, stack as d3Stack } from 'd3-shape';\nimport setNumberOrNumberAccessor from './setNumberOrNumberAccessor';\nimport stackOrder from './stackOrder';\nimport stackOffset from './stackOffset';\nexport function arc(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      innerRadius = _ref.innerRadius,\n      outerRadius = _ref.outerRadius,\n      cornerRadius = _ref.cornerRadius,\n      startAngle = _ref.startAngle,\n      endAngle = _ref.endAngle,\n      padAngle = _ref.padAngle,\n      padRadius = _ref.padRadius;\n\n  var path = d3Arc();\n  if (innerRadius != null) setNumberOrNumberAccessor(path.innerRadius, innerRadius);\n  if (outerRadius != null) setNumberOrNumberAccessor(path.outerRadius, outerRadius);\n  if (cornerRadius != null) setNumberOrNumberAccessor(path.cornerRadius, cornerRadius);\n  if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle);\n  if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle);\n  if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle);\n  if (padRadius != null) setNumberOrNumberAccessor(path.padRadius, padRadius);\n  return path;\n}\nexport function area(_temp2) {\n  var _ref2 = _temp2 === void 0 ? {} : _temp2,\n      x = _ref2.x,\n      x0 = _ref2.x0,\n      x1 = _ref2.x1,\n      y = _ref2.y,\n      y0 = _ref2.y0,\n      y1 = _ref2.y1,\n      defined = _ref2.defined,\n      curve = _ref2.curve;\n\n  var path = d3Area();\n  if (x) setNumberOrNumberAccessor(path.x, x);\n  if (x0) setNumberOrNumberAccessor(path.x0, x0);\n  if (x1) setNumberOrNumberAccessor(path.x1, x1);\n  if (y) setNumberOrNumberAccessor(path.y, y);\n  if (y0) setNumberOrNumberAccessor(path.y0, y0);\n  if (y1) setNumberOrNumberAccessor(path.y1, y1);\n  if (defined) path.defined(defined);\n  if (curve) path.curve(curve);\n  return path;\n}\nexport function line(_temp3) {\n  var _ref3 = _temp3 === void 0 ? {} : _temp3,\n      x = _ref3.x,\n      y = _ref3.y,\n      defined = _ref3.defined,\n      curve = _ref3.curve;\n\n  var path = d3Line();\n  if (x) setNumberOrNumberAccessor(path.x, x);\n  if (y) setNumberOrNumberAccessor(path.y, y);\n  if (defined) path.defined(defined);\n  if (curve) path.curve(curve);\n  return path;\n}\nexport function pie(_temp4) {\n  var _ref4 = _temp4 === void 0 ? {} : _temp4,\n      startAngle = _ref4.startAngle,\n      endAngle = _ref4.endAngle,\n      padAngle = _ref4.padAngle,\n      value = _ref4.value,\n      sort = _ref4.sort,\n      sortValues = _ref4.sortValues;\n\n  var path = d3Pie(); // ts can't distinguish between these method overloads\n\n  if (sort === null) path.sort(sort);else if (sort != null) path.sort(sort);\n  if (sortValues === null) path.sortValues(sortValues);else if (sortValues != null) path.sortValues(sortValues);\n  if (value != null) path.value(value);\n  if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle);\n  if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle);\n  if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle);\n  return path;\n}\nexport function radialLine(_temp5) {\n  var _ref5 = _temp5 === void 0 ? {} : _temp5,\n      angle = _ref5.angle,\n      radius = _ref5.radius,\n      defined = _ref5.defined,\n      curve = _ref5.curve;\n\n  var path = d3RadialLine();\n  if (angle) setNumberOrNumberAccessor(path.angle, angle);\n  if (radius) setNumberOrNumberAccessor(path.radius, radius);\n  if (defined) path.defined(defined);\n  if (curve) path.curve(curve);\n  return path;\n}\nexport function stack(_ref6) {\n  var keys = _ref6.keys,\n      value = _ref6.value,\n      order = _ref6.order,\n      offset = _ref6.offset;\n  var path = d3Stack();\n  if (keys) path.keys(keys);\n  if (value) setNumberOrNumberAccessor(path.value, value);\n  if (order) path.order(stackOrder(order));\n  if (offset) path.offset(stackOffset(offset));\n  return path;\n}","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new Map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new Map();\n    for (const value of _) {\n      const key = value + \"\";\n      if (index.has(key)) continue;\n      index.set(key, domain.push(value));\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import { scaleOrdinal } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateOrdinalScale = scaleOperator('domain', 'range', 'reverse', 'unknown');\nexport default function createOrdinalScale(config) {\n  return updateOrdinalScale(scaleOrdinal(), config);\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","'use strict'\n\nfunction normalizeIdentifier(value) {\n  return (\n    value // Collapse Markdown whitespace.\n      .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n      .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n      // counterpart is uppercased will result in a different uppercase\n      // character.\n      // Hence, to get that form, we perform both lower- and uppercase.\n      // Upper case makes sure keys will not interact with default prototypal\n      // methods: no object method is uppercase.\n      .toLowerCase()\n      .toUpperCase()\n  )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nfunction miniflat(value) {\n  return value === null || value === undefined\n    ? []\n    : 'length' in value\n    ? value\n    : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n  if (list.length) {\n    chunkedSplice(list, list.length, 0, items)\n    return list\n  }\n\n  return items\n}\n\nmodule.exports = chunkedPush\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n  var called = []\n  var index = -1\n  var resolve\n\n  while (++index < constructs.length) {\n    resolve = constructs[index].resolveAll\n\n    if (resolve && called.indexOf(resolve) < 0) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryTitle = require('./factory-title.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\n\nvar labelEnd = {\n  name: 'labelEnd',\n  tokenize: tokenizeLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n  tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n  tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n  tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n  var index = -1\n  var token\n\n  while (++index < events.length) {\n    token = events[index][1]\n\n    if (\n      !token._used &&\n      (token.type === 'labelImage' ||\n        token.type === 'labelLink' ||\n        token.type === 'labelEnd')\n    ) {\n      // Remove the marker.\n      events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n      token.type = 'data'\n      index++\n    }\n  }\n\n  return events\n}\n\nfunction resolveToLabelEnd(events, context) {\n  var index = events.length\n  var offset = 0\n  var group\n  var label\n  var text\n  var token\n  var open\n  var close\n  var media // Find an opening.\n\n  while (index--) {\n    token = events[index][1]\n\n    if (open) {\n      // If we see another link, or inactive link label, we’ve been here before.\n      if (\n        token.type === 'link' ||\n        (token.type === 'labelLink' && token._inactive)\n      ) {\n        break\n      } // Mark other link openings as inactive, as we can’t have links in\n      // links.\n\n      if (events[index][0] === 'enter' && token.type === 'labelLink') {\n        token._inactive = true\n      }\n    } else if (close) {\n      if (\n        events[index][0] === 'enter' &&\n        (token.type === 'labelImage' || token.type === 'labelLink') &&\n        !token._balanced\n      ) {\n        open = index\n\n        if (token.type !== 'labelLink') {\n          offset = 2\n          break\n        }\n      }\n    } else if (token.type === 'labelEnd') {\n      close = index\n    }\n  }\n\n  group = {\n    type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n    start: shallow(events[open][1].start),\n    end: shallow(events[events.length - 1][1].end)\n  }\n  label = {\n    type: 'label',\n    start: shallow(events[open][1].start),\n    end: shallow(events[close][1].end)\n  }\n  text = {\n    type: 'labelText',\n    start: shallow(events[open + offset + 2][1].end),\n    end: shallow(events[close - 2][1].start)\n  }\n  media = [\n    ['enter', group, context],\n    ['enter', label, context]\n  ] // Opening marker.\n\n  media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n  media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n  media = chunkedPush(\n    media,\n    resolveAll(\n      context.parser.constructs.insideSpan.null,\n      events.slice(open + offset + 4, close - 3),\n      context\n    )\n  ) // Text close, marker close, label close.\n\n  media = chunkedPush(media, [\n    ['exit', text, context],\n    events[close - 2],\n    events[close - 1],\n    ['exit', label, context]\n  ]) // Reference, resource, or so.\n\n  media = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n  media = chunkedPush(media, [['exit', group, context]])\n  chunkedSplice(events, open, events.length, media)\n  return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  var self = this\n  var index = self.events.length\n  var labelStart\n  var defined // Find an opening.\n\n  while (index--) {\n    if (\n      (self.events[index][1].type === 'labelImage' ||\n        self.events[index][1].type === 'labelLink') &&\n      !self.events[index][1]._balanced\n    ) {\n      labelStart = self.events[index][1]\n      break\n    }\n  }\n\n  return start\n\n  function start(code) {\n    if (!labelStart) {\n      return nok(code)\n    } // It’s a balanced bracket, but contains a link.\n\n    if (labelStart._inactive) return balanced(code)\n    defined =\n      self.parser.defined.indexOf(\n        normalizeIdentifier(\n          self.sliceSerialize({\n            start: labelStart.end,\n            end: self.now()\n          })\n        )\n      ) > -1\n    effects.enter('labelEnd')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelEnd')\n    return afterLabelEnd\n  }\n\n  function afterLabelEnd(code) {\n    // Resource: `[asd](fgh)`.\n    if (code === 40) {\n      return effects.attempt(\n        resourceConstruct,\n        ok,\n        defined ? ok : balanced\n      )(code)\n    } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n    if (code === 91) {\n      return effects.attempt(\n        fullReferenceConstruct,\n        ok,\n        defined\n          ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n          : balanced\n      )(code)\n    } // Shortcut reference: `[asd]`?\n\n    return defined ? ok(code) : balanced(code)\n  }\n\n  function balanced(code) {\n    labelStart._balanced = true\n    return nok(code)\n  }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('resource')\n    effects.enter('resourceMarker')\n    effects.consume(code)\n    effects.exit('resourceMarker')\n    return factoryWhitespace(effects, open)\n  }\n\n  function open(code) {\n    if (code === 41) {\n      return end(code)\n    }\n\n    return factoryDestination(\n      effects,\n      destinationAfter,\n      nok,\n      'resourceDestination',\n      'resourceDestinationLiteral',\n      'resourceDestinationLiteralMarker',\n      'resourceDestinationRaw',\n      'resourceDestinationString',\n      3\n    )(code)\n  }\n\n  function destinationAfter(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, between)(code)\n      : end(code)\n  }\n\n  function between(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factoryWhitespace(effects, end),\n        nok,\n        'resourceTitle',\n        'resourceTitleMarker',\n        'resourceTitleString'\n      )(code)\n    }\n\n    return end(code)\n  }\n\n  function end(code) {\n    if (code === 41) {\n      effects.enter('resourceMarker')\n      effects.consume(code)\n      effects.exit('resourceMarker')\n      effects.exit('resource')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nfunction tokenizeFullReference(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    return factoryLabel.call(\n      self,\n      effects,\n      afterLabel,\n      nok,\n      'reference',\n      'referenceMarker',\n      'referenceString'\n    )(code)\n  }\n\n  function afterLabel(code) {\n    return self.parser.defined.indexOf(\n      normalizeIdentifier(\n        self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n      )\n    ) < 0\n      ? nok(code)\n      : ok(code)\n  }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('reference')\n    effects.enter('referenceMarker')\n    effects.consume(code)\n    effects.exit('referenceMarker')\n    return open\n  }\n\n  function open(code) {\n    if (code === 93) {\n      effects.enter('referenceMarker')\n      effects.consume(code)\n      effects.exit('referenceMarker')\n      effects.exit('reference')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = labelEnd\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = compareObjects;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction compareObjects(objA, objB) {\n  var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n  if (objA === objB) {\n    return false;\n  }\n\n  var aKeys = Object.keys(objA);\n  var bKeys = Object.keys(objB);\n\n  if (aKeys.length !== bKeys.length) {\n    return true;\n  }\n\n  var keysMap = {};\n  var i, len;\n\n  for (i = 0, len = keys.length; i < len; i++) {\n    keysMap[keys[i]] = true;\n  }\n\n  for (i = 0, len = aKeys.length; i < len; i++) {\n    var key = aKeys[i];\n    var aValue = objA[key];\n    var bValue = objB[key];\n\n    if (aValue === bValue) {\n      continue;\n    }\n\n    if (!keysMap[key] || aValue === null || bValue === null || _typeof(aValue) !== 'object' || _typeof(bValue) !== 'object') {\n      return true;\n    }\n\n    var aValueKeys = Object.keys(aValue);\n    var bValueKeys = Object.keys(bValue);\n\n    if (aValueKeys.length !== bValueKeys.length) {\n      return true;\n    }\n\n    for (var n = 0, length = aValueKeys.length; n < length; n++) {\n      var aValueKey = aValueKeys[n];\n\n      if (aValue[aValueKey] !== bValue[aValueKey]) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n}","/**\n * @file\n * Recreation of g-chartframe using visx\n */\n\nimport React from 'react';\nimport Frame from './base';\nimport FramePrint from './print';\nimport FrameSocial from './social';\nimport FrameVideo from './video';\nimport { chartFramePropTypes } from '../prop-types';\nimport { chartFrameDefaultProps } from '../default-props';\n\n/* eslint-disable react/jsx-props-no-spreading */\nconst ChartFrame = ({ type, ...props }) => {\n  const typeLower = type.toLowerCase();\n\n  switch (typeLower) {\n    case 'print':\n      return <FramePrint type={type} {...props} />;\n    case 'social':\n      return <FrameSocial type={typeLower} {...props} />;\n    case 'video':\n      return <FrameVideo type={type} {...props} />;\n    case 'web':\n    default:\n      return <Frame type={typeLower} {...props} />;\n  }\n};\n/* eslint-enable react/jsx-props-no-spreading */\n\nChartFrame.propTypes = chartFramePropTypes;\nChartFrame.defaultProps = chartFrameDefaultProps;\n\nexport default ChartFrame;\nexport { PlotContext } from './plot-context';\n","\"use strict\";\n\nexports.__esModule = true;\nexports.isElement = isElement;\nexports.isSVGElement = isSVGElement;\nexports.isSVGSVGElement = isSVGSVGElement;\nexports.isSVGGraphicsElement = isSVGGraphicsElement;\nexports.isTouchEvent = isTouchEvent;\nexports.isMouseEvent = isMouseEvent;\nexports.isEvent = isEvent;\n\nfunction isElement(elem) {\n  return !!elem && elem instanceof Element;\n} // functional definition of isSVGElement. Note that SVGSVGElements are HTMLElements\n\n\nfunction isSVGElement(elem) {\n  return !!elem && (elem instanceof SVGElement || 'ownerSVGElement' in elem);\n} // functional definition of SVGGElement\n\n\nfunction isSVGSVGElement(elem) {\n  return !!elem && 'createSVGPoint' in elem;\n}\n\nfunction isSVGGraphicsElement(elem) {\n  return !!elem && 'getScreenCTM' in elem;\n} // functional definition of TouchEvent\n\n\nfunction isTouchEvent(event) {\n  return !!event && 'changedTouches' in event;\n} // functional definition of MouseEvent\n\n\nfunction isMouseEvent(event) {\n  return !!event && 'clientX' in event;\n} // functional definition of event\n\n\nfunction isEvent(event) {\n  return !!event && (event instanceof Event || 'nativeEvent' in event && event.nativeEvent instanceof Event);\n}","/**\n * @file\n * An o-grid child component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const GridChild = ({ children, colspan, ...props }) => {\n  switch (typeof colspan) {\n    case 'number':\n    case 'string':\n      return (\n        <div data-o-grid-colspan={colspan} {...props}>\n          {children}\n        </div>\n      );\n    default:\n      break;\n  }\n  return (\n    <div\n      data-o-grid-colspan={Object.entries(colspan)\n        .map(([breakpoint, size]) => `${breakpoint.toUpperCase()}${size}`)\n        .join(' ')}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n};\n\nGridChild.displayName = 'GGridChild';\n\nGridChild.propTypes = {\n  children: PropTypes.node.isRequired,\n  colspan: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.number,\n    PropTypes.shape({\n      default: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      s: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      m: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      l: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      xl: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      S: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      M: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      L: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n      XL: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    }),\n  ]),\n};\n\nGridChild.defaultProps = {\n  colspan: 'full-width',\n};\n\nexport default GridChild;\n","/**\n * @file\n * An o-grid row component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nexport const GridRow = ({ compact, children, ...props }) => (\n  <div className={classnames('o-grid-row', compact && 'o-grid-row--compact')} {...props}>\n    {children}\n  </div>\n);\n\nGridRow.displayName = 'GGridRow';\n\nGridRow.propTypes = {\n  compact: PropTypes.bool,\n  children: PropTypes.node.isRequired,\n};\n\nGridRow.defaultProps = {\n  compact: false,\n};\n\nexport default GridRow;\n","/**\n * @file\n * An o-grid container component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nexport const GridContainer = ({ bleed, snappy, children, className, ...props }) => (\n  <div\n    className={classnames(\n      className,\n      'o-grid-container',\n      bleed && ' o-grid-container--bleed',\n      snappy && 'o-grid-container--snappy',\n    )}\n    {...props}\n  >\n    {children}\n  </div>\n);\n\nGridContainer.displayName = 'GGridContainer';\n\nGridContainer.propTypes = {\n  bleed: PropTypes.bool,\n  snappy: PropTypes.bool,\n  children: PropTypes.node.isRequired,\n};\n\nGridContainer.defaultProps = {\n  bleed: false,\n  snappy: false,\n};\n\nexport default GridContainer;\n","/**\n * XHR based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction xhr() {\n\tconst xhr = new window.XMLHttpRequest();\n\n\treturn {\n\t\tname: 'xhr',\n\t\tsend: function (url, data) {\n\t\t\txhr.open('POST', url, true);\n\t\t\txhr.withCredentials = true;\n\t\t\txhr.setRequestHeader('Content-type', 'application/json');\n\t\t\txhr.send(data);\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\txhr.onerror = function () {\n\t\t\t\tcallback(this);\n\t\t\t};\n\t\t\txhr.onload = function () {\n\t\t\t\tif (xhr.status >= 200 && xhr.status < 300) {\n\t\t\t\t\tcallback();\n\t\t\t\t} else {\n\t\t\t\t\tcallback('Incorrect response: ' + xhr.status);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n}\n\nexport { xhr };\n","/**\n * Beacon based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction sendBeacon() {\n\tlet resolver;\n\tlet rejecter;\n\tconst p = new Promise((resolve, reject) => {\n\t\tresolver = resolve;\n\t\trejecter = reject;\n\t});\n\treturn {\n\t\tname: 'sendBeacon',\n\t\tsend: function (url, data) {\n\t\t\tif (navigator.sendBeacon(url, data)) {\n\t\t\t\tresolver();\n\t\t\t} else {\n\t\t\t\trejecter(new Error('Failed to send beacon event: ' + data.toString()));\n\t\t\t}\n\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\tif (callback) {\n\t\t\t\tp.then(callback, callback);\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport { sendBeacon };\n","import {encode} from '../../utils.js';\n\n/**\n * Image based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction image () {\n\tconst image = new Image(1,1);\n\n\treturn {\n\t\tname: 'image',\n\t\tsend: function (url, data) {\n\t\t\turl = url.replace('https://spoor-api.ft.com/ingest', 'https://spoor-api.ft.com/px.gif');\n\t\t\timage.src = url + (url.indexOf('?') > -1 ? '&' : '?') + 'data=' + encode(data);\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\tif (image.addEventListener) {\n\t\t\t\timage.addEventListener('error', callback);\n\t\t\t\timage.addEventListener('load', () => callback());\n\t\t\t} else { // it's IE!\n\t\t\t\timage.attachEvent('onerror', callback);\n\t\t\t\timage.attachEvent('onload', () => callback());\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport { image };\n","import React, { useEffect, useCallback, useMemo, useState, useRef } from 'react';\nimport { hot } from 'react-hot-loader/root';\nimport Papa from 'papaparse';\nimport { GridChild, GridRow, GridContainer } from '@financial-times/g-components/grid';\nimport Share from '@financial-times/g-components/share';\nimport Layout from '@financial-times/g-components/article-layout';\nimport ListCard from '@financial-times/g-components/list-card';\nimport Epilogue from '@financial-times/g-components/epilogue';\nimport Loading from '@financial-times/g-components/loading';\nimport { ArrayParam, StringParam, BooleanParam } from 'use-query-params';\nimport ReactMarkdown from 'react-markdown';\nimport { Button } from '@financial-times/g-components/button';\nimport CustomArticleHead from './components/custom-article-head';\nimport BasicCard from './components/basic-card';\nimport NavigationHeader from './components/navigation-header';\nimport StickyHeader from './components/sticky-header';\nimport { ContextPropType, ContextDefaultProps } from './util/prop-types';\nimport useQueryParamsWithState from './hooks/useQueryParamsWithState';\nimport TrajectoryLineChart from './components/trajectory-line-chart';\nimport getArrayDepth from './util/getArrayDepth';\nimport transformInputDataFeeds from './util/transformInputDataFeeds';\nimport {\n  queryParamDateParser,\n  queryParamDateFormatter,\n} from './components/date-picker-input/helpers';\nimport source1 from './copy/source_line_1.md';\nimport source2 from './copy/source_line_2.md';\nimport source3 from './copy/source_line_3.md';\nimport copy_intro from './copy/copy_intro.md';\nimport copy_regional from './copy/copy_regional.md';\nimport copy_technical from './copy/copy_technical.md';\nimport latestChanges from './copy/latest_changes.md';\n\nconst isPrerendering = navigator.userAgent === 'ReactSnap';\n\nconst DEFAULT_COUNTRIES = ['eur', 'usa', 'zaf', 'grc', 'hun', 'gbr'];\nconst DEFAULT_US_STATES = ['usny', 'usnh', 'uspr', 'usdc', 'usfl', 'usmi'];\n\nconst App = context => {\n  const [publishedDate, setPublishedDate] = useState(null);\n  const [data, setData] = useState(null);\n\n  const mainRef = useRef();\n\n  // Setup combine state/query param management\n  const [state, setState] = useQueryParamsWithState({\n    areas: { type: ArrayParam, default: DEFAULT_COUNTRIES, maxLength: 6 },\n    areasRegional: {\n      type: ArrayParam,\n      default: DEFAULT_US_STATES,\n      maxLength: 6,\n    },\n    values: { type: StringParam, default: 'deaths', options: ['deaths', 'cases'] },\n    logScale: { type: BooleanParam, default: false },\n    per100K: { type: BooleanParam, default: true },\n    cumulative: { type: BooleanParam, default: false },\n    startDate: { type: StringParam, default: '2021-06-01' },\n    scrollTo: {\n      type: StringParam,\n      default: 'chart',\n      options: ['chart', 'united-states'],\n      hideFromQueryParams: true,\n    },\n  });\n\n  // Asynchronous effects should update state as per below\n  useEffect(() => {\n    // N.b., do async in an async IIFE, don't make the useEffect callback async\n    (async () => {\n      const world = [];\n      const us = [];\n      let lastUpdated;\n\n      await Promise.all(\n        state.areas.map(async country => {\n          const { data: dataCountry } = await fetch(\n            `https://ft-ig-content-prod.s3-eu-west-1.amazonaws.com/v2/Financial-Times/data-journalism-covid19-data/${\n              !isPrerendering ? context.dataBranch : 'main'\n            }/countries/${country.toUpperCase()}_cad.csv`\n          )\n            .then(d => d.text())\n            .then(d => Papa.parse(d, { header: true, dynamicTyping: true, skipEmptyLines: true }));\n\n          lastUpdated = lastUpdated || dataCountry[0].last_updated;\n          world.push(transformInputDataFeeds(dataCountry)[0]);\n        })\n      );\n\n      await Promise.all(\n        state.areasRegional.map(async regional => {\n          const { data: dataState } = await fetch(\n            `https://ft-ig-content-prod.s3-eu-west-1.amazonaws.com/v2/Financial-Times/data-journalism-covid19-data/${\n              !isPrerendering ? context.dataBranch : 'main'\n            }/states/US${regional.substr(2).toUpperCase()}_cad.csv`\n          )\n            .then(d => d.text())\n            .then(d => Papa.parse(d, { header: true, dynamicTyping: true, skipEmptyLines: true }));\n          us.push(transformInputDataFeeds(dataState)[0]);\n        })\n      );\n\n      setData({\n        world,\n        us,\n      });\n      setPublishedDate(lastUpdated);\n    })();\n  }, [context]);\n\n  useEffect(() => {\n    // N.b., do async in an async IIFE, don't make the useEffect callback async\n    (async () => {\n      if (data && data.world && data.world.length === state.areas.length) {\n        const { data: dataWorld } = await fetch(\n          `https://ft-ig-content-prod.s3-eu-west-1.amazonaws.com/v2/Financial-Times/data-journalism-covid19-data/${\n            !isPrerendering ? context.dataBranch : 'main'\n          }/country_cad_trajectories.csv`\n        )\n          .then(d => d.text())\n          .then(d => Papa.parse(d, { header: true, dynamicTyping: true, skipEmptyLines: true }));\n        const { data: dataUs } = await fetch(\n          `https://ft-ig-content-prod.s3-eu-west-1.amazonaws.com/v2/Financial-Times/data-journalism-covid19-data/${\n            !isPrerendering ? context.dataBranch : 'main'\n          }/us_state_cases_and_deaths.csv`\n        )\n          .then(d => d.text())\n          .then(d => Papa.parse(d, { header: true, dynamicTyping: true, skipEmptyLines: true }));\n        const fullData = {\n          world: transformInputDataFeeds(dataWorld),\n          us: transformInputDataFeeds(dataUs),\n        };\n        setData(fullData);\n      }\n    })();\n  }, [context, data]);\n\n  // Update state function (accepts an array of key+value pairs or key,value)\n  const updateState = useCallback(\n    (...keyValuePairs) => {\n      const keyValuePairsArray =\n        getArrayDepth(keyValuePairs) === 1 ? [keyValuePairs] : keyValuePairs[0];\n      const stateToAdd = keyValuePairsArray.reduce(\n        (acc, [key, value]) => ({ ...acc, [key]: value }),\n        {}\n      );\n      setState({ ...state, ...stateToAdd });\n    },\n    [setState, state]\n  );\n\n  const {\n    areas,\n    areasRegional,\n    values,\n    per100K,\n    logScale,\n    cumulative,\n    byDate,\n    hasQuery,\n    startDate,\n  } = state;\n\n  const daysSinceN = (() => {\n    let newDaysSinceN = 3;\n    if (values === 'cases') {\n      newDaysSinceN = 10;\n    }\n    if (per100K && !cumulative) {\n      newDaysSinceN = 0.01;\n    }\n    if (per100K && cumulative) {\n      newDaysSinceN = 0.3;\n    }\n    if (!per100K && cumulative) {\n      newDaysSinceN = 100;\n    }\n    return newDaysSinceN;\n  })();\n\n  // Earliest date allowed is Jan 1 2020\n  const earliestDateAllowed = new Date(2020, 0, 1);\n  const latestDateAllowed = new Date();\n  const parsedStartDate = queryParamDateParser(startDate);\n\n  useEffect(() => {\n    // Do not allow dates are outside the range of earliest/latest date allowed\n    if (parsedStartDate < earliestDateAllowed) {\n      updateState('startDate', queryParamDateFormatter(earliestDateAllowed));\n    }\n    if (parsedStartDate > latestDateAllowed) {\n      updateState('startDate', queryParamDateFormatter(latestDateAllowed));\n    }\n  }, [startDate]);\n\n  const scrollToId = id =>\n    document.getElementById(id) && document.getElementById(id).scrollIntoView();\n\n  // Scroll to chart when query params present. Fixes #198.\n  useEffect(() => {\n    if (data && hasQuery) {\n      switch (state.scrollTo) {\n        case 'chart':\n          scrollToId('world');\n          break;\n        case 'united-states':\n          scrollToId('us');\n          break;\n        default:\n          try {\n            document.querySelector(state.scrollTo).scrollIntoView();\n          } catch (e) {\n            console.error(e);\n          }\n          break;\n      }\n    }\n  }, [data, hasQuery, state.scrollTo]);\n\n  return (\n    <Layout {...context} publishedDate={publishedDate}>\n      <StickyHeader containerRef={mainRef} height={{ default: 48, S: 40, M: 40, L: 40, XL: 40 }}>\n        <NavigationHeader\n          {...context.navigationConfig}\n          currentPage=\"https://ig.ft.com/coronavirus-chart/\"\n        />\n      </StickyHeader>\n      <main key=\"main\" role=\"main\" ref={mainRef}>\n        <article className=\"article\" itemScope itemType=\"http://schema.org/Article\">\n          <GridContainer className=\"article-head\">\n            <GridRow>\n              <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                <CustomArticleHead {...context} publishedDate={publishedDate} />\n              </GridChild>\n            </GridRow>\n          </GridContainer>\n          <div className=\"article-body o-editorial-typography-body\" itemProp=\"articleBody\">\n            <GridContainer>\n              <GridRow>\n                <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <div className=\"anchor-tag-container\">\n                    <Button big onClick={() => scrollToId('world')}>\n                      Countries\n                    </Button>\n                    <Button big onClick={() => scrollToId('us')}>\n                      US states\n                    </Button>\n                  </div>\n                  <ReactMarkdown source={copy_intro} />\n                  <BasicCard title=\"Latest changes\">\n                    <ReactMarkdown\n                      source={latestChanges}\n                      renderers={{\n                        root: ({ children }) => <ul className=\"g-list-card__list\">{children}</ul>,\n                        paragraph: ({ children }) => (\n                          <li className=\"g-list-card__list-item\">{children}</li>\n                        ),\n                      }}\n                    />\n                  </BasicCard>\n                </GridChild>\n              </GridRow>\n\n              <section id=\"world\">\n                <GridRow>\n                  {!isPrerendering && data ? (\n                    <TrajectoryLineChart\n                      data={data}\n                      worldOrRegion=\"world\"\n                      source=\"Johns Hopkins CSSE, World Health Organization, UK Government coronavirus dashboard, Government of Peru, Public Health France, Slovenian Ministry of Health and the Swedish Public Health Agency\"\n                      logScale={logScale}\n                      cumulative={cumulative}\n                      values={values}\n                      areas={areas}\n                      per100K={per100K}\n                      daysSinceN={daysSinceN}\n                      byDate\n                      buildTime={publishedDate}\n                      updateState={updateState}\n                      earliestDateAllowed={earliestDateAllowed}\n                      latestDateAllowed={latestDateAllowed}\n                      startDate={parsedStartDate}\n                    />\n                  ) : (\n                    <React.Fragment>\n                      <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                        <div className=\"loading-container\">\n                          <Loading size=\"large\" />\n                        </div>\n                      </GridChild>\n                    </React.Fragment>\n                  )}\n                </GridRow>\n              </section>\n\n              <GridRow>\n                <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <ListCard title=\"Related\">\n                    <ReactMarkdown\n                      source=\"[Coronavirus tracker](https://www.ft.com/coronavirus-latest): an up-to-date visual narrative of the spread of Covid-19\"\n                      disallowedTypes={['paragraph']}\n                      unwrapDisallowed\n                    />\n                    <ReactMarkdown\n                      source=\"[Coronavirus lockdown monitor](https://ig.ft.com/coronavirus-lockdowns/): Tracking efforts to ease national lockdowns and reopen economies\"\n                      disallowedTypes={['paragraph']}\n                      unwrapDisallowed\n                    />\n                    <ReactMarkdown\n                      source=\"[Coronavirus vaccine tracker](https://ig.ft.com/coronavirus-vaccine-tracker/): Monitoring the rollout of Covid-19 vaccinations around the world\"\n                      disallowedTypes={['paragraph']}\n                      unwrapDisallowed\n                    />\n                  </ListCard>\n                </GridChild>\n\n                <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <ReactMarkdown source={copy_regional} />\n                </GridChild>\n              </GridRow>\n\n              <section id=\"us\">\n                <GridRow>\n                  {!isPrerendering && data ? (\n                    <TrajectoryLineChart\n                      data={data}\n                      worldOrRegion=\"us\"\n                      source=\"the Johns Hopkins CSSE\"\n                      logScale={logScale}\n                      cumulative={cumulative}\n                      values={values}\n                      areas={areasRegional}\n                      per100K={per100K}\n                      daysSinceN={daysSinceN}\n                      byDate\n                      buildTime={publishedDate}\n                      updateState={updateState}\n                      earliestDateAllowed={earliestDateAllowed}\n                      latestDateAllowed={latestDateAllowed}\n                      startDate={parsedStartDate}\n                    />\n                  ) : (\n                    <React.Fragment>\n                      <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                        <div className=\"loading-container\">\n                          <Loading size=\"large\" />\n                        </div>\n                      </GridChild>\n                    </React.Fragment>\n                  )}\n                </GridRow>\n              </section>\n\n              <GridRow>\n                <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <ReactMarkdown source={copy_technical} />\n                </GridChild>\n\n                <GridChild colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <BasicCard title=\"Sources\">\n                    <ReactMarkdown source={source1} />\n                    <ReactMarkdown source={source2} />\n                    <ReactMarkdown source={source3} />\n                  </BasicCard>\n\n                  <section className=\"credits\">\n                    <ReactMarkdown source=\"_Development: [Cale Tilford](http://ft.com/cale-tilford), [Ændra Rininsland](https://www.ft.com/aendra-rininsland), [Joanna S Kao](https://www.ft.com/stream/591eb243-617c-4f0f-af13-bba7ba528c42), [Oliver Elliott](https://www.ft.com/oliver-elliott) and [Emma Lewis](https://www.ft.com/emma-lewis)_\" />\n                    <ReactMarkdown source=\"_Design: [Caroline Nevitt](http://ft.com/caroline-nevitt) and [John Burn-Murdoch](https://www.ft.com/john-burn-murdoch)_\" />\n                    <ReactMarkdown source=\"_US reporting: [Brooke Fox](https://www.ft.com/stream/ff614d83-97f8-4b6c-8a55-73178b0b19ec)_\" />\n                    <ReactMarkdown source=\"_Editing: [Martin Stabe](http://ft.com/martin-stabe)_\" />\n                  </section>\n\n                  <Share\n                    headline={context.headline} // eslint-disable-line react/destructuring-assignment\n                    {...{ ...context }}\n                  />\n                </GridChild>\n              </GridRow>\n            </GridContainer>\n          </div>\n          <Epilogue />\n        </article>\n      </main>\n    </Layout>\n  );\n};\n\nApp.propTypes = {\n  ...ContextPropType,\n};\n\nApp.defaultProps = {\n  ...ContextDefaultProps,\n};\n\nexport default hot(App);\n","import DomDelegate from 'ftdomdelegate';\n\nconst socialUrls = {\n\ttwitter: \"https://twitter.com/intent/tweet?url={{url}}&text={{title}}&related={{relatedTwitterAccounts}}&via=FT\",\n\tfacebook: \"http://www.facebook.com/sharer.php?u={{url}}\",\n\tlinkedin: \"http://www.linkedin.com/shareArticle?mini=true&url={{url}}&title={{title}}+%7C+{{titleExtra}}&summary={{summary}}&source=Financial+Times\",\n\tpinterest: \"http://www.pinterest.com/pin/create/button/?url={{url}}&description={{title}}\",\n\twhatsapp: \"whatsapp://send?text={{title}}%20({{titleExtra}})%20-%20{{url}}\",\n\tlink: \"{{url}}\",\n\tenterpriseSharing: \"{{url}}\",\n};\n\nconst descriptiveLinkText = {\n\ttwitter: 'Share {{title}} on Twitter (opens a new window)',\n\tfacebook: 'Share {{title}} on Facebook (opens a new window)',\n\tlinkedin: 'Share {{title}} on LinkedIn (opens a new window)',\n\tpinterest: 'Share {{title}} on Pinterest (opens a new window)',\n\twhatsapp: 'Share {{title}} on Whatsapp (opens a new window)',\n\tlink: 'Open link in new window',\n\tenterpriseSharing: 'Share {{title}} with your Enterprise Sharing tools (opens a new window)',\n};\n\n/**\n * The `oShare.open` open event fires when a social network share action is\n * triggered, to open a new window.\n *\n * @event \"oShare.open\"\n * @type {object}\n * @property {boolean} share - The o-share instance.\n * @property {boolean} action - The kind of share i.e. \"social\".\n * @property {boolean} url - The social share url opened.\n */\n\n/**\n * The `oShare.ready` fires when a o-share instance has been initialised.\n *\n * @event \"oShare.ready\"\n * @type {object}\n * @property {boolean} share - The initialised o-share instance.\n */\n\n/**\n * @class Share\n * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for an o-share component. You can pass an HTMLElement or a selector string\n * @param {object} config - Optional\n * @param {string} config.url - Optional, url to share\n * @param {string} config.title - Optional, title to be used in social network sharing\n * @param {string} config.titleExtra - Optional, extra bit to add to the title for some social networks\n * @param {string} config.summary - Optional, summary of the page that's being shared\n * @param {string} config.relatedTwitterAccounts - Optional, extra information for sharing on Twitter\n * @param {object[]} config.links - Optional, array of strings of supported social network names that you want rendered\n */\nfunction Share(rootEl, config) {\n\tconst oShare = this;\n\tconst openWindows = {};\n\n\t/**\n\t * Helper function to dispatch namespaced events, namespace defaults to oShare\n\t *\n\t * @param {string} eventName - event to dispatch\n\t * @param {object} data - the payload\n\t * @param {string} namespace - the namespace for the event\n\t * @returns {void}\n\t * @private\n\t */\n\tfunction dispatchCustomEvent(eventName, data = {}, namespace = 'oShare') {\n\t\toShare.rootEl.dispatchEvent(new CustomEvent(namespace + '.' + eventName, {\n\t\t\tdetail: data,\n\t\t\tbubbles: true\n\t\t}));\n\t}\n\n\t/**\n\t * Click event handler that checks the event target is an o-share action\n\t *\n\t * @param {Event} ev - The event to handle\n\t * @returns {undefined}\n\t * @private\n\t */\n\tfunction handleClick(ev) {\n\t\tconst actionEl = ev.target.closest('li.o-share__action');\n\n\t\tif (oShare.rootEl.contains(actionEl) && actionEl.querySelector('a[href]')) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\n\t\t\tconst url = actionEl.querySelector('a[href]').href;\n\t\t\tconst shareLocation = oShare.rootEl.dataset.oShareLocation || '';\n\n\t\t\tdispatchCustomEvent('event', {\n\t\t\t\tcategory: 'share',\n\t\t\t\taction: 'click',\n\t\t\t\tbutton: actionEl.textContent.trim().toLowerCase(),\n\t\t\t\tlocation: shareLocation\n\t\t\t}, 'oTracking');\n\n\t\t\tshareSocial(url);\n\t\t}\n\t}\n\n\t/**\n\t * Event handler for social network actions. Opens up a new window for that social network and dispatched the 'oShare.open' event\n\t *\n\t * @private\n\t * @param {string} url - URL to be loaded in the new window\n\t * @returns {undefined}\n\t * @fires \"oShare.open\"\n\t */\n\tfunction shareSocial(url) {\n\t\tif (url) {\n\t\t\tif (openWindows[url] && !openWindows[url].closed) {\n\t\t\t\topenWindows[url].focus();\n\t\t\t} else {\n\t\t\t\topenWindows[url] = window.open(url, '', 'width=646,height=436');\n\t\t\t\topenWindows[url].opener = null;\n\t\t\t}\n\n\t\t\tdispatchCustomEvent('open', {\n\t\t\t\tshare: oShare,\n\t\t\t\taction: \"social\",\n\t\t\t\turl: url\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Transforms the default social urls\n\t *\n\t * @private\n\t * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n\t * @returns {string} - the generated url\n\t */\n\tfunction generateSocialUrl(socialNetwork) {\n\t\tlet templateUrl = socialUrls[socialNetwork];\n\t\ttemplateUrl = templateUrl.replace('{{url}}', encodeURIComponent(config.url))\n\t\t\t.replace('{{title}}', encodeURIComponent(config.title))\n\t\t\t.replace('{{titleExtra}}', encodeURIComponent(config.titleExtra))\n\t\t\t.replace('{{summary}}', encodeURIComponent(config.summary))\n\t\t\t.replace('{{relatedTwitterAccounts}}', encodeURIComponent(config.relatedTwitterAccounts));\n\t\treturn templateUrl;\n\t}\n\n\t/**\n\t * Transforms the descriptive text for social links\n\t *\n\t * @private\n\t * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n\t * @returns {string} - A lovely URL\n\t */\n\tfunction generateDesriptiveLinkText (socialNetwork) {\n\t\tlet templateLinkText = descriptiveLinkText[socialNetwork];\n\t\ttemplateLinkText = templateLinkText.replace('{{title}}', config.title);\n\t\treturn templateLinkText;\n\t}\n\n\t/**\n\t * Renders the list of social networks in {@link config.links}\n\t *\n\t * @returns {void}\n\t * @private\n\t */\n\tfunction render() {\n\t\tnormaliseConfig();\n\n\t\tconst ulElement = document.createElement('ul');\n\t\tfor (let i = 0; i < config.links.length; i++) {\n\t\t\tconst liElement = document.createElement('li');\n\t\t\tconst spanElement = document.createElement('span');\n\t\t\tconst aElement = document.createElement('a');\n\n\t\t\tliElement.classList.add('o-share__action', `o-share__action--${config.links[i]}`);\n\n\t\t\tspanElement.classList.add('o-share__text');\n\t\t\tspanElement.innerText = generateDesriptiveLinkText(config.links[i]);\n\n\t\t\taElement.classList.add('o-share__icon', `o-share__icon--${config.links[i]}`);\n\t\t\taElement.href = generateSocialUrl(config.links[i]);\n\t\t\taElement.setAttribute('target', '_blank');\n\t\t\taElement.setAttribute('rel', 'noopener');\n\n\t\t\taElement.appendChild(spanElement);\n\t\t\tliElement.appendChild(aElement);\n\t\t\tulElement.appendChild(liElement);\n\t\t}\n\t\toShare.rootEl.appendChild(ulElement);\n\t}\n\n\t/**\n\t * Normalises any data in the configuration, converting relative URLs to ready-to-share\n\t * absolute versions\n\t *\n\t * @returns {undefined}\n\t * @private\n\t */\n\tfunction normaliseConfig() {\n\t\tconst link = document.createElement('a');\n\t\tlink.href = config.url;\n\t\tconfig.url = link.protocol + '//' + link.host + link.pathname + link.search + link.hash;\n\t}\n\n\t/**\n\t * Initialises the Share class, rendering the o-share element if it's empty with {@link config} options,\n\t * or from corresponding data attributes and sets up dom-delegates.\n\t * Dispatches 'oShare.ready' at the end\n\t *\n\t * @returns {undefined}\n\t * @fires \"oShare.ready\"\n\t */\n\tfunction init() {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tconst rootDelegate = new DomDelegate(rootEl);\n\t\trootDelegate.on('click', handleClick);\n\t\trootEl.setAttribute('data-o-share--js', '');\n\n\t\toShare.rootDomDelegate = rootDelegate;\n\t\toShare.rootEl = rootEl;\n\n\t\tif (rootEl.children.length === 0) {\n\t\t\tif (!config) {\n\t\t\t\tconfig = {};\n\t\t\t\tconfig.links = rootEl.hasAttribute('data-o-share-links') ?\n\t\t\t\t\trootEl.getAttribute('data-o-share-links').split(' ') : [];\n\t\t\t\tconfig.url = rootEl.getAttribute('data-o-share-url') || '';\n\t\t\t\tconfig.title = rootEl.getAttribute('data-o-share-title') || '';\n\t\t\t\tconfig.titleExtra = rootEl.getAttribute('data-o-share-titleExtra') || '';\n\t\t\t\tconfig.summary = rootEl.getAttribute('data-o-share-summary') || '';\n\t\t\t\tconfig.relatedTwitterAccounts = rootEl.getAttribute('data-o-share-relatedTwitterAccounts') || '';\n\t\t\t}\n\t\t\trender();\n\t\t}\n\n\t\tdispatchCustomEvent('ready', {\n\t\t\tshare: oShare\n\t\t});\n\t}\n\n\tinit();\n}\n\n/**\n * Destroys the Share instance, disables dom-delegates\n *\n * @returns {undefined}\n */\nShare.prototype.destroy = function () {\n\tthis.rootDomDelegate.destroy();\n\t// Should destroy remove its children? Maybe setting .innerHTML to '' is faster\n\tfor (let i = 0; i < this.rootEl.children; i++) {\n\t\tthis.rootEl.removeChild(this.rootEl.children[i]);\n\t}\n\n\tthis.rootEl.removeAttribute('data-o-share--js');\n\tthis.rootEl = undefined;\n};\n\n/**\n * Initialises all o-share components inside the element passed as the first parameter\n *\n * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for o-share components. You can pass an HTMLElement or a selector string\n * @returns {Share|Share[]} - A Share or an array of Shares\n */\nShare.init = function (rootEl = document.body) {\n\tif (!(rootEl instanceof HTMLElement)) {\n\t\trootEl = document.querySelector(rootEl);\n\t}\n\tif (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-share]')) {\n\t\treturn new Share(rootEl);\n\t}\n\treturn Array.from(rootEl.querySelectorAll('[data-o-component=o-share]'), rootEl => new Share(rootEl));\n};\n\nexport default Share;\n","import search from './search.js';\nimport mega from './mega.js';\nimport drawer from './drawer.js';\nimport subnav from './subnav.js';\nimport sticky from './sticky.js';\n\nclass Header {\n\n\tconstructor (headerEl) {\n\t\tif (!headerEl) {\n\t\t\theaderEl = document.querySelector('[data-o-component=\"o-header\"]');\n\t\t} else if (typeof headerEl === 'string') {\n\t\t\theaderEl = document.querySelector(headerEl);\n\t\t}\n\n\t\tif (headerEl.hasAttribute('data-o-header--js')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.headerEl = headerEl;\n\n\t\tsearch.init(this.headerEl);\n\t\tmega.init(this.headerEl);\n\t\tdrawer.init(this.headerEl);\n\t\tsubnav.init(this.headerEl);\n\t\tsticky.init(this.headerEl);\n\n\t\tthis.headerEl.removeAttribute('data-o-header--no-js');\n\t\tthis.headerEl.setAttribute('data-o-header--js', '');\n\t}\n\n\tstatic init (rootEl) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t}\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\t\tif (/\\bo-header\\b/.test(rootEl.getAttribute('data-o-component'))) {\n\t\t\treturn new Header(rootEl);\n\t\t}\n\n\t\treturn [].map.call(rootEl.querySelectorAll('[data-o-component=\"o-header\"]'), el => {\n\t\t\tif (!el.hasAttribute('data-o-header--js')) {\n\t\t\t\treturn new Header(el);\n\t\t\t}\n\t\t}).filter((header) => {\n\t\t\treturn header !== undefined;\n\t\t});\n\t}\n\n}\n\nexport default Header;\n","import Target from './target.js';\n\n// Some assistive technologies, like screen readers, suggest to press 'space'\n// when interacting with a link with a role of 'button'.\n// We need to ensure that we replicate this functionality that exists on a button element.\nfunction handleSpaceKeydown (e) {\n\t// if the pressed key is a space, we'll simulate a click\n\tif (e.keyCode === 32) {\n\t\tthis.toggle(e);\n\t}\n}\n\nclass Toggle {\n\n\tconstructor(toggleEl, config) {\n\t\tif (!Toggle._targets) {\n\t\t\tToggle._targets = new Map();\n\t\t}\n\n\t\tif (!toggleEl) {\n\t\t\treturn;\n\t\t} else if (!(toggleEl instanceof HTMLElement)) {\n\t\t\ttoggleEl = document.querySelector(toggleEl);\n\t\t}\n\n\t\tif (toggleEl.hasAttribute('data-o-toggle--js')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!config) {\n\t\t\tconfig = {};\n\t\t\t// Try to get config set declaratively on the element\n\t\t\tArray.prototype.forEach.call(toggleEl.attributes, (attr) => {\n\t\t\t\tif (attr.name.indexOf('data-o-toggle') === 0) {\n\t\t\t\t\t// Remove the prefix part of the data attribute name\n\t\t\t\t\tconst key = attr.name.replace('data-o-toggle-', '');\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n\t\t\t\t\t\t// We also replace all ' with \" so JSON strings are parsed correctly\n\t\t\t\t\t\tconfig[key] = JSON.parse(attr.value.replace(/\\'/g, '\"'));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconfig[key] = attr.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Set the toggle callback if its a string.\n\t\tif (config.callback && typeof config.callback === 'string') {\n\t\t\t// Error if the callback is a string and a global function of that name does not exist.\n\t\t\tif (typeof window[config.callback] !== 'function') {\n\t\t\t\tthrow new Error(`Could not find o-toggle callback \"${config.callback}\".`);\n\t\t\t}\n\t\t\tthis.callback = window[config.callback];\n\t\t}\n\t\t// Set the toggle callback if its a funciton.\n\t\tif (config.callback && typeof config.callback === 'function') {\n\t\t\tthis.callback = config.callback;\n\t\t}\n\t\t// Error if some callback value has been given but has not been set.\n\t\tif (config.callback && !this.callback) {\n\t\t\tthrow new Error(`The o-toggle callback must be a string or function.`);\n\t\t}\n\n\t\t// Set the toggle element.\n\t\tthis.toggleEl = toggleEl;\n\n\t\tif (this.toggleEl.nodeName === 'A') {\n\t\t\tthis.toggleEl.setAttribute('role', 'button');\n\t\t\tthis.toggleEl.addEventListener('keydown', handleSpaceKeydown.bind(this));\n\t\t\t// If a user drags their mouse slightly when trying to interact with the toggle\n\t\t\t// it will trigger the 'drag and drop' functionality.\n\t\t\t// Regular buttons prevent this and ensure as long as the mouse is still above the\n\t\t\t// button that the click will register.\n\t\t\t// This will help users with motor impairments and those less familiar with a trackpad.\n\t\t\tthis.toggleEl.setAttribute('draggable', 'false');\n\t\t}\n\n\t\tthis.toggle = this.toggle.bind(this);\n\t\tthis.toggleEl.addEventListener('click', this.toggle);\n\n\t\tthis.toggleEl.setAttribute('data-o-toggle--js', 'true');\n\n\t\tthis.targetEl = config.target;\n\t\tif (!(this.targetEl instanceof HTMLElement)) {\n\t\t\tthis.targetEl = document.querySelector(this.targetEl);\n\t\t}\n\n\t\tif (Toggle._targets.get(this.targetEl) === undefined) {\n\t\t\tthis.target = new Toggle.Target(this);\n\t\t\tToggle._targets.set(this.targetEl, this.target);\n\t\t} else {\n\t\t\tthis.target = Toggle._targets.get(this.targetEl);\n\t\t}\n\n\t\tthis.target.addToggle(this);\n\t\tthis.target.close();\n\t}\n\n\topen() {\n\t\tthis.toggleEl.setAttribute('aria-expanded', 'true');\n\t}\n\n\tclose() {\n\t\tthis.toggleEl.setAttribute('aria-expanded', 'false');\n\t}\n\n\t// toggle is bound to the Toggle instance in the constructor\n\ttoggle(e) {\n\n\t\tthis.target.toggle();\n\n\t\tif(e) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (this.callback){\n\t\t\tconst stateName = this.target.isOpen() ? 'open' : 'close';\n\t\t\tthis.callback(stateName, e);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.toggleEl.nodeName === 'A') {\n\t\t\tthis.toggleEl.removeEventListener('keydown', handleSpaceKeydown);\n\t\t}\n\t\tthis.toggleEl.removeEventListener('click', this.toggle);\n\t\tthis.toggleEl.removeAttribute('aria-expanded');\n\t\tthis.toggleEl.removeAttribute('role');\n\t\tthis.toggleEl.removeAttribute('data-o-toggle--js');\n\n\t\tthis.target.removeToggle(this);\n\n\t\tthis.target = undefined;\n\t\tthis.toggleEl = undefined;\n\t\tthis.callback = undefined;\n\t}\n\n\tstatic init(el, config) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t} else if (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\tconst toggleEls = el.querySelectorAll('[data-o-component=\"o-toggle\"]');\n\t\tconst toggles = [];\n\t\tfor (const toggleEl of toggleEls) {\n\t\t\tif (!toggleEl.hasAttribute('data-o-toggle--js')) {\n\t\t\t\ttoggles.push(new Toggle(toggleEl, config));\n\t\t\t}\n\t\t}\n\t\treturn toggles;\n\t}\n}\n\nToggle.Target = Target;\nexport default Toggle;\n","import {set, get, destroy as destroySetting} from './core/settings.js';\nimport {setUser, init as initUser} from './core/user.js';\nimport {init as initSession} from './core/session.js';\nimport {init as initSend} from './core/send.js';\nimport {event} from './events/custom.js';\nimport {page} from './events/page-view.js';\nimport {click} from './events/click.js';\nimport core from './core.js';\nimport { merge, broadcast } from './utils.js';\nimport {view} from './events/component-view.js';\n\nconst initEvent = event.init;\nconst initPage = page.init;\n\n/**\n * The version of the tracking module.\n *\n * @type {string}\n */\nconst version = '4.0.1';\n\n/**\n * The source of this event.\n *\n * @type {string}\n */\nconst source = 'o-tracking';\n\n/**\n * Update the tracking configuration with any state changes. The supplied\n * config is merged with any existing config; to unset a value, set it as\n * null or undefined.\n *\n * @param {object} newConfig The configuration object to merge in - see init()\n * @returns {void}\n */\nfunction updateConfig(newConfig) {\n\tlet config = get('config') || {};\n\n\tconfig = merge(config, newConfig);\n\tset('config', config);\n\n\tif (config.user && config.user.user_id) {\n\t\tsetUser(config.user.user_id);\n\t}\n}\n\n/**\n * Clean up the tracking module.\n *\n * @returns {void}\n */\nfunction destroy() {\n\ttracking.initialised = false;\n\n\tdestroySetting('config');\n\tdestroySetting('page_sent');\n}\n/**\n * Overload toString method to show the version.\n *\n * @returns {string} The module's version.\n */\nfunction toString() {\n\treturn 'oTracking version ' + version;\n}\n\n/**\n * Initialises the Tracking object.\n *\n * All options are optional, if a configuration option is missing, the module\n * will try to initialise using any configuration found in the DOM using the\n * script config tag.\n *\n * @example\n * <!-- DOM configuration settings -->\n * <script type='application/json' data-o-tracking-config>\n * page: {\n * \t product: 'desktop'\n * },\n * user: {\n *   user_id: '023ur9jfokwenvcklwnfiwhfoi324'\n * }\n * </script>\n *\n * @param {object} config \t\t\t\t\t- See {@link Tracking} for the configuration options.\n * @param {boolean=} config.test             - Optional, if `true`, the data sent to Spoor will be marked as test data.\n * @param {string=} config.configId          - Optional\n * @param {string=} config.session           - Optional\n * @param {string=} config.cookieDomain      - Optional\n * @param {object=} config.context           - Optional\n * @param {object=} config.user              - Optional\n * @param {object=} config.system            - Optional\n * @param {object=} config.device            - Optional\n *\n * @returns {tracking|null} - The initialised tracking object or null if no configuration has been given.\n */\nfunction init(config = {}) {\n\tif (tracking.initialised) {\n\t\treturn tracking;\n\t}\n\n\tconst hasDeclarativeConfig = Boolean(\n\t\tgetDeclarativeConfigElement()\n\t);\n\n\tif (hasDeclarativeConfig) {\n\t\tconfig = getDeclarativeConfig(config);\n\t}\n\n\t// If there's no config, there is no point initialising!\n\t// http://stackoverflow.com/a/32108184\n\tif (Object.keys(config).length === 0 && config.constructor === Object) {\n\t\treturn null;\n\t}\n\n\tset('version', version);\n\tset('source', source);\n\n\tset('page_sent', false);\n\n\tconst cookieDomain = config ? config.cookieDomain : '';\n\n\t// Set up the user from stored - may later be updated by config\n\tinitUser('', cookieDomain);\n\tupdateConfig(config);\n\n\t// Session\n\tinitSession(config.session);\n\n\t// Initialize the sending queue.\n\tinitSend();\n\n\tinitEvent();\n\tinitPage();\n\ttracking.initialised = true;\n\treturn tracking;\n}\n\n/**\n * Retrieves the <script type='application/json' data-o-tracking-config> element that is in the DOM, otherwise returns null.\n *\n * @private\n * @returns {HTMLElement|null} - Returns the <script> element if found otherwise returns null.\n */\nfunction getDeclarativeConfigElement() {\n\treturn document.querySelector('script[data-o-tracking-config]');\n}\n\n/**\n * Initialises additional data using the <script type='application/json' data-o-tracking-config> element in the DOM.\n *\n * @private\n * @param {object} options - A partially, or fully filled options object.  If\n *                           an option is missing, this method will attempt to\n *                           initialise it from the DOM.\n * @returns {object|boolean} - The options modified to include the options gathered from the DOM\n */\nfunction getDeclarativeConfig(options) {\n\tconst configEl = getDeclarativeConfigElement();\n\tlet declarativeConfigString;\n\tif (configEl) {\n\t\tdeclarativeConfigString = configEl.textContent || configEl.innerText || configEl.innerHTML;\n\t} else {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst declarativeOptions = JSON.parse(declarativeConfigString);\n\t\tObject.assign(options, declarativeOptions);\n\t} catch(e) {\n\t\tconst configError = new Error('Invalid JSON configuration syntax, check validity for o-tracking configuration: \"' + e.message + '\"');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: configError.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow configError;\n\t}\n\n\treturn options;\n}\n\nconst tracking = {\n\t/**\n\t * The initialised state of the object.\n\t *\n\t * @type {boolean}\n\t */\n\tinitialised: false,\n\tversion,\n\tupdateConfig,\n\tsource,\n\tdestroy,\n\ttoString,\n\tinit,\n\tclick,\n\tevent,\n\tpage,\n\tview,\n\tgetRootID: core.getRootID\n};\n\nexport default tracking;\n","import core from '../core.js';\nimport {\n\tis,\n\tbroadcast,\n\tmerge,\n\taddEvent} from '../utils.js';\n\n/**\n * Default properties for events.\n *\n * @type {object}\n * @returns {object} - Default configuration for events\n */\nconst defaultEventConfig = function () {\n\treturn {\n\t\tcategory: 'event',\n\t\taction: 'generic',\n\t\tcontext: {}\n\t};\n};\n\n/**\n * Track an event.\n *\n * @param {object} trackingEvent - The event, which could the following properties in its 'detail' key:\n * @param {object} [trackingEvent.detail] - Custom properties to add to the event.\n * @param {string} [trackingEvent.detail.category] - Category for this event e.g. page\n * @param {string} [trackingEvent.detail.action] - Action for this event e.g. view\n * @param {string} [trackingEvent.detail.component_id] - The ID for the component instance.\n * @param {object} [trackingEvent.detail.context] - Extra context to add to the event\n *\n * @param {Function} [callback] - Optional, Callback function. Called when request completed.\n * @returns {void}\n */\nfunction event(trackingEvent, callback) {\n\tif (is(trackingEvent.detail.category) || is(trackingEvent.detail.action)) {\n\t\tconst noCategoryActionVals = 'Missing category or action values';\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: noCategoryActionVals,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow noCategoryActionVals;\n\t}\n\n\tconst config = merge(defaultEventConfig(), {\n\t\tcategory: trackingEvent.detail.category,\n\t\taction: trackingEvent.detail.action,\n\t\tcontext: trackingEvent.detail\n\t});\n\n\tdelete config.context.category;\n\tdelete config.context.action;\n\n\tconst origamiElement = getOrigamiEventTarget(trackingEvent);\n\tif (origamiElement) {\n\t\tconfig.context.component_name = origamiElement.getAttribute('data-o-component');\n\t\tconfig.context.component_id = config.context.component_id || getComponentId(origamiElement);\n\t}\n\n\tcore.track(config, callback);\n}\n\n/**\n * Helper function that gets the target of an event if it's an Origami component\n *\n * @param  {Event} event - The event triggered.\n * @returns {HTMLElement|undefined} - Returns the HTML element if an Origami component, else undefined.\n */\nfunction getOrigamiEventTarget(event) {\n\t// IE backwards compatibility (get the actual target). If not IE, uses\n\t// `event.target`\n\tconst element = event.target || event.srcElement;\n\n\tif (element && element.getAttribute('data-o-component')) {\n\t\treturn element;\n\t}\n}\n\n/**\n * Helper function that generates a component id based on its xpath\n *\n * @param {HTMLElement} element - The HTML Element to gen an ID for.\n *\n * @returns {number} hash\n */\nfunction getComponentId(element) {\n\tconst path = _getElementPath(element);\n\n\tif (typeof path === 'undefined') {\n\t\treturn;\n\t}\n\n\t// Select the source element (first item in the ordered sequence `path`)\n\tconst srcElement = path[0];\n\n\t// Because, you could have two identical elements in the DOM as siblings,\n\t// we need to determine the 'sibling index': the order they're sitting within a DOM node.\n\t// Although in reality this is unlikely to always be the same, it's just a\n\t// best guess - unless child elements are always appended to an element rather than added as the first child.\n\tconst siblingIndex = (function getSiblingIndex(element) {\n\t\tconst srcParent = element.parentElement;\n\t\tif (srcParent) {\n\t\t\tfor (let i = 0; i < srcParent.childNodes.length; i++) {\n\t\t\t\tif (srcParent.childNodes[i] === srcElement) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}(srcElement));\n\n\t// Generate a normalised string (normalising browser quirks) from the sequence of elements\n\tconst normalisedStringPath = path.reduceRight(function(builder, el) {\n\t\tif (!el.nodeName) {\n\t\t\treturn builder + ' - ' + el.constructor.name + '\\n';\n\t\t}\n\n\t\tconst nodeName = el.nodeName.toLowerCase();\n\n\t\t// In some browsers, document is prepended with a '#'\n\t\tif (nodeName.indexOf('#') === 0) {\n\t\t\treturn builder + '<' + nodeName + '>';\n\t\t}\n\n\t\t// Replace this stuff with stuff that makes each node unique - without including styling detail (as this may change depending on animation state etc, position)\n\t\treturn builder + '<' + nodeName +' id=\"' + (el.id || '') + '\">';\n\t}, '');\n\n\n\t// Append a sibling index to the string and use some simple, off the shelf string hashing algorithm.\n\treturn _generateHash(normalisedStringPath + '_siblingIndex=' + siblingIndex);\n}\n\n/**\n * Gets the xpath for an element\n *\n * @param  {HTMLElement} element - The element to get a path for.\n *\n * @private\n *\n * @returns {Array} The xpath\n */\nfunction _getElementPath(element) {\n\tconst path = [];\n\n\twhile (element) {\n\t\tpath.push(element);\n\t\telement = element.parentElement;\n\t}\n\n\treturn path;\n}\n\n/**\n * JS Implementation of MurmurHash2\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n * Copyright (c) 2011 Gary Court\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @param {string} str  - The string to hash, ASCII only.\n *\n * @returns {number} 32-bit positive integer hash\n *\n * @private\n */\nfunction _generateHash(str) {\n\tlet l = str.length;\n\tlet h = 1 ^ l;\n\tlet i = 0;\n\tlet k;\n\n\twhile (l >= 4) {\n\t\tk = str.charCodeAt(i) & 0xff |\n\t\t\t(str.charCodeAt(++i) & 0xff) << 8 |\n\t\t\t(str.charCodeAt(++i) & 0xff) << 16 |\n\t\t\t(str.charCodeAt(++i) & 0xff) << 24;\n\n\t\tk = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\t\tk ^= k >>> 24;\n\t\tk = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\n\t\th = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n\n\t\tl -= 4;\n\t\t++i;\n\t}\n\n\tswitch (l) {\n\t\tcase 3:\n\t\t\th ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\th ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\th ^= str.charCodeAt(i) & 0xff;\n\t\t\th = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\th ^= h >>> 13;\n\th = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\th ^= h >>> 15;\n\n\treturn h >>> 0;\n}\n\nconst init = function init() {\n\taddEvent(window, 'oTracking.event', event);\n};\nevent.init = init;\n\nexport { event };\n","import core from '../core.js';\nimport {merge, triggerPage, addEvent, isDeepEqual} from '../utils.js';\nimport {set as setSetting, get as getSetting} from '../core/settings.js';\n\nsetSetting('page_has_already_been_viewed', false);\n\n/**\n * Default properties for page tracking requests.\n *\n * @returns {object} - The default properties for pages.\n */\nconst defaultPageConfig = function () {\n\treturn {\n\t\tcategory: 'page',\n\t\taction: 'view',\n\t\tcontext: {\n\t\t\turl: document.URL,\n\t\t\treferrer: document.referrer\n\t\t}\n\t};\n};\n\n/**\n * Make the page tracking request.\n *\n * @param {object} config - Configuration object. If omitted, will use the defaults.\n * @param {Function=} callback - Callback function. Called when request completed.\n * @returns {void}\n */\nfunction page(config, callback) {\n\tconfig = merge(defaultPageConfig(), {\n\t\tcontext: config\n\t});\n\n\t// Set a new root ID only if the page function has already been called once before.\n\t// This is because o-tracking assumes each page function call is for a different page being viewed\n\t// And o-tracking wants all other events on the page to share the same root_id so that Spoor can\n\t// relate those other events with the page view they were from.\n\t// If o-tracking events were fired before this `page` function was ever called, then the first\n\t// of those events would have created a `root_id` and we want the first page view event to reuse\n\t// that `root_id` so those earlier events can be related to the page view they were from.\n\tif (getSetting('page_has_already_been_viewed')) {\n\t\tcore.setRootID();\n\t}\n\tsetSetting('page_has_already_been_viewed', true);\n\n\t// Some applications which use o-tracking have a bug where they send thousands of page-view events\n\t// Instead of forwarding these errorneous events to Spoor, we ignore them.\n\t// GitHub Issue: https://github.com/Financial-Times/o-tracking/issues/296\n\tif (pageViewEventHasAlreadyBeenSentBefore(config)) {\n\t\tif (getSetting('config').test) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('A page event has already been sent for this page, refusing to send a duplicate page event.');\n\t\t}\n\t} else {\n\t\tcore.track(config, callback);\n\t\t// Alert internally that a new page has been tracked - for single page apps for example.\n\t\ttriggerPage();\n\t}\n}\n\nlet previousPageConfigWithoutContextIDs = {};\n\n/**\n * Detect whether the previously sent page-view event is the\n * same as the page-view event which is about to be sent.\n *\n * @param {object} config - The page configuration object\n * @returns {boolean} - Whether the event has been sent before\n */\nfunction pageViewEventHasAlreadyBeenSentBefore(config) {\n\tconst configWithoutContextIDs = JSON.parse(JSON.stringify(config));\n\tdelete configWithoutContextIDs.context.id;\n\tdelete configWithoutContextIDs.context.root_id;\n\n\tif (isDeepEqual(previousPageConfigWithoutContextIDs, configWithoutContextIDs)) {\n\t\treturn true;\n\t} else {\n\t\tpreviousPageConfigWithoutContextIDs = configWithoutContextIDs;\n\t\treturn false;\n\t}\n}\n\n/**\n * Listener for pages.\n *\n * @param {CustomEvent} e - The CustomEvent\n * @private\n * @returns {void}\n */\nfunction listener(e) {\n\tpage(e.detail);\n}\n\nconst init = function init() {\n\taddEvent(window, 'oTracking.page', listener);\n};\npage.init = init;\n\nexport { page };\n","import Stream from './stream.js';\nimport Count from './count.js';\n\nclass Comments {\n\tconstructor (rootEl, opts) {\n\t\tthis.options = Object.assign({}, {}, opts || Comments.getDataAttributes(rootEl));\n\t\tconst isCount = rootEl.getAttribute('data-o-comments-count') === 'true';\n\t\tif (!this.options.articleId) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `articleId`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\t\tif (!this.options.articleUrl) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `articleUrl`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\t\tif (!this.options.title) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `title`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\n\t\tif (isCount) {\n\t\t\tconst count = new Count(rootEl, this.options);\n\t\t\tcount.renderCount();\n\n\t\t\treturn count;\n\t\t} else {\n\t\t\tconst stream = new Stream(rootEl, this.options);\n\t\t\tstream.init();\n\n\t\t\treturn stream;\n\t\t}\n\t}\n\n\tstatic getCount (id) {\n\t\treturn Count.fetchCount(id);\n\t}\n\n\t/**\n\t * Get the data attributes from the element. If the component is being set up\n\t * declaratively, this method is used to extract the data attributes from the DOM.\n\t *\n\t * @param {HTMLElement} rootEl - The component element in the DOM\n\t * @returns {object} - Data attributes as an object\n\t */\n\tstatic getDataAttributes (rootEl) {\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\treturn {};\n\t\t}\n\t\treturn Object.keys(rootEl.dataset).reduce((options, key) => {\n\n\t\t\t// Ignore data-o-component\n\t\t\tif (key === 'oComponent') {\n\t\t\t\treturn options;\n\t\t\t}\n\n\t\t\t// Build a concise key and get the option value\n\t\t\tconst shortKey = key.replace(/^oComments(\\w)(\\w+)$/, (m, m1, m2) => m1.toLowerCase() + m2);\n\t\t\tconst value = rootEl.dataset[key];\n\n\t\t\t// Try parsing the value as JSON, otherwise just set it as a string\n\t\t\ttry {\n\t\t\t\toptions[shortKey] = JSON.parse(value.replace(/\\'/g, '\"'));\n\t\t\t} catch (error) {\n\t\t\t\toptions[shortKey] = value;\n\t\t\t}\n\n\t\t\treturn options;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Initialise the component.\n\t *\n\t * @param {(HTMLElement | string)} rootEl - The root element to intialise the component in, or a CSS selector for the root element\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t * @returns {(Comments|Array<Comments>)} - Comments instance(s)\n\t */\n\tstatic init (rootEl, opts) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t}\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\t\tif (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-comments]')) {\n\t\t\treturn new Comments(rootEl, opts);\n\t\t}\n\t\treturn Array.from(rootEl.querySelectorAll('[data-o-component=\"o-comments\"]'), rootEl => new Comments(rootEl, opts));\n\t}\n}\n\nexport default Comments;\n","import Delegate from 'ftdomdelegate';\nimport viewport from '@financial-times/o-viewport';\nimport utils from './utils.js';\nconst overlays = {};\n\nconst checkOptions = function (opts) {\n\tif (opts.trigger && !(opts.trigger instanceof HTMLElement)) {\n\t\topts.trigger = document.querySelector(opts.trigger);\n\t}\n\n\tif (opts.heading && (!opts.heading.title || !opts.heading.title.trim())) {\n\t\tthrow new Error(\n\t\t\t'\"o-overlay error\": To have a heading, a non-empty title needs to be set'\n\t\t);\n\t}\n\n\t// Overlays should be modal and layers by default\n\tif (typeof opts.modal === 'undefined') {\n\t\topts.modal = true;\n\t}\n\tif (typeof opts.layer === 'undefined') {\n\t\topts.layer = true;\n\t}\n\n\tif (opts.compact && opts.heading && opts.heading.shaded) {\n\t\tthrow new Error(\n\t\t\t'\"o-overlay error\": Compact overlays can\\'t have a shaded header'\n\t\t);\n\t}\n\n\treturn opts;\n};\n\nconst getOptionsFromTrigger = function (trigger) {\n\tlet opts = {};\n\t// Get config from data attributes set in the trigger if they haven't been passed via JS\n\tif (trigger instanceof HTMLElement) {\n\t\tArray.prototype.forEach.call(trigger.attributes, function (attr) {\n\t\t\tif (attr.name.indexOf('data-o-overlay') === 0) {\n\t\t\t\t// Remove the unnecessary part of the string the first time this is run for each attribute\n\t\t\t\tconst key = attr.name.replace('data-o-overlay-', '');\n\t\t\t\topts = utils.optionsFromKey(key, attr.value, opts);\n\t\t\t}\n\t\t});\n\t\topts.trigger = trigger;\n\t}\n\treturn opts;\n};\n\nconst triggerClickHandler = function (id, ev) {\n\tev.stopPropagation();\n\tconst overlay = overlays[id];\n\tif (overlay) {\n\t\tif (overlay.visible === true) {\n\t\t\toverlay.close();\n\t\t} else {\n\t\t\toverlay.open();\n\t\t}\n\t}\n};\n\nconst isVisible = function (element) {\n\treturn Boolean(element.offsetHeight);\n};\n\nconst focusTrap = function (event) {\n\tconst tabKeyCode = 9;\n\tconst overlayFocusableElements = [].slice\n\t\t.call(\n\t\t\tthis.wrapper.querySelectorAll(\n\t\t\t\t'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\t\t\t)\n\t\t)\n\t\t.filter(element => {\n\t\t\tconst elementVisible = isVisible(element);\n\t\t\t// Inputs for radio and checkboxes are visually hidden,\n\t\t\t// so check the label visibility of inputs too when determining\n\t\t\t// whether to trap focus.\n\t\t\tconst elementLabelVisible =\n\t\t\t\telement.labels && [].slice.call(element.labels).some(l => isVisible(l));\n\t\t\t// When tabbing, the checked radio input of a group is focused, not each radio input.\n\t\t\tconst elementIsUncheckedRadio =\n\t\t\t\telement.type === 'radio' && element.checked !== true;\n\t\t\treturn (\n\t\t\t\t!element.disabled &&\n\t\t\t\t!elementIsUncheckedRadio &&\n\t\t\t\t(elementVisible || elementLabelVisible)\n\t\t\t);\n\t\t});\n\n\tif (overlayFocusableElements.length && event.keyCode === tabKeyCode) {\n\t\tconst lastElement =\n\t\t\toverlayFocusableElements[overlayFocusableElements.length - 1];\n\t\t// Loop focus back to the first element if focus has reached the focusable element\n\t\tif (event.target === lastElement) {\n\t\t\toverlayFocusableElements[0].focus();\n\t\t\tevent.preventDefault();\n\t\t} else if (event.shiftKey && event.target === overlayFocusableElements[0]) {\n\t\t\t// loop to the bottom when shift+tabbing.\n\t\t\tlastElement.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n/**\n * Represents an Overlay.\n */\nclass Overlay {\n\t/**\n\t * Construct an overlay.\n\t *\n\t * @class\n\t * @param {HTMLElement} id - String. A unique identifier for the overlay within the page. (Required)\n\t * @param {object} opts - An options object for configuring the Overlay. This object MUST have either `src` or `html` set. (Required)\n\t * @param {string} opts.heading.title - Your overlay's title\n\t * @param {boolean} opts.heading.visuallyhidetitle - If you want to provide a different title style, this option will prevent the title span from being added to the overlay. (In this case the title is only used for aria labelling) Default: false.\n\t * @param {boolean} opts.heading.shaded - Whether to shade the background of the header. Default: to false\n\t * @param {boolean} opts.modal - Whether the overlay should have modal behaviour or not. Setting this as true will add a translucent shadow between the page and the overlay\n\t * @param {boolean} opts.compact - If true, the .o-overlay--compact class will be added to the overlay that reduces heading font-size and paddings in the content.\n\t * @param {string} opts.src - Either a url from which HTML to populate the overlay can be loaded, or a querySelector string identifying an element from which the textContent should be extracted.\n\t * @param {string} opts.html - String or HTMLElement. Raw HTML (cannot be set declaratively)\n\t * @param {string} opts.trigger - querySelector expression or HTMLElement. When there's a trigger set, a click event handler will be added to it that will open or close the overlay accordingly. (cannot be set declaratively)\n\t * @param {string} opts.zindex - Value of the CSS z-index property of the overlay. Default set via CSS: '10'\n\t * @param {boolean} opts.preventclosing - Prevents closure of overlay via standard x button or escape key. For use when you are directing the user to somewhere else. Only valid with modal set to true.\n\t * @param {boolean} opts.customclose - If you do not use the heading, but want to provide a close button in your html / src (with a class of o-overlay__close), setting customclose to true will attach o-overlay's close handler function to that button.\n\t * @param {string} opts.parentnode - Should be a query selector for a DOM element. If set, the overlay will be appended as a child of this rather than the document body or target. If multiple nodes are matched, it will use the first. If nothing matches this selector, the body will be used.\n\t * @param {boolean} opts.nested - If set to true, the resize, escape, and layer listeners will not be set up. This boolean should be used in conjunction with the parentnode setting to allow an overlay to be positioned within a DOM element rather than overlaid on top of everything. Default: false.\n\t * @param {boolean} opts.nofocus - If set to true, the tabindex will not be set on the wrapper element. Useful in conjunction with the nested and parentnode options. Default: false.\n\t * @param {boolean} opts.fullscreen - If set to true, the overlay will display full screen. This overlay disables scroll on the underlying document and is dismissible with the back button.\n\t * @throws {Error} Will throw an error if the `id` parameter is not unique.\n\t */\n\tconstructor(id, opts) {\n\t\tif (overlays[id]) {\n\t\t\tthrow new Error(\n\t\t\t\t`o-overlay with id \"${id}\" already exists. Creating an overlay twice with the same id may result in unexpected behaviour.`\n\t\t\t);\n\t\t}\n\n\t\tviewport.listenTo('resize');\n\t\tthis.visible = false;\n\t\tthis.id = id;\n\n\t\ttry {\n\t\t\tthis.opts = checkOptions(opts);\n\t\t} catch (e) {\n\t\t\tthis.broadcast('log', 'oErrors', {\n\t\t\t\terror: e,\n\t\t\t});\n\t\t\tthrow e;\n\t\t}\n\n\t\tif (!this.opts) {\n\t\t\tconst noOptError = new Error(\n\t\t\t\t'\"o-overlay error\": Required options have not been set'\n\t\t\t);\n\t\t\tthis.broadcast('log', 'oErrors', {\n\t\t\t\terror: noOptError,\n\t\t\t});\n\t\t\tthrow noOptError;\n\t\t}\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.addEventListener(\n\t\t\t\t'click',\n\t\t\t\ttriggerClickHandler.bind(this.opts.trigger, id),\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis.context = document.body;\n\t\t} else {\n\t\t\tif (document.querySelector(this.opts.parentnode)) {\n\t\t\t\tthis.context = document.querySelector(this.opts.parentnode);\n\t\t\t} else {\n\t\t\t\tthis.context = document.body;\n\t\t\t}\n\t\t}\n\n\t\tthis.delegates = {\n\t\t\tdoc: new Delegate(),\n\t\t\twrap: new Delegate(),\n\t\t\tcontext: new Delegate(),\n\t\t};\n\n\t\t// Add this overlay to the overlays hashmap\n\t\toverlays[id] = this;\n\t}\n\n\topen() {\n\t\t// Prevent page scroll for open modals or fullscreen overlays.\n\t\tif (this.opts.modal || this.opts.fullscreen) {\n\t\t\tthis.originalOverflow = document.documentElement.style.overflow;\n\t\t\tdocument.documentElement.style.overflow = 'hidden';\n\t\t}\n\n\t\t// A full screen overlay can look like a new page so add to history.\n\t\t// The browser back button can then be used to close a full-screen overlay.\n\t\tif (window.history.pushState && this.opts.fullscreen) {\n\t\t\t// Push overlay state to history.\n\t\t\twindow.history.pushState(\n\t\t\t\t{[`o-overlay-${this.id}`]: 'fullscreen'},\n\t\t\t\twindow.location.href\n\t\t\t);\n\t\t\t// When history changes check for the overlay and close it.\n\t\t\tthis.popstateHandler = function () {\n\t\t\t\tif (\n\t\t\t\t\twindow.history.state &&\n\t\t\t\t\twindow.history.state[`o-overlay-${this.id}`]\n\t\t\t\t) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t}.bind(this);\n\t\t\twindow.addEventListener('popstate', this.popstateHandler);\n\t\t}\n\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.setAttribute('aria-pressed', 'true');\n\t\t}\n\n\t\tif (!this.content) {\n\t\t\tconst overlay = this;\n\t\t\tthis.loadContent(function (html) {\n\t\t\t\toverlay.opts.html = html;\n\t\t\t\tif (!overlay.opts.html) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'\"o-overlay error\": Content for the overlay needs to be set via the \"html\" or the \"src\" option.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\toverlay.render();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tloadContent(callback) {\n\t\tif (!this.opts.html && this.opts.src) {\n\t\t\tif (/^(https?\\:\\/)?\\//.test(this.opts.src)) {\n\t\t\t\tutils.copyContentFromUrl(this.opts.src, function (html) {\n\t\t\t\t\tcallback(html);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tutils.copyContentFromElement(\n\t\t\t\t\tdocument.querySelector(this.opts.src),\n\t\t\t\t\tfunction (html) {\n\t\t\t\t\t\tcallback(html);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tcallback(this.opts.html);\n\t\t}\n\t}\n\n\trender() {\n\t\tconst wrapperEl = document.createElement('div');\n\t\twrapperEl.className = 'o-overlay';\n\t\twrapperEl.classList.add('o-overlay--' + this.id.replace(' ', '-'));\n\n\t\t// Add custom classes to the newly created overlay wrapper.\n\t\tif (this.opts.class) {\n\t\t\ttry {\n\t\t\t\twrapperEl.classList.add(...this.opts.class.split(' '));\n\t\t\t} catch (error) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`Could not add the classes: ${this.opts.class}`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.opts.fullscreen) {\n\t\t\twrapperEl.classList.add('o-overlay--full-screen');\n\t\t}\n\n\t\twrapperEl.setAttribute('role', 'dialog');\n\t\tif (this.opts.zindex) {\n\t\t\twrapperEl.style.zIndex = this.opts.zindex;\n\t\t}\n\t\tthis.wrapper = wrapperEl;\n\n\t\tif (this.opts.heading) {\n\t\t\tconst heading = document.createElement('header');\n\t\t\tconst headingId = this.opts.heading.title\n\t\t\t\t.toLowerCase()\n\t\t\t\t// replace non-ascii alphanums with hyphens\n\t\t\t\t.replace(/[^a-z0-9-]/g, '-')\n\t\t\t\t// replace repeated hyphens with a single hyphen\n\t\t\t\t.replace(/[\\s-]+/g, '-');\n\t\t\theading.classList.add('o-overlay__heading');\n\t\t\theading.setAttribute('id', headingId);\n\t\t\twrapperEl.setAttribute('aria-labelledby', headingId);\n\n\t\t\tif (this.opts.heading.shaded) {\n\t\t\t\theading.classList.add('o-overlay__heading--shaded');\n\t\t\t}\n\n\t\t\tif (!this.opts.preventclosing) {\n\t\t\t\tconst button = document.createElement('button');\n\t\t\t\tbutton.className = 'o-overlay__close';\n\t\t\t\tbutton.setAttribute('aria-label', 'Close');\n\t\t\t\tbutton.setAttribute('title', 'Close');\n\n\t\t\t\tif (!this.opts.nofocus) {\n\t\t\t\t\tbutton.setAttribute('tabindex', '0');\n\t\t\t\t}\n\t\t\t\theading.appendChild(button);\n\t\t\t}\n\n\t\t\tconst title = document.createElement('span');\n\t\t\ttitle.setAttribute('role', 'heading');\n\t\t\ttitle.className = 'o-overlay__title';\n\n\t\t\tif (!this.opts.heading.visuallyhidetitle) {\n\t\t\t\ttitle.innerHTML = this.opts.heading.title;\n\t\t\t}\n\n\t\t\theading.appendChild(title);\n\t\t\twrapperEl.appendChild(heading);\n\t\t}\n\n\t\tif (this.opts.tooltip) {\n\t\t\tconst button = document.createElement('a');\n\t\t\tbutton.className = 'o-overlay__close';\n\t\t\tbutton.setAttribute('role', 'button');\n\t\t\tbutton.setAttribute('href', '#void');\n\t\t\tbutton.setAttribute('aria-label', 'Close');\n\t\t\tbutton.setAttribute('title', 'Close');\n\t\t\tif (!this.opts.nofocus) {\n\t\t\t\tbutton.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\twrapperEl.appendChild(button);\n\t\t\twrapperEl.classList.add('o-overlay--compact');\n\t\t}\n\n\t\tconst content = document.createElement('section');\n\t\tcontent.className = 'o-overlay__content';\n\t\twrapperEl.appendChild(content);\n\n\t\tthis.content = content;\n\n\t\tif (this.opts.compact) {\n\t\t\twrapperEl.classList.add('o-overlay--compact');\n\t\t}\n\n\t\tthis.show();\n\t}\n\n\t_trapFocus() {\n\t\t// Trap the focus inside the overlay so keyboard navigation doesn't escape the overlay\n\t\tdocument.addEventListener('keydown', focusTrap.bind(this));\n\t}\n\n\t/**\n\t * Show the overlay\n\t *\n\t * @fires oOverlay#ready\n\t */\n\tshow() {\n\t\tif (this.opts.modal) {\n\t\t\tthis.wrapper.classList.add('o-overlay--modal');\n\t\t\tconst shadow = document.createElement('div');\n\t\t\tshadow.className = 'o-overlay-shadow';\n\t\t\tthis.shadow = shadow;\n\n\t\t\tif (this.opts.zindex) {\n\t\t\t\tshadow.style.zIndex = this.opts.zindex - 1;\n\t\t\t}\n\n\t\t\tdocument.body.appendChild(shadow);\n\t\t}\n\n\t\tthis.delegates.doc.root(document.body);\n\t\tthis.delegates.wrap.root(this.wrapper);\n\t\tthis.delegates.context.root(this.context);\n\n\t\tthis.closeHandler = this.close.bind(this);\n\n\t\t// If the overlay is nested within a DOM element don't attach the viewport resize listeners.\n\t\tif (!this.opts.nested) {\n\t\t\tthis.resizeListenerHandler = this.resizeListener.bind(this);\n\t\t\tthis.delegates.doc.on(\n\t\t\t\t'oViewport.resize',\n\t\t\t\t'body',\n\t\t\t\tthis.resizeListenerHandler\n\t\t\t);\n\n\t\t\tthis.closeOnEscapePressHandler = this.closeOnEscapePress.bind(this);\n\t\t\tthis.delegates.doc.on('keyup', this.closeOnEscapePressHandler);\n\t\t}\n\n\t\tif (this.opts.layer) {\n\t\t\tthis.closeOnNewLayerHandler = this.closeOnNewLayer.bind(this);\n\t\t\tthis.delegates.context.on('oOverlay.layerOpen', this.closeOnNewLayerHandler);\n\n\t\t\tthis.broadcast('layerOpen');\n\t\t}\n\n\t\tif (this.opts.heading || this.opts.tooltip || this.opts.customclose) {\n\t\t\tthis.delegates.wrap.on('click', '.o-overlay__close', this.closeHandler);\n\t\t\tthis.delegates.wrap.on(\n\t\t\t\t'touchend',\n\t\t\t\t'.o-overlay__close',\n\t\t\t\tthis.closeHandler\n\t\t\t);\n\t\t}\n\n\t\tthis.closeOnExternalClickHandler = this.closeOnExternalClick.bind(this);\n\t\tthis.delegates.doc.on('click', 'body', this.closeOnExternalClickHandler);\n\t\tthis.delegates.doc.on('touchend', 'body', this.closeOnExternalClickHandler);\n\n\t\tthis.context.appendChild(this.wrapper);\n\n\t\t// Give the overlay focus\n\t\tif (!this.opts.nofocus) {\n\t\t\tthis.wrapper.setAttribute('tabindex', '0');\n\t\t\tthis.wrapper.style.outline = 0;\n\t\t}\n\n\t\t// Renders content after overlay has been added so css is applied before that\n\t\t// Thay way if an element has autofocus, the window won't scroll to the bottom\n\t\t// in Safari as the overlay is already in position\n\t\twindow.requestAnimationFrame(\n\t\t\tfunction () {\n\t\t\t\tif (!this.content.innerHTML) {\n\t\t\t\t\tif (typeof this.opts.html === 'string') {\n\t\t\t\t\t\tthis.content.innerHTML = this.opts.html;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.content.appendChild(this.opts.html);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.width = this.getWidth();\n\t\t\t\tthis.height = this.getHeight();\n\n\t\t\t\t// If the overlay is nested within a DOM element don't resize according to the viewport.\n\t\t\t\tif (!this.opts.nested) {\n\t\t\t\t\tthis.realign();\n\t\t\t\t}\n\t\t\t\tthis.visible = true;\n\t\t\t\tthis.wrapper.focus();\n\t\t\t\t/**\n\t\t\t\t * Ready event\n\t\t\t\t *\n\t\t\t\t * @event oOverlay#ready\n\t\t\t\t * @type {object}\n\t\t\t\t * @property {Overlay} instance - the firing instance\n\t\t\t\t */\n\t\t\t\tthis.broadcast('ready', 'oOverlay', {\n\t\t\t\t\tinstance: this\n\t\t\t\t});\n\n\t\t\t\t// Add o-tracking integration\n\t\t\t\tthis.broadcast('event', 'oTracking', {\n\t\t\t\t\tcategory: 'overlay',\n\t\t\t\t\taction: 'show',\n\t\t\t\t\toverlay_id: this.id,\n\t\t\t\t});\n\n\t\t\t\tthis._trapFocus();\n\t\t\t}.bind(this)\n\t\t);\n\t}\n\n\tclose() {\n\t\tthis.delegates.doc.destroy();\n\t\tthis.delegates.wrap.destroy();\n\t\tthis.delegates.context.destroy();\n\n\t\t// Restore document scroll when modals or fullscreen overlays are closed.\n\t\tif (this.opts.modal || this.opts.fullscreen) {\n\t\t\tdocument.documentElement.style.overflow = this.originalOverflow;\n\t\t}\n\n\t\t// Remove fullscreen popstate handler and re-enable document scroll.\n\t\tif (this.opts.fullscreen) {\n\t\t\twindow.removeEventListener('popstate', this.popstateHandler);\n\t\t}\n\t\t// Remove state from history if fullscreen state is still in history.\n\t\t// E.g.The close button was clicked directly rather than the browser back button.\n\t\tif (\n\t\t\twindow.history.pushState &&\n\t\t\twindow.history.state &&\n\t\t\twindow.history.state[`o-overlay-${this.id}`] === 'fullscreen'\n\t\t) {\n\t\t\twindow.history.back();\n\t\t}\n\n\t\tviewport.stopListeningTo('resize');\n\n\t\tthis.broadcast('destroy');\n\t\tthis.broadcast('event', 'oTracking', {\n\t\t\tcategory: 'overlay',\n\t\t\taction: 'close',\n\t\t\toverlay_id: this.id,\n\t\t});\n\n\t\tthis.context.removeChild(this.wrapper);\n\t\tif (this.opts.modal) {\n\t\t\tthis.shadow.parentNode.removeChild(this.shadow);\n\t\t}\n\n\t\t// Put focus back on the triggering element\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.focus();\n\t\t\tthis.opts.trigger.setAttribute('aria-pressed', 'false');\n\t\t}\n\t\tdocument.removeEventListener('keydown', focusTrap);\n\n\t\tthis.visible = false;\n\n\t\tif (this.opts.layer) {\n\t\t\tthis.broadcast('layerClose');\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tcloseOnExternalClick(ev) {\n\t\tif (\n\t\t\t!this.wrapper.contains(ev.target) &&\n\t\t\t!this.opts.modal &&\n\t\t\tthis.opts.trigger &&\n\t\t\t!this.opts.trigger.contains(ev.target)\n\t\t) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tcloseOnEscapePress(ev) {\n\t\tif (!this.opts.preventclosing && ev.keyCode === 27) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tcloseOnNewLayer(ev) {\n\t\tif (!ev.detail || ev.detail.el !== this) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresizeListener(ev) {\n\t\tif (!this.wrapper.contains(ev.target)) {\n\t\t\tthis.respondToWindow();\n\t\t}\n\t}\n\n\tbroadcast(eventType, namespace, detail) {\n\t\tnamespace = namespace || 'oOverlay';\n\n\t\tconst isLayerEvent = eventType === 'layerOpen' || eventType === 'layerClose';\n\t\tconst target = isLayerEvent ? this.context : this.wrapper || document.body;\n\n\t\tdetail = detail || {};\n\n\t\tif (namespace !== 'oTracking') {\n\t\t\tdetail.el = this;\n\t\t}\n\n\t\ttarget.dispatchEvent(\n\t\t\tnew CustomEvent(namespace + '.' + eventType, {\n\t\t\t\tdetail: detail,\n\t\t\t\tbubbles: true,\n\t\t\t})\n\t\t);\n\t}\n\n\trealign(dimension, size) {\n\t\t// Realign both height and width according to the window by default.\n\t\tif (!dimension && !size) {\n\t\t\tthis._align('width', viewport.getSize().width);\n\t\t\tthis._align('height', viewport.getSize().height);\n\t\t\treturn;\n\t\t}\n\n\t\t// For a given dimension realign according to the viewport by default.\n\t\tif (dimension && !size) {\n\t\t\tthis._align(dimension, viewport.getSize()['dimension']);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._align(dimension, size);\n\t}\n\n\t_align(dimension, size) {\n\t\tif (dimension !== 'width' && dimension !== 'height') {\n\t\t\tthrow new Error(\n\t\t\t\t`Can not realign the overlay for the dimension \"${dimension}\". \"height\" or \"width\" expected.`\n\t\t\t);\n\t\t}\n\n\t\tif (isNaN(size)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Can not realign the overlay for the size ${size}. A number is expected.`\n\t\t\t);\n\t\t}\n\n\t\tconst edge = dimension === 'width' ? 'left' : 'top';\n\n\t\t// Update overlay size for realignment calculation.\n\t\t// We may be realigning because the content within the overlay has changed.\n\t\tthis.width = this.getWidth();\n\t\tthis.height = this.getHeight();\n\n\t\t// E.g. viewport dimension <= overlay dimension\n\t\tif (size <= this[dimension]) {\n\t\t\tthis.wrapper.classList.add('o-overlay--full-' + dimension);\n\t\t\tthis.wrapper.style[edge] = '0';\n\t\t\tthis.wrapper.style['margin' + utils.capitalise(edge)] = 0;\n\t\t\tif (dimension === 'height') {\n\t\t\t\t// Set the exact height that the content of the overlay will have which is the total\n\t\t\t\t// height of the overlay minus the heading if there is one. If height = 100%, the\n\t\t\t\t// heading is part of that 100%, so some content is truncated.\n\t\t\t\tconst borderHeight =\n\t\t\t\t\tthis.wrapper.offsetHeight - this.wrapper.clientHeight;\n\t\t\t\tthis.content.style.height =\n\t\t\t\t\tthis.wrapper.offsetHeight -\n\t\t\t\t\t(this.opts.heading\n\t\t\t\t\t\t? this.wrapper.querySelector('header').offsetHeight\n\t\t\t\t\t\t: 0) -\n\t\t\t\t\tborderHeight +\n\t\t\t\t\t'px';\n\t\t\t}\n\t\t} else {\n\t\t\tif (dimension === 'height') {\n\t\t\t\t// Remove the property and let the overlay extend to its content\n\t\t\t\tthis.content.style.height = null;\n\t\t\t}\n\t\t\tthis.wrapper.classList.remove('o-overlay--full-' + dimension);\n\t\t\tthis.wrapper.style['margin' + utils.capitalise(edge)] =\n\t\t\t\t-(this.wrapper['offset' + utils.capitalise(dimension)] / 2) + 'px';\n\n\t\t\t// Set alignment in JavaScript (not via CSS) after all other styles have been applied\n\t\t\t// so that browsers compute it properly. If it's applied earlier, when the negative\n\t\t\t// margin is calculated, the overlay might not fit, so it shrinks and the negative\n\t\t\t// margin would be incorrect\n\t\t\tthis.wrapper.style[edge] = '50%';\n\t\t}\n\t}\n\n\trespondToWindow() {\n\t\tthis.realign();\n\t}\n\n\tfills(dimension) {\n\t\treturn this.wrapper.classList.contains('o-overlay--full-' + dimension);\n\t}\n\n\tdestroy() {\n\t\tif (this.visible === true) {\n\t\t\tthis.close();\n\t\t}\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.removeEventListener('click', triggerClickHandler);\n\t\t}\n\t\tdelete overlays[this.id];\n\t}\n\n\tgetHeight() {\n\t\tconst borderHeight = this.wrapper.offsetHeight - this.wrapper.clientHeight;\n\t\treturn (\n\t\t\tthis.content.scrollHeight +\n\t\t\t(this.opts.heading\n\t\t\t\t? this.wrapper.querySelector('header').offsetHeight\n\t\t\t\t: 0) +\n\t\t\tborderHeight\n\t\t);\n\t}\n\n\tgetWidth() {\n\t\tconst borderWidth = this.wrapper.offsetWidth - this.wrapper.clientWidth;\n\t\treturn this.content.scrollWidth + borderWidth;\n\t}\n\n\tstatic init(el) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t}\n\t\tif (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\tconst triggers = el.querySelectorAll('.o-overlay-trigger');\n\t\tconst overlaysArray = [];\n\t\tfor (let t = 0; t < triggers.length; t++) {\n\t\t\t// There can only be one overlay per trigger when set declaratively, so the first trigger found for a given overlay will be the one used to create the overlay\n\t\t\tif (!overlays[triggers[t].getAttribute('data-o-overlay-id')]) {\n\t\t\t\toverlaysArray.push(\n\t\t\t\t\tnew Overlay(\n\t\t\t\t\t\ttriggers[t].getAttribute('data-o-overlay-id'),\n\t\t\t\t\t\tgetOptionsFromTrigger(triggers[t])\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn overlaysArray;\n\t}\n\n\tstatic destroy() {\n\t\tconst overlayIds = Object.keys(overlays);\n\t\toverlayIds.forEach(function (id) {\n\t\t\toverlays[id].destroy();\n\t\t});\n\t}\n\n\tstatic getOverlays() {\n\t\treturn overlays;\n\t}\n}\n\nexport default Overlay;\n","class Count {\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {HTMLElement} [countEl] - The component element in the DOM\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t */\n\tconstructor (countEl, opts = {}) {\n\t\tthis.countEl = countEl;\n\t\tthis.articleId = opts.articleId;\n\t\tthis.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n\t}\n\n\t/**\n\t * Render a comment count instance.\n\t *\n\t * @access private\n\t * @returns {Promise<void>} A promise that resolves when the count has been updated\n\t */\n\trenderCount () {\n\t\tif (this.countEl && !(this.countEl instanceof HTMLElement)) {\n\t\t\tthis.countEl = document.querySelector(this.countEl);\n\t\t}\n\n\t\tif (!this.countEl) {\n\t\t\tthrow new Error('Element must be a HTMLElement');\n\t\t}\n\n\t\treturn Count.fetchCount(this.articleId, this.useStagingEnvironment)\n\t\t\t.then((count) => {\n\t\t\t\tthis.countEl.textContent = count;\n\n\t\t\t\tconst countLabel = Count.getCountLabel(count);\n\t\t\t\tthis.countEl.setAttribute('aria-label', countLabel);\n\t\t\t});\n\t}\n\n\t/**\n\t * Get the aria-label for the count element.\n\t *\n\t * @param {number} count - The comment count\n\t * @returns {string} The string that should be used as the aria-label\n\t */\n\tstatic getCountLabel (count) {\n\t\tif (count === 1) {\n\t\t\treturn 'There is 1 comment, click to go to the comment section.';\n\t\t} else {\n\t\t\treturn `There are ${count} comments, click to go to the comment section.`;\n\t\t}\n\t}\n\n\tstatic fetchCount (id, useStaging) {\n\t\tconst url = `https://comments-api.ft.com/story/count/${id}` + (useStaging ? '?staging=1' : '');\n\n\t\treturn fetch(url)\n\t\t\t.then(res => res.json())\n\t\t\t.then(json => json.commentCount)\n\t\t\t.catch(error => {\n\t\t\t\tthrow new Error(`Error with fetching comment count: ${error.message}`);\n\t\t\t});\n\t}\n}\n\nexport default Count;\n","import Toggle from '@financial-times/o-toggle';\nimport layout from './layout.js';\n\n\nconst COLLAPSIBLE_BREAKPOINTS = ['default', 'XS', 'S'];\n\nclass Footer {\n\n\tconstructor (footerEl) {\n\t\tif (!footerEl) {\n\t\t\tfooterEl = document.querySelector('[data-o-component=\"o-footer\"]');\n\t\t} else if (typeof footerEl === 'string') {\n\t\t\tfooterEl = document.querySelector(footerEl);\n\t\t}\n\n\t\tthis.footerEl = footerEl;\n\n\t\tlayout(breakpoint => {\n\t\t\tconst shouldCollapse = Footer.shouldCollapse(breakpoint);\n\n\t\t\tif (shouldCollapse && !this._toggles) {\n\t\t\t\treturn this.setup();\n\t\t\t}\n\n\t\t\tif (!shouldCollapse && this._toggles) {\n\t\t\t\treturn this.destroy();\n\t\t\t}\n\t\t});\n\n\t\tthis.footerEl.removeAttribute('data-o-footer--no-js');\n\t\tthis.footerEl.setAttribute('data-o-footer--js', '');\n\t}\n\n\tsetup () {\n\t\tthis._toggles = [];\n\n\t\tconst toggleEls = this.footerEl.querySelectorAll('[aria-controls]');\n\n\t\tArray.prototype.forEach.call(toggleEls, toggleEl => {\n\t\t\tconst target = document.getElementById(toggleEl.getAttribute('aria-controls'));\n\t\t\ttoggleEl.setAttribute('role', 'button');\n\t\t\ttoggleEl.setAttribute('tabindex', '0');\n\t\t\tthis._toggles.push(new Toggle(toggleEl, { target }));\n\t\t});\n\t}\n\n\tdestroy () {\n\t\tthis._toggles.forEach(toggle => toggle.destroy());\n\t\tthis._toggles = null;\n\t}\n\n\tstatic get collapsibleBreakpoints(){\n\t\treturn COLLAPSIBLE_BREAKPOINTS;\n\t}\n\n\tstatic shouldCollapse(breakpoint) {\n\t\treturn COLLAPSIBLE_BREAKPOINTS.indexOf(breakpoint) !== -1;\n\t}\n\n\tstatic init (rootEl) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (typeof rootEl === 'string') {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tconst footerEl = rootEl.querySelector('[data-o-component=\"o-footer\"]');\n\n\t\tif (footerEl) {\n\t\t\treturn new Footer(footerEl);\n\t\t}\n\t}\n}\n\nexport default Footer;\n","/**\n * @file\n * Bylines component\n */\n\nimport React, { Fragment, useRef, useEffect, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ODate from '@financial-times/o-date';\nimport { bylinesPropType } from '../shared/proptypes';\nimport './styles.scss';\n\nconst NamesElement = ({ namesList }) => {\n  return namesList.reduce((a, name, i) => {\n    /* eslint-disable no-nested-ternary */\n    const separator = i === 0 ? '' : i === namesList.length - 1 ? ' and ' : ', ';\n    const author = name.url ? (\n      <Fragment key={`author-${name.name}`}>\n        <a href={name.url} className=\"o-editorial-typography-author\">\n          {name.name}\n        </a>\n        {name.location && ` in ${name.location}`}\n      </Fragment>\n    ) : (\n      <Fragment key={`author-${name.name}`}>\n        <span>{name.name}</span>\n        {name.location && ` in ${name.location}`}\n      </Fragment>\n    );\n    return a.concat(separator, author);\n  }, []);\n};\n\nconst DateElement = forwardRef(({ date }, ref) => {\n  const format = new Intl.DateTimeFormat('en', {\n    month: 'long',\n    day: 'numeric',\n    year: 'numeric',\n  });\n  const [month, , day, , year] = format.formatToParts(new Date(date));\n  const dateFormatted = `${month.value} ${day.value} ${year.value}`;\n  return (\n    <Fragment>\n      {' '}\n      <time\n        ref={ref}\n        data-o-component=\"o-date\"\n        className=\"o-date o-editorial-typography-byline-timestamp\"\n        dateTime={date}\n        suppressHydrationWarning\n      >\n        {dateFormatted}\n      </time>\n    </Fragment>\n  );\n});\n\nconst Bylines = ({ prefix, names, date, dateFirst }) => {\n  const dateElRef = useRef();\n  const oDateRef = useRef();\n\n  useEffect(() => {\n    if (oDateRef.current || !dateElRef.current) return;\n\n    (async () => {\n      try {\n        oDateRef.current = new ODate(dateElRef.current);\n      } catch (e) {\n        console.error(e); // eslint disable-line no-console\n      }\n    })();\n  });\n\n  if (!names && !date) return null;\n\n  const namesList = Array.isArray(names) ? names : [{ name: names }];\n\n  return (\n    <div className=\"bylines\">\n      {prefix && `${prefix} `}\n      {dateFirst && date && <DateElement ref={dateElRef} date={date} />}\n      {dateFirst && ' by '}\n      {names && <NamesElement namesList={namesList} />}\n      {!dateFirst && date && <DateElement ref={dateElRef} date={date} />}\n    </div>\n  );\n};\n\nBylines.propTypes = {\n  prefix: PropTypes.string,\n  names: bylinesPropType,\n  date: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  dateFirst: PropTypes.bool,\n};\n\nBylines.defaultProps = {\n  names: 'FT Staff',\n  prefix: '',\n  date: false,\n  dateFirst: false,\n};\n\nBylines.displayName = 'GBylines';\n\nexport default Bylines;\n","import ftDateFormat from '@financial-times/ft-date-format';\n\nconst updateEventName = 'update';\nlet interval;\n\nfunction ftDateFormatWarning(methodName) {\n\t// eslint-disable-next-line no-console\n\tconsole.warn(`The o-date method \"${methodName}\" is deprecated. Use the \"ft-date-format\" package instead or contact the Origami team for help: https://github.com/Financial-Times/ft-date-format`);\n}\n\n/**\n * Initialise the o-date component.\n *\n * @param {HTMLElement | string} rootElement - The root element or CSS selector to initialise\n */\nclass ODate {\n\n\tconstructor(rootEl) {\n\n\t\tif (!rootEl) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('To initialise all o-date elements on the page use ' +\n\t\t\t\t'the `init` method. Passing no arguments to the constructor ' +\n\t\t\t\t'is deprecated.');\n\t\t}\n\n\t\tif (rootEl && !(rootEl instanceof HTMLElement)) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Using the constructor to initialise one or more ' +\n\t\t\t\t'o-date elements with a query selector is deprecated. ' +\n\t\t\t\t'Pass a single o-date HTMLElement to initialise or use the ' +\n\t\t\t\t'`init` method.');\n\t\t}\n\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tif (rootEl.getAttribute('data-o-component') === \"o-date\") {\n\t\t\tthis.el = rootEl;\n\t\t} else {\n\t\t\tthis.el = rootEl.querySelector('[data-o-component~=\"o-date\"]');\n\t\t}\n\n\t\tif (this.el) {\n\t\t\tdocument.body.addEventListener(updateEventName, this);\n\n\t\t\tthis.update();\n\t\t\tthis.el.setAttribute('data-o-date-js', '');\n\t\t}\n\n\t\tif (this.el && !interval) {\n\t\t\tinterval = setInterval(function () {\n\t\t\t\tdocument.body.dispatchEvent(new CustomEvent(updateEventName));\n\t\t\t}, 60000);\n\t\t}\n\t}\n\n\t// Use object-level event listener method so a new function doesn't need to be bound for each instance\n\thandleEvent(e) {\n\t\tif (e.type === updateEventName) {\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\t/**\n\t * Re-render the formatted date within the `time` element.\n\t *\n\t * @returns {undefined}\n\t */\n\tupdate() {\n\t\tconst el = this.el;\n\n\t\t// Find the date to render.\n\t\t// Use the current date if the `datetime` attribute is not set and\n\t\t// the o-date `time` element has no text content.\n\t\tconst dateTime = el.getAttribute('datetime');\n\t\tlet date = dateTime ? ftDateFormat.toDate(dateTime) : null;\n\t\tif (!date && this.el.textContent === '') {\n\t\t\tdate = new Date();\n\t\t}\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find elements to render formatted dates to.\n\t\t// @deprecated - The class `.o-date__printer` is deprecated.\n\t\t// `.o-date__printer` should be removed in the next major.\n\t\t// Use `[data-o-date-printer]` instead of `.o-date__printer`.\n\t\tlet printers = el.querySelectorAll('.o-date__printer,[data-o-date-printer]');\n\t\tprinters = printers.length ? printers : [el];\n\n\t\t// Render the found date in each printer element.\n\t\tfor (const printer of printers) {\n\t\t\tthis._renderDateFor(printer, date);\n\t\t}\n\n\t\t// If no printers result in output, e.g. because the,\n\t\t// format chosen does not output the time after x hours,\n\t\t// then hide the `time` element.\n\t\tif (el.textContent) {\n\t\t\tel.setAttribute('title', ftDateFormat.format(date, 'datetime'));\n\t\t\tel.removeAttribute('aria-hidden');\n\t\t} else {\n\t\t\tel.setAttribute('aria-hidden', true);\n\t\t}\n\t}\n\n\t/**\n\t * Remove o-date from the `time` element i.e. remove event\n\t * listeners and drop references to the element.\n\t *\n\t * @returns {undefined}\n\t */\n\tdestroy() {\n\t\tdocument.body.removeEventListener(updateEventName, this);\n\t\tthis.el = null;\n\t}\n\n\t/**\n\t * Initialise the o-date component.\n\t *\n\t * @param {HTMLElement | string} el - The root element or CSS selector to initialise\n\t * @returns {Array<ODate> | ODate} - An o-date instance or array of o-date instances.\n\t */\n\tstatic init (el) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t}\n\t\tif (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\t/* If el's data-o-component has \\bo-date\\b in it, ie it is itself a date,\n\t\t return a new o-date */\n\t\tif (/\\bo-date\\b/.test(el.getAttribute('data-o-component'))) {\n\t\t\treturn new ODate(el);\n\t\t}\n\n\t\t// If el contains date components, return o-dates\n\t\tconst dateEls = el.querySelectorAll('[data-o-component~=\"o-date\"]');\n\t\treturn [].map.call(dateEls, function (el) {\n\t\t\treturn new ODate(el);\n\t\t});\n\t}\n\n\t/**\n\t * Render the date to the \"printer\" element in the requested format.\n\t *\n\t * @param {HTMLElement} printer - The element to render the date in\n\t * @param {Date} date - The date to format\n\t * @returns {undefined}\n\t */\n\t_renderDateFor(printer, date) {\n\t\t// Use the printer `data-o-date-format` if found or fallback to the\n\t\t// root element if not found.\n\t\tconst format = printer.getAttribute('data-o-date-format') ||\n\t\t\tthis.el.getAttribute('data-o-date-format');\n\n\t\tlet formattedDate;\n\n\t\tif (format === 'today-or-yesterday-or-nothing') {\n\t\t\tformattedDate = ftDateFormat.asTodayOrYesterdayOrNothing(date);\n\t\t} else if (format === 'date-only') {\n\t\t\tformattedDate = ftDateFormat.format(date, 'date');\n\t\t} else if (format === 'time-ago-limit-4-hours') {\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 4 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-limit-24-hours') {\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 24 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-abbreviated') {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('The o-date format \"time-ago-abbreviated\" is deprecated and the time is no longer abbreviated. Consider using \"time-ago-limit-4-hours\" instead.');\n\t\t\tformattedDate = ftDateFormat.timeAgo(date);\n\t\t} else if (format === 'time-ago-abbreviated-limit-4-hours') {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('The o-date format \"time-ago-abbreviated-limit-4-hours\" is deprecated and the time is no longer abbreviated. Use \"time-ago-limit-4-hours\" instead.');\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 4 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-no-seconds') {\n\t\t\tformattedDate = ftDateFormat.timeAgoNoSeconds(date);\n\t\t} else if (format !== null) {\n\t\t\tformattedDate = ftDateFormat.format(date, format);\n\t\t} else {\n\t\t\tformattedDate = ftDateFormat.ftTime(date);\n\t\t}\n\n\t\t// To avoid triggering a parent live region unnecessarily\n\t\t// <https://github.com/Financial-Times/o-date/pull/43>\n\t\tconst hasSingleTextNode = printer.childNodes.length === 1 &&\n\t\t\tprinter.firstChild &&\n\t\t\tprinter.firstChild.nodeType === 3;\n\n\t\tif (hasSingleTextNode) {\n\t\t\tprinter.firstChild.nodeValue = formattedDate;\n\t\t} else {\n\t\t\tprinter.innerHTML = formattedDate;\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic toDate() {\n\t\tftDateFormatWarning('toDate');\n\t\treturn ftDateFormat.toDate(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic format() {\n\t\tftDateFormatWarning('format');\n\t\treturn ftDateFormat.format(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic getSecondsBetween() {\n\t\tftDateFormatWarning('getSecondsBetween');\n\t\treturn ftDateFormat.getSecondsBetween(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic ftTime() {\n\t\tftDateFormatWarning('ftTime');\n\t\treturn ftDateFormat.ftTime(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isNearFuture() {\n\t\tftDateFormatWarning('isNearFuture');\n\t\treturn ftDateFormat.isNearFuture(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isFarFuture() {\n\t\tftDateFormatWarning('isFarFuture');\n\t\treturn ftDateFormat.isFarFuture(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isToday() {\n\t\tftDateFormatWarning('isToday');\n\t\treturn ftDateFormat.isToday(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isYesterday() {\n\t\tftDateFormatWarning('isYesterday');\n\t\treturn ftDateFormat.isYesterday(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic timeAgo() {\n\t\tftDateFormatWarning('timeAgo');\n\t\treturn ftDateFormat.timeAgo(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic asTodayOrYesterdayOrNothing() {\n\t\tftDateFormatWarning('asTodayOrYesterdayOrNothing');\n\t\treturn ftDateFormat.asTodayOrYesterdayOrNothing(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic timeAgoNoSeconds() {\n\t\tftDateFormatWarning('timeAgoNoSeconds');\n\t\treturn ftDateFormat.timeAgoNoSeconds(...arguments);\n\t}\n\n}\n\nexport default ODate;\n","/**\n * @file\n * Just a basic card, ma'am\n */\n\nimport React from 'react';\nimport Card from '@financial-times/g-components/card';\nimport './styles.scss';\n\nconst BasicCard = ({ children, title }) => {\n  return (\n    <Card className=\"g-basic-card\">\n      {title && <h3 className=\"g-basic-card__title\">{title}</h3>}\n      {children}\n    </Card>\n  );\n};\n\nexport default BasicCard;\n","// From: https://dev.to/n8tb1t/tracking-scroll-position-with-react-hooks-3bbj\n\nimport { useRef, useLayoutEffect } from 'react';\n\nconst isBrowser = typeof window !== `undefined`;\n\nconst getScrollPosition = ({ element, useWindow }) => {\n  if (!isBrowser) return { x: 0, y: 0 };\n\n  const target = element ? element.current : document.body;\n  const position = target.getBoundingClientRect();\n\n  return useWindow\n    ? { x: window.scrollX, y: window.scrollY }\n    : { x: position.left, y: position.top };\n};\n\nconst useScrollPosition = (effect, deps, element, useWindow, wait) => {\n  const position = useRef(getScrollPosition({ useWindow }));\n\n  let throttleTimeout = null;\n\n  const callBack = () => {\n    const currPos = getScrollPosition({ element, useWindow });\n    effect({ prevPos: position.current, currPos });\n    position.current = currPos;\n    throttleTimeout = null;\n  };\n\n  useLayoutEffect(() => {\n    const handleScroll = () => {\n      if (wait) {\n        if (throttleTimeout === null) {\n          throttleTimeout = setTimeout(callBack, wait);\n        }\n      } else {\n        callBack();\n      }\n    };\n\n    window.addEventListener('scroll', handleScroll);\n\n    return () => window.removeEventListener('scroll', handleScroll);\n  }, deps);\n};\n\nexport default useScrollPosition;\n","import { useState, useEffect, useMemo } from 'react';\nimport { useQueryParams, ArrayParam } from 'use-query-params';\nimport sendSpoorEvent from '../util/sendSpoorEvent';\n\nconst useQueryParamsWithState = params => {\n  // Extract param types\n  const queryParams = Object.entries(params)\n    // .filter(([, { hideFromQueryParams }]) => !hideFromQueryParams) // These get filtered later? -æ\n    .reduce((allParams, [paramName, { type }]) => ({ ...allParams, [paramName]: type }), {});\n\n  // Generate list of attributes to exclude\n  const excludeFromQueryParams = Object.entries(params)\n    .filter(([, { hideFromQueryParams }]) => hideFromQueryParams)\n    .map(([paramName]) => paramName);\n\n  // Setup query params\n  const [query, setQuery] = useQueryParams(queryParams);\n  const hasQuery = useMemo(() => Object.values(query).some(d => d), []); // eslint-disable-line\n\n  // Extract defaults from query param string or those given to hook\n  const defaults = Object.entries(params).reduce(\n    (allParams, [paramName, { default: defaultValue, options, type, maxLength }]) => {\n      // If options is a function, run it to generate the options array\n      const optionsArray = typeof options === 'function' ? options(query) : options;\n      const queryParamValue = query[paramName];\n      const validatedQueryParam = optionsArray // eslint-disable-line no-nested-ternary\n        ? optionsArray.includes(queryParamValue)\n          ? // If options set, check the value is in the array\n            queryParamValue\n          : // Otherwise return the default value\n            defaultValue\n        : queryParamValue !== undefined\n        ? // If a query param value was found set that\n          queryParamValue\n        : // Otheriwse use the default value\n          defaultValue;\n      // If query param type is array and has a max length, limit the array length\n      const filteredQueryParam =\n        type === ArrayParam && maxLength\n          ? validatedQueryParam.slice(0, maxLength)\n          : validatedQueryParam;\n      return {\n        ...allParams,\n        [paramName]: filteredQueryParam,\n      };\n    },\n    {}\n  );\n\n  // Setup state\n  const [state, setState] = useState({ ...defaults, hasQuery });\n\n  // When state updates, update query params\n  useEffect(() => {\n    const filteredState = Object.entries(state)\n      .filter(\n        ([paramName]) => !excludeFromQueryParams.includes(paramName) && paramName !== 'hasQuery'\n      )\n      .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});\n\n    setQuery(filteredState, 'replace');\n    sendSpoorEvent('coronavirus-trajectory-tracker', 'search', filteredState);\n  }, [excludeFromQueryParams, setQuery, state]);\n\n  return [state, setState];\n};\n\nexport default useQueryParamsWithState;\n","import React, { Fragment, useMemo, useState, useEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { GridChild } from '@financial-times/g-components/grid';\nimport { Context } from '@financial-times/g-components/article-layout';\nimport moment from 'moment-timezone';\nimport * as d3 from 'd3-time-format';\nimport OptionsPanel from '../options-panel';\nimport ButtonSelectionGroup from '../button-selection-group';\nimport DatePicker from '../date-picker';\nimport AreaLookup from '../area-lookup';\nimport {\n  generateHeaderText,\n  generateSubheadText,\n  generateSourceText,\n  generateXAxisText,\n} from '../../helpers/generateChartText';\nimport Toggle from '../toggle';\nimport additionalAxisStyles from '../../helpers/additionalAxisStyles';\nimport generateYTickValues from '../../helpers/generateYTickValues';\nimport {\n  generateXTickValues,\n  generateXTickDateValues,\n  filterXTickDateValues,\n  generateXTickFormatFunction,\n} from '../../helpers/xTickValues';\nimport formatDataForChart from '../../helpers/formatDataForChart';\nimport formatValueForTooltip from '../../helpers/formatValueForTooltip';\nimport getNumberOfDecimalPlacesForTicks from '../../helpers/getNumberOfDecimalPlaces';\nimport areaCodeToDisplay from '../../helpers/areaCodeToDisplay';\nimport getAlternativeCountryNames from '../../util/getAlternativeCountryNames';\nimport addDaysToDate from '../../util/addDaysToDate';\nimport { queryParamDateFormat, datePickerDateFormat } from '../date-picker-input/helpers';\nimport logo from '../../images/masthead.svg';\nimport './styles.scss';\nimport LineChartTemplate from '../line-chart-template';\n\nconst dayOffsets = [\n  {\n    area: 'usa',\n    offset: 7,\n    options: { per100K: false, values: 'deaths', cumulative: false },\n  },\n  {\n    area: 'exny',\n    offset: 7,\n    options: { per100K: false, values: 'deaths', cumulative: false },\n  },\n  {\n    area: 'uswa',\n    offset: 7,\n    options: { per100K: false, values: 'deaths', cumulative: false },\n  },\n];\n\nconst TrajectoryLineChart = ({\n  data: allData,\n  worldOrRegion,\n  source,\n  logScale,\n  cumulative,\n  values,\n  areas,\n  per100K,\n  daysSinceN,\n  byDate,\n  buildTime,\n  updateState,\n  earliestDateAllowed,\n  latestDateAllowed,\n  startDate,\n}) => {\n  const { breakpoint: b } = useContext(Context);\n  const breakpoint = ((b && b.breakpoint) || 'default').toLowerCase();\n  const isSmall = ['default', 's'].includes(breakpoint);\n\n  const [datePickerError, setDatePickerError] = useState({\n    state: 'default',\n    message: 'Date must be 7 days before latest date',\n  });\n  const [hideUnselected, setHideUnselected] = useState(true);\n  const data = allData[worldOrRegion];\n\n  const countryRegionList = useMemo(\n    () =>\n      data.map(({ area, code }) => ({\n        value: code,\n        display: area,\n        type: 'country',\n        alternatives: getAlternativeCountryNames(area),\n      })),\n    [data]\n  );\n\n  // Get display values for areas\n  const formattedAreas = areas\n    .map(a => ({\n      value: a,\n      display: areaCodeToDisplay(a, countryRegionList),\n    }))\n    .filter(({ display }) => display);\n\n  const {\n    data: dataForChart,\n    areasInData,\n    minYValueAboveZero,\n    maxYValue,\n    minXValue,\n    maxXValue,\n    dayPassedNthValueForEachCountry,\n  } = useMemo(\n    () =>\n      formatDataForChart(\n        data,\n        { values, per100K, cumulative, byDate, daysSinceN, areas, hideUnselected, startDate },\n        dayOffsets,\n        true // getMaxYValueFromSelectedAreas\n      ),\n    [data, values, per100K, cumulative, byDate, hideUnselected, daysSinceN, areas, startDate]\n  );\n\n  // Filter out areas not in the data set\n  const areasToDisplay = formattedAreas\n    .map(({ display }) => display)\n    .filter(area => areasInData.includes(area));\n  const emptyAreasToDisplay = areasToDisplay && areasToDisplay.length === 0;\n\n  // Reset toggle if selected areas array is empty\n  useEffect(() => {\n    if (emptyAreasToDisplay) setHideUnselected(false);\n  }, [emptyAreasToDisplay]);\n\n  /* Get closest log base 10 value below y min value\n   e.g. if lowest value (above 0) in the dataset is 0.003 the minimum\n   value on the y axis should be 0.001 */\n  const yBase10Min = Math.pow(10, Math.floor(Math.log10(minYValueAboveZero)));\n\n  const yMin = logScale\n    ? // Set yMin to yBase10Min if using log scale\n      yBase10Min\n    : // If cumulative, byDate and per 100k, set yMin to 0\n    cumulative\n    ? byDate\n      ? per100K\n        ? 0\n        : // If cumulative, byDate and raw numbers, set yMin to 1\n          1\n      : /* If cumulative and not by date, set yMin to the\n          N value that countries need to have passed e.g. 3 daily cases */\n        daysSinceN\n    : // If not cumulative, set yMin to zero\n      0;\n\n  // Below this value, visx/d3 generated ticks are not integers\n  const integerTickCutoffPoint = logScale ? 7 : 7.5;\n  const decimalPlaces =\n    logScale && per100K\n      ? // Get number of decimal places in smallest tick\n        Math.log10(1 / yBase10Min)\n      : getNumberOfDecimalPlacesForTicks(maxYValue, integerTickCutoffPoint);\n  /* The number of decimal places in the tooltip should always be more than the ticks\n   unless all numbers are integers (i.e. cumulative and not per 100k) */\n  const tooltipDecimalPlaces = cumulative && !per100K ? 0 : decimalPlaces + 1;\n\n  const yTickValues = useMemo(() => {\n    const firstNonZeroTickValue = Math.pow(0.1, decimalPlaces);\n    const generatedYTickValues = logScale\n      ? generateYTickValues(\n          /* If per 100k, start tick series at the first non zero tick value, otherwise\n           start at 0 */\n          per100K ? [firstNonZeroTickValue] : [0, firstNonZeroTickValue],\n          maxYValue,\n          true,\n          // Each tick should be 10 times the previous tick\n          (previous, n) => previous * 10\n        )\n      : null;\n\n    // If yMin is not in the set of generated tick values, add it to the array\n    if (generatedYTickValues && !generatedYTickValues.includes(yMin)) {\n      return [...generatedYTickValues, yMin].sort((a, b) => a - b);\n    }\n    return generatedYTickValues;\n  }, [per100K, logScale, maxYValue, yMin]);\n\n  const yMax = logScale\n    ? (() => {\n        // The top of the yscale should be the maximum of the last tick and the max value in the data set\n        const filteredTickValues = yTickValues.filter(d => d >= yMin);\n        const lastTick = filteredTickValues[filteredTickValues.length - 1];\n        return Math.max(lastTick, maxYValue);\n      })()\n    : maxYValue;\n\n  const yTickFormat =\n    per100K && yMax < integerTickCutoffPoint\n      ? /* If the the max value is below the value at which all ticks are integers,\n         set a fixed number of decimal places */\n        tickValue => (tickValue === 0 ? 0 : tickValue.toFixed(decimalPlaces))\n      : logScale\n      ? // Format ticks to 1 significant figure if below 1\n        tickValue => (tickValue < 1 ? tickValue.toPrecision(1) : tickValue.toLocaleString())\n      : null;\n\n  // Generate x tick values and max x value if using byDate option\n  let xTickValues;\n  let xTickIncrement;\n  const xMin = byDate ? startDate : null;\n  let xMax;\n  if (!byDate) {\n    const maxXTicks = 16;\n    const skipEveryNthTick = 2;\n    const increment = { default: 30, s: 20, m: 10, l: 10, xl: 10 }[breakpoint];\n\n    const { tickSeries: generatedXTickValues, maxXTickValue: generatedXMax } = generateXTickValues(\n      maxXValue,\n      increment,\n      maxXTicks,\n      true, // hideEndTicks\n      skipEveryNthTick\n    );\n\n    xTickValues = generatedXTickValues;\n    xMax = generatedXMax;\n  } else {\n    xMax = maxXValue;\n    const generatedXTickDateValues = generateXTickDateValues(xMin, xMax);\n    xTickValues = generatedXTickDateValues.uniqueTicks;\n    xTickIncrement = generatedXTickDateValues.tickIncrement;\n  }\n\n  const xTickLabelsToHide = byDate\n    ? filterXTickDateValues(\n        xTickValues,\n        xMin,\n        xMax,\n        // Minimum spacing between ticks (%)\n        { default: 0.2, s: 0.1, m: 0.07, l: 0.05, xl: 0.05 }[breakpoint],\n        // Max number of ticks before Nth tick is filtered out\n        { default: 3, s: 9, m: 12, l: 12, xl: 12 }[breakpoint]\n      )\n    : [];\n\n  // Generate tick format function\n  const xTickFormat = byDate\n    ? generateXTickFormatFunction(xTickValues, breakpoint, xTickIncrement, xTickLabelsToHide)\n    : null;\n\n  // Update chart text\n  const headerText = generateHeaderText({\n    cumulative,\n    values,\n    areasToDisplay,\n    areasInData,\n  });\n  const subheadText = generateSubheadText({\n    cumulative,\n    values,\n    per100K,\n    byDate,\n    daysSinceN: +daysSinceN,\n  });\n  const xAxisText = generateXAxisText({\n    cumulative,\n    values,\n    per100K,\n    daysSinceN: +daysSinceN,\n    isSmall,\n  });\n  const timestamp = moment(buildTime)\n    .tz('Europe/London')\n    .format('MMMM D Y h.mma z');\n  const sourceText = source\n    ? generateSourceText({\n        source: `Source: Financial Times analysis of data from ${source}`,\n        timestamp,\n      })\n    : '';\n\n  // If world, update the areas query param; if regional, update the areasRegional param\n  const queryParamAreaName = worldOrRegion === 'world' ? 'areas' : 'areasRegional';\n  const updateStateFunction = newSelectedAreas =>\n    updateState([[queryParamAreaName, newSelectedAreas]]);\n\n  const titleText = (\n    <React.Fragment>\n      Choose {worldOrRegion === 'world' ? 'country/bloc' : 'state'} or select{' '}\n      <span style={{ fontWeight: 600 }}>up to six</span> to compare\n    </React.Fragment>\n  );\n  const emptyInputErrorMessage = `Please enter ${\n    worldOrRegion === 'world' ? 'country/bloc' : 'state'\n  } name`;\n  const maxSelectedErrorMessage = `Maximum number of ${\n    worldOrRegion === 'world' ? 'countries/blocs' : 'states'\n  } selected`;\n\n  // Pass breakpoint to main options and additional options components\n  const MainOptions = ({ breakpoint }) => (\n    <React.Fragment>\n      <div className=\"options-panel__item\">\n        <ButtonSelectionGroup\n          items={[\n            { value: 'deaths', display: 'Deaths' },\n            { value: 'cases', display: 'Cases' },\n          ]}\n          selected={values}\n          updateSelection={values => updateState('values', values)}\n          width={breakpoint === 'm' ? '210px' : '240px'}\n        />\n      </div>\n\n      {['m', 'l', 'xl'].includes(breakpoint) && (\n        <div className=\"options-panel__item\">\n          <ButtonSelectionGroup\n            items={[\n              { value: 'new', display: 'New' },\n              { value: 'cumulative', display: 'Cumulative' },\n            ]}\n            selected={cumulative ? 'cumulative' : 'new'}\n            updateSelection={cumulative => updateState('cumulative', cumulative === 'cumulative')}\n            equalButtons={breakpoint !== 'm'}\n            width={breakpoint === 'm' ? '190px' : '210px'}\n          />\n        </div>\n      )}\n    </React.Fragment>\n  );\n\n  const AdditionalOptions = ({ breakpoint, closeOptionsOverlay }) => (\n    <React.Fragment>\n      <div className=\"options-panel__row\">\n        {isSmall && (\n          <div className=\"options-panel__row-item\">\n            <div className=\"options-panel__row-item-label\">{`Show ${values} as`}</div>\n            <ButtonSelectionGroup\n              items={[\n                { value: 'new', display: 'New' },\n                { value: 'cumulative', display: 'Cumulative' },\n              ]}\n              selected={cumulative ? 'cumulative' : 'new'}\n              updateSelection={cumulative => updateState('cumulative', cumulative === 'cumulative')}\n            />\n          </div>\n        )}\n\n        <div className=\"options-panel__row-group\">\n          <div className=\"options-panel__row-item\">\n            <div className=\"options-panel__row-item-label\">{`Show ${values} in`}</div>\n            <ButtonSelectionGroup\n              items={[\n                { value: 'per-100k', display: 'Per 100k' },\n                {\n                  value: 'raw',\n                  display: 'Raw numbers',\n                },\n              ]}\n              selected={per100K ? 'per-100k' : 'raw'}\n              updateSelection={per100K => updateState('per100K', per100K === 'per-100k')}\n              equalButtons={false}\n              width={breakpoint === 'm' ? '190px' : '200px'}\n            />\n          </div>\n\n          <div className=\"options-panel__row-item\">\n            <div className=\"options-panel__row-item-label\">Show vertical scale as</div>\n            <ButtonSelectionGroup\n              items={[\n                { value: 'linear', display: 'Linear' },\n                { value: 'log-scale', display: 'Logarithmic' },\n              ]}\n              selected={logScale ? 'log-scale' : 'linear'}\n              updateSelection={logScale => updateState('logScale', logScale === 'log-scale')}\n              equalButtons={false}\n              width={breakpoint === 'm' ? '180px' : '190px'}\n              loadingTime={50}\n            />\n          </div>\n\n          <div className=\"options-panel__row-item\">\n            <DatePicker\n              minDate={earliestDateAllowed}\n              maxDate={latestDateAllowed}\n              selectedStartDate={startDate}\n              updateDateRange={start => updateState('startDate', start)}\n              inputDateFormat={datePickerDateFormat}\n              storedDateFormat={queryParamDateFormat}\n              isDateRange={false}\n              labelText=\"Select start date\"\n              error={datePickerError}\n              setError={setDatePickerError}\n              onApplyCallback={closeOptionsOverlay}\n            />\n          </div>\n\n          {isSmall && (\n            <div className=\"options-panel__row-item\">\n              <Toggle\n                id=\"unselected-countries-toggle\"\n                text={`${hideUnselected ? 'Show' : 'Hide'} unselected ${\n                  worldOrRegion === 'world' ? 'countries/blocs' : 'states'\n                }`}\n                checked={hideUnselected}\n                onClick={() => setHideUnselected(!hideUnselected)}\n              />\n            </div>\n          )}\n        </div>\n      </div>\n    </React.Fragment>\n  );\n\n  const TooltipComponent = ({ seriesName, xValue, yValue }) => {\n    const formatTime = d3.timeFormat('%b %-d');\n\n    let formattedDate;\n    if (byDate) {\n      formattedDate = formatTime(xValue);\n    } else {\n      const dayPassedNthValue = dayPassedNthValueForEachCountry.get(seriesName);\n      const currentDate = addDaysToDate(dayPassedNthValue, xValue);\n      formattedDate = formatTime(currentDate);\n    }\n\n    const formattedValue = formatValueForTooltip(yValue, tooltipDecimalPlaces, yMin);\n\n    return (\n      <div className=\"tooltip-content\">\n        {seriesName}\n        <br />\n        <span className=\"tooltip-content--value\">{formattedValue}</span>\n        {` ${cumulative ? '' : 'avg '}${values}${per100K ? ' per 100k' : ''}`}\n        <br />\n        <span className=\"tooltip-content--date\">{formattedDate}</span>\n      </div>\n    );\n  };\n\n  const LineChart = (\n    <div className=\"chart-container\">\n      <LineChartTemplate\n        id={worldOrRegion}\n        // Chart text\n        title={headerText}\n        subtitle={subheadText}\n        source={sourceText}\n        hideTopper\n        hideFooter\n        // Chart options\n        margin={{\n          top: 25,\n          left: 0,\n          right: byDate ? (isSmall ? 45 : 90) : 0,\n          bottom: byDate ? 30 : 10,\n        }}\n        accentBar={false}\n        showLegend={false}\n        showLineEndDots\n        height={['m', 'l', 'xl'].includes(breakpoint) ? 600 : 300}\n        // Data\n        data={dataForChart}\n        seriesToHighlight={areasToDisplay}\n        // Axes\n        xScaleType={byDate ? 'time' : 'linear'}\n        xVariable=\"date\"\n        yVariable={\n          emptyAreasToDisplay\n            ? /* If areas to display (highlight) is empty,\n                      show all lines for all areas in the data on the chart */\n              areasInData\n            : /* If not empty, show only highlighted areas if\n                      hideUnselected option is set to true */\n            hideUnselected\n            ? areasToDisplay\n            : []\n        }\n        yMin={yMin}\n        yMax={yMax}\n        xFullLengthTicks\n        yFullLengthTicks\n        logScale={logScale}\n        yTickValues={logScale ? yTickValues.filter(d => d >= yMin) : null}\n        additionalYTickValues={!logScale && [yMin]}\n        yTickFormat={yTickFormat}\n        /* Transform y values below the bottom tick (if a logscale) so that they don't\n         go below the bottom of the y axis */\n        yTransformFunction={logScale ? d => (d < yMin ? yMin : d) : null}\n        xTickValues={xTickValues}\n        xMin={xMin}\n        xMax={xMax}\n        xAxisLabel={!byDate && xAxisText}\n        xTickFormat={xTickFormat}\n        xAxisLabelOffset={5}\n        additionalAxisStyles={additionalAxisStyles}\n        // Tooltips\n        showTooltips\n        showTooltipLine\n        tooltipComponent={TooltipComponent}\n        tooltipStyle={{\n          backgroundColor: '#ffffff',\n          padding: '0.3rem 0.5rem',\n          borderRadius: 0,\n          boxShadow: `0 1px 1px 0 rgba(0, 0, 0, 0.14)`,\n        }}\n        allLinesHoverable={!hideUnselected || emptyAreasToDisplay}\n        lineColorPalette={['#0F5499', '#EB5E8D', '#9DBF57', '#208FCE', '#7f062E', '#CE3140']}\n        labelColorPalette={['#0F5499', '#EA538C', '#79972A', '#208FCE', '#7f062E', '#CE3140']}\n        highlightedLineOutlineWidth={5}\n        showYAxisFade\n      />\n      {!isSmall && (\n        <div className=\"toggle-positioning-container\">\n          <Toggle\n            id=\"unselected-countries-toggle\"\n            text={`${hideUnselected ? 'Show' : 'Hide'} unselected ${\n              worldOrRegion === 'world' ? 'countries/blocs' : 'states'\n            }`}\n            checked={hideUnselected}\n            onClick={() => setHideUnselected(!hideUnselected)}\n          />\n        </div>\n      )}\n    </div>\n  );\n\n  return (\n    <Fragment>\n      <GridChild colspan=\"12 S11 Scenter\">\n        <div className=\"options-panel-container fixed-grid-child\">\n          <div className=\"options-panel__item options-panel__item--full\">\n            <AreaLookup\n              title={titleText}\n              areaList={countryRegionList}\n              updateState={updateStateFunction}\n              // @TODO move this somewhere else in the code\n              selectedAreas={formattedAreas}\n              areasInData={areasInData}\n              options={{ values, per100K, cumulative, daysSinceN }}\n              emptyInputErrorMessage={emptyInputErrorMessage}\n              maxSelectedErrorMessage={maxSelectedErrorMessage}\n            />\n          </div>\n          <OptionsPanel\n            id={worldOrRegion}\n            mainOptions={MainOptions}\n            additionalOptions={AdditionalOptions}\n            showAdditionalOptionsByDefault\n          />\n        </div>\n      </GridChild>\n      <GridChild colspan=\"12\">\n        <section className=\"chart-section\" id={`chart-${worldOrRegion}`}>\n          <header className=\"chart-topper\">\n            <div className=\"chart-topper__header\">\n              {headerText.split('|').map(line => (\n                <div key={line}>{line}</div>\n              ))}\n            </div>\n            <div className=\"chart-topper__subhead\">\n              {subheadText.split('|').map(line => (\n                <div key={line}>{line}</div>\n              ))}\n            </div>\n          </header>\n          {LineChart}\n          <footer className=\"chart-footer\">\n            <div className=\"chart-footer__source\">\n              {sourceText.split('|').map(line => (\n                <div key={line}>{line}</div>\n              ))}\n            </div>\n            <img className=\"chart-footer__logo\" src={logo} />\n          </footer>\n        </section>\n      </GridChild>\n    </Fragment>\n  );\n};\n\nTrajectoryLineChart.propTypes = {\n  data: PropTypes.object,\n  worldOrRegion: PropTypes.string,\n  source: PropTypes.string.isRequired,\n  logScale: PropTypes.bool.isRequired,\n  cumulative: PropTypes.bool.isRequired,\n  values: PropTypes.oneOf(['deaths', 'cases']).isRequired,\n  areas: PropTypes.arrayOf(PropTypes.string).isRequired,\n  per100K: PropTypes.bool.isRequired,\n  daysSinceN: PropTypes.number.isRequired,\n  byDate: PropTypes.bool.isRequired,\n  startDate: PropTypes.instanceOf(Date),\n  buildTime: PropTypes.string.isRequired,\n  updateState: PropTypes.func.isRequired,\n};\n\nTrajectoryLineChart.defaultProps = {\n  data: {},\n  worldOrRegion: 'world',\n};\n\nexport default TrajectoryLineChart;\n","import { useState, useEffect } from 'react';\nimport Overlay from '@financial-times/o-overlay';\n\n/**\n * Overlay hook to wrap oOverlay methods and state\n *\n * Wraps oOverlay functionality and exposes its API and internal state\n * eg, open/close methods and whether the overlay is shown or not.\n *\n * Use in conjunction with `<OverlayContents>` to specify the contents of\n * the overlay.\n *\n * See https://registry.origami.ft.com/components/o-overlay/readme\n *\n * @param {OverlayOptions} options\n * @param {string} options.id - The id for the overlay\n * @param {string} options.title - The title of the overlay\n * @param {boolean} [options.headingShaded=false] - Whether the heading is shaded or not\n * @param {boolean} [options.oLayerContext=document.body] - Where overlay event listeners are added\n * @param {Object} [options.oOverlayOptions] - Extra oOverlay options. See https://registry.origami.ft.com/components/o-overlay/readme#option-reference\n */\nexport const useOverlay = ({\n  id,\n  title,\n  headingShaded = false,\n  visuallyHideTitle = false,\n  oLayerContext = document.body,\n  oOverlayOptions,\n} = {}) => {\n  const [isShowing, setIsShowing] = useState(false);\n  const [overlay, setOverlay] = useState(null);\n\n  useEffect(() => {\n    // Only create the overlay once, otherwise oOverlay errors\n    if (!overlay) {\n      const oOverlay = new Overlay(id, {\n        // Nothing in html, but will be replaced by a React portal to\n        // replace the contents\n        html: ' ', // Requires a non-empty value\n        heading: {\n          title: (visuallyHideTitle && !title && 'Overlay') || title,\n          visuallyhidetitle: visuallyHideTitle,\n          shaded: headingShaded,\n        },\n        ...oOverlayOptions,\n      });\n\n      // NOTE: In conjunction with setting `isShowing` in the hide\n      // overlay method below, this event listener catches any race\n      // conditions where React does not set `isShowing` in time when\n      // oOverlay is closed\n      oLayerContext.addEventListener('oOverlay.layerClose', () => {\n        setIsShowing(false);\n      });\n\n      setOverlay(oOverlay);\n    }\n  }, [headingShaded, id, oLayerContext, oOverlayOptions, overlay, title, visuallyHideTitle]);\n\n  const showOverlay = () => {\n    if (!overlay) {\n      return;\n    }\n    overlay.open();\n    setIsShowing(true);\n  };\n\n  const hideOverlay = () => {\n    // NOTE: `isShowing` needs to be set here in case oOverlay events\n    // don't trigger the React lifecycle in time\n    setIsShowing(false);\n\n    if (!overlay) {\n      return;\n    }\n    if (overlay.visible) overlay.close();\n  };\n\n  const oOverlayContentsSelector = `.o-overlay--${id} .o-overlay__content`;\n\n  return {\n    isShowing,\n    showOverlay,\n    hideOverlay,\n    overlay,\n    oOverlayContentsSelector,\n  };\n};\n","import React, { useRef, useEffect, useState } from 'react';\nimport * as d3 from 'd3-time-format';\nimport { getDaysInMonth, getYearRange, monthsList, getDayMonthYear } from './helpers';\nimport './styles.scss';\n\nconst DatePickerInput = ({\n  minDate,\n  maxDate,\n  selectedDate,\n  fallbackDate,\n  inputDateFormat,\n  storedDateFormat,\n  inputRef,\n  setFallbackDate,\n  supportsDateType,\n  setSupportsDateType,\n  inputName,\n}) => {\n  const inputDateFormatter = d3.timeFormat(inputDateFormat);\n  const inputDateParser = d3.timeParse(inputDateFormat);\n\n  useEffect(() => {\n    // Check browser supports date type, otherwise fallback\n    if (inputRef && inputRef.current.type === 'text') {\n      setSupportsDateType(false);\n    }\n  }, []);\n\n  useEffect(() => {\n    if (inputRef) {\n      inputRef.current.value = inputDateFormatter(selectedDate);\n    }\n  }, [selectedDate]);\n\n  return (\n    <div className={`date-picker-input${!supportsDateType ? ' date-picker-input--fallback' : ''}`}>\n      {supportsDateType ? (\n        <input\n          type=\"date\"\n          name={inputName}\n          ref={inputRef}\n          min={inputDateFormatter(minDate)}\n          max={inputDateFormatter(maxDate)}\n          onChange={event => {\n            inputRef.current.value = event.target.value;\n            setFallbackDate(inputDateParser(inputRef.current.value));\n          }}\n        />\n      ) : (\n        <DatePickerInputSelectFallback\n          minDate={minDate}\n          maxDate={maxDate}\n          selectedDate={fallbackDate}\n          setFallbackDate={setFallbackDate}\n        />\n      )}\n    </div>\n  );\n};\n\nconst DatePickerInputDaySelect = ({ selectedDay, days, onChange }) => (\n  <label className=\"o-forms-field\">\n    <span className=\"o-forms-input o-forms-input--select\">\n      <select name=\"starting-date-day\" onChange={onChange} value={selectedDay}>\n        {days.map(value => (\n          <option key={value} value={value}>\n            {value}\n          </option>\n        ))}\n      </select>\n    </span>\n  </label>\n);\n\nconst DatePickerInputMonthSelect = ({ selectedMonth, months, onChange }) => (\n  <label className=\"o-forms-field\">\n    <span className=\"o-forms-input o-forms-input--select\">\n      <select name=\"starting-date-month\" onChange={onChange} value={selectedMonth}>\n        {months.map((month, index) => (\n          <option key={month} value={monthsList.indexOf(month)}>\n            {month}\n          </option>\n        ))}\n      </select>\n    </span>\n  </label>\n);\n\nconst DatePickerInputYearSelect = ({ selectedYear, years, onChange }) => (\n  <label className=\"o-forms-field\">\n    <span className=\"o-forms-input o-forms-input--select\">\n      <select\n        name=\"starting-date-years\"\n        onChange={onChange}\n        value={selectedYear}\n        disabled={years.length === 1}\n      >\n        {years.map(year => (\n          <option key={year} value={year}>\n            {year}\n          </option>\n        ))}\n      </select>\n    </span>\n  </label>\n);\n\nconst DatePickerInputSelectFallback = ({ minDate, maxDate, selectedDate, setFallbackDate }) => {\n  const { day: selectedDay, month: selectedMonth, year: selectedYear } = getDayMonthYear(\n    selectedDate\n  );\n  const { day: minDateDay, month: minDateMonth, year: minDateYear } = getDayMonthYear(minDate);\n  const { day: maxDateDay, month: maxDateMonth, year: maxDateYear } = getDayMonthYear(maxDate);\n\n  const yearRange = getYearRange(minDate, maxDate);\n\n  // Get number of days in selected month\n  const numberOfdaysInMonth = getDaysInMonth(selectedDate.getMonth(), selectedDate.getFullYear());\n  // Generate list of days in selected month for selected month\n  const listOfdaysInMonth = [...Array(numberOfdaysInMonth).keys()].map(day => day + 1);\n  const filteredListOfDaysInMonth = listOfdaysInMonth.filter(day => {\n    // If the selected month and year are the same as the max for the input,\n    // filter out all days <= the max day for the input\n    if (selectedMonth === maxDateMonth && selectedYear === maxDateYear) {\n      return day <= maxDateDay;\n    }\n    // If the selected month and year are the same as the min for the input,\n    // filter out all days >= the min day for the input\n    if (selectedMonth === minDateMonth && selectedYear === minDateYear) {\n      return day >= minDateDay;\n    }\n    return true;\n  });\n\n  // Get available months for month dropdown\n  const months = monthsList.filter((m, monthIndex) => {\n    // If selected year is equal to max year and min year,\n    // filter out months > max month and < min month\n    if (selectedYear === maxDateYear && selectedYear === minDateYear) {\n      return monthIndex <= maxDateMonth && monthIndex >= minDateMonth;\n    }\n    if (selectedYear === maxDateYear) {\n      return monthIndex <= maxDateMonth;\n    }\n    if (selectedYear === minDateYear) {\n      return monthIndex => minDateMonth;\n    }\n    return true;\n  });\n\n  return (\n    <React.Fragment>\n      <DatePickerInputDaySelect\n        selectedDay={selectedDay}\n        days={filteredListOfDaysInMonth}\n        onChange={event => {\n          const newDate = new Date(selectedDate.getTime());\n          newDate.setDate(event.target.value);\n          setFallbackDate(newDate);\n        }}\n      />\n      <DatePickerInputMonthSelect\n        selectedMonth={selectedMonth}\n        months={months}\n        onChange={event => {\n          const newMonthIndex = event.target.value;\n          let newDate = new Date(selectedDate.getTime());\n          newDate.setMonth(newMonthIndex);\n\n          // If current day is greater than the max allowed date for that month\n          // e.g. in the future, set the day to the max day allowed\n          if (\n            Number(newMonthIndex) === maxDateMonth &&\n            selectedYear === maxDateYear &&\n            newDate.getDate() > maxDateDay\n          ) {\n            newDate = new Date(selectedYear, newMonthIndex, maxDateDay);\n          }\n\n          // If current day e.g. 31 doesn't appear in newly selected month,\n          // set day to last day in month\n          if (newDate.getMonth().toString() !== newMonthIndex) {\n            const daysInMonth = getDaysInMonth(newMonthIndex, selectedYear);\n            newDate = new Date(selectedYear, newMonthIndex, daysInMonth);\n          }\n\n          setFallbackDate(newDate);\n        }}\n      />\n      <DatePickerInputYearSelect\n        selectedYear={selectedYear}\n        years={yearRange}\n        onChange={event => {\n          const newDate = new Date(selectedDate.getTime());\n          newDate.setFullYear(event.target.value);\n          setFallbackDate(newDate);\n        }}\n      />\n    </React.Fragment>\n  );\n};\n\nexport default DatePickerInput;\n","import React, { useState, useEffect } from 'react';\nimport Loading from '@financial-times/g-components/loading';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst Toggle = ({ id, checked, text, loadingTime, onClick }) => {\n  const [loading, setLoading] = useState(false);\n\n  useEffect(() => {\n    let timer;\n    if (loading) {\n      timer = setTimeout(() => {\n        setLoading(false);\n        onClick();\n      }, loadingTime); // Defaults to 250ms\n    }\n    return () => clearTimeout(timer);\n  }, [loading]);\n\n  return (\n    <div\n      className=\"toggle-panel\"\n      onClick={() => {\n        setLoading(true);\n      }}\n    >\n      <div className=\"toggle-label\">{text}</div>\n      {loading ? (\n        <div className=\"toggle-loading\">\n          <Loading size=\"small\" />\n        </div>\n      ) : (\n        <label className=\"o-forms-field\">\n          <span className=\"o-forms-input o-forms-input--toggle o-forms-input--inline\">\n            <label>\n              <input\n                type=\"checkbox\"\n                name={id}\n                checked={checked}\n                onClick={e => e.stopPropagation()}\n                onChange={e => e.stopPropagation()}\n              />\n              <span className=\"o-forms-input__label\" />\n            </label>\n          </span>\n        </label>\n      )}\n    </div>\n  );\n};\n\nToggle.propTypes = {\n  text: PropTypes.string,\n  checked: PropTypes.bool.isRequired,\n  onClick: PropTypes.func.isRequired,\n  loadingTime: PropTypes.number,\n};\n\nToggle.defaultProps = {\n  loadingTime: 250,\n};\n\nexport default Toggle;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","/**\n * @file\n * vv-axis arrows and label\n */\n\nimport React from 'react';\nimport { Group } from '@visx/group';\nimport { Line } from '@visx/shape';\nimport { Point } from '@visx/point';\nimport { axisArrowsStyles as css } from './styles-arrows';\nimport { axisArrowsComponentPropTypes } from '../prop-types';\nimport { axisArrowsComponentDefaultProps } from '../default-props';\n\nconst AxisArrows = ({ axisArrows, axisArrowsScale, axisArrowsPadding, orientation }) => {\n  const {\n    // top: paddingTop,\n    right: paddingRight,\n    // bottom: paddingBottom,\n    left: paddingLeft,\n  } = axisArrowsPadding;\n  const labelArrowGap = 10; // vertical gap between the arrow and its label on AxisTop\n  const labelArrowGapBottom = 20; // vertical gap between the arrow and its label on AxisBottom\n  const axisHeight = 35; // @TODO calculate this better?\n\n  return (\n    <Group css={css}>\n      <defs>\n        <marker\n          id=\"axis-arrow-triangle\"\n          viewBox=\"0 0 8 8\"\n          refX=\"1\"\n          refY=\"4\"\n          markerUnits=\"strokeWidth\"\n          markerWidth=\"8\"\n          markerHeight=\"8\"\n          orient=\"auto\"\n        >\n          <path d=\"M 0 0 L 8 4 L 0 8 z\" />\n        </marker>\n      </defs>\n      {axisArrows.map(({ value, startValue, direction, length }) => {\n        return (\n          <Group\n            key={`visx-axis-arrows--${value}`}\n            transform={`translate(${direction === 'right' ? paddingLeft : -paddingRight}, ${\n              orientation === 'top' ? -axisHeight : axisHeight\n            })`}\n          >\n            <Line\n              from={new Point({ x: axisArrowsScale(startValue), y: 0 })}\n              to={\n                new Point({\n                  x:\n                    direction === 'right'\n                      ? axisArrowsScale(startValue) + length\n                      : axisArrowsScale(startValue) - length,\n                  y: 0,\n                })\n              }\n              markerEnd=\"url(#axis-arrow-triangle)\"\n            />\n            <text>\n              <tspan\n                key={`text_${value}`}\n                x={axisArrowsScale(startValue)}\n                y={orientation === 'top' ? -labelArrowGap : labelArrowGapBottom}\n                textAnchor={direction === 'right' ? 'start' : 'end'}\n              >\n                {value}\n              </tspan>\n            </text>\n          </Group>\n        );\n      })}\n    </Group>\n  );\n};\n\nAxisArrows.propTypes = axisArrowsComponentPropTypes;\nAxisArrows.defaultProps = axisArrowsComponentDefaultProps;\n\nexport default AxisArrows;\n","import { useCallback, useMemo } from 'react';\nimport { Delaunay } from 'd3-delaunay';\nimport localPoint from '@visx/event/lib/localPoint';\nimport { isZeroOrDefined } from '../../util';\n\nexport const useDelaunay = ({\n  width,\n  height,\n  xScale,\n  yScale,\n  xVariable,\n  yVariable,\n  yTransformFunction,\n  data,\n  tooltipEvents,\n  tooltipPositionOverride,\n  hoverRadius,\n  debug,\n}) => {\n  // Filter out data which is undefined\n  const filteredData = useMemo(\n    () => data.filter((d) => isZeroOrDefined(d[xVariable]) && isZeroOrDefined(d[yVariable])),\n    [data, xVariable, yVariable]\n  );\n\n  // Generate Delaunay triangulation\n  const delaunay = useMemo(\n    () =>\n      Delaunay.from(\n        filteredData.filter((d) => isZeroOrDefined(d[xVariable]) && isZeroOrDefined(d[yVariable])),\n        (d) => xScale(d[xVariable]),\n        (d) => yScale(d[yVariable])\n      ),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [data, width, height, xScale, xVariable, yScale, yVariable]\n  );\n\n  // Generate path string for debugging if prop set\n  const pathString = useMemo(() => debug && delaunay.render(), [debug, delaunay]);\n\n  // Generate mouse move callback\n  const onMouseMove = useCallback(\n    (event, { top, left, height }) => {\n      // Get the point from the mouse event\n      const point = localPoint(event) || { x: 0, y: 0 };\n      // Recalculate the coordinates using left and top offsets (sum of padding and margins)\n      const [mx, my] = [point.x - left, point.y - top];\n      // Find the closest point\n      const pointIndex = delaunay.find(mx, my);\n      // Get the data associated with that point\n      const pointData = filteredData[pointIndex];\n      // Calculate the distance between the mouse point and the closest point\n      const pointDistance = Math.hypot(\n        mx - xScale(pointData[xVariable]),\n        my - yScale(pointData[yVariable])\n      );\n\n      let tooltipDataObject;\n      let tooltipPosition;\n\n      // If hover radius isn't set or the point distance is within the radius, update the state\n      if (!hoverRadius || pointDistance <= hoverRadius) {\n        const {\n          isHighlighted,\n          labelData: tooltipContent,\n          seriesName,\n          [yVariable]: dataY,\n          [xVariable]: dataX,\n        } = pointData;\n\n        tooltipDataObject =\n          // Check that highlighted lines are being used\n          isHighlighted !== undefined\n            ? isHighlighted\n              ? // Set the state to a specific data point in the series\n                {\n                  content: tooltipContent,\n                  dataYPosition: top + yScale(dataY),\n                  // This is used to reposition the tooltip\n                  maxOffsetY: top + height,\n                  data: { y: dataY, x: dataX, seriesName },\n                }\n              : // Only set the seriesName in the state so that the whole line is selected\n                { seriesName }\n            : {\n                content: tooltipContent,\n              };\n\n        tooltipPosition =\n          tooltipPositionOverride &&\n          tooltipPositionOverride({\n            data: pointData,\n            xScale: (x) => left + xScale(x),\n            yScale: (y) => top + yScale(y),\n          });\n      }\n\n      // Add the current mouse position to the state if in debug mode\n      const { onMouseOver } = tooltipEvents(\n        debug ? { ...tooltipDataObject, mousePoint: { mx, my } } : tooltipDataObject,\n        tooltipPosition\n      );\n\n      // Call the mouse over event\n      onMouseOver(event);\n    },\n    [\n      debug,\n      delaunay,\n      filteredData,\n      hoverRadius,\n      tooltipEvents,\n      tooltipPositionOverride,\n      xScale,\n      xVariable,\n      yScale,\n      yVariable,\n    ]\n  );\n\n  // Setup mouse out callback (which hides the tooltip)\n  const onMouseOut = useCallback(() => {\n    const { onMouseOut } = tooltipEvents();\n    // Call the mouse out event\n    onMouseOut();\n  }, [tooltipEvents]);\n\n  return { onMouseMove, onMouseOut, pathString };\n};\n\nexport default null;\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","const legendCategoricalData = {\n        'Whippet': '#1E558C',\n        'Greyhound': '#94d2e6',\n        'Saluki': '#1E8FCC',\n        'Italian Greyhound': '#B3325D',\n        'Afghan Houndey': '#FF75A3',\n        'Silken Windhoundey': '#D9CCC3',\n        'Kanni': '#AECC70',\n        'Galgo Español': '#F34D5B',\n    };\n\nexport default legendCategoricalData;","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import { scaleLinear } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateLinearScale = scaleOperator('domain', 'range', 'reverse', 'clamp', 'interpolate', 'nice', 'round', 'zero');\nexport default function createLinearScale(config) {\n  return updateLinearScale(scaleLinear(), config);\n}","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\nlet c = 0;\nconst blockSize = 4;\nconst base = 36;\nconst discreteValues = Math.pow(base, blockSize);\n\nconst pad = function pad(num, size) {\n\tconst s = \"000000000\" + num;\n\treturn s.substr(s.length-size);\n};\n\nconst randomBlock = function randomBlock() {\n\treturn pad((Math.random() *\n\t\tdiscreteValues << 0)\n\t\t.toString(base), blockSize);\n};\n\nconst safeCounter = () => {\n\tc = c < discreteValues ? c : 0;\n\tc++; // this is not subliminal\n\treturn c - 1;\n};\n\nconst api = function cuid() {\n\t// Starting with a lowercase letter makes\n\t// it HTML element ID friendly.\n\t// hard-coded allows for sequential access\n\tconst letter = 'c';\n\n\t// timestamp\n\t// warning: this exposes the exact date and time\n\t// that the uid was created.\n\tconst timestamp = new Date().getTime().toString(base);\n\n\n\t// A few chars to generate distinct ids for different\n\t// clients (so different computers are far less\n\t// likely to generate the same id)\n\tconst fingerprint = api.fingerprint();\n\n\t// Grab some more chars from Math.random()\n\tconst random = randomBlock() + randomBlock();\n\n\t// Prevent same-machine collisions.\n\tconst counter = pad(safeCounter().toString(base), blockSize);\n\n\treturn letter + timestamp + counter + fingerprint + random;\n};\n\napi.slug = function slug() {\n\tconst date = new Date().getTime().toString(36);\n\n\tconst print = api.fingerprint().slice(0,1) +\n\t\tapi.fingerprint().slice(-1);\n\n\tconst random = randomBlock().slice(-2);\n\n\tconst counter = safeCounter().toString(36).slice(-4);\n\n\treturn date.slice(-2) +\n\t\tcounter + print + random;\n};\n\napi.globalCount = function globalCount() {\n\t// We want to cache the results of this\n\tconst cache = (function calc() {\n\t\tlet count = 0;\n\n\t\tfor (const i in window) { // eslint-disable-line no-unused-vars, guard-for-in\n\t\t\tcount++;\n\t\t}\n\n\t\treturn count;\n\t}());\n\n\tapi.globalCount = () => cache;\n\treturn cache;\n};\n\napi.fingerprint = function browserPrint() {\n\treturn pad((navigator.mimeTypes.length +\n\t\tnavigator.userAgent.length).toString(36) +\n\t\tapi.globalCount().toString(36), 4);\n};\n\nexport { api };\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n  return obj != null && obj.constructor != null &&\n    typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if (own.call(value, 'position') || own.call(value, 'type')) {\n    return position(value.position)\n  }\n\n  // Position.\n  if (own.call(value, 'start') || own.call(value, 'end')) {\n    return position(value)\n  }\n\n  // Point.\n  if (own.call(value, 'line') || own.call(value, 'column')) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\nfunction point(point) {\n  if (!point || typeof point !== 'object') {\n    point = {}\n  }\n\n  return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n  if (!pos || typeof pos !== 'object') {\n    pos = {}\n  }\n\n  return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n  var index = -1\n  var size = 0\n\n  while (++index < chunks.length) {\n    size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n  }\n\n  return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n  var jumps = {}\n  var index = -1\n  var event\n  var lineIndex\n  var otherIndex\n  var otherEvent\n  var parameters\n  var subevents\n  var more\n\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index]\n    }\n\n    event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n\n    if (\n      index &&\n      event[1].type === 'chunkFlow' &&\n      events[index - 1][1].type === 'listItemPrefix'\n    ) {\n      subevents = event[1]._tokenizer.events\n      otherIndex = 0\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'lineEndingBlank'\n      ) {\n        otherIndex += 2\n      }\n\n      if (\n        otherIndex < subevents.length &&\n        subevents[otherIndex][1].type === 'content'\n      ) {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === 'content') {\n            break\n          }\n\n          if (subevents[otherIndex][1].type === 'chunkText') {\n            subevents[otherIndex][1].isInFirstContentOfListItem = true\n            otherIndex++\n          }\n        }\n      }\n    } // Enter.\n\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        assign(jumps, subcontent(events, index))\n        index = jumps[index]\n        more = true\n      }\n    } // Exit.\n    else if (event[1]._container || event[1]._movePreviousLineEndings) {\n      otherIndex = index\n      lineIndex = undefined\n\n      while (otherIndex--) {\n        otherEvent = events[otherIndex]\n\n        if (\n          otherEvent[1].type === 'lineEnding' ||\n          otherEvent[1].type === 'lineEndingBlank'\n        ) {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events[lineIndex][1].type = 'lineEndingBlank'\n            }\n\n            otherEvent[1].type = 'lineEnding'\n            lineIndex = otherIndex\n          }\n        } else {\n          break\n        }\n      }\n\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n        parameters = events.slice(lineIndex, index)\n        parameters.unshift(event)\n        chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n      }\n    }\n  }\n\n  return !more\n}\n\nfunction subcontent(events, eventIndex) {\n  var token = events[eventIndex][1]\n  var context = events[eventIndex][2]\n  var startPosition = eventIndex - 1\n  var startPositions = []\n  var tokenizer =\n    token._tokenizer || context.parser[token.contentType](token.start)\n  var childEvents = tokenizer.events\n  var jumps = []\n  var gaps = {}\n  var stream\n  var previous\n  var index\n  var entered\n  var end\n  var adjust // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n\n  while (token) {\n    // Find the position of the event for this token.\n    while (events[++startPosition][1] !== token) {\n      // Empty.\n    }\n\n    startPositions.push(startPosition)\n\n    if (!token._tokenizer) {\n      stream = context.sliceStream(token)\n\n      if (!token.next) {\n        stream.push(null)\n      }\n\n      if (previous) {\n        tokenizer.defineSkip(token.start)\n      }\n\n      if (token.isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true\n      }\n\n      tokenizer.write(stream)\n\n      if (token.isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined\n      }\n    } // Unravel the next token.\n\n    previous = token\n    token = token.next\n  } // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n\n  token = previous\n  index = childEvents.length\n\n  while (index--) {\n    // Make sure we’ve at least seen something (final eol is part of the last\n    // token).\n    if (childEvents[index][0] === 'enter') {\n      entered = true\n    } else if (\n      // Find a void token that includes a break.\n      entered &&\n      childEvents[index][1].type === childEvents[index - 1][1].type &&\n      childEvents[index][1].start.line !== childEvents[index][1].end.line\n    ) {\n      add(childEvents.slice(index + 1, end))\n      // Help GC.\n      token._tokenizer = token.next = undefined\n      token = token.previous\n      end = index + 1\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n  add(childEvents.slice(0, end))\n  index = -1\n  adjust = 0\n\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n    adjust += jumps[index][1] - jumps[index][0] - 1\n  }\n\n  return gaps\n\n  function add(slice) {\n    var start = startPositions.pop()\n    jumps.unshift([start, start + slice.length - 1])\n    chunkedSplice(events, start, 2, slice)\n  }\n}\n\nmodule.exports = subtokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n  resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n  return {\n    tokenize: initializeText,\n    resolveAll: createResolver(\n      field === 'text' ? resolveAllLineSuffixes : undefined\n    )\n  }\n\n  function initializeText(effects) {\n    var self = this\n    var constructs = this.parser.constructs[field]\n    var text = effects.attempt(constructs, start, notText)\n    return start\n\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code)\n    }\n\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code)\n        return\n      }\n\n      effects.enter('data')\n      effects.consume(code)\n      return data\n    }\n\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit('data')\n        return text(code)\n      } // Data.\n\n      effects.consume(code)\n      return data\n    }\n\n    function atBreak(code) {\n      var list = constructs[code]\n      var index = -1\n\n      if (code === null) {\n        return true\n      }\n\n      if (list) {\n        while (++index < list.length) {\n          if (\n            !list[index].previous ||\n            list[index].previous.call(self, self.previous)\n          ) {\n            return true\n          }\n        }\n      }\n    }\n  }\n}\n\nfunction createResolver(extraResolver) {\n  return resolveAllText\n\n  function resolveAllText(events, context) {\n    var index = -1\n    var enter // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === 'data') {\n          enter = index\n          index++\n        }\n      } else if (!events[index] || events[index][1].type !== 'data') {\n        // Don’t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end\n          events.splice(enter + 2, index - enter - 2)\n          index = enter + 2\n        }\n\n        enter = undefined\n      }\n    }\n\n    return extraResolver ? extraResolver(events, context) : events\n  }\n} // A rather ugly set of instructions which again looks at chunks in the input\n// stream.\n// The reason to do this here is that it is *much* faster to parse in reverse.\n// And that we can’t hook into `null` to split the line suffix before an EOF.\n// To do: figure out if we can make this into a clean utility, or even in core.\n// As it will be useful for GFMs literal autolink extension (and maybe even\n// tables?)\n\nfunction resolveAllLineSuffixes(events, context) {\n  var eventIndex = -1\n  var chunks\n  var data\n  var chunk\n  var index\n  var bufferIndex\n  var size\n  var tabs\n  var token\n\n  while (++eventIndex <= events.length) {\n    if (\n      (eventIndex === events.length ||\n        events[eventIndex][1].type === 'lineEnding') &&\n      events[eventIndex - 1][1].type === 'data'\n    ) {\n      data = events[eventIndex - 1][1]\n      chunks = context.sliceStream(data)\n      index = chunks.length\n      bufferIndex = -1\n      size = 0\n      tabs = undefined\n\n      while (index--) {\n        chunk = chunks[index]\n\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length\n\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++\n            bufferIndex--\n          }\n\n          if (bufferIndex) break\n          bufferIndex = -1\n        } // Number\n        else if (chunk === -2) {\n          tabs = true\n          size++\n        } else if (chunk === -1);\n        else {\n          // Replacement character, exit.\n          index++\n          break\n        }\n      }\n\n      if (size) {\n        token = {\n          type:\n            eventIndex === events.length || tabs || size < 2\n              ? 'lineSuffix'\n              : 'hardBreakTrailing',\n          start: {\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size,\n            _index: data.start._index + index,\n            _bufferIndex: index\n              ? bufferIndex\n              : data.start._bufferIndex + bufferIndex\n          },\n          end: shallow(data.end)\n        }\n        data.end = shallow(token.start)\n\n        if (data.start.offset === data.end.offset) {\n          assign(data, token)\n        } else {\n          events.splice(\n            eventIndex,\n            0,\n            ['enter', token, context],\n            ['exit', token, context]\n          )\n          eventIndex += 2\n        }\n      }\n\n      eventIndex++\n    }\n  }\n\n  return events\n}\n\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code < 32 || code === 127\n  )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 //  ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n  var entity = '&' + characters + ';'\n  var char\n\n  el = el || document.createElement('i')\n  el.innerHTML = entity\n  char = el.textContent\n\n  // Some entities do not require the closing semicolon (`&not` - for instance),\n  // which leads to situations where parsing the assumed entity of &notit; will\n  // result in the string `¬it;`.  When we encounter a trailing semicolon after\n  // parsing and the entity to decode was not a semicolon (`&semi;`), we can\n  // assume that the matching was incomplete\n  if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the entity was not valid\n  return char === entity ? false : char\n}\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nvar asciiControl = require('../character/ascii-control.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n  effects,\n  ok,\n  nok,\n  type,\n  literalType,\n  literalMarkerType,\n  rawType,\n  stringType,\n  max\n) {\n  var limit = max || Infinity\n  var balance = 0\n  return start\n\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type)\n      effects.enter(literalType)\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      return destinationEnclosedBefore\n    }\n\n    if (asciiControl(code) || code === 41) {\n      return nok(code)\n    }\n\n    effects.enter(type)\n    effects.enter(rawType)\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationRaw(code)\n  }\n\n  function destinationEnclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType)\n      effects.consume(code)\n      effects.exit(literalMarkerType)\n      effects.exit(literalType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return destinationEnclosed(code)\n  }\n\n  function destinationEnclosed(code) {\n    if (code === 62) {\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      return destinationEnclosedBefore(code)\n    }\n\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n  }\n\n  function destinationEnclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code)\n      return destinationEnclosed\n    }\n\n    return destinationEnclosed(code)\n  }\n\n  function destinationRaw(code) {\n    if (code === 40) {\n      if (++balance > limit) return nok(code)\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === 41) {\n      if (!balance--) {\n        effects.exit('chunkString')\n        effects.exit(stringType)\n        effects.exit(rawType)\n        effects.exit(type)\n        return ok(code)\n      }\n\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      if (balance) return nok(code)\n      effects.exit('chunkString')\n      effects.exit(stringType)\n      effects.exit(rawType)\n      effects.exit(type)\n      return ok(code)\n    }\n\n    if (asciiControl(code)) return nok(code)\n    effects.consume(code)\n    return code === 92 ? destinationRawEscape : destinationRaw\n  }\n\n  function destinationRawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code)\n      return destinationRaw\n    }\n\n    return destinationRaw(code)\n  }\n}\n\nmodule.exports = destinationFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n  var self = this\n  var size = 0\n  var data\n  return start\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    effects.enter(stringType)\n    return atBreak\n  }\n\n  function atBreak(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      (code === 93 && !data) ||\n      /* c8 ignore next */\n      (code === 94 &&\n        /* c8 ignore next */\n        !size &&\n        /* c8 ignore next */\n        '_hiddenFootnoteSupport' in self.parser.constructs) ||\n      size > 999\n    ) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.exit(stringType)\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return atBreak\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return label(code)\n  }\n\n  function label(code) {\n    if (\n      code === null ||\n      code === 91 ||\n      code === 93 ||\n      markdownLineEnding(code) ||\n      size++ > 999\n    ) {\n      effects.exit('chunkString')\n      return atBreak(code)\n    }\n\n    effects.consume(code)\n    data = data || !markdownSpace(code)\n    return code === 92 ? labelEscape : label\n  }\n\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code)\n      size++\n      return label\n    }\n\n    return label(code)\n  }\n}\n\nmodule.exports = labelFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n  var seen\n  return start\n\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      seen = true\n      return start\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(\n        effects,\n        start,\n        seen ? 'linePrefix' : 'lineSuffix'\n      )(code)\n    }\n\n    return ok(code)\n  }\n}\n\nmodule.exports = whitespaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter(type)\n    effects.enter(markerType)\n    effects.consume(code)\n    effects.exit(markerType)\n    marker = code === 40 ? 41 : code\n    return atFirstTitleBreak\n  }\n\n  function atFirstTitleBreak(code) {\n    if (code === marker) {\n      effects.enter(markerType)\n      effects.consume(code)\n      effects.exit(markerType)\n      effects.exit(type)\n      return ok\n    }\n\n    effects.enter(stringType)\n    return atTitleBreak(code)\n  }\n\n  function atTitleBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType)\n      return atFirstTitleBreak(marker)\n    }\n\n    if (code === null) {\n      return nok(code)\n    } // Note: blank lines can’t exist in content.\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, atTitleBreak, 'linePrefix')\n    }\n\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return title(code)\n  }\n\n  function title(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      return atTitleBreak(code)\n    }\n\n    effects.consume(code)\n    return code === 92 ? titleEscape : title\n  }\n\n  function titleEscape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code)\n      return title\n    }\n\n    return title(code)\n  }\n}\n\nmodule.exports = titleFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  var size = 0\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('thematicBreak')\n    marker = code\n    return atBreak(code)\n  }\n\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter('thematicBreakSequence')\n      return sequence(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, 'whitespace')(code)\n    }\n\n    if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n      return nok(code)\n    }\n\n    effects.exit('thematicBreak')\n    return ok(code)\n  }\n\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      size++\n      return sequence\n    }\n\n    effects.exit('thematicBreakSequence')\n    return atBreak(code)\n  }\n}\n\nmodule.exports = thematicBreak\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var af = moment.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var ar = moment.defineLocale('ar', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n            5: '5',\n            6: '6',\n            7: '7',\n            8: '8',\n            9: '9',\n            0: '0',\n        },\n        pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                ? 1\n                : n === 2\n                ? 2\n                : n % 100 >= 3 && n % 100 <= 10\n                ? 3\n                : n % 100 >= 11\n                ? 4\n                : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale  :  Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    var az = moment.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n            '_'\n        ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'bir neçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n            '_'\n        ),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bg = moment.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            w: 'седмица',\n            ww: '%d седмици',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var bm = moment.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bn = moment.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n            '_'\n        ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    var bnBd = moment.defineLocale('bn-bd', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n            '_'\n        ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n\n        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'রাত') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ভোর') {\n                return hour;\n            } else if (meridiem === 'সকাল') {\n                return hour;\n            } else if (meridiem === 'দুপুর') {\n                return hour >= 3 ? hour : hour + 12;\n            } else if (meridiem === 'বিকাল') {\n                return hour + 12;\n            } else if (meridiem === 'সন্ধ্যা') {\n                return hour + 12;\n            }\n        },\n\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 6) {\n                return 'ভোর';\n            } else if (hour < 12) {\n                return 'সকাল';\n            } else if (hour < 15) {\n                return 'দুপুর';\n            } else if (hour < 18) {\n                return 'বিকাল';\n            } else if (hour < 20) {\n                return 'সন্ধ্যা';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '༡',\n            2: '༢',\n            3: '༣',\n            4: '༤',\n            5: '༥',\n            6: '༦',\n            7: '༧',\n            8: '༨',\n            9: '༩',\n            0: '༠',\n        },\n        numberMap = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    var bo = moment.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n            '_'\n        ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    var br = moment.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ca = moment.defineLocale('ca', {\n        months: {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                '_'\n            ),\n            format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n            '_'\n        ),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cv = moment.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n            '_'\n        ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                    ? 'тан'\n                    : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var da = moment.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n            '_'\n        ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime,\n            mm: '%d Minuten',\n            h: processRelativeTime,\n            hh: '%d Stunden',\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            w: processRelativeTime,\n            ww: '%d Wochen',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    var dv = moment.defineLocale('dv', {\n        months: months,\n        monthsShort: months,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n            '_'\n        ),\n        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n            '_'\n        ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enAu = moment.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enCa = moment.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enGb = moment.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIe = moment.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIl = moment.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enIn = moment.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enNz = moment.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var enSg = moment.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eo = moment.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esMx = moment.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n            '_'\n        ),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n            '_'\n        ),\n        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n            '_'\n        ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: '%d päeva',\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var eu = moment.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n            '_'\n        ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '۱',\n            2: '۲',\n            3: '۳',\n            4: '۴',\n            5: '۵',\n            6: '۶',\n            7: '۷',\n            8: '۸',\n            9: '۹',\n            0: '۰',\n        },\n        numberMap = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    var fa = moment.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n            ' '\n        ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n            '_'\n        ),\n        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n            '_'\n        ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fil = moment.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var fo = moment.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    var fr = moment.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            w: 'une semaine',\n            ww: '%d semaines',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n            '_'\n        );\n\n    var fy = moment.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var gl = moment.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomDeva = moment.defineLocale('gom-deva', {\n        months: {\n            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                '_'\n            ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months: {\n            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                '_'\n            ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '૧',\n            2: '૨',\n            3: '૩',\n            4: '૪',\n            5: '૫',\n            6: '૬',\n            7: '૭',\n            8: '૮',\n            9: '૯',\n            0: '૦',\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var he = moment.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n            '_'\n        ),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        },\n        monthsParse = [\n            /^जन/i,\n            /^फ़र|फर/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सितं|सित/i,\n            /^अक्टू/i,\n            /^नव|नवं/i,\n            /^दिसं|दिस/i,\n        ],\n        shortMonthsParse = [\n            /^जन/i,\n            /^फ़र/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सित/i,\n            /^अक्टू/i,\n            /^नव/i,\n            /^दिस/i,\n        ];\n\n    var hi = moment.defineLocale('hi', {\n        months: {\n            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n                '_'\n            ),\n            standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n            '_'\n        ),\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: shortMonthsParse,\n\n        monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n        monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt  : https://github.com/passatgt\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n        ' '\n    );\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n            '_'\n        ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var id = moment.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n            '_'\n        ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: 'klukkustund',\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var it = moment.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                ? ' '\n                                : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            w: 'una settimana',\n            ww: '%d settimane',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var itCh = moment.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ja = moment.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var jv = moment.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ka = moment.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                '_'\n            ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n                    $0,\n                    $1,\n                    $2\n                ) {\n                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                });\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '១',\n            2: '២',\n            3: '៣',\n            4: '៤',\n            5: '៥',\n            6: '៦',\n            7: '៧',\n            8: '៨',\n            9: '៩',\n            0: '០',\n        },\n        numberMap = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '೧',\n            2: '೨',\n            3: '೩',\n            4: '೪',\n            5: '೫',\n            6: '೬',\n            7: '೭',\n            8: '೮',\n            9: '೯',\n            0: '೦',\n        },\n        numberMap = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    var kn = moment.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ko = moment.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    var ku = moment.defineLocale('ku', {\n        months: months,\n        monthsShort: months,\n        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n            '_'\n        ),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n            '_'\n        ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime,\n            mm: '%d Minutten',\n            h: processRelativeTime,\n            hh: '%d Stonnen',\n            d: processRelativeTime,\n            dd: '%d Deeg',\n            M: processRelativeTime,\n            MM: '%d Méint',\n            y: processRelativeTime,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var lo = moment.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n            ? forms(key)[1]\n            : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                '_'\n            ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate,\n            m: translateSingular,\n            mm: translate,\n            h: translateSingular,\n            hh: translate,\n            d: translateSingular,\n            dd: translate,\n            M: translateSingular,\n            MM: translate,\n            y: translateSingular,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n            '_'\n        ),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n            '_'\n        ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mk = moment.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ml = moment.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n            '_'\n        ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ms = moment.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var msMy = moment.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var mt = moment.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '၁',\n            2: '၂',\n            3: '၃',\n            4: '၄',\n            5: '၅',\n            6: '၆',\n            7: '၇',\n            8: '၈',\n            9: '၉',\n            0: '၀',\n        },\n        numberMap = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//!           Sigurd Gartmann : https://github.com/sigurdga\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nb = moment.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dager',\n            w: 'en uke',\n            ww: '%d uker',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    var ne = moment.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            w: 'één week',\n            ww: '%d weken',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^jan/i,\n            /^feb/i,\n            /^maart|mrt.?$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//!           Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var nn = moment.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            w: 'ei veke',\n            ww: '%d veker',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ocLnc = moment.defineLocale('oc-lnc', {\n        months: {\n            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                '_'\n            ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                    ? 'n'\n                    : number === 3\n                    ? 'r'\n                    : number === 4\n                    ? 't'\n                    : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '੧',\n            2: '੨',\n            3: '੩',\n            4: '੪',\n            5: '੫',\n            6: '੬',\n            7: '੭',\n            8: '੮',\n            9: '੯',\n            0: '੦',\n        },\n        numberMap = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n            '_'\n        ),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n            '_'\n        ),\n        monthsParse = [\n            /^sty/i,\n            /^lut/i,\n            /^mar/i,\n            /^kwi/i,\n            /^maj/i,\n            /^cze/i,\n            /^lip/i,\n            /^sie/i,\n            /^wrz/i,\n            /^paź/i,\n            /^lis/i,\n            /^gru/i,\n        ];\n    function plural(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'ww':\n                return result + (plural(number) ? 'tygodnie' : 'tygodni');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: '1 dzień',\n            dd: '%d dni',\n            w: 'tydzień',\n            ww: translate,\n            M: 'miesiąc',\n            MM: translate,\n            y: 'rok',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var pt = moment.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            w: 'uma semana',\n            ww: '%d semanas',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        invalidDate: 'Data inválida',\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                ww: 'săptămâni',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural,\n            m: 'un minut',\n            mm: relativeTimeWithPlural,\n            h: 'o oră',\n            hh: relativeTimeWithPlural,\n            d: 'o zi',\n            dd: relativeTimeWithPlural,\n            w: 'o săptămână',\n            ww: relativeTimeWithPlural,\n            M: 'o lună',\n            MM: relativeTimeWithPlural,\n            y: 'un an',\n            yy: relativeTimeWithPlural,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            ww: 'неделя_недели_недель',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                '_'\n            ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n        },\n        weekdays: {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                '_'\n            ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'час',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            w: 'неделя',\n            ww: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    var sd = moment.defineLocale('sd', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var se = moment.defineLocale('se', {\n        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n            '_'\n        ),\n        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n            '_'\n        ),\n        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n            '_'\n        ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n            '_'\n        ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n            '_'\n        ),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return n > 1 && n < 5;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months: months,\n        monthsShort: monthsShort,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate,\n            ss: translate,\n            m: translate,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: translate,\n            dd: translate,\n            M: translate,\n            MM: translate,\n            y: translate,\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sq = moment.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                ? wordKey[1]\n                : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'дан',\n            dd: translator.translate,\n            M: 'месец',\n            MM: translator.translate,\n            y: 'годину',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ss = moment.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sv = moment.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                        ? ':a'\n                        : b === 2\n                        ? ':a'\n                        : b === 3\n                        ? ':e'\n                        : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var sw = moment.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '௧',\n            2: '௨',\n            3: '௩',\n            4: '௪',\n            5: '௫',\n            6: '௬',\n            7: '௭',\n            8: '௮',\n            9: '௯',\n            0: '௦',\n        },\n        numberMap = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    var ta = moment.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n            '_'\n        ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var te = moment.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n            '_'\n        ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tet = moment.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months: {\n            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n                '_'\n            ),\n            standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Фардо соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var th = moment.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            w: '1 สัปดาห์',\n            ww: '%d สัปดาห์',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    var tk = moment.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'waQ'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'nem'\n                : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                ? time.slice(0, -3) + 'wen'\n                : output.indexOf('DIS') !== -1\n                ? time.slice(0, -3) + 'ben'\n                : time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate,\n            m: 'wa’ tup',\n            mm: translate,\n            h: 'wa’ rep',\n            hh: translate,\n            d: 'wa’ jaj',\n            dd: translate,\n            M: 'wa’ jar',\n            MM: translate,\n            y: 'wa’ DIS',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//!           Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            w: 'bir hafta',\n            ww: '%d hafta',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime,\n            ss: processRelativeTime,\n            m: processRelativeTime,\n            mm: processRelativeTime,\n            h: processRelativeTime,\n            hh: processRelativeTime,\n            d: processRelativeTime,\n            dd: processRelativeTime,\n            M: processRelativeTime,\n            MM: processRelativeTime,\n            y: processRelativeTime,\n            yy: processRelativeTime,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n            ? format[key][0]\n            : format[key][1];\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzm = moment.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n            ? forms[1]\n            : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                    '_'\n                ),\n                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                    '_'\n                ),\n                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                    '_'\n                ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n            ? 'genitive'\n            : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                '_'\n            ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural,\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: 'годину',\n            hh: relativeTimeWithPlural,\n            d: 'день',\n            dd: relativeTimeWithPlural,\n            M: 'місяць',\n            MM: relativeTimeWithPlural,\n            y: 'рік',\n            yy: relativeTimeWithPlural,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var months = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    var ur = moment.defineLocale('ur', {\n        months: months,\n        monthsShort: months,\n        weekdays: days,\n        weekdaysShort: days,\n        weekdaysMin: days,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uz = moment.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n            '_'\n        ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var vi = moment.defineLocale('vi', {\n        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n            '_'\n        ),\n        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            w: 'một tuần',\n            ww: '%d tuần',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n            '_'\n        ),\n        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n            '_'\n        ),\n        monthsParseExact: true,\n        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n            '_'\n        ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var yo = moment.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            w: '1 周',\n            ww: '%d 周',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhMo = moment.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    //! moment.js locale configuration\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    return zhTw;\n\n})));\n","/**\n * @file\n * vv-axis\n */\n\nimport React, { useContext, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Axis as VisxAxis, AxisTop, AxisRight, AxisBottom, AxisLeft } from '@visx/axis';\nimport { scaleOrdinal, inferScaleType } from '@visx/scale';\nimport { Group } from '@visx/group';\nimport { PlotContext } from '../chart-frame/plot-context';\nimport AxisArrows from './arrows';\nimport AxisBanding from './banding';\nimport {\n  webAxisStyles,\n  socialAxisStyles,\n  videoAxisStyles,\n  printAxisStyles,\n  combineStyles,\n} from './styles';\nimport { approximateTextSize } from '../../util/victory-textsize';\nimport { identity, getResponsiveValues } from '../../util';\nimport { axisComponentPropTypes } from '../prop-types';\nimport { axisComponentDefaultProps } from '../default-props';\n\nconst invertAxis = (invertScale, plotScale) => {\n  const newScale = plotScale.copy();\n  if (invertScale) {\n    const newRange = plotScale.range().reverse();\n    newScale.range(newRange);\n    return newScale;\n  }\n  return plotScale;\n};\n\nconst defaultTickComponent = ({ formattedValue, ...tickProps }) => {\n  return <text {...tickProps}>{formattedValue}</text>;\n};\n\ndefaultTickComponent.propTypes = {\n  formattedValue: PropTypes.string,\n};\n\ndefaultTickComponent.defaultProps = {\n  formattedValue: '',\n};\n\nconst Axis = ({\n  additionalAxisStyles,\n  automaticallyAddPaddingForTicks,\n  automaticallySetRange,\n  axisArrows,\n  axisArrowsPadding,\n  axisBanding,\n  fullLengthTicks,\n  hideAxisLine,\n  hideEndTicks,\n  hideTicks,\n  invertScale,\n  label,\n  labelOffset,\n  labelProps,\n  numTicks,\n  orientation,\n  scale,\n  tickComponent,\n  tickFormat,\n  tickLabelPadding = 10,\n  tickLabelProps,\n  tickLabelVariable,\n  tickLengthOverride,\n  tickPositionVariable,\n  tickValues,\n  additionalTickValues,\n  type,\n}) => {\n  const { frameWidth, width, height, updatePadding } = useContext(PlotContext);\n\n  // If using tickPositionVariable do not format the tick label\n  const format = tickPositionVariable\n    ? identity\n    : // Otherwise use the passed tickFormat function or the tickFormat function already set in the scale\n      tickFormat || (scale.tickFormat ? scale.tickFormat() : identity);\n\n  // Combine tick values with additional tick values\n  const allTickValues = additionalTickValues\n    ? // Combine with additional tick values and get unique set\n      [...new Set([...scale.ticks(), ...(additionalTickValues || [])])].sort((a, b) =>\n        // Sort from largest to smallest and invert if the range is inverted\n        scale.range()[0] < scale.range()[1] ? scale(a) - scale(b) : scale(b) - scale(a)\n      )\n    : tickValues;\n\n  // Extract the labels and positions from the tickValues if tickPositionVariable is set\n  const tickLabels = tickPositionVariable\n    ? allTickValues.map((d) => d[tickLabelVariable])\n    : allTickValues;\n  const tickPositions = tickPositionVariable\n    ? allTickValues.map((d) => d[tickPositionVariable])\n    : allTickValues;\n  // Only remove end ticks if prop set and no custom tick labels are being used\n  const tickValuesToUse =\n    tickLabels ||\n    (hideEndTicks && scale.ticks().slice(1, -1)) ||\n    (scale.ticks ? scale.ticks() : allTickValues) ||\n    scale.domain();\n\n  /* If tickPositionVariable is set, setup the ordinal scale to be used for tick positions instead.\n    Use the passed scale to calculate the position of each tick from the extracted tick positions\n  */\n  const tickScale = tickPositionVariable\n    ? scaleOrdinal({ domain: tickLabels, range: tickPositions.map((position) => scale(position)) })\n    : scale;\n\n  // Split the axis label into multiple lines\n  const labelLines = label ? label.split('|').map((l) => l.trim()) : [];\n  const numberOfLabelLines = labelLines.length;\n\n  // Get responsive values for axis\n  const { tickLength: responsiveTickLength, axisLabelStyle, tickLabelStyle } = getResponsiveValues(\n    frameWidth\n  );\n  const tickLength =\n    typeof tickLengthOverride === 'number' ? tickLengthOverride : responsiveTickLength;\n\n  // Get an array of the tick labels to be used to calculate the max tick width\n  const values = tickValuesToUse || (scale.ticks ? scale.ticks(numTicks) : scale.domain());\n\n  // Calculate max tick width for left/right padding\n  const maxTickWidth =\n    Math.max(\n      ...values\n        .map((d, i) => format(d, i))\n        .map(\n          (d) =>\n            approximateTextSize(d, {\n              fontFamily: 'MetricWeb-Regular',\n              fontSize: tickLabelStyle.fontSize,\n            }).width\n        )\n    ) +\n    // Tick length is ignored if using full length ticks\n    (fullLengthTicks ? 0 : tickLength) +\n    // This is ≅ 0.25em in VisX\n    tickLabelPadding;\n\n  /* VisX Axis components support passing a function, tickLabelProps, which can be used\n    to set additional props for each tick label (based on the label text and index if required).\n    We create a function which given a set of initial props for each tick label will return another\n    function which combines those initial props, any responsive tick label styles from getResponsiveValues\n    and any generated per tick label props from a tickLabelProps function if that prop is set\n  */\n  const calculateTickLabelProps = (initialProps) => (tickLabel, index) => {\n    const generatedTickLabelProps = tickLabelProps\n      ? tickLabelProps(tickLabel, index, tickLabelStyle)\n      : {};\n    return {\n      // Include default props for tick label e.g. pass dx/dy for each axis orientation\n      ...initialProps,\n      style: {\n        ...initialProps.style,\n        ...tickLabelStyle,\n      },\n      ...generatedTickLabelProps,\n    };\n  };\n\n  // Calculate the total height of the axis\n  const heightOfTicksWithLabels = tickLabelStyle.fontSize + (fullLengthTicks ? 0 : tickLength);\n  const heightOfAxisLabel = axisLabelStyle.fontSize * numberOfLabelLines;\n  const totalAxisHeight =\n    heightOfTicksWithLabels + (numberOfLabelLines > 0 ? (labelOffset || 0) + heightOfAxisLabel : 0);\n  const totalAxisWidth =\n    maxTickWidth + (numberOfLabelLines > 0 ? (labelOffset || 0) + heightOfAxisLabel : 0);\n\n  // Get css for frame and combine with any passed additional axis styles\n  let initialCss = webAxisStyles;\n  switch (type) {\n    case 'print':\n      initialCss = printAxisStyles;\n      break;\n    case 'social':\n      initialCss = socialAxisStyles;\n      break;\n    case 'video':\n      initialCss = videoAxisStyles;\n      break;\n    case 'web':\n    default:\n      initialCss = webAxisStyles;\n  }\n  const css = additionalAxisStyles ? combineStyles(initialCss, additionalAxisStyles) : initialCss;\n\n  // Update top or bottom padding\n  useEffect(() => {\n    if (automaticallyAddPaddingForTicks) {\n      if (orientation === 'bottom') {\n        updatePadding({ bottom: totalAxisHeight });\n      }\n      if (orientation === 'top') {\n        updatePadding({ top: totalAxisHeight });\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [automaticallyAddPaddingForTicks, orientation, totalAxisHeight]);\n\n  // Update padding for ticks if left or right axis\n  useEffect(() => {\n    if (automaticallyAddPaddingForTicks) {\n      if (orientation === 'left') {\n        updatePadding({ left: totalAxisWidth });\n      }\n      if (orientation === 'right') {\n        updatePadding({ right: totalAxisWidth });\n      }\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [automaticallyAddPaddingForTicks, maxTickWidth, orientation]);\n\n  // Axis banding component is passed the same prop for all axis orientations\n  const axisBandingElement = axisBanding ? (\n    <AxisBanding\n      bandingScale={scale}\n      width={width}\n      height={height}\n      orientation={orientation}\n      tickValues={tickValues || values}\n      structure={tickPositionVariable ? 'custom' : 'fixed'}\n      tickPositionVariable={tickPositionVariable}\n    />\n  ) : null;\n\n  switch (orientation) {\n    case 'top':\n      if (automaticallySetRange && !tickPositionVariable) scale.range([0, width]);\n      return (\n        <Group css={css}>\n          {axisBandingElement}\n          <AxisTop\n            top={fullLengthTicks ? height : 0}\n            hideAxisLine={hideAxisLine || fullLengthTicks}\n            hideTicks={hideTicks}\n            scale={invertAxis(invertScale, tickScale || scale)}\n            tickComponent={tickComponent || defaultTickComponent}\n            tickFormat={format}\n            tickLabelProps={calculateTickLabelProps({ dy: '-0.25em' })}\n            tickLength={fullLengthTicks ? height : tickLength}\n            tickValues={tickValuesToUse}\n          />\n          {label && (\n            <Group\n              className=\"visx-axis-label\"\n              top={\n                axisLabelStyle.fontSize -\n                (labelOffset || 0) -\n                heightOfTicksWithLabels -\n                heightOfAxisLabel\n              }\n              left={width / 2}\n            >\n              <text\n                {...labelProps}\n                style={{ fontSize: axisLabelStyle.fontSize, textAnchor: 'middle' }}\n              >\n                {labelLines.map((text, i) => (\n                  <tspan key={`text_${text}`} x={0} dy={i === 0 ? 0 : axisLabelStyle.fontSize}>\n                    {text}\n                  </tspan>\n                ))}\n              </text>\n            </Group>\n          )}\n          {axisArrows && (\n            <Group className=\"visx-axis-arrows\" top={labelOffset || 0}>\n              <AxisArrows\n                axisArrows={axisArrows}\n                axisArrowsPadding={axisArrowsPadding}\n                axisArrowsScale={scale}\n                orientation={orientation}\n              />\n            </Group>\n          )}\n        </Group>\n      );\n    case 'right':\n      if (automaticallySetRange && !tickPositionVariable && inferScaleType(scale) !== 'band')\n        scale.range([height, 0]);\n      if (automaticallySetRange && (tickPositionVariable || inferScaleType(scale) === 'band'))\n        scale.range([0, height]);\n      return (\n        <Group css={css}>\n          {axisBandingElement}\n          <AxisRight\n            left={fullLengthTicks ? 0 : width}\n            hideAxisLine={hideAxisLine || fullLengthTicks}\n            hideTicks={hideTicks}\n            scale={invertAxis(invertScale, tickScale || scale)}\n            tickComponent={tickComponent || defaultTickComponent}\n            tickFormat={format}\n            tickLabelProps={calculateTickLabelProps({ dx: '0.25em', dy: '0.25em' })}\n            tickLength={fullLengthTicks ? width : tickLength}\n            tickValues={tickValuesToUse}\n          />\n          {label && (\n            <Group\n              className=\"vx-axis-label\"\n              transform={`translate(${\n                fullLengthTicks\n                  ? maxTickWidth +\n                    (labelOffset || 0) +\n                    (numberOfLabelLines - 1) * axisLabelStyle.fontSize\n                  : width +\n                    maxTickWidth +\n                    (labelOffset || 0) +\n                    (numberOfLabelLines - 1) * axisLabelStyle.fontSize\n              }, ${height / 2}) rotate(90)`}\n            >\n              <text\n                {...labelProps}\n                style={{ fontSize: axisLabelStyle.fontSize, textAnchor: 'middle' }}\n              >\n                {labelLines.map((text, i) => (\n                  <tspan key={`text_${text}`} x={0} dy={i === 0 ? 0 : axisLabelStyle.fontSize}>\n                    {text}\n                  </tspan>\n                ))}\n              </text>\n            </Group>\n          )}\n        </Group>\n      );\n    case 'bottom':\n      if (automaticallySetRange && !tickPositionVariable) scale.range([0, width]);\n      return (\n        <Group css={css}>\n          {axisBandingElement}\n          <AxisBottom\n            top={fullLengthTicks ? 0 : height}\n            hideAxisLine={hideAxisLine || fullLengthTicks}\n            hideTicks={hideTicks}\n            scale={invertAxis(invertScale, tickScale || scale)}\n            tickComponent={tickComponent || defaultTickComponent}\n            tickFormat={format}\n            tickLabelProps={calculateTickLabelProps({ dy: '0.25em' })}\n            tickLength={fullLengthTicks ? height : tickLength}\n            tickValues={tickValuesToUse}\n          />\n          {label && (\n            <Group\n              className=\"visx-axis-label\"\n              top={height + heightOfTicksWithLabels + (labelOffset || 0) + axisLabelStyle.fontSize}\n              left={width / 2}\n            >\n              <text\n                {...labelProps}\n                style={{ fontSize: axisLabelStyle.fontSize, textAnchor: 'middle' }}\n              >\n                {labelLines.map((text, i) => (\n                  <tspan key={`text_${text}`} x={0} dy={i === 0 ? 0 : axisLabelStyle.fontSize}>\n                    {text}\n                  </tspan>\n                ))}\n              </text>\n            </Group>\n          )}\n          {axisArrows && (\n            <Group className=\"visx-axis-arrows\" top={height + (labelOffset || 0)}>\n              <AxisArrows\n                axisArrows={axisArrows}\n                axisArrowsPadding={axisArrowsPadding}\n                axisArrowsScale={scale}\n                orientation={orientation}\n              />\n            </Group>\n          )}\n        </Group>\n      );\n    case 'left':\n      if (automaticallySetRange && !tickPositionVariable && inferScaleType(scale) !== 'band')\n        scale.range([height, 0]);\n      if (automaticallySetRange && (tickPositionVariable || inferScaleType(scale) === 'band'))\n        scale.range([0, height]);\n      return (\n        <Group css={css}>\n          {axisBandingElement}\n          <AxisLeft\n            left={fullLengthTicks ? width : 0}\n            hideAxisLine={hideAxisLine || fullLengthTicks}\n            hideTicks={hideTicks}\n            scale={invertAxis(invertScale, tickScale || scale)}\n            tickComponent={tickComponent || defaultTickComponent}\n            tickFormat={format}\n            tickLabelProps={calculateTickLabelProps({ dx: '-0.25em', dy: '0.25em' })}\n            tickLength={fullLengthTicks ? width : tickLength}\n            tickValues={tickValuesToUse}\n          />\n          {label && (\n            <Group\n              className=\"vx-axis-label\"\n              transform={`translate(${\n                -maxTickWidth -\n                (labelOffset || 0) -\n                (numberOfLabelLines - 1) * axisLabelStyle.fontSize\n              }, ${height / 2}) rotate(-90)`}\n            >\n              <text\n                {...labelProps}\n                style={{ fontSize: axisLabelStyle.fontSize, textAnchor: 'middle' }}\n              >\n                {labelLines.map((text, i) => (\n                  <tspan key={`text_${text}`} x={0} dy={i === 0 ? 0 : axisLabelStyle.fontSize}>\n                    {text}\n                  </tspan>\n                ))}\n              </text>\n            </Group>\n          )}\n        </Group>\n      );\n    default:\n      return (\n        <Group css={css}>\n          <VisxAxis\n            tickComponent={tickComponent || defaultTickComponent}\n            tickFormat={format}\n            scale={scale}\n          />\n        </Group>\n      );\n  }\n};\n\nAxis.propTypes = axisComponentPropTypes;\nAxis.defaultProps = axisComponentDefaultProps;\n\nexport default Axis;\n","var baseIsNative = require('./_baseIsNative'),\n    getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * @file\n * Bars geometry\n */\n\nimport React from 'react';\nimport { Group } from '@visx/group';\nimport { Bar } from '@visx/shape';\nimport { barsComponentPropTypes } from '../prop-types';\nimport { barsComponentDefaultProps } from '../default-props';\n\nconst Bars = ({\n  data,\n  fill,\n  height,\n  width,\n  xScale,\n  xVariable,\n  yScale,\n  yVariable,\n  colorScale,\n  colorVariable,\n  barHeightVariable,\n  fixedBarHeight,\n  automaticallySetRange,\n}) => {\n  if (automaticallySetRange) {\n    xScale.range([0, width]);\n    if (!fixedBarHeight) {\n      yScale.range([0, height]);\n    }\n  }\n\n  return (\n    <Group className=\"vv-bars\">\n      {data.map((d) => {\n        // These values are specific to each bar\n        const barHeight = barHeightVariable ? yScale(d[barHeightVariable]) : yScale.bandwidth();\n        const barWidth = xScale(d[xVariable]);\n        const yPosition = yScale(d[yVariable]);\n        const barFill = colorScale ? colorScale(d[colorVariable]) : fill;\n\n        return (\n          <Bar\n            key={`bar-${d[yVariable]}`}\n            x={d[xVariable] > 0 ? xScale(0) : barWidth}\n            y={yPosition}\n            width={Math.abs(xScale(0) - barWidth)}\n            height={barHeight}\n            fill={barFill}\n          />\n        );\n      })}\n    </Group>\n  );\n};\n\nBars.propTypes = barsComponentPropTypes;\nBars.defaultProps = barsComponentDefaultProps;\n\nexport default Bars;\n","import React, { useContext } from 'react';\nimport { Circle, LinePath } from '@visx/shape';\nimport { PlotContext } from '../chart-frame/plot-context';\nimport { useDelaunay } from './delaunay';\nimport { useTooltipEvents } from '../../util/hooks';\nimport { delaunayPropTypes } from '../prop-types';\nimport { delaunayDefaultProps } from '../default-props';\n\nconst DelaunayListener = ({ width, height, margin, padding, onMouseMove, onMouseOut }) => {\n  const top = margin.top + padding.top;\n  const left = margin.left + padding.left;\n\n  return (\n    <>\n      <rect\n        width={width}\n        height={height}\n        fill=\"transparent\"\n        onMouseMove={event => onMouseMove(event, { top, left, height })}\n        onMouseOut={onMouseOut}\n      />\n    </>\n  );\n};\n\nconst Delaunay = ({\n  xScale,\n  yScale,\n  colorScale,\n  yTransformFunction,\n  xVariable,\n  yVariable,\n  data,\n  debug,\n  tooltipPositionOverride,\n  showLine,\n  showCircle,\n  lineConfig,\n  circleConfig,\n  hoverRadius,\n}) => {\n  const { width, height, margin, padding, updateTooltip, hoveredData, mousePoint } = useContext(\n    PlotContext\n  );\n  xScale.range([0, width]);\n  yScale.range([height, 0]);\n\n  const transformedYScale = y => yScale(yTransformFunction ? yTransformFunction(y) : y);\n\n  const tooltipEvents = useTooltipEvents({ enabled: true, updateTooltip });\n\n  const { onMouseMove, onMouseOut, pathString } = useDelaunay({\n    width,\n    height,\n    xScale,\n    yScale: transformedYScale,\n    xVariable,\n    yVariable,\n    yTransformFunction,\n    data,\n    tooltipEvents,\n    tooltipPositionOverride,\n    hoverRadius,\n    debug,\n  });\n\n  const hoveredXPosition = hoveredData && xScale(hoveredData.x);\n  const hoveredYPosition =\n    hoveredData && yScale(yTransformFunction ? yTransformFunction(hoveredData.y) : hoveredData.y);\n\n  return (\n    width > 0 &&\n    height > 0 && (\n      <>\n        {showLine && hoveredData && (\n          <LinePath\n            data={[\n              { x: hoveredXPosition, y: 0 },\n              { x: hoveredXPosition, y: height },\n            ]}\n            x={({ x }) => x}\n            y={({ y }) => y}\n            {...lineConfig}\n          />\n        )}\n        {showCircle && hoveredData && (\n          <Circle\n            fill={colorScale(hoveredData.seriesName)}\n            cx={hoveredXPosition}\n            cy={hoveredYPosition}\n            {...circleConfig}\n          />\n        )}\n        <DelaunayListener\n          width={width}\n          height={height}\n          margin={margin}\n          padding={padding}\n          onMouseMove={onMouseMove}\n          onMouseOut={onMouseOut}\n          debug={debug}\n        />\n        {debug && <path d={pathString} fill=\"none\" stroke=\"red\" pointerEvents=\"none\" />}\n        {debug && hoverRadius && mousePoint && (\n          <Circle\n            fill=\"none\"\n            stroke=\"red\"\n            strokeDasharray=\"4,1\"\n            pointerEvents=\"none\"\n            r={hoverRadius}\n            cx={mousePoint.mx}\n            cy={mousePoint.my}\n          />\n        )}\n      </>\n    )\n  );\n};\n\nDelaunay.propTypes = delaunayPropTypes;\n\nDelaunay.defaultProps = delaunayDefaultProps;\n\nexport default Delaunay;\n","import React, { useContext } from 'react';\nimport { Group } from '@visx/group';\nimport { Circle } from '@visx/shape';\nimport { inferScaleType } from '@visx/scale';\nimport { LinePathAnnotation } from '@visx/annotation';\nimport { PlotContext } from '../chart-frame/plot-context';\nimport { dotsComponentPropTypes } from '../prop-types';\nimport { dotsComponentDefaultProps } from '../default-props';\nimport { useTooltipEvents } from '../../util/hooks';\n\nconst LabelArrow = ({ x, y, width, fill, stroke, strokeWidth }) => {\n  const halfWidth = (width + strokeWidth) / 2;\n  return (\n    <path\n      d={`M${x - halfWidth},${y + halfWidth} L${x + halfWidth},${y + halfWidth} L${x},${\n        y - halfWidth\n      } Z`}\n      fill={fill}\n      stroke={stroke}\n      strokeWidth={strokeWidth / 2}\n      strokeLinecap=\"round\"\n    />\n  );\n};\n\nconst DotLabel = ({\n  label,\n  labelFill,\n  labelDy,\n  labelStrokeColor,\n  labelPoints,\n  labelStrokeWidth,\n  generatedLabelProps,\n}) => (\n  <Group>\n    {labelStrokeColor && (\n      <LinePathAnnotation\n        className=\"highlighted-label\"\n        label={label}\n        points={labelPoints}\n        labelFill={labelStrokeColor}\n        labelStroke={labelStrokeColor}\n        labelStrokeWidth={labelStrokeWidth}\n        labelDy={labelDy}\n        {...generatedLabelProps}\n      />\n    )}\n    <LinePathAnnotation\n      className=\"highlighted-label\"\n      label={label}\n      points={labelPoints}\n      labelFill={labelFill}\n      labelStroke=\"none\"\n      labelDy={labelDy}\n      {...generatedLabelProps}\n    />\n  </Group>\n);\n\nconst Dot = ({\n  cx,\n  cy,\n  r,\n  topSpacing, // Margin + Padding\n  hollow,\n  color,\n  opacity,\n  strokeColor,\n  strokeWidth,\n  tooltipFunctions,\n  label,\n  labelStrokeColor,\n  labelStrokeWidth,\n  labelColor,\n  labelProps,\n  offChartLabelPosition,\n  yAxisIntersectionX,\n}) => {\n  // This positions the label at the same point as the circle\n  const defaultLabelPoints = [{ x: cx, y: cy }];\n  // Extract points from generated label props\n  const { points, ...generatedLabelProps } =\n    label && labelProps ? labelProps(cx, cy, r, color) : {};\n  // If a set of points has been generated, use these rather than the default\n  let labelPoints = points || defaultLabelPoints;\n\n  // Extract y position of first label point\n  const [{ y: yPositionOfFirstLabelPoint }] = labelPoints;\n  const aboveTopOfChart = yPositionOfFirstLabelPoint < 0;\n  if (aboveTopOfChart) {\n    // If the label is above the top of the chart, extract the x position\n    const [{ x }] = labelPoints;\n    // Set the a new label position at the top of the chart above all other labels\n    const labelDotDiameter = r * 2;\n    const offChartLabelXPosition =\n      offChartLabelPosition === 'end' ? x : yAxisIntersectionX + labelDotDiameter;\n    // If the chart has a margin, position the label at the top of the margin\n    const offChartLabelYPosition = topSpacing > 0 ? -topSpacing + labelDotDiameter : 0;\n    labelPoints = [{ x: offChartLabelXPosition, y: offChartLabelYPosition }];\n  }\n\n  return (\n    <>\n      {!aboveTopOfChart && (\n        <Circle\n          className=\"dot\"\n          cx={cx}\n          cy={cy}\n          r={r}\n          fill={hollow ? 'none' : color}\n          stroke={strokeColor || (hollow || strokeWidth ? color : 'none')}\n          strokeWidth={strokeWidth || 3}\n          fillOpacity={opacity}\n          {...tooltipFunctions}\n        />\n      )}\n      {label && (\n        <DotLabel\n          label={label}\n          labelFill={labelColor}\n          labelStrokeColor={labelStrokeColor}\n          labelPoints={labelPoints}\n          labelStrokeWidth={labelStrokeWidth}\n          generatedLabelProps={generatedLabelProps}\n          aboveTopOfChart={aboveTopOfChart}\n        />\n      )}\n      {aboveTopOfChart && (\n        <LabelArrow\n          x={labelPoints[0].x}\n          y={labelPoints[0].y}\n          width={r * 2}\n          fill={labelColor}\n          stroke={labelStrokeColor}\n          strokeWidth={labelStrokeWidth}\n        />\n      )}\n    </>\n  );\n};\n\nconst Dots = ({\n  width,\n  height,\n  margin,\n  padding,\n  data,\n  seriesNames,\n  // Scales\n  xVariable,\n  yVariable,\n  sizeVariable,\n  colorVariable,\n  xScale,\n  yScale,\n  yTransformFunction,\n  sizeScale,\n  colorScale,\n  labelColorScale,\n  // Dot config\n  hollowDots,\n  opacity,\n  strokeWidth,\n  strokeColor,\n  // Tooltips\n  tooltipEvents,\n  customTooltipComponent,\n  tooltipPositionOverride, // @TODO add to prop types\n  // Labels\n  labelVariable,\n  labelProps, // @TODO is this well-named?\n  labelStrokeColor,\n  labelStrokeWidth,\n  offChartLabelPosition,\n}) => {\n  xScale.range([0, width]);\n  yScale.range([height, 0]);\n\n  const { top: marginTop, left: marginLeft } = margin;\n  const { top: paddingTop, left: paddingLeft } = padding;\n  const topSpacing = marginTop + paddingTop;\n  const leftSpacing = marginLeft + paddingLeft;\n\n  const DotsForSeries = ({ data: dataForSeries, seriesName }) => (\n    <Group>\n      {dataForSeries.map((dotData, i) => {\n        const cx = xScale(dotData[xVariable]);\n        const cy = yScale(\n          yTransformFunction ? yTransformFunction(dotData[yVariable]) : dotData[yVariable]\n        );\n        const r = sizeScale(dotData[sizeVariable]);\n        const color = colorScale(dotData[colorVariable]);\n        const labelColor = labelColorScale ? labelColorScale(dotData[colorVariable]) : color;\n        const label =\n          labelVariable === 'label'\n            ? dotData[labelVariable]\n            : dotData.label && dotData[labelVariable];\n        const { yAxisIntersectionX } = dotData;\n        const scaledYAxisIntersectionX = yAxisIntersectionX && xScale(yAxisIntersectionX);\n\n        const tooltipPosition = tooltipPositionOverride\n          ? tooltipPositionOverride({\n              data: dotData,\n              xScale: (x) => leftSpacing + xScale(x),\n              yScale: (y) => topSpacing + yScale(y),\n            })\n          : // Default position is a diameter above the dot\n            { x: cx + leftSpacing, y: cy + topSpacing - r * 2 };\n\n        const tooltipFunctions = tooltipEvents\n          ? tooltipEvents(\n              { content: customTooltipComponent ? dotData : dotData[labelVariable] },\n              tooltipPosition\n            )\n          : {};\n\n        return (\n          <Dot\n            key={`series_${seriesName}_${cx}_${cy}_${i}`}\n            cx={cx}\n            cy={cy}\n            r={r}\n            topSpacing={topSpacing}\n            color={color}\n            hollow={hollowDots}\n            opacity={opacity}\n            strokeWidth={strokeWidth}\n            strokeColor={strokeColor}\n            tooltipFunctions={tooltipFunctions}\n            labelProps={labelProps}\n            labelColor={labelColor}\n            labelStrokeColor={labelStrokeColor}\n            labelStrokeWidth={labelStrokeWidth}\n            label={label}\n            offChartLabelXPosition={offChartLabelPosition}\n            yAxisIntersectionX={scaledYAxisIntersectionX}\n          />\n        );\n      })}\n    </Group>\n  );\n\n  return seriesNames ? (\n    <Group>\n      {seriesNames.map((seriesName) => {\n        const dataForSeries = data[seriesName];\n        return <DotsForSeries data={dataForSeries} seriesName={seriesName} />;\n      })}\n    </Group>\n  ) : (\n    <DotsForSeries data={data} seriesName=\"dots\" />\n  );\n};\n\nconst MemoisedDots = React.memo(\n  Dots,\n  (prevProps, nextProps) => JSON.stringify(prevProps) === JSON.stringify(nextProps)\n);\n\nconst DotsWithHighlights = ({\n  data,\n  showTooltips,\n  seriesNames,\n  highlightDotsOnHover,\n  hoveredDotsStrokeColor,\n  hoveredDotsStrokeWidth,\n  hoveredDotsColorScale,\n  hoveredDotsLabelColorScale,\n  ...props\n}) => {\n  const { width, height, margin, padding, hoveredSeries, hoveredData, updateTooltip } = useContext(\n    PlotContext\n  );\n  const tooltipEvents = useTooltipEvents({ enabled: showTooltips, updateTooltip });\n\n  const scaleProperties = {\n    yScaleType: inferScaleType(props.yScale),\n    yScaleDomain: props.yScale.domain(),\n    yScaleRange: props.yScale.range(),\n    xScaleType: inferScaleType(props.xScale),\n    xScaleDomain: props.xScale.domain(),\n    xScaleRange: props.xScale.range(),\n  };\n\n  return (\n    <>\n      <MemoisedDots\n        {...props}\n        data={data}\n        width={width}\n        height={height}\n        margin={margin}\n        padding={padding}\n        tooltipEvents={tooltipEvents}\n        seriesNames={seriesNames}\n        // This should force the dots to rerender when the scale properties change\n        {...scaleProperties}\n      />\n      {/* For hovering over data with series (e.g. line chart) */}\n      {highlightDotsOnHover && hoveredSeries && (\n        <MemoisedDots\n          {...props}\n          data={data}\n          width={width}\n          height={height}\n          margin={margin}\n          padding={padding}\n          tooltipEvents={tooltipEvents}\n          seriesNames={hoveredSeries ? [hoveredSeries] : hoveredSeries}\n          colorScale={hoveredDotsColorScale}\n          labelColorScale={hoveredDotsLabelColorScale}\n          // This should force the dots to rerender when the scale properties change\n          {...scaleProperties}\n        />\n      )}\n      {/* For hovering over points without series (e.g. bubble chart) */}\n      {highlightDotsOnHover && hoveredData && (\n        <MemoisedDots\n          {...props}\n          data={data.length ? data.filter((d) => d.seriesName === hoveredData.seriesName) : []}\n          strokeColor={hoveredDotsStrokeColor}\n          strokeWidth={hoveredDotsStrokeWidth}\n          opacity={0}\n          width={width}\n          height={height}\n          margin={margin}\n          padding={padding}\n          tooltipEvents={tooltipEvents}\n          colorScale={hoveredDotsColorScale}\n          labelColorScale={hoveredDotsLabelColorScale}\n          // This should force the dots to rerender when the scale properties change\n          {...scaleProperties}\n        />\n      )}\n    </>\n  );\n};\n\nDots.propTypes = dotsComponentPropTypes;\nDots.defaultProps = dotsComponentDefaultProps;\n\nexport { DotsWithHighlights as Dots };\nexport default null;\n","/**\n * @file\n * legend\n */\n\nimport React from 'react';\nimport { scaleSqrt, scaleThreshold, scaleOrdinal } from '@visx/scale';\nimport { Group } from '@visx/group';\nimport { Drag } from '@visx/drag';\nimport LegendCategorical from './legendCategorical.js';\nimport LegendThreshold from './legendThreshold.js';\nimport LegendMagnitude from './legendMagnitude.js';\nimport { legendComponentPropTypes } from '../prop-types';\nimport { legendComponentDefaultProps } from '../default-props';\nimport { legendCategoricalStyles, legendThresholdStyles, legendMagnitudeStyles } from './styles.js';\nimport { getResponsiveValues } from '../../util';\nimport legendCategoricalData from '../../sample-data/legendCategorical.js';\n\nconst Legend = ({\n  legendWidth,\n  legendHeight,\n  posX,\n  posY,\n  legendType,\n  scale: customScale,\n  invert,\n  geometry,\n  orientation,\n  seriesNames: customSeriesNames,\n  median,\n  label,\n  draggable,\n}) => {\n  const { tickLabelStyle } = getResponsiveValues(legendWidth);\n  let renderedLegend;\n  let css;\n  let scale = customScale;\n  let seriesNames = customSeriesNames;\n\n  if (legendType === 'magnitude') {\n    css = legendMagnitudeStyles;\n    if (!scale) {\n      scale = scaleSqrt({\n        domain: [0, 5, 20],\n        range: [0, 50],\n      });\n    }\n\n    if (!seriesNames) {\n      seriesNames = scale.domain();\n    }\n    seriesNames = [...seriesNames]\n      .sort((a, b) => {\n        return a - b;\n      })\n      // removes zeroes\n      .filter(d => {\n        return Number(d);\n      });\n\n    renderedLegend = (\n      <LegendMagnitude\n        seriesNames={seriesNames}\n        scale={scale}\n        fontSize={tickLabelStyle.fontSize}\n        label={label}\n      />\n    );\n  }\n  if (legendType === 'threshold') {\n    css = legendThresholdStyles;\n    if (!scale) {\n      scale = scaleThreshold({\n        domain: [1.6, 3.3, 4.3, 5.4, 7, 10.1, 14.8, 20.1],\n        range: ['#d6d3ea', '#adb8e6', '#849cdb', '#5e82c8', '#3968ad', '#1b4f8d', '#0a3866'],\n      });\n    }\n    if (!seriesNames) {\n      seriesNames = scale.domain();\n    }\n    renderedLegend = (\n      <LegendThreshold\n        scale={scale}\n        invert={invert}\n        width={legendWidth}\n        height={legendHeight}\n        orientation={orientation}\n        fontSize={tickLabelStyle.fontSize}\n        median={median}\n        seriesNames={seriesNames}\n      />\n    );\n  } else if (legendType === 'categorical') {\n    css = legendCategoricalStyles;\n    if (!scale) {\n      scale = scaleOrdinal({\n        domain: Object.keys(legendCategoricalData),\n        range: Object.values(legendCategoricalData),\n      });\n    }\n    if (!seriesNames) {\n      seriesNames = scale.domain();\n    }\n    if (invert) {\n      seriesNames.reverse();\n    }\n    renderedLegend = (\n      <LegendCategorical\n        scale={scale}\n        seriesNames={seriesNames}\n        orientation={orientation}\n        geometry={geometry}\n        fontSize={tickLabelStyle.fontSize}\n      />\n    );\n  }\n  return (\n    <Drag width={legendWidth} height={legendHeight}>\n      {({ dragStart, dragEnd, dragMove, dx, dy }) => {\n        return (\n          <Group\n            id={legendType}\n            css={css}\n            onMouseMove={dragMove}\n            onMouseUp={dragEnd}\n            onMouseDown={dragStart}\n            onTouchStart={dragStart}\n            onTouchMove={dragMove}\n            onTouchEnd={dragEnd}\n            transform={\n              // if position is pinned, then use that position and disable dragging\n              // if position is not pinned, then allow dragging if draggable is true\n              draggable ? `translate(${dx}, ${dy})` : `translate(${posX}, ${posY})`\n            }\n          >\n            {renderedLegend}\n          </Group>\n        );\n      }}\n    </Drag>\n  );\n};\n\nLegend.propTypes = legendComponentPropTypes;\nLegend.defaultProps = legendComponentDefaultProps;\n\nexport default Legend;\n","/**\n * @file\n * RegressionLine geometry\n * Code from https://gist.github.com/isaaguilar/fb92517c1ce878f7d3780cf9aa74a709\n */\n\nimport React, { useContext } from 'react';\nimport { Line } from '@visx/shape';\nimport { PlotContext } from '../chart-frame/plot-context';\nimport { regressionLineComponentPropTypes } from '../prop-types';\n\nconst linearRegression = (y, x) => {\n  const lr = {};\n  const n = y.length;\n  let sumX = 0;\n  let sumY = 0;\n  let sumXY = 0;\n  let sumXX = 0;\n  let sumYY = 0;\n\n  // eslint-disable-next-line no-plusplus\n  for (let i = 0; i < y.length; i++) {\n    sumX += x[i];\n    sumY += y[i];\n    sumXY += x[i] * y[i];\n    sumXX += x[i] * x[i];\n    sumYY += y[i] * y[i];\n  }\n\n  lr.slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);\n  lr.intercept = (sumY - lr.slope * sumX) / n;\n  // eslint-disable-next-line no-restricted-properties\n  lr.r2 = Math.pow(\n    (n * sumXY - sumX * sumY) / Math.sqrt((n * sumXX - sumX * sumX) * (n * sumYY - sumY * sumY)),\n    2\n  );\n\n  // eslint-disable-next-line no-shadow\n  return x => {\n    return lr.slope * x + lr.intercept;\n  };\n};\n\nconst RegressionLine = props => {\n  const { data, xVariable, yVariable, xScale, yScale } = props;\n  const { width, height } = useContext(PlotContext);\n  xScale.range([0, width]);\n  yScale.range([height, 0]);\n\n  let xCoords = [];\n  let yCoords = [];\n  if (data[0].length) {\n    xCoords = data[0].map(n => n[xVariable]);\n    yCoords = data[0].map(n => n[yVariable]);\n  }\n\n  const trendline = linearRegression(yCoords, xCoords);\n\n  const lowestX = xCoords[0];\n  const highestX = xCoords[xCoords.length - 1];\n\n  return (\n    <Line\n      from={{ x: xScale(lowestX), y: yScale(trendline(lowestX)) }}\n      to={{ x: xScale(highestX), y: yScale(trendline(highestX)) }}\n      stroke=\"#000\"\n      strokeWidth={1}\n    />\n  );\n};\n\nRegressionLine.propTypes = regressionLineComponentPropTypes;\n\nexport default RegressionLine;\n","/**\n * @file\n * Sharing buttons\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport OShare from '@financial-times/o-share';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport './styles.scss';\n\nconst Share = ({\n  url,\n  text,\n  textTwitter,\n  textFacebook,\n  textLinkedIn,\n  textWhatsApp,\n  separated,\n  dark,\n  size,\n}) => {\n  const ref = useRef();\n\n  useEffect(() => {\n    (async () => {\n      new OShare(ref.current); // eslint-disable-line no-new\n    })();\n  }, []);\n\n  const services = [\n    {\n      name: 'Twitter',\n      link:\n        'https://twitter.com/intent/tweet' +\n        `?url=${url}` +\n        `&text=${textTwitter || text}` +\n        '&via=FinancialTimes',\n    },\n    {\n      name: 'Facebook',\n      link: 'https://www.facebook.com/sharer.php' + `?u=${url}` + `&t=${textFacebook || text}`,\n    },\n    {\n      name: 'LinkedIn',\n      link:\n        'https://www.linkedin.com/shareArticle' +\n        '?mini=true' +\n        `&url=${url}` +\n        `&title=${textLinkedIn || text}` +\n        `&source=Financial+Times`,\n    },\n    {\n      name: 'WhatsApp',\n      link: `whatsapp://send?text=${textWhatsApp || text} - ${url}`,\n    },\n  ];\n\n  return (\n    <div className={classnames('g-share', separated && 'g-share--separated', `g-share--${size}`)}>\n      <div className={classnames('o-share', dark && 'o-share--inverse')} data-o-component=\"o-share\">\n        <ul>\n          {services.map(({ name, link }) => (\n            <li key={name} className=\"o-share__action\">\n              <a\n                className={`o-share__icon o-share__icon--${name.toLowerCase()}`}\n                href={link}\n                rel=\"noopener\"\n              >\n                <span className=\"o-share__text\">Share on {name}. Opens in a new window.</span>\n              </a>\n            </li>\n          ))}\n        </ul>\n      </div>\n    </div>\n  );\n};\n\nShare.propTypes = {\n  url: PropTypes.string.isRequired,\n  text: PropTypes.string.isRequired,\n  textTwitter: PropTypes.string,\n  textFacebook: PropTypes.string,\n  textLinkedIn: PropTypes.string,\n  textWhatsApp: PropTypes.string,\n  separated: PropTypes.bool,\n  dark: PropTypes.bool,\n  size: PropTypes.oneOf(['default', 'small']),\n};\n\nShare.displayName = 'GShare';\n\nexport default Share;\n","import Share from './src/js/share.js';\n\nconst constructAll = function() {\n\tShare.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Share;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n  /**\n   * Maintain a map of listener\n   * lists, keyed by event name.\n   *\n   * @type Object\n   */\n  this.listenerMap = [{}, {}];\n\n  if (root) {\n    this.root(root);\n  }\n  /** @type function() */\n\n\n  this.handle = Delegate.prototype.handle.bind(this); // Cache of event listeners removed during an event cycle\n\n  this._removedListeners = [];\n}\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.root = function (root) {\n  var listenerMap = this.listenerMap;\n  var eventType; // Remove master event listeners\n\n  if (this.rootElement) {\n    for (eventType in listenerMap[1]) {\n      if (listenerMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, true);\n      }\n    }\n\n    for (eventType in listenerMap[0]) {\n      if (listenerMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, false);\n      }\n    }\n  } // If no root or root is not\n  // a dom node, then remove internal\n  // root reference and exit here\n\n\n  if (!root || !root.addEventListener) {\n    if (this.rootElement) {\n      delete this.rootElement;\n    }\n\n    return this;\n  }\n  /**\n   * The root node at which\n   * listeners are attached.\n   *\n   * @type Node\n   */\n\n\n  this.rootElement = root; // Set up master event listeners\n\n  for (eventType in listenerMap[1]) {\n    if (listenerMap[1].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, true);\n    }\n  }\n\n  for (eventType in listenerMap[0]) {\n    if (listenerMap[0].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, false);\n    }\n  }\n\n  return this;\n};\n/**\n * @param {string} eventType\n * @returns boolean\n */\n\n\nDelegate.prototype.captureForType = function (eventType) {\n  return ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n  var root;\n  var listenerMap;\n  var matcher;\n  var matcherParam;\n\n  if (!eventType) {\n    throw new TypeError('Invalid event type: ' + eventType);\n  } // handler can be passed as\n  // the second or third argument\n\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // Fallback to sensible defaults\n  // if useCapture not set\n\n\n  if (useCapture === undefined) {\n    useCapture = this.captureForType(eventType);\n  }\n\n  if (typeof handler !== 'function') {\n    throw new TypeError('Handler must be a type of Function');\n  }\n\n  root = this.rootElement;\n  listenerMap = this.listenerMap[useCapture ? 1 : 0]; // Add master handler for type if not created yet\n\n  if (!listenerMap[eventType]) {\n    if (root) {\n      root.addEventListener(eventType, this.handle, useCapture);\n    }\n\n    listenerMap[eventType] = [];\n  }\n\n  if (!selector) {\n    matcherParam = null; // COMPLEX - matchesRoot needs to have access to\n    // this.rootElement, so bind the function to this.\n\n    matcher = matchesRoot.bind(this); // Compile a matcher for the given selector\n  } else if (/^[a-z]+$/i.test(selector)) {\n    matcherParam = selector;\n    matcher = matchesTag;\n  } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n    matcherParam = selector.slice(1);\n    matcher = matchesId;\n  } else {\n    matcherParam = selector;\n    matcher = Element.prototype.matches;\n  } // Add to the list of listeners\n\n\n  listenerMap[eventType].push({\n    selector: selector,\n    handler: handler,\n    matcher: matcher,\n    matcherParam: matcherParam\n  });\n  return this;\n};\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n  var i;\n  var listener;\n  var listenerMap;\n  var listenerList;\n  var singleEventType; // Handler can be passed as\n  // the second or third argument\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // If useCapture not set, remove\n  // all event listeners\n\n\n  if (useCapture === undefined) {\n    this.off(eventType, selector, handler, true);\n    this.off(eventType, selector, handler, false);\n    return this;\n  }\n\n  listenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n  if (!eventType) {\n    for (singleEventType in listenerMap) {\n      if (listenerMap.hasOwnProperty(singleEventType)) {\n        this.off(singleEventType, selector, handler);\n      }\n    }\n\n    return this;\n  }\n\n  listenerList = listenerMap[eventType];\n\n  if (!listenerList || !listenerList.length) {\n    return this;\n  } // Remove only parameter matches\n  // if specified\n\n\n  for (i = listenerList.length - 1; i >= 0; i--) {\n    listener = listenerList[i];\n\n    if ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n      this._removedListeners.push(listener);\n\n      listenerList.splice(i, 1);\n    }\n  } // All listeners removed\n\n\n  if (!listenerList.length) {\n    delete listenerMap[eventType]; // Remove the main handler\n\n    if (this.rootElement) {\n      this.rootElement.removeEventListener(eventType, this.handle, useCapture);\n    }\n  }\n\n  return this;\n};\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\n\n\nDelegate.prototype.handle = function (event) {\n  var i;\n  var l;\n  var type = event.type;\n  var root;\n  var phase;\n  var listener;\n  var returned;\n  var listenerList = [];\n  var target;\n  var eventIgnore = 'ftLabsDelegateIgnore';\n\n  if (event[eventIgnore] === true) {\n    return;\n  }\n\n  target = event.target; // Hardcode value of Node.TEXT_NODE\n  // as not defined in IE8\n\n  if (target.nodeType === 3) {\n    target = target.parentNode;\n  } // Handle SVG <use> elements in IE\n\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  root = this.rootElement;\n  phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2); // eslint-disable-next-line default-case\n\n  switch (phase) {\n    case 1:\n      //Event.CAPTURING_PHASE:\n      listenerList = this.listenerMap[1][type];\n      break;\n\n    case 2:\n      //Event.AT_TARGET:\n      if (this.listenerMap[0] && this.listenerMap[0][type]) {\n        listenerList = listenerList.concat(this.listenerMap[0][type]);\n      }\n\n      if (this.listenerMap[1] && this.listenerMap[1][type]) {\n        listenerList = listenerList.concat(this.listenerMap[1][type]);\n      }\n\n      break;\n\n    case 3:\n      //Event.BUBBLING_PHASE:\n      listenerList = this.listenerMap[0][type];\n      break;\n  }\n\n  var toFire = []; // Need to continuously check\n  // that the specific list is\n  // still populated in case one\n  // of the callbacks actually\n  // causes the list to be destroyed.\n\n  l = listenerList.length;\n\n  while (target && l) {\n    for (i = 0; i < l; i++) {\n      listener = listenerList[i]; // Bail from this loop if\n      // the length changed and\n      // no more listeners are\n      // defined between i and l.\n\n      if (!listener) {\n        break;\n      }\n\n      if (target.tagName && [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 && target.hasAttribute(\"disabled\")) {\n        // Remove things that have previously fired\n        toFire = [];\n      } // Check for match and fire\n      // the event if there's one\n      //\n      // TODO:MCG:20120117: Need a way\n      // to check if event#stopImmediatePropagation\n      // was called. If so, break both loops.\n      else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n    } // TODO:MCG:20120117: Need a way to\n    // check if event#stopPropagation\n    // was called. If so, break looping\n    // through the DOM. Stop if the\n    // delegation root has been reached\n\n\n    if (target === root) {\n      break;\n    }\n\n    l = listenerList.length; // Fall back to parentNode since SVG children have no parentElement in IE\n\n    target = target.parentElement || target.parentNode; // Do not traverse up to document root when using parentNode, though\n\n    if (target instanceof HTMLDocument) {\n      break;\n    }\n  }\n\n  var ret;\n\n  for (i = 0; i < toFire.length; i++) {\n    // Has it been removed during while the event function was fired\n    if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n      continue;\n    }\n\n    returned = this.fire.apply(this, toFire[i]); // Stop propagation to subsequent\n    // callbacks if the callback returned\n    // false\n\n    if (returned === false) {\n      toFire[i][0][eventIgnore] = true;\n      toFire[i][0].preventDefault();\n      ret = false;\n      break;\n    }\n  }\n\n  return ret;\n};\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\n\n\nDelegate.prototype.fire = function (event, target, listener) {\n  return listener.handler.call(target, event, target);\n};\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesTag(tagName, element) {\n  return tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesRoot(selector, element) {\n  if (this.rootElement === window) {\n    return (// Match the outer document (dispatched from document)\n      element === document || // The <html> element (dispatched from document.body or document.documentElement)\n      element === document.documentElement || // Or the window itself (dispatched from window)\n      element === window\n    );\n  }\n\n  return this.rootElement === element;\n}\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesId(id, element) {\n  return id === element.id;\n}\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\n\n\nDelegate.prototype.destroy = function () {\n  this.off();\n  this.root();\n};\n\nvar _default = Delegate;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * @file\n * Header component\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport OHeader from '@financial-times/o-header';\nimport './styles.scss';\nimport { flagsPropType } from '../shared/proptypes';\n\nconst Header = ({ flags, ...props }) => {\n  const ref = useRef();\n\n  const { dark } = flags;\n\n  const headerClasses = ['o-header', 'o-header--simple', dark && 'o-header--transparent']\n    .filter((i) => i)\n    .join(' ');\n\n  useEffect(() => {\n    (async () => {\n      try {\n        new OHeader(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, []);\n\n  return (\n    <header ref={ref} className={headerClasses} data-o-component=\"o-header\" data-o-header--no-js=\"\">\n      <div className=\"o-header__row o-header__top\">\n        <div className=\"o-header__container\">\n          <div className=\"o-header__top-wrapper\">\n            <div className=\"o-header__top-column o-header__top-column--center\">\n              <a\n                className=\"o-header__top-logo\"\n                href=\"https://www.ft.com/\"\n                title=\"Go to Financial Times homepage\"\n              >\n                <span className=\"o-header__visually-hidden\">Financial Times</span>\n              </a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </header>\n  );\n};\n\nHeader.displayName = 'GHeader';\n\nHeader.propTypes = {\n  flags: flagsPropType,\n};\n\nHeader.defaultProps = {\n  flags: {\n    dark: false,\n  },\n};\n\nexport default Header;\n","import Header from './src/js/header.js';\n\nconst constructAll = () => {\n\tHeader.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Header;\n","import Toggle from '@financial-times/o-toggle';\n\nfunction init (headerEl) {\n\tconst target = headerEl.querySelector('[data-o-header-search]');\n\tconst controls = target && headerEl.querySelectorAll(`[aria-controls=\"${target.id}\"]`);\n\n\tif (controls === null || controls.length === 0) {\n\t\treturn;\n\t}\n\n\tconst opening = [];\n\n\tconst callback = function (state, e) {\n\t\tif (state === 'open') {\n\t\t\t// record the opening control\n\t\t\topening.push(e.currentTarget);\n\t\t\ttarget.querySelector('[name=\"q\"]').focus();\n\t\t} else {\n\t\t\t// re-focus opening control\n\t\t\tif (opening.length) {\n\t\t\t\topening.pop().focus();\n\t\t\t}\n\t\t}\n\t};\n\n\tfor (let i = 0, len = controls.length; i < len; i++) {\n\t\tnew Toggle(controls[i], { target, callback });\n\t}\n}\n\nexport { init };\nexport default { init };\n","class Target {\n\n\tconstructor(toggle){\n\t\tthis.targetEl = toggle.targetEl;\n\t\tthis.toggles = [];\n\t}\n\n\taddToggle(toggle) {\n\t\tthis.toggles.push(toggle);\n\t}\n\n\tremoveToggle(toggle) {\n\t\tconst togglePosition = this.toggles.indexOf(toggle);\n\t\tthis.toggles = this.toggles.slice(0, togglePosition).concat(this.toggles.slice(togglePosition +1));\n\t\tif (this.toggles.length === 0) {\n\t\t\t// If that was the last/only toggle that controlled this target then ensure\n\t\t\t// this target is open so it doesn't get stuck in the closed position\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\topen() {\n\t\tthis.targetEl.setAttribute('aria-hidden', 'false');\n\t\tthis.targetEl.classList.add('o-toggle--active');\n\t\t// Set every toggle that controls this target to be open\n\t\tthis.toggles.forEach((toggle) => {\n\t\t\ttoggle.open();\n\t\t});\n\t}\n\n\tclose() {\n\t\tthis.targetEl.setAttribute('aria-hidden', 'true');\n\t\tthis.targetEl.classList.remove('o-toggle--active');\n\n\t\t// Set every toggle that controls this target to be closed\n\t\tthis.toggles.forEach((toggle) => {\n\t\t\ttoggle.close();\n\t\t});\n\t}\n\n\ttoggle(){\n\t\tif (this.isOpen()){\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tisOpen() {\n\t\treturn this.targetEl.classList.contains('o-toggle--active');\n\t}\n}\n\nexport default Target;\n","const INTENT_ENTER = 300;\nconst INTENT_LEAVE = 400;\n\nconst expanded = [];\n\nfunction addEvents (parent, menu) {\n\tlet timeout;\n\n\tparent.addEventListener('mouseenter', () => {\n\t\tclearTimeout(timeout);\n\n\t\tif (isOpen(menu)) {\n\t\t\treturn;\n\t\t}\n\n\t\ttimeout = setTimeout(() => {\n\t\t\tif (expanded.length) {\n\t\t\t\thide(expanded[0]);\n\t\t\t\tshow(menu, false);\n\t\t\t} else {\n\t\t\t\tshow(menu, true);\n\t\t\t}\n\t\t}, INTENT_ENTER);\n\t});\n\n\tparent.addEventListener('mouseleave', () => {\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(() => isOpen(menu) && hide(menu), INTENT_LEAVE);\n\t});\n}\n\nfunction isOpen (menu) {\n\treturn expanded.indexOf(menu) !== -1;\n}\n\nfunction show (menu, animate) {\n\tif (animate) {\n\t\tmenu.classList.add('o-header__mega--animation');\n\t}\n\n\tmenu.setAttribute('aria-hidden', 'false');\n\tmenu.setAttribute('aria-expanded', 'true');\n\n\tmenu.dispatchEvent(new CustomEvent('oHeader.MegaMenuShow', { bubbles: true }));\n\n\texpanded.push(menu);\n}\n\nfunction hide (menu) {\n\tmenu.classList.remove('o-header__mega--animation');\n\tmenu.setAttribute('aria-hidden', 'true');\n\tmenu.setAttribute('aria-expanded', 'false');\n\n\tmenu.dispatchEvent(new CustomEvent('oHeader.MegaMenuHide', { bubbles: true }));\n\n\texpanded.splice(expanded.indexOf(menu), 1);\n}\n\nfunction init (headerEl) {\n\tconst menus = Array.from(headerEl.querySelectorAll('[data-o-header-mega]'));\n\tconst parents = menus.map(menu => menu.parentNode);\n\n\tmenus.forEach(menu => {\n\t\tmenu.setAttribute('aria-hidden', 'true');\n\t\tmenu.setAttribute('aria-expanded', 'false');\n\t});\n\n\tparents.forEach((parent, i) => addEvents(parent, menus[i]));\n}\n\nexport { init, show, hide };\nexport default { init, show, hide };\n","import Toggle from '@financial-times/o-toggle';\n\nconst LISTEN_DELAY = 300;\nconst INTENT_DELAY = 1000;\n\nfunction handleCloseEvents (scope, callback, allFocusable) {\n\tlet timeout;\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.keyCode === 27) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tconst handleClick = (e) => {\n\t\tif (!scope.contains(e.target)) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tconst handleMouseenter = () => {\n\t\tclearTimeout(timeout);\n\t};\n\n\tconst handleMouseleave = () => {\n\t\t// IE 11 mobile fires a mouseleave event when the search box gets focus. This means when the user tries\n\t\t// to use the search box, it disappears because the drawer closes.\n\t\t// Mouseout events should only occur when the drawer takes up less than 100% of the window, so we can ignore\n\t\t// any events triggered if the width of the drawer is equal to or bigger than the window.innerwidth\n\t\tif (window.innerWidth >= scope.offsetWidth) {\n\t\t\ttimeout = setTimeout(callback, INTENT_DELAY);\n\t\t}\n\t};\n\n\tconst handleFocus = (e) => {\n\t\tconst target = e.relatedTarget || e.target;\n\n\t\tif (!scope.contains(target)) {\n\t\t\tscope.focus();\n\t\t}\n\t};\n\n\tconst handleTab = (e) => {\n\t\tif (e.keyCode === 9) {\n\t\t\tconst firstEl = allFocusable[0];\n\t\t\tconst lastEl = allFocusable[allFocusable.length - 1];\n\n\t\t\t// Keep focus within the drawer when tabbing for a11y reasons.\n\t\t\tif (!e.shiftKey && e.target === lastEl) {\n\t\t\t\tfirstEl.focus();\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.shiftKey && e.target === firstEl) { // loop to the bottom when shift+tabbing.\n\t\t\t\tlastEl.focus();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst removeEvents = () => {\n\t\tclearTimeout(timeout);\n\n\t\tscope.removeEventListener('mouseenter', handleMouseenter);\n\t\tscope.removeEventListener('mouseleave', handleMouseleave);\n\t\tdocument.removeEventListener('click', handleClick);\n\t\tdocument.removeEventListener('touchstart', handleClick);\n\t\tdocument.removeEventListener('keydown', handleKeydown);\n\t\tdocument.removeEventListener('focusin', handleFocus);\n\t\tdocument.removeEventListener('focusout', handleFocus);\n\t\tscope.removeEventListener('keydown', handleTab);\n\t};\n\n\tconst addEvents = () => {\n\t\tscope.addEventListener('mouseenter', handleMouseenter);\n\t\tscope.addEventListener('mouseleave', handleMouseleave);\n\t\tdocument.addEventListener('click', handleClick);\n\t\tdocument.addEventListener('touchstart', handleClick);\n\t\tdocument.addEventListener('keydown', handleKeydown);\n\n\t\t// Firefox doesn't support focusin or focusout\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t\tdocument.addEventListener('focusin', handleFocus);\n\t\tdocument.addEventListener('focusout', handleFocus);\n\n\t\tscope.addEventListener('keydown', handleTab);\n\t};\n\n\treturn { addEvents, removeEvents, handleMouseleave };\n}\n\nfunction addDrawerToggles (drawerEl, allFocusable) {\n\tconst controls = Array.from(document.body.querySelectorAll(`[aria-controls=\"${drawerEl.id}\"]`));\n\n\tlet handleClose;\n\tlet openingControl;\n\n\tfunction toggleCallback (state, e) {\n\t\tif (state === 'close') {\n\t\t\ttoggleTabbing(drawerEl, false, allFocusable);\n\n\t\t\thandleClose.removeEvents();\n\n\t\t\topeningControl.focus();\n\t\t} else {\n\t\t\ttoggleTabbing(drawerEl, true, allFocusable);\n\n\t\t\t// don't capture the initial click or accidental double taps etc.\n\t\t\t// we could use transitionend but scoping is tricky and it needs prefixing and...\n\t\t\tsetTimeout(handleClose.addEvents, LISTEN_DELAY);\n\n\t\t\t// record the opening control so we can send focus back to it when closing the drawer\n\t\t\topeningControl = e.currentTarget;\n\n\t\t\t// aria-controls is only supported by JAWS.\n\t\t\t// In a setTimeout callback to avoid flickering transitions in Chrome (v54)\n\t\t\tsetTimeout(() => {\n\t\t\t\t// Don't focus on the drawer itself or iOS VoiceOver will miss it\n\t\t\t\t// Focus on the first focusable element\n\t\t\t\tconst firstFocusable = drawerEl.querySelector('a, button, input, select');\n\n\t\t\t\tif (firstFocusable) {\n\t\t\t\t\tfirstFocusable.focus();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdrawerEl.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tdrawerEl.classList.toggle('o-header__drawer--closing', state === 'close');\n\t\tdrawerEl.classList.toggle('o-header__drawer--opening', state === 'open');\n\t}\n\n\tcontrols.forEach((control) => {\n\t\tconst drawerToggle = new Toggle(control, {\n\t\t\ttarget: drawerEl,\n\t\t\tcallback: toggleCallback\n\t\t});\n\n\t\t// Both toggles have the same target, so the toggle function will be the same\n\t\t// If there's a separate handleClose instance for each toggle, removeEvents doesn't work\n\t\t// when the close toggle is clicked\n\t\tif (!handleClose) {\n\t\t\thandleClose = handleCloseEvents(drawerEl, drawerToggle.toggle, allFocusable);\n\t\t}\n\t});\n\n\t// make the drawer programmatically focusable\n\tdrawerEl.tabIndex = -1;\n}\n\nfunction addSubmenuToggles (drawerEl) {\n\tconst submenus = drawerEl.querySelectorAll('[id^=\"o-header-drawer-child-\"]');\n\n\tArray.from(submenus).forEach(submenu => {\n\t\tconst button = drawerEl.querySelector(`[aria-controls=\"${submenu.id}\"]`);\n\n\t\tsubmenu.setAttribute('aria-hidden', 'true');\n\n\t\tnew Toggle(button, {\n\t\t\ttarget: submenu,\n\t\t\tcallback: (state) => {\n\t\t\t\tbutton.textContent = button.textContent.replace(/fewer|more/, state === 'open' ? 'fewer' : 'more');\n\t\t\t}\n\t\t});\n\t});\n}\n\n// This function is to solve accessibility issue\n// when o-header-drawer is closed => tabbing is disabled.\n// when o-header-drawer is open => tabbing is enabled.\nfunction toggleTabbing (drawerEl, isEnabled, allFocusable) {\n\tif (isEnabled) {\n\t\tallFocusable.forEach(el => {\n\t\t\tel.removeAttribute('tabindex');\n\t\t});\n\t} else {\n\t\tallFocusable.forEach(el => {\n\t\t\tel.setAttribute('tabindex', '-1');\n\t\t});\n\t}\n}\n\nfunction init () {\n\tconst drawerEl = document.body.querySelector('[data-o-header-drawer]');\n\tif (!drawerEl) {\n\t\treturn;\n\t}\n\tconst allFocusable = Array.from(drawerEl.querySelectorAll('a, button, input, select'));\n\ttoggleTabbing(drawerEl, false, allFocusable);\n\taddSubmenuToggles(drawerEl);\n\taddDrawerToggles(drawerEl, allFocusable);\n\n\t// Wrap in a timeout to stop page load stall in Chrome v73 on Android\n\t// toggleTabbing and the removal of the no-js attribute spikes the CPU\n\t// and causes the main process to block for around 10 seconds.\n\tsetTimeout(() => {\n\t\tdrawerEl.removeAttribute('data-o-header-drawer--no-js');\n\t\tdrawerEl.setAttribute('data-o-header-drawer--js', 'true');\n\t});\n}\n\nexport default { init, handleCloseEvents };\nexport { init, handleCloseEvents };\n","import * as oUtils from '@financial-times/o-utils';\n\nfunction init(headerEl) {\n\tconst subnav = headerEl.querySelector('[data-o-header-subnav]');\n\n\tif (subnav === null) {\n\t\treturn;\n\t}\n\n\tconst buttons = Array.from(subnav.getElementsByTagName('button'));\n\tconst wrapper = subnav.querySelector('[data-o-header-subnav-wrapper]');\n\n\tlet scrollWidth;\n\tconst wrapperWidth = wrapper.clientWidth;\n\n\tfunction checkCurrentPosition() {\n\t\tconst currentSelection = wrapper.querySelector('[aria-current]');\n\t\tif (currentSelection) {\n\t\t\tconst currentSelectionEnd = currentSelection.getBoundingClientRect().right;\n\n\t\t\t//if the current selection is wider than the end of the wrapper\n\t\t\tif (currentSelectionEnd > wrapperWidth) {\n\t\t\t\t// check by how much\n\t\t\t\tlet diff = currentSelectionEnd - wrapperWidth;\n\t\t\t\t// if the difference is greater than half of the wrapper, scroll to the end of the current selection.\n\t\t\t\tdiff = diff > wrapperWidth / 2 ? currentSelectionEnd : wrapperWidth / 2;\n\n\t\t\t\twrapper.scrollTo(diff, 0);\n\t\t\t}\n\t\t}\n\t\tscrollable();\n\t}\n\n\tfunction direction(button) {\n\t\treturn button.className.match(/left|right/).pop();\n\t}\n\n\tfunction scrollable() {\n\t\tscrollWidth = wrapper.scrollWidth;\n\n\t\tbuttons.forEach(button => {\n\t\t\tif (direction(button) === 'left') {\n\t\t\t\tbutton.disabled = wrapper.scrollLeft === 0;\n\t\t\t} else {\n\t\t\t\tconst remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n\t\t\t\t// Allow a little difference as scrollWidth is fast, not accurate.\n\t\t\t\tbutton.disabled = remaining <= 1;\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction scroll(e) {\n\t\tlet distance = 100;\n\n\t\tif (direction(e.currentTarget) === 'left') {\n\t\t\tdistance = (wrapper.scrollLeft > distance ? distance : wrapper.scrollLeft) * -1;\n\t\t} else {\n\t\t\tconst remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n\t\t\tdistance = remaining > distance ? distance : remaining;\n\t\t}\n\n\t\twrapper.scrollLeft = wrapper.scrollLeft + distance;\n\n\t\tscrollable();\n\t}\n\n\twrapper.addEventListener('scroll', oUtils.throttle(scrollable, 100));\n\twindow.addEventListener('oViewport.resize', scrollable);\n\n\tbuttons.forEach(button => {\n\t\tbutton.onclick = scroll;\n\t});\n\n\tcheckCurrentPosition();\n}\n\nexport { init };\nexport default { init };\n","import { debounce } from '@financial-times/o-utils';\n\nfunction init (headerEl) {\n\tif (!headerEl.hasAttribute('data-o-header--sticky')) {\n\t\treturn;\n\t}\n\n\tlet viewportOffset;\n\tlet lastScrollDepth;\n\tlet lastAnimationFrame;\n\tlet lastStickyState;\n\n\tfunction handleFrame () {\n\t\t// sticky el will appear when scrolled down from page top to\n\t\t// (arbitrarily) > half the viewport height\n\t\tconst scrollDepth = window.pageYOffset || window.scrollY;\n\t\tconst isActive = scrollDepth > viewportOffset;\n\n\t\theaderEl.classList.toggle('o-header--sticky-active', isActive);\n\n\t\tif (isActive !== lastStickyState) {\n\t\t\tlastStickyState = isActive;\n\t\t\theaderEl.dispatchEvent(new CustomEvent('oHeader.Sticky', { bubbles: true, detail: { isActive }}));\n\t\t}\n\n\t\t// allow a little wiggling room so we don't get too hasty toggling up/down state\n\t\tif (Math.abs(scrollDepth - lastScrollDepth) > 20) {\n\t\t\tconst isScrollingDown = lastScrollDepth < scrollDepth;\n\t\t\theaderEl.classList.toggle('o-header--sticky-scroll-down', isActive && isScrollingDown);\n\t\t\theaderEl.classList.toggle('o-header--sticky-scroll-up', isActive && !isScrollingDown);\n\t\t}\n\n\t\tlastScrollDepth = scrollDepth;\n\t}\n\n\tfunction startLoop () {\n\t\tviewportOffset = window.innerHeight / 2;\n\n\t\tlastAnimationFrame = window.requestAnimationFrame(() => {\n\t\t\thandleFrame();\n\t\t\tstartLoop();\n\t\t});\n\t}\n\n\tfunction stopLoop () {\n\t\tif (lastAnimationFrame) {\n\t\t\twindow.cancelAnimationFrame(lastAnimationFrame);\n\t\t}\n\t}\n\n\tfunction scrollStart () {\n\t\twindow.removeEventListener('scroll', scrollStart);\n\t\twindow.addEventListener('scroll', debouncedScrollEnd);\n\t\tstartLoop();\n\t}\n\n\tfunction scrollEnd () {\n\t\tstopLoop();\n\t\twindow.removeEventListener('scroll', debouncedScrollEnd);\n\t\twindow.addEventListener('scroll', scrollStart);\n\t}\n\n\tconst debouncedScrollEnd = debounce(scrollEnd, 300);\n\n\twindow.addEventListener('scroll', scrollStart);\n\n\thandleFrame();\n}\n\nexport { init };\nexport default { init };\n","/**\n * @file\n * Analytics code\n */\n\nimport React, { Fragment, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport OTracking from '@financial-times/o-tracking';\nimport { flagsPropType } from '../shared/proptypes';\nimport { spoorTrackingPixel } from '../shared/helpers';\n\n// Disables warning for dangerouslySetInnerHTML because we kiiiiinda need it here.\n/* eslint-disable react/no-danger */\n\nconst Analytics = ({ id, tracking, flags }) => {\n  useEffect(() => {\n    (async () => {\n      try {\n        if (!window.cutsTheMustard) return;\n        const pageData = {\n          content: { asset_type: 'interactive' },\n        };\n\n        const properties = [].reduce.call(\n          document.querySelectorAll('head meta[property^=\"ft.track:\"]') || [],\n          (o, el) => {\n            if (!el) return o;\n\n            const attName = el.getAttribute('property').replace('ft.track:', '');\n            o[attName] = el.getAttribute('content'); // eslint-disable-line no-param-reassign\n            return o;\n          },\n          {},\n        );\n\n        const contentId = id || document.documentElement.getAttribute('data-content-id');\n\n        if (contentId) {\n          pageData.content.uuid = contentId;\n        }\n\n        if (properties.microsite_name) {\n          pageData.microsite_name = properties.microsite_name;\n        }\n\n        // Setup\n        OTracking.init({\n          server: 'https://spoor-api.ft.com/px.gif',\n          system: {\n            is_live:\n              typeof properties.is_live === 'string' ? properties.is_live.toLowerCase() : false,\n          },\n          context: { product: properties.product || 'IG' },\n        });\n\n        // Page\n        OTracking.page(pageData);\n\n        // Links\n        OTracking.click.init();\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, [id]);\n\n  return (\n    <Fragment>\n      {/* Add fallback if browsers don't cut the mustard */}\n      {spoorTrackingPixel({\n        action: 'view',\n        category: 'page',\n        context: {\n          content: {\n            asset_type: 'interactive',\n            uuid: id,\n          },\n          product: 'IG',\n          microsite_name: tracking.micrositeName,\n        },\n        system: {\n          is_live: flags.prod,\n          apiKey: 'qUb9maKfKbtpRsdp0p2J7uWxRPGJEP',\n          source: 'o-tracking-ns',\n          version: '1.0.0',\n        },\n      })}\n      {flags.googleAnalytics && (\n        <script\n          dangerouslySetInnerHTML={{\n            __html: `\n        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n        ga('create', 'UA-35229645-1', 'auto');\n        ga('require','displayfeatures');\n        ga('send', 'pageview');\n        `,\n          }}\n        />\n      )}\n      {/* Floodlight tracking pixel */}\n      <script\n        dangerouslySetInnerHTML={{\n          __html: `\n        var spoorId = /spoor-id=([^;]+)/.exec(document.cookie)[1] || 'cj5y2utdx00003i5z6l6po8c1';\n        var endpoint = 'https://4235225.fls.doubleclick.net/activityi;src=4235225;type=homeo886;cat=ft-ne000;u10=' + spoorId + ';dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=' + Date.now() + ';num=1';\n        var img = document.createElement('img');\n        img.setAttribute('width', 1);\n        img.setAttribute('height', 1);\n        img.setAttribute('src', endpoint);\n        img.style.position = 'absolute';\n        document.body.insertBefore(img, document.body.firstElementChild);\n        `,\n        }}\n      />\n    </Fragment>\n  );\n};\n\nAnalytics.displayName = 'GAnalytics';\n\nAnalytics.displayName = 'GAnalytics';\n\nAnalytics.propTypes = {\n  id: PropTypes.string.isRequired,\n  flags: flagsPropType.isRequired,\n  tracking: PropTypes.shape({\n    micrositeName: PropTypes.string,\n  }),\n};\n\nAnalytics.defaultProps = {\n  tracking: {\n    micrositeName: undefined,\n  },\n};\n\nexport default Analytics;\n","import Delegate from 'ftdomdelegate';\nimport core from '../core.js';\nimport {sanitise, assignIfUndefined, merge } from '../utils.js';\nimport {get as getSetting} from '../core/settings.js';\nimport {getTrace} from '../../libs/get-trace.js';\nimport { Queue } from '../core/queue.js';\n\nlet delegate;\n\nconst eventPropertiesToCollect = [\n\t\"ctrlKey\",\n\t\"altKey\",\n\t\"shiftKey\",\n\t\"metaKey\",\n];\n\n// Get properties for the event (as opposed to properties of the clicked element)\n// Available properties include mouse x- and y co-ordinates, for example.\nconst getEventProperties = event => {\n\tconst eventProperties = {};\n\tfor (const property of eventPropertiesToCollect) {\n\t\tif (event[property]) {\n\t\t\ttry {\n\t\t\t\teventProperties[property] = sanitise(event[property]);\n\t\t\t} catch (e) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(e);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn eventProperties;\n};\n\n// Controller for handling click events\nconst handleClickEvent = eventData => (clickEvent, clickElement) => {\n\t//we don't want to track clicks to anonymous services like securedrop\n\tif (clickElement.getAttribute(\"data-o-tracking-do-not-track\") === \"true\") {return;}\n\tconst context = getEventProperties(clickEvent);\n\tconst { trace, customContext} = getTrace(clickElement);\n\tcontext.domPathTokens = trace;\n\tcontext.url = window.document.location.href || null;\n\t// source_id is a field that is currently being used in some data analytics\n\t// before removing this field - check with the data analytics team first to see if it is still being used\n\tcontext.source_id = core.getRootID();\n\n\tassignIfUndefined(customContext, context);\n\n\teventData.context = context;\n\n\t// Merge the event data into the \"parent\" config data\n\tconst config = merge(getSetting('config'), eventData);\n\tcore.track(config);\n};\n\n/**\n * Listen for click events.\n *\n * @alias click#init\n * @param {string} category - The event category for clicks.\n * @param {string} elementsToTrack - A query selector string to select elements to track links on {@link https://github.com/ftlabs/ftdomdelegate#selector-string}.\n * @returns {void}\n */\nconst init = (category, elementsToTrack) => {\n\telementsToTrack = elementsToTrack || 'a, button, input, [role=\"button\"]'; // See https://github.com/ftlabs/ftdomdelegate#selector-string\n\n\t// Note: `context` is the term o-tracking uses for the data that is sent to spoor\n\tconst eventData = {\n\t\taction: 'click',\n\t\tcategory: category || 'o-tracking'\n\t};\n\n\t// Activate the click event listener\n\tdelegate = delegate || new Delegate(document.body);\n\tdelegate.on('click', elementsToTrack, handleClickEvent(eventData), true);\n\n\t// Fire all click events that were stored in the old queue used by o-tracking v2\n\tconst clickQueue = new Queue('clicks');\n\tsendAllEventsFromQueue(clickQueue);\n};\n\nfunction sendAllEventsFromQueue(queue) {\n\tconst nextLink = queue.shift();\n\tif (nextLink) {\n\t\tcore.track(nextLink, () => sendAllEventsFromQueue(queue));\n\t}\n}\n\nconst click = {\n\tinit\n};\n\nexport { click };\n","/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n\n\t/**\n\t * Maintain a map of listener\n\t * lists, keyed by event name.\n\t *\n\t * @type Object\n\t */\n\tthis.listenerMap = [{}, {}];\n\tif (root) {\n\t\tthis.root(root);\n\t}\n\n\t/** @type function() */\n\tthis.handle = Delegate.prototype.handle.bind(this);\n\n\t// Cache of event listeners removed during an event cycle\n\tthis._removedListeners = [];\n}\n\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\nDelegate.prototype.root = function (root) {\n\tconst listenerMap = this.listenerMap;\n\tlet eventType;\n\n\t// Remove master event listeners\n\tif (this.rootElement) {\n\t\tfor (eventType in listenerMap[1]) {\n\t\t\tif (listenerMap[1].hasOwnProperty(eventType)) {\n\t\t\t\tthis.rootElement.removeEventListener(eventType, this.handle, true);\n\t\t\t}\n\t\t}\n\t\tfor (eventType in listenerMap[0]) {\n\t\t\tif (listenerMap[0].hasOwnProperty(eventType)) {\n\t\t\t\tthis.rootElement.removeEventListener(eventType, this.handle, false);\n\t\t\t}\n\t\t}\n\t}\n\n\t// If no root or root is not\n\t// a dom node, then remove internal\n\t// root reference and exit here\n\tif (!root || !root.addEventListener) {\n\t\tif (this.rootElement) {\n\t\t\tdelete this.rootElement;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * The root node at which\n\t * listeners are attached.\n\t *\n\t * @type Node\n\t */\n\tthis.rootElement = root;\n\n\t// Set up master event listeners\n\tfor (eventType in listenerMap[1]) {\n\t\tif (listenerMap[1].hasOwnProperty(eventType)) {\n\t\t\tthis.rootElement.addEventListener(eventType, this.handle, true);\n\t\t}\n\t}\n\tfor (eventType in listenerMap[0]) {\n\t\tif (listenerMap[0].hasOwnProperty(eventType)) {\n\t\t\tthis.rootElement.addEventListener(eventType, this.handle, false);\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * @param {string} eventType\n * @returns boolean\n */\nDelegate.prototype.captureForType = function (eventType) {\n\treturn ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n\tlet root;\n\tlet listenerMap;\n\tlet matcher;\n\tlet matcherParam;\n\n\tif (!eventType) {\n\t\tthrow new TypeError('Invalid event type: ' + eventType);\n\t}\n\n\t// handler can be passed as\n\t// the second or third argument\n\tif (typeof selector === 'function') {\n\t\tuseCapture = handler;\n\t\thandler = selector;\n\t\tselector = null;\n\t}\n\n\t// Fallback to sensible defaults\n\t// if useCapture not set\n\tif (useCapture === undefined) {\n\t\tuseCapture = this.captureForType(eventType);\n\t}\n\n\tif (typeof handler !== 'function') {\n\t\tthrow new TypeError('Handler must be a type of Function');\n\t}\n\n\troot = this.rootElement;\n\tlistenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n\t// Add master handler for type if not created yet\n\tif (!listenerMap[eventType]) {\n\t\tif (root) {\n\t\t\troot.addEventListener(eventType, this.handle, useCapture);\n\t\t}\n\t\tlistenerMap[eventType] = [];\n\t}\n\n\tif (!selector) {\n\t\tmatcherParam = null;\n\n\t\t// COMPLEX - matchesRoot needs to have access to\n\t\t// this.rootElement, so bind the function to this.\n\t\tmatcher = matchesRoot.bind(this);\n\n\t\t// Compile a matcher for the given selector\n\t} else if (/^[a-z]+$/i.test(selector)) {\n\t\tmatcherParam = selector;\n\t\tmatcher = matchesTag;\n\t} else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n\t\tmatcherParam = selector.slice(1);\n\t\tmatcher = matchesId;\n\t} else {\n\t\tmatcherParam = selector;\n\t\tmatcher = Element.prototype.matches;\n\t}\n\n\t// Add to the list of listeners\n\tlistenerMap[eventType].push({\n\t\tselector: selector,\n\t\thandler: handler,\n\t\tmatcher: matcher,\n\t\tmatcherParam: matcherParam\n\t});\n\n\treturn this;\n};\n\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n\tlet i;\n\tlet listener;\n\tlet listenerMap;\n\tlet listenerList;\n\tlet singleEventType;\n\n\t// Handler can be passed as\n\t// the second or third argument\n\tif (typeof selector === 'function') {\n\t\tuseCapture = handler;\n\t\thandler = selector;\n\t\tselector = null;\n\t}\n\n\t// If useCapture not set, remove\n\t// all event listeners\n\tif (useCapture === undefined) {\n\t\tthis.off(eventType, selector, handler, true);\n\t\tthis.off(eventType, selector, handler, false);\n\t\treturn this;\n\t}\n\n\tlistenerMap = this.listenerMap[useCapture ? 1 : 0];\n\tif (!eventType) {\n\t\tfor (singleEventType in listenerMap) {\n\t\t\tif (listenerMap.hasOwnProperty(singleEventType)) {\n\t\t\t\tthis.off(singleEventType, selector, handler);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tlistenerList = listenerMap[eventType];\n\tif (!listenerList || !listenerList.length) {\n\t\treturn this;\n\t}\n\n\t// Remove only parameter matches\n\t// if specified\n\tfor (i = listenerList.length - 1; i >= 0; i--) {\n\t\tlistener = listenerList[i];\n\n\t\tif ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n\t\t\tthis._removedListeners.push(listener);\n\t\t\tlistenerList.splice(i, 1);\n\t\t}\n\t}\n\n\t// All listeners removed\n\tif (!listenerList.length) {\n\t\tdelete listenerMap[eventType];\n\n\t\t// Remove the main handler\n\t\tif (this.rootElement) {\n\t\t\tthis.rootElement.removeEventListener(eventType, this.handle, useCapture);\n\t\t}\n\t}\n\n\treturn this;\n};\n\n\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\nDelegate.prototype.handle = function (event) {\n\tlet i;\n\tlet l;\n\tconst type = event.type;\n\tlet root;\n\tlet phase;\n\tlet listener;\n\tlet returned;\n\tlet listenerList = [];\n\tlet target;\n\tconst eventIgnore = 'ftLabsDelegateIgnore';\n\n\tif (event[eventIgnore] === true) {\n\t\treturn;\n\t}\n\n\ttarget = event.target;\n\n\t// Hardcode value of Node.TEXT_NODE\n\t// as not defined in IE8\n\tif (target.nodeType === 3) {\n\t\ttarget = target.parentNode;\n\t}\n\n\t// Handle SVG <use> elements in IE\n\tif (target.correspondingUseElement) {\n\t\ttarget = target.correspondingUseElement;\n\t}\n\n\troot = this.rootElement;\n\n\tphase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2);\n\n\t// eslint-disable-next-line default-case\n\tswitch (phase) {\n\t\tcase 1: //Event.CAPTURING_PHASE:\n\t\t\tlistenerList = this.listenerMap[1][type];\n\t\t\tbreak;\n\t\tcase 2: //Event.AT_TARGET:\n\t\t\tif (this.listenerMap[0] && this.listenerMap[0][type]) {\n\t\t\t\tlistenerList = listenerList.concat(this.listenerMap[0][type]);\n\t\t\t}\n\t\t\tif (this.listenerMap[1] && this.listenerMap[1][type]) {\n\t\t\t\tlistenerList = listenerList.concat(this.listenerMap[1][type]);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 3: //Event.BUBBLING_PHASE:\n\t\t\tlistenerList = this.listenerMap[0][type];\n\t\t\tbreak;\n\t}\n\n\tlet toFire = [];\n\n\t// Need to continuously check\n\t// that the specific list is\n\t// still populated in case one\n\t// of the callbacks actually\n\t// causes the list to be destroyed.\n\tl = listenerList.length;\n\twhile (target && l) {\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tlistener = listenerList[i];\n\n\t\t\t// Bail from this loop if\n\t\t\t// the length changed and\n\t\t\t// no more listeners are\n\t\t\t// defined between i and l.\n\t\t\tif (!listener) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttarget.tagName &&\n\t\t\t\t[\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 &&\n\t\t\t\ttarget.hasAttribute(\"disabled\")\n\t\t\t) {\n\t\t\t\t// Remove things that have previously fired\n\t\t\t\ttoFire = [];\n\t\t\t}\n\t\t\t// Check for match and fire\n\t\t\t// the event if there's one\n\t\t\t//\n\t\t\t// TODO:MCG:20120117: Need a way\n\t\t\t// to check if event#stopImmediatePropagation\n\t\t\t// was called. If so, break both loops.\n\t\t\telse if (listener.matcher.call(target, listener.matcherParam, target)) {\n\t\t\t\ttoFire.push([event, target, listener]);\n\t\t\t}\n\t\t}\n\n\t\t// TODO:MCG:20120117: Need a way to\n\t\t// check if event#stopPropagation\n\t\t// was called. If so, break looping\n\t\t// through the DOM. Stop if the\n\t\t// delegation root has been reached\n\t\tif (target === root) {\n\t\t\tbreak;\n\t\t}\n\n\t\tl = listenerList.length;\n\n\t\t// Fall back to parentNode since SVG children have no parentElement in IE\n\t\ttarget = target.parentElement || target.parentNode;\n\n\t\t// Do not traverse up to document root when using parentNode, though\n\t\tif (target instanceof HTMLDocument) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlet ret;\n\n\tfor (i = 0; i < toFire.length; i++) {\n\t\t// Has it been removed during while the event function was fired\n\t\tif (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n\t\t\tcontinue;\n\t\t}\n\t\treturned = this.fire.apply(this, toFire[i]);\n\n\t\t// Stop propagation to subsequent\n\t\t// callbacks if the callback returned\n\t\t// false\n\t\tif (returned === false) {\n\t\t\ttoFire[i][0][eventIgnore] = true;\n\t\t\ttoFire[i][0].preventDefault();\n\t\t\tret = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\nDelegate.prototype.fire = function (event, target, listener) {\n\treturn listener.handler.call(target, event, target);\n};\n\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\nfunction matchesTag(tagName, element) {\n\treturn tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\nfunction matchesRoot(selector, element) {\n\tif (this.rootElement === window) {\n\t\treturn (\n\t\t\t// Match the outer document (dispatched from document)\n\t\t\telement === document ||\n\t\t\t// The <html> element (dispatched from document.body or document.documentElement)\n\t\t\telement === document.documentElement ||\n\t\t\t// Or the window itself (dispatched from window)\n\t\t\telement === window\n\t\t);\n\t}\n\treturn this.rootElement === element;\n}\n\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\nfunction matchesId(id, element) {\n\treturn id === element.id;\n}\n\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\nDelegate.prototype.destroy = function () {\n\tthis.off();\n\tthis.root();\n};\n\nexport default Delegate;\n","import core from '../core.js';\nimport {getTrace} from '../../libs/get-trace.js';\nimport {assignIfUndefined, filterProperties} from '../utils.js';\n\nconst TRACKING_ATTRIBUTES = [\n\t'componentContentId',\n\t'type',\n\t'subtype',\n\t'component',\n];\n\nconst decorateEventData = (eventData, viewedEl, opts) => {\n\n\tconst { trace, customContext } = getTrace(viewedEl);\n\tlet context;\n\n\tif (opts.getContextData) {\n\t\tif (typeof opts.getContextData !== 'function') {\n\t\t\tthrow new Error('opts.getContextData is not a function');\n\t\t}\n\n\t\tconst contextData = opts.getContextData(viewedEl);\n\n\t\tif (typeof contextData !== 'object') {\n\t\t\tthrow new Error('opts.getContextData function should return {object}');\n\t\t}\n\n\t\tcontext = filterProperties(contextData, TRACKING_ATTRIBUTES);\n\t} else {\n\t\tcontext = {};\n\t}\n\n\tcontext.domPathTokens = trace;\n\tcontext.url = window.document.location.href || null;\n\n\tassignIfUndefined(customContext, context);\n\n\teventData.context = context;\n};\n\n/**\n * Listen for view events.\n *\n * @alias view#init\n * @param {object} opts - To set custom category[String], selector[String], getContextData[Function]\n * @returns {undefined}\n */\nconst init = (opts = {}) => {\n\tif(!window.IntersectionObserver) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn('o-tracking: Unable to track component view events as \"window.IntersectionObserver\" is not supported.');\n\t\treturn;\n\t}\n\n\tconst selector = opts.selector || '[data-o-tracking-view]';\n\tconst elementsToTrack = [...document.querySelectorAll(selector)];\n\n\tif (!elementsToTrack.length) {\n\t\treturn;\n\t}\n\n\tfunction onChange (changes) {\n\t\tchanges.forEach(change => {\n\t\t\tif(change.isIntersecting || change.intersectionRatio > 0) {\n\t\t\t\tconst eventData = {\n\t\t\t\t\taction: opts.action || 'view',\n\t\t\t\t\tcategory: opts.category || 'component'\n\t\t\t\t};\n\t\t\t\tconst viewedEl = change.target;\n\n\t\t\t\tdecorateEventData(eventData, viewedEl, opts);\n\t\t\t\tcore.track(eventData);\n\t\t\t\tobserver.unobserve(viewedEl);\n\t\t\t}\n\t\t});\n\t}\n\n\tconst observer = new IntersectionObserver(onChange, { threshold: [ 1.0 ] });\n\n\telementsToTrack.forEach(el => observer.observe(el));\n};\n\nconst view = {\n\tinit\n};\n\nexport { view };\n\n\n","module.exports = function(md, options) {\n  options = options || {};\n  options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false;\n  options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true;\n  options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true;\n  options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true;\n\n  var output = md || '';\n\n  // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)\n  output = output.replace(/^(-\\s*?|\\*\\s*?|_\\s*?){3,}\\s*$/gm, '');\n\n  try {\n    if (options.stripListLeaders) {\n      if (options.listUnicodeChar)\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, options.listUnicodeChar + ' $1');\n      else\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, '$1');\n    }\n    if (options.gfm) {\n      output = output\n        // Header\n        .replace(/\\n={2,}/g, '\\n')\n        // Fenced codeblocks\n        .replace(/~{3}.*\\n/g, '')\n        // Strikethrough\n        .replace(/~~/g, '')\n        // Fenced codeblocks\n        .replace(/`{3}.*\\n/g, '');\n    }\n    output = output\n      // Remove HTML tags\n      .replace(/<[^>]*>/g, '')\n      // Remove setext-style headers\n      .replace(/^[=\\-]{2,}\\s*$/g, '')\n      // Remove footnotes?\n      .replace(/\\[\\^.+?\\](\\: .*?$)?/g, '')\n      .replace(/\\s{0,2}\\[.*?\\]: .*?$/g, '')\n      // Remove images\n      .replace(/\\!\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, options.useImgAltText ? '$1' : '')\n      // Remove inline links\n      .replace(/\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, '$1')\n      // Remove blockquotes\n      .replace(/^\\s{0,3}>\\s?/g, '')\n      // Remove reference-style links?\n      .replace(/^\\s{1,2}\\[(.*?)\\]: (\\S+)( \".*?\")?\\s*$/g, '')\n      // Remove atx-style headers\n      .replace(/^(\\n)?\\s{0,}#{1,6}\\s+| {0,}(\\n)?\\s{0,}#{0,} {0,}(\\n)?\\s{0,}$/gm, '$1$2$3')\n      // Remove emphasis (repeat the line to remove double emphasis)\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      // Remove code blocks\n      .replace(/(`{3,})(.*?)\\1/gm, '$2')\n      // Remove inline code\n      .replace(/`(.+?)`/g, '$1')\n      // Replace two or more newlines with exactly two? Not entirely sure this belongs here...\n      .replace(/\\n{2,}/g, '\\n\\n');\n  } catch(e) {\n    console.error(e);\n    return md;\n  }\n  return output;\n};\n","/**\n * @file\n * Various ad sizes\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nexport const Ad = ({\n  name,\n  targeting,\n  background,\n  reserve,\n  showAdsLabel,\n  defaultFormat,\n  smallFormat,\n  mediumFormat,\n  largeFormat,\n  extraFormat,\n}) => {\n  return (\n    <div\n      className={`o-ads o-ads--center o-ads--${\n        background === 'slate' ? 'slate-' : ''\n      }background o-ads--reserve-${reserve} ${showAdsLabel ? 'o-ads--label-left' : ''}`}\n      data-o-ads-name={name}\n      data-o-ads-targeting={targeting}\n      data-o-ads-formats-default={defaultFormat}\n      data-o-ads-formats-small={smallFormat}\n      data-o-ads-formats-medium={mediumFormat}\n      data-o-ads-formats-large={largeFormat}\n      data-o-ads-formats-extra={extraFormat}\n      aria-hidden=\"true\"\n    />\n  );\n};\n\nAd.displayName = 'GAd';\n\nexport const TopAd = () => (\n  <Ad\n    name=\"top-ad\"\n    targeting=\"pos=top;\"\n    reserve=\"90\"\n    defaultFormat={false}\n    smallFormat={false}\n    mediumFormat=\"Leaderboard,Responsive\"\n    largeFormat=\"SuperLeaderboard,Leaderboard,Responsive\"\n    extraFormat=\"Billboard,SuperLeaderboard,Leaderboard,Responsive\"\n  />\n);\n\nTopAd.displayName = 'GTopAd';\n\nexport const MiddleAd = () => (\n  <Ad\n    name=\"mid-ad\"\n    targeting=\"pos=mid;\"\n    reserve=\"250\"\n    showAdsLabel\n    defaultFormat=\"Responsive\"\n    smallFormat=\"MediumRectangle,Responsive\"\n    mediumFormat=\"MediumRectangle,Responsive\"\n    largeFormat=\"MediumRectangle,Responsive\"\n    extraFormat=\"MediumRectangle,Responsive\"\n  />\n);\n\nMiddleAd.displayName = 'GMiddleAd';\n\nAd.propTypes = {\n  name: PropTypes.string,\n  targeting: PropTypes.string,\n  background: PropTypes.oneOf(['default', 'slate']),\n  reserve: PropTypes.oneOf(['90', '250']), // creates placeholder of height to prevent page from jumping when ad loads\n  showAdsLabel: PropTypes.bool,\n  defaultFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  smallFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  mediumFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  largeFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  extraFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n};\n\n// defaults to top ad configuration\nAd.defaultProps = {\n  name: 'top-ad',\n  targeting: 'pos=top',\n  background: 'default',\n  reserve: '90',\n  showAdsLabel: false,\n  defaultFormat: false,\n  smallFormat: false,\n  mediumFormat: 'Leaderboard,Responsive',\n  largeFormat: 'SuperLeaderboard,Leaderboard,Responsive',\n  extraFormat: 'Billboard,SuperLeaderboard,Leaderboard,Responsive',\n};\n","/**\n * @file\n * OnwardJourney component\n */\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeCancelable } from '../shared/helpers';\nimport './styles.scss';\n\nconst OnwardJourney = ({ urlBase, layout, relatedContent }) => {\n  const [sections, setSections] = useState([]);\n  const sectionP = useRef();\n\n  useEffect(() => {\n    (async () => {\n      sectionP.current = makeCancelable(\n        Promise.all(\n          relatedContent.map(({ list, rows = 1 }) => {\n            const limit = rows * 4;\n            const url = `${urlBase}${list}/html/${layout}?limit=${limit}`;\n            return fetch(url).then(res => res.text());\n          }),\n        ),\n      );\n\n      try {\n        const sections = await sectionP.current.promise;\n        setSections(sections);\n      } catch (e) {\n        if (e.isCanceled) return;\n        console.error(e); // eslint-disable-line no-console\n      }\n    })();\n\n    // Cleanup\n    return () => {\n      sectionP.current.cancel();\n    };\n  }, [layout, relatedContent, urlBase]);\n\n  return sections.map((section, idx) => (\n    <section\n      key={idx} // eslint-disable-line react/no-array-index-key\n      className=\"onward-journey__section\"\n      data-g-component=\"onward-journey\"\n      dangerouslySetInnerHTML={{ __html: section }} // eslint-disable-line react/no-danger\n    />\n  ));\n};\n\nOnwardJourney.displayName = 'GOnwardJourney';\n\nOnwardJourney.propTypes = {\n  relatedContent: PropTypes.arrayOf(\n    PropTypes.shape({\n      rows: PropTypes.number.isRequired,\n      list: PropTypes.string,\n    }),\n  ),\n  urlBase: PropTypes.string,\n  layout: PropTypes.string,\n};\n\nOnwardJourney.defaultProps = {\n  relatedContent: [],\n  urlBase: 'https://ig.ft.com/onwardjourney/v3/',\n  layout: '',\n};\n\nexport default OnwardJourney;\n","/**\n * @file\n * Comments component\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport OComments from '@financial-times/o-comments';\nimport { flagsPropType } from '../shared/proptypes';\nimport './styles.scss';\n\nconst Comments = ({ id, url, linkPageUrl, flags }) => {\n  const ref = useRef();\n\n  const { dark } = flags;\n\n  useEffect(() => {\n    if ((id && linkPageUrl) || (id && url)) {\n      new OComments(ref.current, {\n        // eslint-disable-line no-new\n        articleUrl: linkPageUrl || url,\n        articleId: id,\n        title: id,\n      });\n    }\n  }, [id, url, linkPageUrl]);\n\n  const comments = (\n    <div className=\"o-grid-container\">\n      <div className=\"o-grid-row\">\n        <div data-o-grid-colspan=\"12 S11 Scenter M9 L8 XL7\">\n          <div ref={ref} data-o-component=\"o-comments\" id=\"comments\">\n            <div className=\"o--if-no-js\">\n              To participate in this chat, you need to upgrade to a newer web browser.{' '}\n              <a href=\"https://help.ft.com/tools-services/browser-compatibility/\">Learn more.</a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n\n  if (dark) {\n    return <div className=\"pink\">{comments}</div>;\n  }\n\n  return comments;\n};\n\nComments.displayName = 'GComments';\n\nComments.propTypes = {\n  title: PropTypes.string,\n  id: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  flags: flagsPropType,\n};\n\nComments.defaultProps = {\n  title: 'Comments',\n  flags: {\n    dark: false,\n  },\n};\n\nexport default Comments;\nComments.displayName = 'GComments';\n","import Comments from './src/js/comments.js';\n\nconst constructAll = function () {\n\tComments.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Comments;\n","import events from './utils/events.js';\nimport displayName from './utils/display-name.js';\nimport auth from './utils/auth.js';\nimport purgeJwtCache from './utils/purge-jwt-cache.js';\n\nclass Stream {\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {HTMLElement} [streamEl] - The component element in the DOM\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t */\n\tconstructor (streamEl, opts = {}) {\n\t\tthis.streamEl = streamEl || document;\n\t\tthis.options = opts;\n\t\tthis.eventSeenTimes = {};\n\t\tthis.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n\t}\n\n\tinit () {\n\t\tconst renderAndAuthenticate = (displayName) => {\n\t\t\treturn Promise.all([this.renderComments(), this.authenticateUser(displayName)])\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.login();\n\t\t\t\t});\n\t\t};\n\n\t\treturn displayName.validation(this.options.displayName)\n\t\t\t.then(displayName => renderAndAuthenticate(displayName))\n\t\t\t.catch(() => renderAndAuthenticate());\n\t}\n\n\tlogin () {\n\t\tif (this.authenticationToken) {\n\t\t\tthis.embed.login(this.authenticationToken);\n\n\t\t\tif (this.displayName) {\n\t\t\t\tthis.renderSignedInMessage();\n\t\t\t}\n\t\t}\n\t}\n\n\tauthenticateUser (displayName) {\n\t\tconst fetchOptions = {\n\t\t\tuseStagingEnvironment: this.useStagingEnvironment\n\t\t};\n\n\t\tif (displayName) {\n\t\t\tfetchOptions.displayName = displayName;\n\t\t}\n\n\t\treturn auth.fetchJsonWebToken(fetchOptions)\n\t\t\t.then(response => {\n\t\t\t\tthis.displayName = response.displayName;\n\n\t\t\t\tif (response.token) {\n\t\t\t\t\tthis.authenticationToken = response.token;\n\t\t\t\t} else {\n\t\t\t\t\tthis.userHasValidSession = response.userHasValidSession;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\treturn false;\n\t\t\t});\n\t}\n\n\trenderComments () {\n\t\treturn new Promise((resolve) => {\n\t\t\ttry {\n\t\t\t\t/*global Coral*/\n\t\t\t\tconst cacheBuster = 'cachebust=20210806';\n\t\t\t\tconst rootUrl = this.useStagingEnvironment\n\t\t\t\t\t? 'https://ft.staging.coral.coralproject.net'\n\t\t\t\t\t: 'https://ft.coral.coralproject.net';\n\n\t\t\t\tconst scriptElement = document.createElement('script');\n\t\t\t\tscriptElement.src = `${rootUrl}/assets/js/embed.js?${cacheBuster}`;\n\n\t\t\t\tscriptElement.onload = () => {\n\t\t\t\t\tthis.embed = Coral.createStreamEmbed(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: this.streamEl.id,\n\t\t\t\t\t\t\tstoryURL: this.options.articleUrl,\n\t\t\t\t\t\t\tstoryID: this.options.articleId,\n\t\t\t\t\t\t\trootURL: rootUrl,\n\t\t\t\t\t\t\tautoRender: true,\n\t\t\t\t\t\t\tevents: (events) => {\n\t\t\t\t\t\t\t\tevents.onAny((name, data) => {\n\t\t\t\t\t\t\t\t\tthis.publishEvent({name, data});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tthis.streamEl.parentNode.appendChild(scriptElement);\n\n\t\t\t\tif (this.useStagingEnvironment) {\n\t\t\t\t\tconst stagingWarning = document.createElement('div');\n\t\t\t\t\tstagingWarning.innerHTML = `\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"o-comments__staging-message-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"o-comments__staging-message-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"o-comments__staging-message\">You are on the staging environment for Comments</p>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>`;\n\t\t\t\t\tthis.streamEl.parentNode.insertBefore(stagingWarning, this.streamEl);\n\t\t\t\t}\n\n\t\t\t\tdocument.dispatchEvent(new Event('oCommentsReady'));\n\t\t\t} catch (error) {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\tdisplayNamePrompt ({purgeCacheAfterCompletion = false} = {}) {\n\t\tconst overlay = displayName.prompt();\n\n\t\tconst onOverlayReady = (event) => {\n\t\t\tconst sourceOverlay = event.srcElement;\n\t\t\tconst displayNameForm = sourceOverlay.querySelector('#o-comments-displayname-form');\n\n\t\t\tif (displayNameForm) {\n\t\t\t\tdisplayNameForm.addEventListener('submit', (event) => {\n\t\t\t\t\tdisplayName.promptValidation(event)\n\t\t\t\t\t\t.then(displayName => {\n\t\t\t\t\t\t\toverlay.close();\n\t\t\t\t\t\t\tthis.authenticateUser(displayName)\n\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\tthis.login();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (purgeCacheAfterCompletion) {\n\t\t\t\t\t\t\t\tpurgeJwtCache();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('oOverlay.ready', onOverlayReady);\n\n\t\tconst onOverlayClosed = () => {\n\t\t\toverlay.context.removeEventListener('oLayers.close', onOverlayClosed);\n\t\t\tdocument.removeEventListener('oOverlay.ready', onOverlayReady);\n\t\t\toverlay.destroy();\n\t\t};\n\t\toverlay.context.addEventListener('oLayers.close', onOverlayClosed);\n\t}\n\n\t/**\n\t * Emits events that have a valid o-comment event name.\n\t *\n\t * @param {object} args - The args object\n\t * @param {string} args.name - The event name\n\t * @param {object} args.data - The event payload\n\t * @returns {void}\n\t */\n\tpublishEvent ({name, data = {}}) {\n\t\tconst {\n\t\t\tsuccess: {\n\t\t\t\tstatus\n\t\t\t} = {},\n\t\t\terror\n\t\t} = data;\n\n\t\tif (name === 'loginPrompt' && this.userHasValidSession) {\n\t\t\treturn this.displayNamePrompt();\n\t\t}\n\n\t\tconst mappedEvent = events.coralEventMap.get(name);\n\n\t\tif (mappedEvent) {\n\t\t\tconst now = Number(new Date);\n\t\t\tconst delayInMilliseconds = 100;\n\t\t\tconst eventHasntBeenSeenRecently = !this.eventSeenTimes[mappedEvent.oComments] ||\n\t\t\t\tnow > this.eventSeenTimes[mappedEvent.oComments] + delayInMilliseconds;\n\n\t\t\tif (eventHasntBeenSeenRecently) {\n\t\t\t\tthis.eventSeenTimes[mappedEvent.oComments] = now;\n\n\t\t\t\tconst oCommentsEventOptions = { bubbles: true };\n\t\t\t\tif (error) {\n\t\t\t\t\toCommentsEventOptions.detail = { error };\n\t\t\t\t}\n\n\t\t\t\tconst oCommentsEvent = new CustomEvent(mappedEvent.oComments, oCommentsEventOptions);\n\t\t\t\tthis.streamEl.dispatchEvent(oCommentsEvent);\n\n\t\t\t\tif (mappedEvent.oTracking && !this.options.disableOTracking) {\n\t\t\t\t\tconst oTrackingEventOptions = {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tcategory: 'comment',\n\t\t\t\t\t\t\taction: mappedEvent.oTracking,\n\t\t\t\t\t\t\tcoral: true,\n\t\t\t\t\t\t\tisWithheld: status === 'SYSTEM_WITHHELD'\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\toTrackingEventOptions.detail.error = error;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst oTrackingEvent = new CustomEvent('oTracking.event', oTrackingEventOptions);\n\t\t\t\t\tdocument.body.dispatchEvent(oTrackingEvent);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\trenderSignedInMessage () {\n\t\tconst editButtonId = `o-comments-edit-button--${this.streamEl.id}`;\n\t\tconst signedInMessage = document.createElement('div');\n\t\tsignedInMessage.classList.add('o-comments__signed-in-container');\n\t\tsignedInMessage.innerHTML = `\n\t\t\t\t\t\t\t\t\t<p class=\"o-comments__signed-in-text\">Signed in as\n\t\t\t\t\t\t\t\t\t\t<span class=\"o-comments__signed-in-inner-text\"></span>\n\t\t\t\t\t\t\t\t\t\t<button id=\"${editButtonId}\" class=\"o-comments__edit-display-name\">\n\t\t\t\t\t\t\t\t\t\t\tEdit <span class=\"o-comments__edit-display-name-descriptive\">commenting display name</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</p>`;\n\t\tsignedInMessage.querySelector('.o-comments__signed-in-inner-text').innerText = this.displayName;\n\n\t\tconst oldSignedInMessage = this.streamEl.parentNode.querySelector('.o-comments__signed-in-container');\n\t\tif (oldSignedInMessage) {\n\t\t\toldSignedInMessage.remove();\n\t\t}\n\n\t\tthis.streamEl.parentNode.insertBefore(signedInMessage, this.streamEl);\n\n\t\tdocument.getElementById(editButtonId).onclick = () => {\n\t\t\tthis.displayNamePrompt({purgeCacheAfterCompletion: true});\n\t\t};\n\t}\n}\n\nexport default Stream;\n","const coralEventMap = new Map([\n\t['ready',\n\t\t{\n\t\t\toComments: 'oComments.ready',\n\t\t\toTracking: 'ready'\n\t\t}\n\t],\n\t['loginPrompt',\n\t\t{\n\t\t\toComments: 'oComments.loginPrompt'\n\t\t}\n\t],\n\t['createComment.success',\n\t\t{\n\t\t\toComments: 'oComments.postComment',\n\t\t\toTracking: 'post'\n\t\t}\n\t],\n\t['createComment.error',\n\t\t{\n\t\t\toComments: 'oComments.errorComment',\n\t\t\toTracking: 'post-error'\n\t\t}\n\t],\n\t['createCommentReply.success',\n\t\t{\n\t\t\toComments: 'oComments.replyComment',\n\t\t\toTracking: 'reply'\n\t\t}\n\t],\n\t['editComment.success',\n\t\t{\n\t\t\toComments: 'oComments.editComment',\n\t\t\toTracking: 'edit'\n\t\t}\n\t],\n\t['createCommentReaction.success',\n\t\t{\n\t\t\toComments: 'oComments.likeComment',\n\t\t\toTracking: 'like'\n\t\t}\n\t],\n\t['reportComment.success',\n\t\t{\n\t\t\toComments: 'oComments.reportComment',\n\t\t\toTracking: 'report'\n\t\t}\n\t],\n\t['ignoreUser.success',\n\t\t{\n\t\t\toComments: 'oComments.ignoreUser',\n\t\t\toTracking: 'ignore-user'\n\t\t}\n\t]\n]);\n\nexport default {\n\tcoralEventMap\n};\n","export default {\n\tfetchJsonWebToken: function fetchJsonWebToken (options = {}) {\n\t\tconst url = new URL('https://comments-api.ft.com/user/auth/');\n\n\t\tif (options.displayName) {\n\t\t\turl.searchParams.append('displayName', options.displayName);\n\t\t}\n\n\t\tif (options.useStagingEnvironment) {\n\t\t\turl.searchParams.append('staging', '1');\n\t\t}\n\n\t\treturn fetch(url, { credentials: 'include' }).then(response => {\n\t\t// user is signed in and has a pseudonym\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t// user is signed in but has no display name\n\t\t\t\tif (response.status === 409) {\n\t\t\t\t\treturn { userHasValidSession: true };\n\t\t\t\t}\n\n\t\t\t\t// user is not signed in or session token is invalid\n\t\t\t\t// or error in comments api\n\t\t\t\treturn { userHasValidSession: false };\n\t\t\t}\n\t\t});\n\t}\n};\n","export default function purgeJwtCache() {\n\tconst url = `https://comments-api.ft.com/user/auth`;\n\treturn fetch(url, {\n\t\tmethod: 'PURGE',\n\t\tcredentials: 'include'\n\t});\n}\n","/**\n * @file\n * Footer component\n */\nimport React, { useEffect, useRef } from 'react';\nimport OFooter from '@financial-times/o-footer';\nimport './styles.scss';\n\nconst Footer = () => {\n  const ref = useRef();\n\n  useEffect(() => {\n    (async () => {\n      try {\n        new OFooter(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, []);\n\n  return (\n    <footer\n      ref={ref}\n      data-o-footer--no-js=\"\"\n      className=\"o-footer o-footer--theme-dark\"\n      data-o-component=\"o-footer\"\n    >\n      <div className=\"o-footer__container\">\n        <div className=\"o-footer__row\">\n          <nav className=\"o-footer__matrix\" role=\"navigation\" aria-label=\"Useful links\">\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\">Support</h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-0\">\n                <div className=\"o-footer__matrix-column\">\n                  <a className=\"o-footer__matrix-link\" href=\"/tour\" data-trackable=\"View Site Tips\">\n                    <span className=\"o-footer__matrix-link__copy\">View Site Tips</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com\"\n                    data-trackable=\"Help Centre\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Help Centre</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://aboutus.ft.com/contact-us\"\n                    data-trackable=\"Contact Us\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Contact Us</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/aboutus\"\n                    data-trackable=\"About Us\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">About Us</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/accessibility\"\n                    data-trackable=\"Accessibility\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Accessibility</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/tour/myft\"\n                    data-trackable=\"myFT Tour\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">myFT Tour</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://aboutus.ft.com/en-gb/careers/\"\n                    data-trackable=\"Careers\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Careers</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\">Legal &amp; Privacy</h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-1\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/terms-conditions/\"\n                    data-trackable=\"Terms &amp; Conditions\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Terms &amp; Conditions</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/privacy/\"\n                    data-trackable=\"Privacy Policy\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Privacy Policy</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/cookies/\"\n                    data-trackable=\"Cookies\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Cookies</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\"\n                    data-trackable=\"Copyright\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Copyright</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal/slavery-statement/\"\n                    data-trackable=\"Slavery Statement &amp; Policies\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Slavery Statement &amp; Policies</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-2\">\n                Services\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-2\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/securedrop\"\n                    data-trackable=\"Share News Tips Securely\"\n                    data-o-tracking-do-not-track=\"true\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Share News Tips Securely</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/products\"\n                    data-trackable=\"Individual Subscriptions\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Individual Subscriptions</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/group-subscriptions/group-contact-us/?segmentId=383c7f63-abf4-b62d-cb33-4c278e6fdf61&amp;cpccampaign=B2B_link_ft.com_footer\"\n                    data-trackable=\"Group Subscriptions\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Group Subscriptions</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/republishing/\"\n                    data-trackable=\"Republishing\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Republishing</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.businessesforsale.com/ft2/notices\"\n                    data-trackable=\"Contracts &amp; Tenders\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Contracts &amp; Tenders</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.exec-appointments.com/\"\n                    data-trackable=\"Executive Job Search\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Executive Job Search</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://fttoolkit.co.uk/\"\n                    data-trackable=\"Advertise with the FT\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Advertise with the FT</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://twitter.com/financialtimes\"\n                    data-trackable=\"Follow the FT on Twitter\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Follow the FT on Twitter</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://transact.ft.com/\"\n                    data-trackable=\"FT Transact\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Transact</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/group-subscriptions/education/\"\n                    data-trackable=\"Secondary Schools\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Secondary Schools</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-3\">\n                Tools\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-3\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/data/portfolio/dashboard\"\n                    data-trackable=\"Portfolio\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Portfolio</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/todaysnewspaper\"\n                    data-trackable=\"Today's Newspaper (ePaper)\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Today's Newspaper (ePaper)</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/data/alerts/\"\n                    data-trackable=\"Alerts Hub\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Alerts Hub</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://rankings.ft.com\"\n                    data-trackable=\"Business School Rankings\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Business School Rankings</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://kat.ft.com/\"\n                    data-trackable=\"Enterprise Tools\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Enterprise Tools</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/news-feed\"\n                    data-trackable=\"News feed\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">News feed</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/newsletters\"\n                    data-trackable=\"Newsletters\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Newsletters</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/research/Markets/Currencies?segid=70113\"\n                    data-trackable=\"Currency Converter\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Currency Converter</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-4\">\n                Community &amp; Events\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-4\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/tour/community\"\n                    data-trackable=\"FT Community\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Community</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://live.ft.com/\"\n                    data-trackable=\"FT Live\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Live</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://forums.ft.com\"\n                    data-trackable=\"FT Forums\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Forums</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://bdp.ft.com\"\n                    data-trackable=\"Board Director Programme\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Board Director Programme</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title o-footer__matrix-title--link\">\n                <a className='o-footer__matrix-link o-footer__matrix-link--more' id=\"o-footer-section-5\" href=\"https://ft.com/more-from-ft-group\">\n                  <span className=\"o-footer__matrix-link__copy\">More from the FT Group</span>\n                </a>\n              </h3>\n            </div>\n          </nav>\n        </div>\n        <div className=\"o-footer__copyright\" role=\"contentinfo\">\n          <small>\n            Markets data delayed by at least 15 minutes. &#xA9; THE FINANCIAL TIMES LTD{' '}\n            {new Date().getFullYear()}\n            {'. '}\n            <abbr title=\"Financial Times\" aria-label=\"F T\">\n              FT\n            </abbr>{' '}\n            and &#x2018;Financial Times&#x2019; are trademarks of The Financial Times Ltd.\n            <br />\n            The Financial Times and its journalism are subject to a self-regulation regime under the{' '}\n            <a\n              href=\"https://aboutus.ft.com/en-gb/ft-editorial-code/\"\n              aria-label=\"F T Editorial Code of Practice\"\n            >\n              FT Editorial Code of Practice\n            </a>\n            .\n          </small>\n        </div>\n      </div>\n      <div className=\"o-footer__brand\">\n        <div className=\"o-footer__container\">\n          <div className=\"o-footer__brand-logo\" />\n        </div>\n      </div>\n    </footer>\n  );\n};\n\nFooter.displayName = 'GFooter';\n\nexport default Footer;\n","import Footer from './src/js/footer.js';\n\nconst constructAll = () => {\n\tFooter.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Footer;\n","import oGrid from '@financial-times/o-grid';\nimport oViewport from '@financial-times/o-viewport';\n\nexport default function init (callback) {\n\toViewport.listenTo('resize');\n\n\tlet lastBreakpoint = oGrid.getCurrentLayout();\n\n\tdocument.body.addEventListener('oViewport.resize', () => {\n\t\tconst breakpoint = oGrid.getCurrentLayout();\n\n\t\tif (breakpoint !== lastBreakpoint) {\n\t\t\tcallback(breakpoint);\n\t\t\tlastBreakpoint = breakpoint;\n\t\t}\n\t});\n\n\tcallback(lastBreakpoint);\n}\n","import oViewport from '@financial-times/o-viewport';\n\n/**\n * Utility methods for o-ads events. Methods defined here are added to the utils object not the utils.event object.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils/events\n * @see utils\n */\n// Creates a timestamp in the browser's performance entry buffer\n// for later use\nconst perfMark = name => {\n  /* istanbul ignore next */\n  const performance = window.LUX || window.performance || window.msPerformance || window.webkitPerformance || window.mozPerformance;\n\n  if (performance && performance.mark) {\n    performance.clearMarks(name);\n    performance.mark(name);\n  }\n}; // Creates a suffix for an event's performance mark based on some of the attributes on\n// the event payload which help identify unequivocally the slot that originated the event\n\nfunction buildPerfmarkSuffix(eventDetailsObj) {\n  let suffix = '';\n\n  if (eventDetailsObj && typeof eventDetailsObj === 'object' && 'pos' in eventDetailsObj && 'name' in eventDetailsObj) {\n    suffix = '__' + [eventDetailsObj.pos, eventDetailsObj.name, eventDetailsObj.size, eventDetailsObj.creativeId].join('__');\n  }\n\n  return suffix;\n}\n/**\n* Broadscasts an o-ads event\n* @param {string} name The name of the event\n* @param {object} data The data to send as event detail\n* @param {HTMLElement} target The element to attach the event listener to\n*/\n\nfunction broadcast(eventName, data, target) {\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n  target = target || document.body || document.documentElement;\n  eventName = `oAds.${eventName}`;\n  const opts = {\n    bubbles: true,\n    cancelable: true,\n    detail: data\n  };\n  const isSlotEvent = typeof data === 'object' && 'pos' in data;\n  const evDetails = isSlotEvent ? {\n    pos: data.pos,\n    name: data.name,\n    size: data.size && data.size.length ? data.size.toString() : '',\n    creativeId: data.creativeId\n  } : {};\n  const suffix = buildPerfmarkSuffix(evDetails);\n  const markName = eventName + suffix;\n  perfMark(markName);\n  target.dispatchEvent(new CustomEvent(eventName, opts));\n}\n/**\n* Sets an event listener for an oAds event\n* @param {string} name The name of the event\n* @param {EventListenerOrEventListenerObject} callback The function to execute on the event\n* @param {HTMLElement} [target] The element to attach the event listener to\n*/\n\nfunction on(name, callback, target) {\n  name = `oAds.${name}`;\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n\n  target = target || document.body || document.documentElement;\n  target.addEventListener(name, callback);\n}\n/**\n* Removes an event listener for an oAds event\n* @param {string} name The name of the event\n* @param {function} callback The function on the event to be removed\n* @param {HTMLElement} target The element the event listener is attached to\n*/\n\nfunction off(name, callback, target) {\n  name = `oAds.${name}`;\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n\n  target = target || document.body || document.documentElement;\n  target.removeEventListener(name, callback);\n}\n/**\n* Sets a one time event listener for an oAds event\n* @param {string} name The name of the event\n* @param {function} callback The function to execute on the event\n* @param {HTMLElement} [target] The element to attach the event listener to\n*/\n\nfunction once(name, callback, target) {\n  const handler = function (event) {\n    /* istanbul ignore next: ignore the final fallback as hard trigger */\n    const targ = event.target || event.srcElement;\n    targ.removeEventListener(name = `oAds.${name}`, callback);\n\n    if (callback) {\n      callback(event); // we set callback to null so if for some reason the listener isn't removed the callback will still only be called once\n\n      callback = null;\n    }\n  };\n\n  on(name, handler, target);\n}\n\nfunction getMarksForEvents(events, suffix) {\n  const markNames = events.map(eventName => 'oAds.' + eventName + suffix);\n\n  if (!performance || !performance.getEntriesByName) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  const marks = {};\n  markNames.forEach(function (mName) {\n    const pMarks = performance.getEntriesByName(mName);\n    const markName = mName.replace('oAds.', '').replace(suffix, '');\n\n    if (pMarks && pMarks.length) {\n      // We don't need sub-millisecond precision\n      marks[markName] = Math.round(pMarks[0].startTime);\n      return;\n    } // If no mark has been found, we might be looking for a page-level\n    // mark name, i.e. one without a suffix\n\n\n    if (suffix) {\n      const mNameNoSuffix = mName.replace(suffix, '');\n      const pMarks2 = performance.getEntriesByName(mNameNoSuffix);\n\n      if (pMarks2 && pMarks2.length) {\n        marks[markName] = Math.round(pMarks2[0].startTime);\n      }\n    }\n  });\n  return marks;\n}\nfunction clearPerfMarks(metricsDefinitions, groupsToClear) {\n  if (!performance || !performance.getEntriesByType) {\n    return;\n  }\n\n  const relevantGroups = metricsDefinitions.filter(group => groupsToClear.includes(group.spoorAction));\n  const relevantGroupsMarks = relevantGroups.map(group => group.marks); // Because relevantGroupsMarks is a 2D array ...\n\n  const eventsToClear = [].concat(...relevantGroupsMarks);\n  const perfMarks = performance.getEntriesByType('mark');\n  perfMarks.forEach(({\n    name\n  }) => {\n    eventsToClear.forEach(eventName => {\n      if (name.match(`oAds.${eventName}`)) {\n        performance.clearMarks(name);\n      }\n    });\n  });\n}\n/* istanbul ignore next */\n\nfunction getNavigationPerfMarks(desiredMarks) {\n  if (!performance || !performance.getEntriesByType || !utils.isArray(desiredMarks)) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  const navMarksArray = performance.getEntriesByType('navigation');\n  const navMarks = utils.isArray(navMarksArray) && navMarksArray[0] || {};\n  const marks = {};\n  desiredMarks.forEach(function (markName) {\n    marks[markName] = typeof navMarks[markName] === 'number' ? Math.round(navMarks[markName]) : 0;\n  });\n  return marks;\n}\n\nfunction setupMetrics(definitions, callback, disableSampling) {\n  if (!Array.isArray(definitions)) {\n    this.log.warn('Metrics definitions should be an array. o-Ads will not record any metrics.');\n    return;\n  }\n\n  definitions.forEach(function (eDef) {\n    if (disableSampling || utils.inSample(eDef.sampleSize)) {\n      const triggers = Array.isArray(eDef.triggers) ? eDef.triggers : [];\n      triggers.forEach(function (trigger) {\n        sendMetricsOnEvent('oAds.' + trigger, eDef, callback);\n      });\n    }\n  });\n}\n\nfunction sendMetricsOnEvent(eventName, eMarkMap, callback) {\n  document.addEventListener(eventName, function listenOnInitialised(event) {\n    sendMetrics(eMarkMap, event.detail, callback);\n\n    if (!eMarkMap.multiple) {\n      document.removeEventListener(eventName, listenOnInitialised);\n    }\n  });\n}\n\nfunction sendMetrics(eMarkMap, eventDetails, callback) {\n  const suffix = utils.buildPerfmarkSuffix(eventDetails);\n  const marks = getMarksForEvents(eMarkMap.marks, suffix);\n\n  if (eMarkMap.navigation) {\n    const navMarks = getNavigationPerfMarks(eMarkMap.navigation);\n    Object.assign(marks, navMarks);\n  }\n\n  const eventPayload = {\n    category: 'ads',\n    action: eMarkMap.spoorAction,\n    timings: {\n      marks: marks\n    }\n  };\n  eventPayload.advert = {\n    correlator: window.oAds.gpt.getCorrelator()\n  };\n\n  if (eventDetails && 'pos' in eventDetails) {\n    eventPayload.creative = {\n      name: eventDetails.name,\n      pos: eventDetails.pos,\n      size: eventDetails.size && eventDetails.size.toString(),\n      creativeId: eventDetails.creativeId || 0\n    };\n\n    if (typeof eventDetails.isEmpty === 'boolean') {\n      eventPayload.creative.isEmpty = eventDetails.isEmpty;\n    }\n  }\n\n  callback(eventPayload);\n}\n\nfunction markPageChange(definitions, groupsToClear) {\n  clearPerfMarks(definitions, groupsToClear);\n  utils.broadcast('pageChange');\n}\n\n/**\n * Utility methods for postMessage api.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\nvar messenger = {\n  post: function (message, source) {\n    message = typeof message === 'string' ? message : JSON.stringify(message);\n    source = arguments[1] || window.top;\n    source.postMessage(message, '*');\n  },\n  parse: function (message) {\n    // Check whether the message looks like an object before trying to parse it\n    if (typeof message !== 'string' || message[0] !== '{') {\n      return message;\n    } // try returning the parsed object\n\n\n    try {\n      return JSON.parse(message);\n    } // return the original message\n    catch (e) {\n      return message;\n    }\n  }\n};\n\nlet callback;\nlet breakpoints$1;\nlet current;\n\nfunction getNearestBreakpoint() {\n  let winner;\n  const dims = oViewport.getSize(true);\n\n  function findCurrentBreakpoint(breakpoint) {\n    const breakpointDims = breakpoints$1[breakpoint];\n\n    if (dims.width >= breakpointDims[0] && dims.height >= breakpointDims[1]) {\n      if (!winner || breakpointDims[0] >= breakpoints$1[winner][0]) {\n        winner = breakpoint;\n      }\n    }\n  }\n\n  Object.keys(breakpoints$1).forEach(findCurrentBreakpoint);\n  return winner;\n}\n\nfunction fire() {\n  const winner = getNearestBreakpoint();\n\n  if (current !== winner) {\n    setCurrent(winner);\n    callback(winner);\n  }\n}\n\nfunction setCurrent(name) {\n  current = name;\n}\n\nfunction getCurrent() {\n  return current;\n}\nfunction init$2(brps, cb) {\n  if (!utils.isFunction(cb)) {\n    // must have a call back function\n    return false;\n  }\n\n  breakpoints$1 = brps;\n  callback = cb;\n  setCurrent(getNearestBreakpoint());\n  document.body.addEventListener('oViewport.orientation', fire);\n  document.body.addEventListener('oViewport.resize', fire);\n  oViewport.listenTo('orientation');\n  oViewport.listenTo('resize');\n  return getCurrent();\n}\noViewport.setThrottleInterval;\n\n/* eslint no-console: 0 */\n/**\n * Utility methods for logging.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils/log\n * @see utils\n */\n\n/* jshint devel: true */\n\n/**\n * Safe logger for the browser\n * @exports utils/log\n * @param {string} type Sets the type of log message log, warn, error or info, if not set to one of these values log will be used\n * @param {any} args the arguments to be passed to console[type]\n */\n\nfunction log() {\n  let type;\n  let argsIndex;\n\n  if ('log warn error info'.indexOf(arguments[0]) === -1) {\n    type = 'log';\n    argsIndex = 0;\n  } else {\n    type = arguments[0];\n    argsIndex = 1;\n  }\n\n  const args = [].slice.call(arguments, argsIndex);\n\n  if (log.isOn(type)) {\n    window.console[type].apply(window.console, args);\n  }\n}\n/**\n * Determine if debug logging is on and if the type if supported\n * @param {string} type\n */\n\nconst isOn = function (type) {\n  /* istanbul ignore else  */\n  const debug = localStorage && localStorage.getItem('oAds') || location.search.indexOf('DEBUG=OADS') !== -1;\n  return debug && window.console && window.console[type];\n};\n/**\n * Log a warning message\n */\n\nconst warn = function () {\n  const args = ['warn'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an error message\n */\n\nconst error = function () {\n  const args = ['error'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an info message\n */\n\nconst info = function () {\n  const args = ['info'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Start a collapsed group\n * @param {string} group the name of the group, defaults to o-ads\n */\n\nconst start = function (group) {\n  if (!log.isOn('groupCollapsed')) {\n    return;\n  }\n\n  window.console.groupCollapsed(group || 'o-ads');\n};\n/**\n * End a collapsed group\n */\n\nconst end = function () {\n  if (!log.isOn('groupEnd')) {\n    return;\n  }\n\n  window.console.groupEnd();\n};\nconst table = function (data, columns) {\n  if (log.isOn('log') && window.console) {\n    if (console.table) {\n      console.table(data, columns);\n    } else {\n      console.log(data);\n    }\n  }\n};\nconst attributeTable = function (object, columns) {\n  if (log.isOn('log') && window.console) {\n    if (object && console.table) {\n      const data = Object.keys(object).map(item => {\n        let val;\n\n        if (isArray(object[item]) || isObject(object[item])) {\n          val = JSON.stringify(object[item]);\n        } else {\n          val = object[item];\n        }\n\n        return {\n          key: item,\n          value: val\n        };\n      });\n      console.table(data, columns);\n    } else {\n      console.log(object);\n    }\n  }\n};\n\n// generated by genversion\nvar version = '18.3.3';\n\n/**\n * Utility methods for the advertising library.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\n\nconst hop = Object.prototype.hasOwnProperty;\ninit$2.getCurrent = getCurrent;\nlog.start = start;\nlog.end = end;\nlog.isOn = isOn;\nlog.info = info;\nlog.warn = warn;\nlog.error = error;\nlog.table = table;\nlog.attributeTable = attributeTable;\n/**\n * Uses object prototype toString method to get at the type of object we are dealing,\n * IE returns [object Object] for null and undefined so we need to filter those\n * http://es5.github.com/#x15.2.4.2\n * @private\n * @param {object} Any javascript object\n * @returns The type of the object e.g Array, String, Object\n */\n\nfunction is(object) {\n  const type = Object.prototype.toString.call(object).match(/^\\[object\\s(.*)\\]$/)[1];\n\n  if (object === null) {\n    return 'Null';\n  } else if (object === undefined) {\n    return 'Undefined';\n  } else {\n    return type;\n  }\n}\n/**\n * Test if an object is an Array\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Array, otherwise false\n */\n\n\nconst isArray = function (obj) {\n  return is(obj) === 'Array';\n};\n/**\n * Test if an object is a String\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type String, otherwise false\n */\n\nconst isString = function (obj) {\n  return is(obj) === 'String';\n};\n/**\n * Test if an object is a Function\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Function, otherwise false\n */\n\nconst isFunction = function (obj) {\n  return is(obj) === 'Function';\n};\n/**\n * Test if an object is a Storage object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Storage, otherwise false\n */\n\nconst isStorage = function (obj) {\n  return is(obj) === 'Storage';\n};\n/**\n * Test if an object is an Object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Object, otherwise false\n */\n\nconst isObject = function (obj) {\n  return is(obj) === 'Object';\n};\n/**\n * Test if an object is the global window object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is the window obj, otherwise false\n */\n\nconst isWindow = function (obj) {\n  return obj && obj !== null && obj === window;\n};\n/**\n * Test if an object inherits from any other objects, used in extend\n * to protect against deep copies running out of memory and constructors\n * losing there prototypes when cloned\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is plain false otherwise\n */\n\nconst isPlainObject = function (obj) {\n  const hop = Object.prototype.hasOwnProperty; // Must be an Object.\n  // Because of IE, we also have to check the presence of the constructor property.\n  // Make sure that DOM nodes and window objects don't pass through, as well\n\n  if (!obj || !isObject(obj) || obj.nodeType || isWindow(obj)) {\n    return false;\n  }\n\n  try {\n    // Not own constructor property must be Object\n    if (obj.constructor && !hop.call(obj, 'constructor') && !hop.call(obj.constructor.prototype, 'isPrototypeOf')) {\n      return false;\n    }\n  } catch (e) {\n    /* istanbul ignore next  */\n    // IE8,9 Will throw exceptions on certain host objects\n    return false;\n  } // Own properties are enumerated firstly, so to speed up,\n  // if last one is own, then all properties are own.\n\n\n  let key;\n\n  for (key in obj) {// empty\n  }\n\n  return key === undefined || hop.call(obj, key);\n};\n/**\n * Test if an object is a string with a length\n * @param {object} str The object to be tested\n * @returns {boolean} true if the object is a string with a length greater than 0\n */\n\nconst isNonEmptyString = function (str) {\n  return isString(str) && Boolean(str.length);\n};\nconst isElement = function (element) {\n  return element && element.nodeType === 1 && element.tagName || false;\n};\nfunction extend() {\n  /* jshint forin: false */\n\n  /* when doing a deep copy we want to copy prototype properties */\n  let options;\n  let src;\n  let copy;\n  let copyIsArray;\n  let clone;\n  let target = arguments[0] || {};\n  const length = arguments.length;\n  let deep = false;\n  let i = 1; // Handle a deep copy situation\n\n  if (typeof target === 'boolean') {\n    deep = target;\n    target = arguments[1] || {}; // skip the boolean and the target\n\n    i = 2;\n  } // Handle case when target is a string or something (possible in deep copy)\n\n  /* istanbul ignore else  */\n\n\n  if (typeof target !== 'object' && !isFunction(target)) {\n    target = {};\n  } // do nothing if only one argument is passed (or 2 for a deep copy)\n\n  /* istanbul ignore else  */\n\n\n  if (length === i) {\n    return target;\n  }\n\n  for (; i < length; i++) {\n    // Only deal with non-null/undefined values\n    if ((options = arguments[i]) !== null) {\n      // Extend the base object\n      for (const name in options) {\n        /* istanbul ignore next */\n        if (options.hasOwnProperty(name)) {\n          src = target[name];\n          copy = options[name]; // Prevent never-ending loop\n\n          if (target === copy) {\n            continue;\n          } // Recurse if we're merging arrays\n\n\n          if (deep && copy && (isPlainObject(copy) || isArray(copy))) {\n            copyIsArray = isArray(copy);\n\n            if (copyIsArray) {\n              copyIsArray = false;\n              clone = src && isArray(src) ? src : [];\n            } else {\n              clone = src && isObject(src) ? src : {};\n            } // Never move original objects, clone them\n\n\n            target[name] = extend(deep, clone, copy); // Don't bring in undefined values\n          } else if (copy !== undefined) {\n            target[name] = copy;\n          }\n        }\n      }\n    }\n  } // Return the modified object\n\n\n  return target;\n}\n/**\n * Create an object hash from a delimited string\n * Beware all properties on the resulting object will have string values.\n * @param {string}        str       The string to transform\n * @param {string|regexp} delimiter The character that delimits each name/value pair\n * @param {string}        pairing   The character that separates the name from the value\n * @return {object}\n *\n */\n\nconst hash = function (str, delimiter, pairing) {\n  let pair;\n  let value;\n  const hashObj = {};\n\n  if (str && str.split) {\n    str = str.split(delimiter);\n\n    for (let idx = 0, l = str.length; idx < l; idx += 1) {\n      value = str[idx];\n      pair = value.split(pairing);\n\n      if (pair.length > 1) {\n        hashObj[pair[0].trim()] = pair.slice(1).join(pairing);\n      }\n    }\n  }\n\n  return hashObj;\n};\n/**\n * Takes a script URL as a string value, creates a new script element, sets the src and attaches to the page\n * The async value of the script can be set by the seccond parameter, which is a boolean\n * Note, we should use protocol-relative URL paths to ensure we don't run into http/https issues\n * @param {string} scriptUrl The url to the script file to be added\n * @param {boolean} async Set the async attribute on the script tag\n * @param {function} callback A function to run when the script loads\n * @param {function} errorcb A function to run if the script fails to load\n * @returns {HTMLElement} the created script tag\n */\n\nconst attach = function (scriptUrl, async, callback, errorcb, autoRemove) {\n  const tag = document.createElement('script');\n  const node = document.getElementsByTagName('script')[0];\n  let hasRun = false;\n\n  function processCallback(callback) {\n    /* istanbul ignore else  */\n    if (!hasRun) {\n      callback.call();\n      hasRun = true;\n      /* istanbul ignore else  */\n\n      if (autoRemove) {\n        tag.parentElement.removeChild(tag);\n      }\n    }\n  }\n\n  tag.setAttribute('src', scriptUrl);\n  tag.setAttribute('o-ads', '');\n  /* istanbul ignore else */\n\n  if (async) {\n    tag.async = 'true';\n  }\n  /* istanbul ignore else  */\n\n\n  if (isFunction(callback)) {\n    /* istanbul ignore if - legacy IE code, won't test */\n    if (hop.call(tag, 'onreadystatechange')) {\n      tag.onreadystatechange = function () {\n        if (tag.readyState === 'loaded') {\n          processCallback(callback);\n        }\n      };\n    } else {\n      tag.onload = function () {\n        processCallback(callback);\n      };\n    }\n  }\n  /* istanbul ignore else  */\n\n\n  if (isFunction(errorcb)) {\n    tag.onerror = function () {\n      processCallback(errorcb);\n    };\n  } // Use insert before, append child has issues with script tags in some browsers.\n\n\n  node.parentNode.insertBefore(tag, node);\n  return tag;\n};\n/**\n * return the current documents referrer or an empty string if non exists\n * This method enables us to mock the referrer in our tests reliably and doesn't really serve any other purpose\n * @returns {string} document.referrer\n */\n\n/* istanbul ignore next - cannot reliably test value of referer */\n\nconst getReferrer = function () {\n  return document.referrer || '';\n};\n/**\n * Remove hyphens from a string and upper case the following letter\n * @param {string} string the string to parse\n * @returns {string}\n */\n\nconst dehyphenise = function (string) {\n  return string.replace(/(-)([a-z])/g, function (match, hyphen, letter) {\n    return letter.toUpperCase();\n  });\n};\n/**\n * remove prefixes from o-ads data attributes and dehyphenise the name\n * @param {string|} name the name of the attribute to parse\n * @returns {string}\n */\n\nconst parseAttributeName = function (attribute) {\n  const name = isString(attribute) ? attribute : attribute.name;\n  return dehyphenise(name.replace(/(data-)?o-ads-/, ''));\n};\n/**\n * return the current documents url or an empty string if non exists\n * This method enables us to mock the document location string in our tests reliably and doesn't really serve any other purpose\n * @returns {string}\n */\n\n/* istanbul ignore next - cannot reliably test value of location */\n\nconst getLocation = function () {\n  return document.location.href || '';\n};\n/**\n * return the current documents search or an empty string if non exists\n * also strips the initial ? from the search string for easier parsing\n * This method enables us to mock the search string in our tests reliably and doesn't really serve any other purpose\n * @returns {string}\n */\n\nconst getQueryString = function () {\n  return document.location.search.substring(1) || '';\n};\n/**\n * Get a query string parameter by name from a url\n * @param name\n * @param url\n * @returns {string | null}\n */\n\nconst getQueryParamByName = function (name, url) {\n  url = url || window.location.href;\n  name = name.replace(/[[\\]]/g, '\\\\$&');\n  const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');\n  const results = regex.exec(url);\n\n  if (!results) {\n    return null;\n  }\n\n  if (!results[2]) {\n    return '';\n  }\n\n  return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n};\n/**\n * returns a timestamp of the current date/time in the format YYYYMMDDHHMMSS\n * @returns {string}\n */\n\nconst getTimestamp = function () {\n  const now = new Date();\n  return [now.getFullYear(), `0${now.getMonth() + 1}`.slice(-2), `0${now.getDate()}`.slice(-2), `0${now.getHours()}`.slice(-2), `0${now.getMinutes()}`.slice(-2), `0${now.getSeconds()}`.slice(-2)].join('');\n};\n/**\n * Given the window object of an iframe this method returns the o-ads slot name\n * that rendered the iframe, if the iframe was not rendered by o-ads this will\n * return false\n * @param {window}  a window object\n * @returns {String|Boolean}\n */\n\nconst iframeToSlotName = function (iframeWindow) {\n  // capture all iframes in the page in a live node list\n  const iframes = document.getElementsByTagName('iframe');\n  let slotName;\n  let node;\n  let i = iframes.length; // Figure out which iframe DOM node we have the window for\n\n  while (i--) {\n    /* istanbul ignore else  */\n    if (iframes[i].contentWindow === iframeWindow) {\n      node = iframes[i];\n      break;\n    }\n  }\n  /* istanbul ignore else  */\n\n\n  if (node) {\n    // find the closest parent with a data-o-ads-name attribute, that's our slot name\n    while (node.parentNode) {\n      slotName = node.getAttribute('data-o-ads-name');\n      /* istanbul ignore else  */\n\n      if (slotName) {\n        return slotName;\n      }\n\n      node = node.parentNode;\n    }\n  }\n\n  return false;\n};\nconst buildObjectFromArray = function buildObjectFromArray(targetObject) {\n  return targetObject.reduce((prev, data) => {\n    prev[data.key] = data.value;\n    return prev;\n  }, {});\n};\nconst cookie = function (name) {\n  const val = document.cookie.match(`(^|;)\\\\s*${name}\\\\s*=\\\\s*([^;]+)`);\n  return val ? val.pop() : null;\n};\nconst getVersion = () => version ;\nconst metricsSampleThreshold = Math.random();\nfunction inSample(sampleSize) {\n  return typeof sampleSize === 'undefined' || sampleSize > metricsSampleThreshold;\n}\nvar utils = {\n  on,\n  off,\n  once,\n  broadcast,\n  messenger,\n  responsive: init$2,\n  log,\n  isArray,\n  isString,\n  isFunction,\n  isStorage,\n  isObject,\n  isWindow,\n  isPlainObject,\n  isNonEmptyString,\n  isElement,\n  extend,\n  hash,\n  attach,\n  getReferrer,\n  dehyphenise,\n  parseAttributeName,\n  getLocation,\n  getQueryString,\n  getQueryParamByName,\n  getTimestamp,\n  iframeToSlotName,\n  buildObjectFromArray,\n  cookie,\n  getVersion,\n  setupMetrics,\n  clearPerfMarks,\n  markPageChange,\n  inSample,\n  perfMark,\n  buildPerfmarkSuffix\n};\n\n//TODO remove all ft.com specific stuff so we can remove this as a global\n/**\n* Default configuration set in the constructor.\n*/\n\nconst defaults = {\n  formats: {\n    PartnerContent: {\n      sizes: ['fluid']\n    },\n    MediumRectangle: {\n      sizes: [300, 250]\n    },\n    Rectangle: {\n      sizes: [180, 50]\n    },\n    WideSkyscraper: {\n      sizes: [160, 600]\n    },\n    Leaderboard: {\n      sizes: [728, 90]\n    },\n    SuperLeaderboard: {\n      sizes: [[970, 90], [970, 66]]\n    },\n    HalfPage: {\n      sizes: [300, 600]\n    },\n    Billboard: {\n      sizes: [970, 250]\n    },\n    Portrait: {\n      sizes: [300, 1050]\n    },\n    AdhesionBanner: {\n      sizes: [320, 50]\n    },\n    MicroBar: {\n      sizes: [88, 31]\n    },\n    Button2: {\n      sizes: [120, 60]\n    },\n    Responsive: {\n      sizes: [2, 2]\n    }\n  },\n  responsive: {\n    extra: [1025, 0],\n    //Reasonable width to show a Billboard (desktop)\n    large: [1000, 0],\n    //reasonable width to show SuperLeaderboard (tablet landscape)\n    medium: [760, 0],\n    //reasonable width to show a leaderboard (tablet portrait)\n    small: [0, 0] //Mobile\n\n  },\n  flags: {\n    refresh: true,\n    inview: true\n  },\n  displayLabelWithBorders: false\n};\n\nfunction fetchDeclaritiveConfig() {\n  let results = {};\n  const scripts = Array.from(document.querySelectorAll('script[data-o-ads-config]'));\n  scripts.forEach(script => {\n    results = window.JSON ? utils.extend(results, JSON.parse(script.innerHTML)) : 'UNSUPPORTED';\n  });\n  return results;\n}\n/**\n* @private\n* @function\n* fetchCanonicalURL Grabs the canonical URL from the page meta if it exists.\n*/\n\n\nfunction fetchCanonicalURL() {\n  let canonical;\n  const canonicalTag = document.querySelector('link[rel=\"canonical\"]');\n\n  if (canonicalTag) {\n    canonical = canonicalTag.href;\n  }\n\n  return {\n    canonical: canonical\n  };\n}\n/**\n* Defines a store for configuration information and returns a getter/setter method for access.\n* @class\n* @constructor\n*/\n\n\nfunction Config() {\n  this.store = {};\n}\n\nConfig.prototype.access = function (k, v) {\n  let result;\n\n  if (utils.isPlainObject(k)) {\n    utils.extend(true, this.store, k);\n    result = this.store;\n  } else if (typeof v === 'undefined') {\n    if (typeof k === 'undefined') {\n      result = this.store;\n    } else {\n      result = this.store[k];\n    }\n  } else {\n    this.store[k] = v;\n    result = v;\n  }\n\n  return result;\n};\n\nConfig.prototype.clear = function (key) {\n  if (key) {\n    delete this.store[key];\n  } else {\n    this.store = {};\n  }\n};\n\nConfig.prototype.init = function () {\n  this.store = utils.extend(true, {}, defaults, fetchCanonicalURL(), fetchDeclaritiveConfig());\n  return this.store;\n};\n\nconst config = new Config();\nvar config$1 = config.access.bind(config);\nconst init$1 = config.init.bind(config);\nconst clear = config.clear.bind(config);\n\nconst VALID_SIZE_STRINGS = ['fluid'];\nconst VALID_COLLAPSE_MODES = ['before', 'after', 'never'];\nconst attributeParsers = {\n  sizes: function (value, sizes) {\n    if (value === false || value === 'false') {\n      return false;\n    }\n    /* istanbul ignore else  */\n    else if (utils.isArray(sizes)) {\n      const regex = /(\\d+)x(\\d+)/;\n      value.split(',').filter(size => size.length).forEach(size => {\n        if (regex.test(size)) {\n          size.replace(regex, function (match, width, height) {\n            sizes.push([parseInt(width, 10), parseInt(height, 10)]);\n          });\n        } else if (VALID_SIZE_STRINGS.indexOf(size) >= 0) {\n          sizes.push(size);\n        }\n      });\n    }\n\n    return sizes;\n  },\n  formats: function (value, sizes) {\n    if (value === false || value === 'false') {\n      sizes = false;\n    } else {\n      const mapping = config$1().formats;\n      const formats = utils.isArray(value) ? value : value.split(',');\n      formats.forEach(format => {\n        if (mapping && mapping[format]) {\n          format = mapping[format];\n\n          if (utils.isArray(format.sizes[0]) || VALID_SIZE_STRINGS.indexOf(format.sizes[0]) >= 0) {\n            format.sizes.forEach(size => {\n              sizes.push(size);\n            });\n          } else {\n            sizes.push(format.sizes);\n          }\n        } else {\n          utils.log.error(`Slot configured with unknown format ${format}`);\n        }\n      });\n    }\n\n    return sizes;\n  },\n  responsiveSizes: function (name, value, sizes) {\n    const screenName = name.replace(/^sizes/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!utils.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.sizes(value, sizes[screenName] || []);\n    return sizes;\n  },\n  responsiveFormats: function (name, value, sizes) {\n    const screenName = name.replace(/^formats/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!utils.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.formats(value, []);\n    return sizes;\n  },\n  lazyLoadThreshold: function (value) {\n    return value.split(',').map(Number);\n  },\n  targeting: function (value, targeting) {\n    value = utils.hash(value, ';', '=');\n    utils.extend(targeting, value);\n    return targeting;\n  },\n  base: function (value) {\n    /* istanbul ignore else\t*/\n    if (value === '' || value === 'true') {\n      value = true;\n    } else if (value === 'false') {\n      value = false;\n    }\n\n    return value;\n  },\n  collapseEmpty: function (value) {\n    const isUnknownAttribute = VALID_COLLAPSE_MODES.indexOf(value) === -1;\n\n    if (isUnknownAttribute) {\n      utils.log.warn(`Invalid attribute ${value} used for collapse-empty attribute, please use 'before', 'after' or 'never'`);\n      return undefined;\n    }\n\n    return value;\n  }\n};\n\nconst convertLazyLoadBooleanToObject = obj => {\n  if (obj.lazyLoad === true) {\n    obj.lazyLoad = {};\n  }\n};\n\nconst onChangeBreakpoint = event => {\n  const slot = event.detail.slot;\n  slot.screensize = event.detail.screensize;\n\n  if (slot.hasValidSize()) {\n    slot.uncollapse();\n  } else {\n    slot.collapse();\n    slot.clear();\n  }\n};\n/**\n * The Slot class.\n * @class\n * @constructor\n */\n\n\nfunction Slot(container, screensize, initLazyLoading) {\n  const renderEvent = 'slotRenderStart';\n  const cfg = config$1();\n  let slotConfig = config$1('slots') || {}; // store the container\n\n  this.container = container; // the current responsive screensize\n\n  /* istanbul ignore else\t*/\n\n  if (screensize) {\n    this.screensize = screensize;\n  } // init slot dom structure\n\n\n  this.outer = this.addContainer(container, {\n    'class': 'o-ads__outer',\n    'aria-hidden': 'true',\n    'tabindex': '-1'\n  });\n  this.inner = this.addContainer(this.outer, {\n    'class': 'o-ads__inner'\n  }); // make sure the slot has a name\n\n  this.setName();\n  slotConfig = slotConfig[this.name] || {}; // default configuration properties\n\n  this.server = 'gpt';\n  this.defer = false; // global slots configuration\n\n  this.targeting = slotConfig.targeting || {};\n  this.sizes = slotConfig.sizes || [];\n  this.center = slotConfig.center || false;\n  this.label = slotConfig.label || false;\n  this.outOfPage = slotConfig.outOfPage || false;\n  this.companion = slotConfig.companion === false ? false : true;\n  this.collapseEmpty = slotConfig.collapseEmpty;\n  /* istanbul ignore else */\n\n  if (utils.isArray(slotConfig.formats)) {\n    attributeParsers.formats(slotConfig.formats, this.sizes);\n  } else if (utils.isPlainObject(slotConfig.formats)) {\n    this.sizes = {};\n    Object.keys(slotConfig.formats).forEach(screenName => {\n      this.sizes[screenName] = attributeParsers.formats(slotConfig.formats[screenName], []);\n    });\n  }\n\n  if (typeof slotConfig.lazyLoad !== 'undefined') {\n    this.lazyLoad = slotConfig.lazyLoad;\n  } else {\n    this.lazyLoad = config$1('lazyLoad') || false;\n  }\n\n  const outerEl = container.querySelector('.o-ads__outer');\n\n  if (outerEl && cfg.displayLabelWithBorders && this.container.getAttribute('data-o-ads-label')) {\n    const allowedLabels = ['left', 'center', 'right'];\n    const adsLabelPos = this.container.getAttribute('data-o-ads-label');\n    utils.once(renderEvent, () => {\n      const modifier = allowedLabels.indexOf(adsLabelPos) ? adsLabelPos : \"left\";\n      outerEl.classList.add('o-ads--label-with-borders', `o-ads--label-with-borders--${modifier}`);\n    });\n  } // extend with imperative configuration options\n\n\n  this.parseAttributeConfig();\n  /* istanbul ignore else\t*/\n\n  if (!this.sizes.length && !utils.isPlainObject(this.sizes)) {\n    utils.log.error('slot %s has no configured sizes!', this.name);\n    return false;\n  } // Either retrieve the existing IntersectionObserver, or tell slots.js to create a new one.\n\n\n  this.lazyLoadObserver = initLazyLoading(this.lazyLoad);\n  this.initLazyLoad();\n  this.centerContainer();\n  this.labelContainer();\n  this.initResponsive();\n}\n/**\n * parse slot attribute config\n */\n\n\nSlot.prototype.parseAttributeConfig = function () {\n  Array.from(this.container.attributes).forEach(attribute => {\n    const name = utils.parseAttributeName(attribute.name);\n    const value = attribute.value;\n\n    if (name === 'formats') {\n      this[name] = attributeParsers[name](value, this.sizes);\n    } else if (name === 'collapseEmpty') {\n      this.collapseEmpty = attributeParsers.collapseEmpty(value);\n    } else if (name === 'lazyLoadThreshold' && this.lazyLoad) {\n      convertLazyLoadBooleanToObject(this);\n      this.lazyLoad.threshold = attributeParsers.lazyLoadThreshold(value);\n    } else if (name === 'lazyLoadViewportMargin' && this.lazyLoad) {\n      convertLazyLoadBooleanToObject(this);\n      this.lazyLoad.viewportMargin = attributeParsers.base(value);\n    } else if (attributeParsers[name]) {\n      this[name] = attributeParsers[name](value, this[name]);\n    } else if (/^formats\\w*/.test(name)) {\n      this.sizes = attributeParsers.responsiveFormats(name, value, this.sizes);\n    } else if (/^sizes\\w*/.test(name)) {\n      this.sizes = attributeParsers.responsiveSizes(name, value, this.sizes);\n    } else if (this.hasOwnProperty(name)) {\n      this[name] = attributeParsers.base(value);\n    }\n  });\n};\n\nSlot.prototype.getAttributes = function () {\n  const attributes = {};\n  Array.from(this.container.attributes).forEach(attribute => {\n    attributes[utils.parseAttributeName(attribute)] = attribute.value;\n  });\n  this.attributes = attributes;\n  return this;\n};\n/**\n *\tLoad a slot when it appears in the viewport\n */\n\n\nSlot.prototype.initLazyLoad = function () {\n  /* istanbul ignore else  */\n  if (this.lazyLoadObserver && this.lazyLoad) {\n    this.defer = true;\n    this.lazyLoadObserver.observe(this.container); //Master/Companion ads don't work with lazy loading, so if a master ad loads trigger\n\n    /* istanbul ignore else */\n\n    if (this.companion) {\n      utils.once('masterLoaded', () => {\n        if (this.hasValidSize()) {\n          this.render();\n        }\n      }, this.container);\n    }\n  }\n\n  return this;\n};\n\nSlot.prototype.render = function () {\n  this.fire('slotCanRender');\n  /* istanbul ignore else  */\n\n  if (this.lazyLoadObserver) {\n    this.lazyLoadObserver.unobserve(this.container);\n  }\n};\n/**\n *\tListen to responsive breakpoints and collapse slots\n * where the configured size is set to false\n */\n\n\nSlot.prototype.initResponsive = function () {\n  /* istanbul ignore else */\n  if (utils.isPlainObject(this.sizes)) {\n    /* istanbul ignore else */\n    if (!this.hasValidSize()) {\n      this.collapse();\n    }\n\n    utils.on('breakpoint', onChangeBreakpoint, this.container);\n  }\n\n  return this;\n};\n/**\n * Maximise the slot when size is 100x100\n */\n\n\nSlot.prototype.maximise = function (size) {\n  if (size && Number(size[0]) === 100 && Number(size[1]) === 100) {\n    this.fire('resize', {\n      size: ['100%', '100%']\n    });\n  }\n};\n/**\n *\tIf the slot doesn't have a name give it one\n */\n\n\nSlot.prototype.setName = function () {\n  this.name = this.container.getAttribute('data-o-ads-name') || this.container.getAttribute('o-ads-name');\n\n  if (!this.name) {\n    this.name = `o-ads-slot-${Math.floor(Math.random() * 10000)}`;\n    this.container.setAttribute('data-o-ads-name', this.name);\n  }\n\n  return this;\n};\n/**\n * add the empty class to the slot\n */\n\n\nSlot.prototype.collapse = function () {\n  this.container.classList.add('o-ads--empty');\n  this.setFormatLoaded(false);\n  document.body.classList.add(`o-ads-no-${this.name}`);\n  utils.broadcast('collapsed', this);\n  return this;\n};\n/**\n * add the additional class to the slot\n */\n\n\nSlot.prototype.addClass = function (className) {\n  this.container.classList.add(`o-ads-${className}`);\n  utils.broadcast('slotClassAdded', this);\n  return this;\n};\n/**\n * sets a classname of the format\n */\n\n\nSlot.prototype.setFormatLoaded = function (format) {\n  this.container.setAttribute('data-o-ads-loaded', format);\n  return this;\n};\n/**\n * remove the empty class from the slot\n */\n\n\nSlot.prototype.uncollapse = function () {\n  this.container.classList.remove('o-ads--empty');\n  document.body.classList.remove(`o-ads-no-${this.name}`);\n  return this;\n};\n/**\n * call the ad server clear method on the slot if one exists\n */\n\n\nSlot.prototype.clear = function () {\n  /* istanbul ignore else  */\n  if (utils.isFunction(this['clearSlot'])) {\n    this.clearSlot();\n  }\n\n  return this;\n};\n/**\n * call the ad server destroySlot method on the slot if one exists\n */\n\n\nSlot.prototype.destroy = function () {\n  /* istanbul ignore else  */\n  if (utils.isFunction(this['destroySlot'])) {\n    utils.off('breakpoint', onChangeBreakpoint, this.container);\n    this.destroySlot();\n\n    if (this.outer.parentElement === this.container) {\n      this.container.removeChild(this.outer);\n    } else {\n      console.error('Error destroying ad slot. The parent node has already been removed.'); // eslint-disable-line no-console\n    }\n  }\n\n  return this;\n};\n/**\n * call the ad server impression URL for an out of page slot if it has been configured correctly for delayed impressions\n */\n\n\nSlot.prototype.submitImpression = function () {\n  /* istanbul ignore else  */\n  if (utils.isFunction(this['submitGptImpression'])) {\n    this.submitGptImpression();\n  }\n\n  return this;\n};\n/**\n *\tfire an event on the slot\n */\n\n\nSlot.prototype.fire = function (name, data) {\n  const gpt = this.gpt || {};\n  const details = {\n    name: this.name || '',\n    pos: this.targeting && this.targeting.pos || '',\n    size: gpt.size || '',\n    creativeId: gpt.creativeId || '',\n    slot: this\n  };\n\n  if (typeof gpt.isEmpty === 'boolean') {\n    details.isEmpty = gpt.isEmpty;\n  }\n\n  if (utils.isPlainObject(data)) {\n    utils.extend(details, data);\n  }\n\n  utils.broadcast(name, details, this.container);\n  return this;\n};\n/**\n *\tadd a div tag into the current slot container\n **/\n\n\nSlot.prototype.addContainer = function (node, attrs) {\n  let container = '<div ';\n  /* istanbul ignore else  */\n\n  if (attrs) {\n    Object.keys(attrs).forEach(function (attr) {\n      const value = attrs[attr];\n      container += `${attr}=${value} `;\n    });\n  }\n\n  container += '></div>';\n  node.insertAdjacentHTML('beforeend', container);\n  return node.lastChild;\n};\n\nSlot.prototype.hasValidSize = function (screensize) {\n  screensize = screensize || this.screensize;\n\n  if (screensize && utils.isPlainObject(this.sizes)) {\n    return this.sizes[screensize] !== false;\n  }\n\n  return true;\n};\n/**\n * Add a center class to the main container\n */\n\n\nSlot.prototype.centerContainer = function () {\n  if (this.center) {\n    this.container.classList.add('o-ads--center');\n  }\n\n  return this;\n};\n/**\n * Add a label class to the main container\n */\n\n\nSlot.prototype.labelContainer = function () {\n  let className;\n\n  if (this.label === true || this.label === 'left') {\n    className = 'label-left';\n  } else if (this.label === 'right') {\n    className = 'label-right';\n  }\n\n  if (className && !config$1('displayLabelWithBorders')) {\n    this.container.classList.add(`o-ads--${className}`);\n  }\n\n  return this;\n};\n\n/** @typedef {import(\"$typings/index\")} Advertising */\n\n/**\n * @param {Advertising.Slot} slot\n * @returns {string}\n */\nfunction getSlotSizes(slot) {\n  if (!Array.isArray(slot.sizes)) return \"responsive slot\";\n  const sizes = [];\n\n  for (const size of slot.sizes) {\n    sizes.push(Array.isArray(size) ? size.join(\"×\") : size);\n  }\n\n  return sizes.join(\", \");\n}\n/**\n * @param {Advertising.Slot} slot\n * @returns {string}\n */\n\n\nfunction getSlotTargeting({\n  targeting\n}) {\n  const params = [];\n\n  for (const [key, val] of Object.entries(targeting)) {\n    params.push(`${key}=${val}`);\n  }\n\n  return params.join(\", \");\n}\n/**\n * @param {Advertising.Slot} slot\n * @returns {string}\n */\n\n\nfunction getSlotGPTSize({\n  gpt\n}) {\n  if (gpt.isEmpty) return \"empty\";\n  if (!Array.isArray(gpt.size)) return \"N/A\";\n  return gpt.size.join(\"×\");\n}\n/**\n * Use a type predicate to distinguish between the `Slots` instance's properties\n * @type {(o: Advertising.Slot | IntersectionObserver) => o is Advertising.Slot }\n */\n\n\nconst isSlot = o => \"name\" in o;\n/**\n * @param {(Advertising.Slot | IntersectionObserver)[]} slots\n */\n\n\nfunction debug$1(slots) {\n  const data = [];\n\n  for (const slot of slots) {\n    if (isSlot(slot)) {\n      const row = {\n        name: slot.name,\n        \"unit name\": slot.gpt.unitName,\n        \"creative id\": slot.gpt.creativeId || \"N/A\",\n        \"line item id\": slot.gpt.lineItemId || \"N/A\",\n        size: getSlotGPTSize(slot),\n        sizes: getSlotSizes(slot),\n        targeting: getSlotTargeting(slot)\n      };\n      data.push(row);\n    }\n  }\n\n  console.group(\"Creatives\");\n  console.table(data);\n  console.groupEnd();\n  return data;\n}\n\n/* eslint no-inner-declarations: 1 */\nlet screensize = null;\n/**\n * The Slots instance tracks all ad slots on the page\n * configures global page events used by a slot and\n * provides utlity methods that act on all slots\n * @constructor\n */\n\nfunction Slots() {//eslint-disable-line no-empty\n}\n\nfunction invokeMethodOnSlots(names, method, callback) {\n  let slots = [];\n  names = names || Object.keys(this);\n  /* istanbul ignore else\t*/\n\n  if (utils.isNonEmptyString(names)) {\n    slots.push(names);\n  } else if (utils.isArray(names)) {\n    slots = names;\n  }\n\n  slots.forEach(run.bind(null, this, method));\n\n  if (utils.isFunction(callback)) {\n    callback.call(this, slots);\n  }\n\n  return this;\n}\n/*\n * Either run a method or fire an event on the named slot.\n * @private\n * @param slots the slots object\n */\n\n\nfunction run(slots, action, name) {\n  const slot = slots[name];\n\n  if (slot) {\n    if (utils.isFunction(slot[action])) {\n      slot[action]();\n    } else {\n      if (utils.isFunction(slot.fire)) {\n        slot.fire(action);\n      } else {\n        utils.log.warn(\"Attempted to %s on a non-slot %s\", action, name);\n      }\n    }\n  } else {\n    utils.log.warn(\"Attempted to %s non-existant slot %s\", action, name);\n  }\n}\n\nfunction findFormatBySize(size) {\n  if (!size) {\n    return false;\n  }\n\n  const formats = config$1(\"formats\");\n\n  for (const prop in formats) {\n    /* istanbul ignore else\t*/\n    if (formats.hasOwnProperty(prop)) {\n      let sizes = formats[prop].sizes;\n      sizes = utils.isArray(sizes[0]) ? sizes : [sizes];\n      const match = sizes.filter(function (s) {\n        return s[0] === parseInt(size[0], 10) && s[1] === parseInt(size[1], 10);\n      });\n\n      if (match.length) {\n        return prop;\n      }\n    }\n  }\n}\n/**\n * Given a slot name or an array of slot names will collapse the slots using the collapse method on the slot\n */\n\n\nSlots.prototype.collapse = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"collapse\");\n};\n/**\n * Given a slot name or an array of slot names will uncollapse the slots using the uncollapse method on the slot\n */\n\n\nSlots.prototype.uncollapse = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"uncollapse\");\n};\n/**\n * Given a slot name or an array of slot names of slotnames will refresh the slots using the refresh method on the slot\n */\n\n\nSlots.prototype.refresh = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"refresh\");\n};\n/**\n * Given a slot name or an array of slot names will clear the slots using the clear method on the slot\n */\n\n\nSlots.prototype.clear = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"clear\");\n};\n/**\n * Given a slot name or an array of slot names will destroy the slots using the destroySlot method on the slot and remove the reference to the slot\n */\n\n\nSlots.prototype.destroy = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"destroy\", function (names) {\n    names.forEach(name => {\n      this[name] = null;\n      delete this[name];\n    });\n  });\n};\n/**\n * Given a slot name will submit a delayed impression for the slot\n */\n\n\nSlots.prototype.submitImpression = function (name) {\n  return invokeMethodOnSlots.call(this, name, \"submitImpression\");\n};\n/**\n * Confirms a container in the page exists and creates a Slot object\n */\n\n\nSlots.prototype.initSlot = function (container) {\n  // if container is a string this is a legacy implementation using ids\n  // find the element and remove the ID in favour of a data attribute\n  if (utils.isString(container)) {\n    container = document.getElementById(container) || document.querySelector(`[data-o-ads-name=\"${container}\"]`);\n\n    if (container && container.id) {\n      container.setAttribute(\"data-o-ads-name\", container.id);\n      container.removeAttribute(\"id\");\n    }\n  } // if not an element or we can't find it in the DOM exit\n\n\n  if (!utils.isElement(container)) {\n    utils.log.error(\"slot container must be an element!\", container);\n    return false;\n  } // add the aria hidden attribute\n\n\n  container.setAttribute(\"aria-hidden\", \"true\"); // pass the method to retrieve or create the single IntersectionObserver instance\n\n  const slot = new Slot(container, screensize, this.initLazyLoading.bind(this));\n  /* istanbul ignore else\t*/\n\n  if (slot && !this[slot.name]) {\n    this[slot.name] = slot;\n    slot.fire(\"slotReady\");\n  } else if (this[slot.name]) {\n    utils.log.error(\"slot %s is already defined!\", slot.name);\n  }\n\n  return slot;\n};\n\nSlots.prototype.initRefresh = function () {\n  if (config$1(\"flags\").refresh && config$1(\"refresh\")) {\n    const data = config$1(\"refresh\");\n    this.refreshCount = 0;\n    /* istanbul ignore else\t*/\n\n    if (data.time && !data.inview) {\n      const refresh = () => {\n        /* istanbul ignore else */\n        if (!data.max || this.refreshCount++ < data.max) {\n          this.refresh();\n        } else if (this.refreshCount >= data.max) {\n          clearInterval(refresh);\n        }\n      };\n\n      setInterval(refresh, (parseFloat(data.time) || 1) * 1000);\n    }\n  }\n\n  return this;\n};\n/*\n *\tlistens for the rendered event from a slot and fires the slotExpand event,\n * after extending the slot with information from the server.\n */\n\n\nSlots.prototype.initRendered = function () {\n  utils.on(\"slotRenderStart\", function (slots, event) {\n    const slot = slots[event.detail.name];\n    /* istanbul ignore else\t*/\n\n    if (slot) {\n      utils.extend(slot[slot.server], event.detail[slot.server]);\n      const size = event.detail.gpt.size;\n      const format = findFormatBySize(size);\n      slot.setFormatLoaded(format);\n      slot.maximise(size);\n      slot.fire(\"slotExpand\", event.detail);\n    }\n  }.bind(null, this));\n  return this;\n};\n/*\n * if responsive configuration exists listen for breakpoint changes\n */\n\n\nSlots.prototype.initResponsive = function () {\n  const breakpoints = config$1(\"responsive\");\n  /* istanbul ignore else\t*/\n\n  if (utils.isObject(breakpoints)) {\n    screensize = utils.responsive(breakpoints, onBreakpointChange.bind(null, this));\n  }\n\n  return this;\n};\n/*\n * called when a responsive breakpoint is crossed though window resizing or orientation change.\n */\n\n\nfunction onBreakpointChange(slots, screensize) {\n  slots.forEach(function (slot) {\n    /* istanbul ignore else\t*/\n    if (slot) {\n      // ADS-766 if format name is Responsive then we have requested a responsive creative and do not want to request new ads at different breakpoints\n\n      /* istanbul ignore else\t*/\n      const isCurrentlyResponsive = slot.container && slot.container.getAttribute(\"data-o-ads-loaded\") === \"Responsive\";\n      const stillWantsResponsive = slot.sizes[screensize] && slot.sizes[screensize].filter(size => findFormatBySize(size) === \"Responsive\").length > 0;\n\n      if (isCurrentlyResponsive && stillWantsResponsive) {\n        return false;\n      }\n\n      slot.screensize = screensize;\n      slot.fire(\"breakpoint\", {\n        screensize: screensize\n      });\n    }\n  });\n}\n/*\n * Initialise the postMessage API\n */\n\n\nSlots.prototype.initPostMessage = function () {\n  // Listen for messages coming from ads\n  window.addEventListener(\"message\", pmHandler.bind(null, this), false);\n\n  function pmHandler(slots, event) {\n    const data = utils.messenger.parse(event.data);\n    /* istanbul ignore else\tdon't process messages with a non oAds type*/\n\n    if (data.type && (/^oAds\\./.test(data.type) || /^touch/.test(data.type))) {\n      const type = data.type.replace(\"oAds.\", \"\"); // Make sure the message is coming from an identified ad slot\n\n      const slotName = utils.iframeToSlotName(event.source.window);\n      const slot = slots[slotName] || false;\n\n      if (!slot) {\n        utils.log.error(\"Message received from unidentified slot\");\n        return;\n      } // TODO: Remove adIframeLoaded once we can tag onto GPTs `slotRenderEnded` event\n\n\n      if (type === \"adIframeLoaded\") {\n        slot.fire(\"slotRenderEnded\");\n      } else if (type === \"slotClass\" && data.slotClass) {\n        slot.addClass(data.slotClass);\n      } // Received message to Collapse ad slot.\n      else if (type === \"collapse\") {\n        slot.fire(\"slotCollapsed\");\n        slot.collapse();\n      } // Received touch events from ad slot iframe\n\n      /* istanbul ignore else*/\n      else if (/^touch/.test(data.type)) {\n        slot.fire(\"touch\", data);\n      } else {\n        utils.log.error(\"Unknown message received from o-ads-embed\");\n      }\n    }\n  }\n}; // remove any observers tied to elements no longer in the DOM\n// e.g. app page has been swiped out from the gallery\n\n\nSlots.prototype.flushLazyLoading = function () {\n  this.lazyLoadingObservers = this.lazyLoadingObservers.filter(observer => {\n    return Boolean(!observer.root || document.contains(observer.root));\n  });\n};\n\nSlots.prototype.initLazyLoading = function (slotConfig) {\n  const lazyLoadingConfig = config$1(\"lazyLoad\") || slotConfig | {};\n  this.lazyLoadingObservers = this.lazyLoadingObservers || [];\n  this.flushLazyLoading(); // find any pre-existing observers\n\n  let lazyLoadingObserver = this.lazyLoadingObservers.find(observer => {\n    // deliberately double-equals to match null and undefined where the viewport is being observed\n    return lazyLoadingConfig.root == observer.root; // eslint-disable-line eqeqeq\n  });\n\n  function onChange(changes) {\n    //Execute the changes in the order they appear on the page. This is because the top slot often determines what the lower slots display.\n\n    /* istanbul ignore next */\n    changes.filter(a => a.intersectionRect.height || a.intersectionRect.width || a.intersectionRect.top || a.intersectionRect.left).sort((a, b) => a.intersectionRect.top - b.intersectionRect.top).forEach(change => {\n      const slotName = change.target.getAttribute(\"data-o-ads-name\");\n      /* istanbul ignore else */\n\n      if (slotName) {\n        invokeMethodOnSlots.call(this, slotName, \"render\");\n      }\n    });\n  } // If we don't already have an instance of the observer, and it is enabled globally or on a slot (force), then create one.\n\n  /* istanbul ignore else\t*/\n\n\n  if (\"IntersectionObserver\" in window && !lazyLoadingObserver && Boolean(lazyLoadingConfig)) {\n    const options = {};\n    /* istanbul ignore else\t*/\n\n    if (typeof lazyLoadingConfig === \"object\") {\n      /* istanbul ignore else\t*/\n      if (lazyLoadingConfig.viewportMargin) {\n        options.rootMargin = lazyLoadingConfig.viewportMargin;\n      }\n      /* istanbul ignore else\t*/\n\n\n      if (lazyLoadingConfig.threshold) {\n        options.threshold = lazyLoadingConfig.threshold;\n      }\n\n      options.root = lazyLoadingConfig.root || null;\n    }\n\n    lazyLoadingObserver = new IntersectionObserver(onChange.bind(this), options);\n    this.lazyLoadingObservers.push(lazyLoadingObserver);\n  }\n\n  return lazyLoadingObserver;\n};\n\nSlots.prototype.forEach = function (fn) {\n  Object.keys(this).forEach(name => {\n    const slot = this[name];\n    /* istanbul ignore else\t*/\n\n    if (slot instanceof Slot) {\n      fn.call(this, slot);\n    }\n  });\n  return this;\n};\n/*\n * Initialise slots\n */\n\n\nSlots.prototype.init = function () {\n  this.initRefresh();\n  this.initRendered();\n  this.initResponsive();\n  this.initPostMessage();\n  this.initLazyLoading();\n};\n\nSlots.prototype.debug = function () {\n  debug$1(Object.values(this));\n};\n\nvar slots = new Slots();\n\nlet parameters = {};\n\nfunction Targeting() {} //eslint-disable-line no-empty-function\n\n\nTargeting.prototype.get = function () {\n  const methods = {\n    socialReferrer: this.getSocialReferrer,\n    timestamp: this.timestamp,\n    responsive: this.responsive\n  };\n  utils.extend(parameters, this.socialFlow(), this.getVersion());\n\n  for (const item in methods) {\n    /* istanbul ignore else  */\n    if (methods.hasOwnProperty(item)) {\n      utils.extend(parameters, methods[item]());\n    }\n  }\n\n  return parameters;\n};\n\nTargeting.prototype.add = function (obj) {\n  /* istanbul ignore else  */\n  if (utils.isPlainObject(obj)) {\n    utils.extend(parameters, obj);\n  }\n};\n\nTargeting.prototype.remove = function (key) {\n  /* istanbul ignore else */\n  if (parameters[key]) {\n    delete parameters[key];\n  }\n};\n\nTargeting.prototype.clear = function () {\n  parameters = {};\n};\n\nTargeting.prototype.getVersion = function () {\n  if (config$1('passOAdsVersion')) {\n    return {\n      OADS_VERSION: utils.getVersion()\n    };\n  }\n};\n/**\n * If there is a query parameter called socialflow=xxx, we need to add it\n * as a tag\n */\n\n\nTargeting.prototype.socialFlow = function () {\n  const sf = utils.getQueryParamByName('socialflow');\n\n  if (sf) {\n    return {\n      socialflow: sf\n    };\n  }\n};\n\nTargeting.prototype.getSocialReferrer = function () {\n  let codedValue;\n  const referrer = utils.getReferrer(); // TODO: add on.ft.com\n\n  const lookup = {\n    't.co': 'twi',\n    'facebook.com': 'fac',\n    'linkedin.com': 'lin',\n    'drudgereport.com': 'dru',\n    'dianomi.com': 'dia',\n    google: 'goo'\n  };\n  Object.keys(lookup).forEach(url => {\n    const refererRegex = new RegExp(`^http(|s)://(www.)*(${url})`);\n    /* istanbul ignore else  */\n\n    if (refererRegex.test(referrer)) {\n      codedValue = lookup[url];\n    }\n  });\n  return codedValue && {\n    socref: codedValue\n  } || {};\n};\n\nTargeting.prototype.searchTerm = function () {\n  const qs = utils.hash(utils.getQueryString(), /&|;/, '=');\n  let keywords = qs.q || qs.s || qs.query || qs.queryText || qs.searchField || undefined;\n  /* istanbul ignore else\t*/\n\n  if (keywords && keywords !== '') {\n    keywords = unescape(keywords).toLowerCase().replace(/[';^+]/g, ' ').replace(/\\s+/g, ' ').trim();\n  }\n\n  return {\n    kw: keywords\n  };\n};\n\nTargeting.prototype.timestamp = function () {\n  return {\n    ts: utils.getTimestamp()\n  };\n};\n\nTargeting.prototype.responsive = function () {\n  return config$1('responsive') ? {\n    res: utils.responsive.getCurrent()\n  } : {};\n};\n\nTargeting.prototype.debug = function () {\n  const log = utils.log;\n  const parameters = this.get();\n  /* istanbul ignore else  */\n\n  if (Object.keys(parameters).length !== 0) {\n    log.start('Targeting');\n    log.attributeTable(this.get());\n    log.end();\n  }\n};\n\nvar targeting = new Targeting();\n\nconst SEARCH_PARAMS = ['q', 'kw'];\n/**\n * @typedef {{ [key: string]: string[] }} FilterDict\n */\n\n/**\n * Remove unwanted params from nested query strings\n *\n * @param   {string}   nestedParams the URIencoded nested params\n * @param   {string[]} keysToStrip  the parameters to remove\n *\n * @return  {string}               [return description]\n */\n\nfunction filterNestedParams(nestedParams, keysToStrip) {\n  if (!keysToStrip || keysToStrip.length < 1) {\n    return nestedParams;\n  }\n\n  const childParams = new URLSearchParams(nestedParams);\n\n  for (const key of keysToStrip) {\n    childParams.delete(key);\n  }\n\n  return childParams.toString();\n}\n/**\n * Purge a URL of sensitive data in query strings\n *\n * Given the URL\n * ```url\n * https://www.ft.com/search?q=goog&cust_params=a%3D1%26b%3D2%26c%3D3%26d%3D4\n * ```\n * Supplying an object in the form\n * ```\n * {\n *   root: ['q', 'kw'],\n *   cust_params: ['a', 'c']\n * }\n * ```\n * will remove `q` from the main query string and `a`, `c` from the nested params\n * under `cust_params`:\n * ```url\n * https://www.ft.com/search?cust_params=b=2%26d%3D4\n * ```\n *\n * @param   {Object}  params\n * @param   {string | Location}  params.href     The base URL or `window.location`\n * @param   {FilterDict}         params.filters  The dictionary of params to be removed\n *\n * @return  {string}              A URL that has been stripped of the supplied params\n */\n\nfunction stripUrlParams({\n  href,\n  filters\n}) {\n  // @ts-ignore: URL absolutely accepts Location!\n  const url = new URL(href);\n\n  for (const [param, filter] of Object.entries(filters)) {\n    if (param === 'root') {\n      // Strip parameters from the main query string\n      for (const key of filter) {\n        url.searchParams.delete(key);\n      }\n    } else {\n      // Handle nested parameters\n      const nestedParams = url.searchParams.get(param);\n\n      if (nestedParams) {\n        url.searchParams.set(param, filterNestedParams(nestedParams, filter));\n      }\n    }\n  }\n\n  return url.href;\n}\n\n/*globals googletag: true */\nconst DEFAULT_LAZY_LOAD = {\n  fetchMarginPercent: 500,\n  renderMarginPercent: 200,\n  mobileScaling: 2.0\n};\nconst DEFAULT_COLLAPSE_MODE = 'never';\nlet breakpoints = false;\n/*\n//###########################\n// Initialisation handlers ##\n//###########################\n*/\n\n/*\n * Initialise Google publisher tags functionality\n */\n\nfunction init() {\n  const gptConfig = config$1('gpt') || {};\n  breakpoints = config$1('responsive');\n  loadGPT();\n  utils.on('slotReady', onReady.bind(null, slotMethods));\n  utils.on('slotCanRender', onRender);\n  utils.on('refresh', onRefresh);\n  utils.on('resize', onResize);\n  googletag.cmd.push(setup.bind(null, gptConfig));\n}\n/*\n * initalise the googletag global namespace and add the google publish tags library to the page\n */\n\n\nfunction loadGPT() {\n  if (!window.googletag) {\n    // set up a place holder for the gpt code downloaded from google\n    window.googletag = {}; // this is a command queue used by GPT any methods added to it will be\n    // executed when GPT code is available, if GPT is already available they\n    // will be executed immediately\n\n    window.googletag.cmd = [];\n  }\n\n  utils.attach('//securepubads.g.doubleclick.net/tag/js/gpt.js', true, () => {\n    utils.broadcast('serverScriptLoaded');\n  }, err => {\n    utils.broadcast('adServerLoadError', err);\n  });\n}\n/*\n//#################################\n// Global configuration handlers ##\n//#################################\n*/\n\n/*\n * Configure the GPT library for the current page\n * this method is pushed onto the googletag command queue and run\n * when the library is available\n */\n\n\nfunction setup(gptConfig) {\n  const nonPersonalized = config$1('nonPersonalized') ? 1 : 0;\n  googletag.pubads().addEventListener('slotRenderEnded', onRenderEnded);\n  enableCompanions(gptConfig);\n  setRenderingMode(gptConfig);\n  setPageTargeting(targeting.get());\n  setPageCollapseEmpty();\n\n  if (gptConfig.hasOwnProperty('enableLazyLoad')) {\n    enableLazyLoad(gptConfig.enableLazyLoad);\n  }\n\n  const url = stripUrlParams({\n    href: window.location.href,\n    filters: {\n      root: SEARCH_PARAMS\n    }\n  });\n  googletag.enableServices();\n  googletag.pubads().setTargeting('url', url);\n  googletag.pubads().setRequestNonPersonalizedAds(nonPersonalized);\n  return true;\n}\n/**\n * Enables GPT's Lazy Loading for serving ads only when it's necessary.\n * \t\tThe lazy load config ooptions are:\n *\n * \t\t\t- fetchMarginPercent,\t\tminimum distance from the current viewport a slot\n * \t\t\t\t\tmust be before we fetch the ad as a percentage of viewport size.\n * \t\t\t\t\t0 means \"when the slot enters the viewport\",\n * \t\t\t\t\t100 means \"when the ad is 1 viewport away\"\n *\n * \t\t\t- renderMarginPercent,\tminimum distance from the current viewport a slot\n * \t\t\t\t\tmust be before we render an ad.\n * \t\t\t\t\tThis allows for prefetching the ad, but waiting to render and\n * \t\t\t\t\tdownload other subresources. The value works just like\n * \t\t\t\t\tfetchMarginPercent as a percentage of viewport.\n *\n * \t\t\t- mobileScaling,\t\t\t\ta multiplier applied to margins on mobile devices.\n * \t\t\t\t\tThis allows varying margins on mobile vs. desktop. For example,\n * \t\t\t\t\ta mobileScaling of 2.0 will multiply all margins by 2 on mobile\n * \t\t\t\t\tdevices, increasing the minimum distance a slot can be before\n * \t\t\t\t\tfetching and rendering.\n *\n * @param {object|boolean} lazyLoadConf The lazy load config object or a boolean.\n * @returns {boolean} true if the object is of type Array, otherwise false\n */\n\n\nfunction enableLazyLoad(lazyLoadConf) {\n  if (lazyLoadConf && (typeof lazyLoadConf === 'object' || typeof lazyLoadConf === 'boolean')) {\n    const opts = Object.assign({}, DEFAULT_LAZY_LOAD, typeof lazyLoadConf === 'object' ? lazyLoadConf : {});\n    window.googletag.pubads().enableLazyLoad(opts);\n  } else {\n    utils.log.warn('lazyLoadConf must be either an object or a boolean', lazyLoadConf);\n  }\n}\n/*\n * set the gpt rendering mode to either sync or async\n * default is async\n */\n\n\nfunction setRenderingMode(gptConfig) {\n  const rendering = gptConfig.rendering;\n\n  if (rendering === 'sync') {\n    googletag.pubads().enableSyncRendering();\n  } else if (rendering === 'sra') {\n    googletag.pubads().enableSingleRequest();\n  } else {\n    googletag.pubads().enableAsyncRendering();\n  }\n}\n/**\n * Adds page targeting to GPT ad calls\n * @name setPageTargeting\n * @memberof GPT\n * @lends GPT\n */\n\n\nfunction setPageTargeting(targetingData) {\n  if (utils.isPlainObject(targetingData)) {\n    googletag.cmd.push(() => {\n      const pubads = googletag.pubads();\n      Object.keys(targetingData).forEach(key => {\n        // Convert to string as boolean values are invalid arguments for GPT setTargeting()\n        pubads.setTargeting(key, String(targetingData[key]));\n      });\n    });\n  } else {\n    /* istanbul ignore next  */\n    utils.log.warn('invalid targeting object passed', targetingData);\n  }\n\n  return targetingData;\n}\n/**\n * Removes page targeting for a specified key from GPT ad calls\n */\n\n\nfunction clearPageTargetingForKey(key) {\n  if (!window.googletag) {\n    utils.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n    return;\n  }\n\n  if (!key) {\n    utils.log.warn('Refusing to unset all keys - a key must be specified');\n    return;\n  }\n\n  googletag.cmd.push(() => {\n    googletag.pubads().clearTargeting(key);\n  });\n}\n/**\n * Sets behaviour of empty slots can be 'after', 'before' or 'never'\n * * 'after' collapse slots that return an empty ad\n * * 'before' collapses all slots and only displays them when an ad is found\n * * 'never' does not collapse any empty slot, the collapseEmptyDivs method is not called in that case\n */\n\n\nfunction setPageCollapseEmpty() {\n  const mode = config$1('collapseEmpty');\n\n  if (mode === 'before') {\n    googletag.pubads().collapseEmptyDivs(true);\n  }\n\n  if (mode === 'after') {\n    googletag.pubads().collapseEmptyDivs(false);\n  }\n}\n/**\n * When companions are enabled we delay the rendering of ad slots until\n * either a master is returned or all slots are returned without a master\n */\n\n\nfunction enableCompanions(gptConfig) {\n  if (gptConfig.companions) {\n    googletag.pubads().disableInitialLoad();\n    googletag.companionAds().setRefreshUnfilledSlots(true);\n  }\n}\n/*\n//##################\n// Event handlers ##\n//##################\n*/\n\n/*\n * Event handler for when a slot is ready for an ad to rendered\n */\n\n\nfunction onReady(slotMethods, event) {\n  const slot = event.detail.slot;\n  /* istanbul ignore else  */\n\n  if (slot.server === 'gpt') {\n    slot.gpt = {}; // extend the slot with gpt methods\n\n    utils.extend(slot, slotMethods); // setup the gpt configuration the ad\n\n    googletag.cmd.push(() => {\n      slot.defineSlot().addServices().setCollapseEmpty().setTargeting().setURL();\n\n      if (!slot.defer && slot.hasValidSize()) {\n        slot.display();\n      }\n    });\n  }\n}\n/*\n * Render is called when a slot is not rendered when the ready event fires\n */\n\n\nfunction onRender(event) {\n  const slot = event.detail.slot;\n  /* istanbul ignore else  */\n\n  if (utils.isFunction(slot.display)) {\n    slot.display();\n  }\n}\n/*\n * refresh is called when a slot requests the ad be flipped\n */\n\n\nfunction onRefresh(event) {\n  window.googletag.cmd.push(() => {\n    const targeting = event.detail.targeting;\n\n    if (utils.isPlainObject(targeting)) {\n      Object.keys(targeting).forEach(name => {\n        event.detail.slot.gpt.slot.setTargeting(name, targeting[name]);\n      });\n    }\n\n    googletag.pubads().refresh([event.detail.slot.gpt.slot]);\n  });\n  return this;\n}\n\nfunction onResize(event) {\n  const iframe = event.detail.slot.gpt.iframe;\n  const size = event.detail.size;\n  iframe.width = size[0];\n  iframe.height = size[1];\n}\n/*\n * function passed to the gpt library that is run when an ad completes rendering\n */\n\n\nfunction onRenderEnded(event) {\n  const data = {\n    gpt: {}\n  };\n  const gptSlotId = event.slot.getSlotId();\n  const domId = gptSlotId.getDomId().split('-');\n  const iframeId = `google_ads_iframe_${gptSlotId.getId()}`;\n  data.type = domId.pop();\n  data.name = domId.join('-');\n  data.size = event.size && event.size.length ? event.size.join() : '';\n  data.creativeId = event.creativeId;\n  const slotTargeting = event.slot.getTargetingMap && event.slot.getTargetingMap();\n\n  if (slotTargeting && slotTargeting.pos) {\n    data.pos = slotTargeting.pos.length ? slotTargeting.pos.join() : '';\n  }\n\n  const detail = data.gpt;\n  detail.isEmpty = event.isEmpty;\n  detail.size = event.size;\n  detail.creativeId = event.creativeId;\n  detail.lineItemId = event.lineItemId;\n  detail.serviceName = event.serviceName;\n  const iFrameEl = document.getElementById(iframeId);\n\n  if (iFrameEl) {\n    iFrameEl.setAttribute('tabindex', '-1');\n    iFrameEl.setAttribute('aria-hidden', 'true');\n    iFrameEl.setAttribute('role', 'presentation');\n    iFrameEl.setAttribute('title', 'Advertisement');\n    detail.iframe = iFrameEl;\n  } else {\n    /* istanbul ignore next */\n    utils.log.warn('No iFrame found matching GPT SlotID');\n  }\n\n  utils.broadcast('slotRenderStart', data);\n}\n/*\n//################\n// Slot methods ##\n//################\n* Set of methods extended on to the slot constructor for GPT served slots\n*/\n\n\nconst slotMethods = {\n  /**\n   * define a GPT slot\n   */\n  defineSlot: function () {\n    window.googletag.cmd.push(() => {\n      this.gpt.id = `${this.name}-gpt`;\n      this.inner.setAttribute('id', this.gpt.id);\n      this.setUnitName();\n\n      if (!this.outOfPage) {\n        if (breakpoints && utils.isObject(this.sizes)) {\n          this.initResponsive();\n          this.gpt.slot = googletag.defineSlot(this.gpt.unitName, [0, 0], this.gpt.id).defineSizeMapping(this.gpt.sizes);\n        } else {\n          this.gpt.slot = googletag.defineSlot(this.gpt.unitName, this.sizes, this.gpt.id);\n        }\n      } else {\n        this.gpt.slot = googletag.defineOutOfPageSlot(this.gpt.unitName, this.gpt.id);\n      }\n    });\n    return this;\n  },\n  clearSlot: function (gptSlot) {\n    if (window.googletag.pubadsReady && window.googletag.pubads) {\n      gptSlot = gptSlot || this.gpt.slot;\n      return googletag.pubads().clear([gptSlot]);\n    } else {\n      return false;\n    }\n  },\n  initResponsive: function () {\n    window.googletag.cmd.push(() => {\n      utils.on('breakpoint', event => {\n        const slot = event.detail.slot;\n        const screensize = event.detail.screensize;\n        updatePageTargeting({\n          res: screensize\n        });\n\n        if (slot.hasValidSize(screensize)) {\n          /* istanbul ignore else  */\n          if (slot.gpt.iframe) {\n            slot.fire('refresh');\n          } else if (!this.defer) {\n            slot.display();\n          }\n        }\n      }, this.container);\n      const mapping = googletag.sizeMapping();\n      Object.keys(breakpoints).forEach(breakpoint => {\n        if (this.sizes[breakpoint]) {\n          mapping.addSize(breakpoints[breakpoint], this.sizes[breakpoint]);\n        }\n      });\n      this.gpt.sizes = mapping.build();\n    });\n    return this;\n  },\n\n  /**\n   * Tell gpt to destroy the slot and its metadata\n   */\n  destroySlot: function (gptSlot) {\n    if (window.googletag.pubadsReady && window.googletag.pubads) {\n      gptSlot = gptSlot || this.gpt.slot;\n      return googletag.destroySlots([gptSlot]);\n    } else {\n      return false;\n    }\n  },\n\n  /*\n   *\tTell gpt to request an ad\n   */\n  display: function () {\n    window.googletag.cmd.push(() => {\n      this.fire('slotGoRender');\n      googletag.display(this.gpt.id);\n    });\n    return this;\n  },\n\n  /**\n   * Set the DFP unit name for the slot.\n   */\n  setUnitName: function () {\n    window.googletag.cmd.push(() => {\n      let unitName;\n      const gpt = config$1('gpt') || {};\n      const attr = this.container.getAttribute('data-o-ads-gpt-unit-name');\n\n      if (utils.isNonEmptyString(attr)) {\n        unitName = attr;\n      } else if (utils.isNonEmptyString(gpt.unitName)) {\n        unitName = gpt.unitName;\n      } else {\n        const network = gpt.network;\n        const site = gpt.site;\n        const zone = gpt.zone;\n        unitName = `/${network}`;\n        unitName += utils.isNonEmptyString(site) ? `/${site}` : '';\n        unitName += utils.isNonEmptyString(zone) ? `/${zone}` : '';\n      }\n\n      this.gpt.unitName = unitName;\n    });\n    return this;\n  },\n\n  /**\n   * Add the slot to the pub ads service and add a companion service if configured\n   */\n  addServices: function (gptSlot) {\n    window.googletag.cmd.push(() => {\n      const gpt = config$1('gpt') || {};\n      gptSlot = gptSlot || this.gpt.slot;\n      gptSlot.addService(googletag.pubads());\n\n      if (gpt.companions && this.companion !== false) {\n        gptSlot.addService(googletag.companionAds());\n      }\n    });\n    return this;\n  },\n\n  /**\n   * Sets the GPT collapse empty mode for a given slot\n   * values can be 'after', 'before', 'never'\n   */\n  setCollapseEmpty: function () {\n    window.googletag.cmd.push(() => {\n      const mode = this.collapseEmpty || config$1('collapseEmpty') || DEFAULT_COLLAPSE_MODE;\n\n      if (mode === 'before') {\n        this.gpt.slot.setCollapseEmptyDiv(true, true);\n      } else if (mode === 'after') {\n        this.gpt.slot.setCollapseEmptyDiv(true);\n      } else if (mode === 'never') {\n        this.gpt.slot.setCollapseEmptyDiv(false);\n      }\n    });\n    return this;\n  },\n  submitGptImpression: function () {\n    /* istanbul ignore next  */\n    function getImpressionURL(iframe) {\n      const trackingUrlElement = iframe.contentWindow.document.querySelector('[data-o-ads-impression-url]');\n\n      if (trackingUrlElement) {\n        return trackingUrlElement.dataset.oAdsImpressionUrl;\n      } else {\n        utils.log.warn('Impression URL not found, this is set via a creative template.');\n        return false;\n      }\n    }\n\n    if (this.outOfPage && this.gpt.iframe) {\n      const impressionURL = getImpressionURL(this.gpt.iframe);\n      /* istanbul ignore next  */\n\n      if (impressionURL) {\n        utils.attach(impressionURL, true, () => {\n          utils.log.info('Impression Url requested');\n        }, () => {\n          utils.log.info('CORS request to submit an impression failed');\n        }, true);\n      }\n    } else {\n      utils.log.warn('Attempting to call submitImpression on a non-oop slot');\n    }\n  },\n\n  /**\n   * Sets page url to be sent to google\n   * prevents later url changes via javascript from breaking the ads\n   */\n  setURL: function (gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      const canonical = config$1('canonical');\n      gptSlot.set('page_url', canonical ? canonical : utils.getLocation());\n    });\n    return this;\n  },\n\n  /**\n   * Adds key values from a given object to the slot targeting\n   */\n  setTargeting: function (gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      /* istanbul ignore else  */\n\n      if (utils.isPlainObject(this.targeting)) {\n        Object.keys(this.targeting).forEach(param => {\n          gptSlot.setTargeting(param, this.targeting[param]);\n        });\n      }\n    });\n    return this;\n  }\n};\n/*\n//####################\n// External methods ##\n//####################\n*/\n\n/**\n * The correlator is a random number added to ad calls.\n * It is used by the ad server to determine which impressions where served to the same page\n * Updating is used to tell the ad server to treat subsequent ad calls as being on a new page\n */\n\nfunction updateCorrelator() {\n  utils.log.warn('[DEPRECATED]: Updatecorrelator is being phased out by google and removed from o-ads in future releases.');\n  googletag.cmd.push(() => {\n    googletag.pubads().updateCorrelator();\n  });\n}\n\nfunction getCorrelator() {\n  if (window.googletag && window.googletag.pubads) {\n    return googletag.pubads().getCorrelator();\n  }\n}\n\nfunction clearPageTargeting() {\n  if (window.googletag) {\n    googletag.cmd.push(() => {\n      googletag.pubads().clearTargeting();\n    });\n  } else {\n    utils.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n  }\n}\n\nfunction updatePageTargeting(override) {\n  if (window.googletag) {\n    const params = utils.isPlainObject(override) ? override : targeting.get();\n    setPageTargeting(params);\n  } else {\n    utils.log.warn('Attempting to set page targeting before the GPT library has initialized');\n  }\n} //https://developers.google.com/doubleclick-gpt/common_implementation_mistakes#scenario-2:-checking-the-googletag-object-to-know-whether-gpt-is-ready\n\n\nfunction hasGPTLoaded() {\n  if (window.googletag && window.googletag.apiReady) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction debug() {\n  const log = utils.log;\n  const conf = config$1('gpt');\n\n  if (!conf) {\n    return;\n  }\n\n  log.start('gpt');\n  log.attributeTable(conf);\n  log.end();\n}\n\nvar gpt = {\n  init,\n  setup,\n  updateCorrelator,\n  getCorrelator,\n  updatePageTargeting,\n  clearPageTargeting,\n  clearPageTargetingForKey,\n  hasGPTLoaded,\n  loadGPT,\n  debug\n};\n\n/* eslint valid-jsdoc: 0 */\n\nfunction Ads() {\n  addDOMEventListener();\n\n  if (window && !window.oAds) {\n    window.oAds = this;\n  }\n}\n\nconfig$1.init = init$1;\nconfig$1.clear = clear; // bung all our modules on the protoype\n\nAds.prototype.config = config$1;\nAds.prototype.slots = slots;\nAds.prototype.gpt = gpt;\nAds.prototype.targeting = targeting;\nAds.prototype.utils = utils;\n/**\n* Initialises the ads library and all sub modules\n* @param options {object} a JSON object containing configuration for the current page\n*/\n\nAds.prototype.init = function (options) {\n  options = options || {};\n  this.config.init();\n  const configOptions = Object.assign(options, {\n    nonPersonalized: !options.disableConsentCookie\n  });\n  this.config(configOptions);\n\n  if (options.disableConsentCookie) {\n    this.consents = {\n      behavioral: true\n    };\n  } else {\n    this.consents = getConsents();\n  }\n\n  if (this.consents.behavioral) {\n    this.utils.broadcast('consentBehavioral');\n  }\n\n  if (this.consents.programmatic) {\n    this.utils.broadcast('consentProgrammatic');\n  }\n\n  this.utils.broadcast('initialising');\n  this.targeting.add(this.config().targeting);\n  return Promise.resolve(this.initLibrary());\n};\n/**\n * Update page level targeting data in o-ads and GPT\n */\n\n\nAds.prototype.updateTargeting = function (data) {\n  this.targeting.add(data);\n  this.gpt.updatePageTargeting(this.targeting.get());\n};\n\nAds.prototype.initLibrary = function () {\n  this.slots.init();\n\n  if (this.consents.programmatic) {\n    this.config({\n      'nonPersonalized': false\n    });\n    this.targeting.add({\n      \"cc\": \"y\"\n    });\n  }\n\n  this.gpt.init();\n  this.utils.on('debug', this.debug.bind(this));\n  this.isInitialised = true;\n  this.utils.broadcast('initialised', this);\n  removeDOMEventListener();\n  return this;\n};\n\nAds.prototype.debug = function () {\n  let remove = true;\n\n  if (localStorage.getItem('oAds')) {\n    remove = false;\n  } else {\n    localStorage.setItem('oAds', true);\n  }\n\n  this.gpt.debug();\n  this.slots.debug();\n  this.targeting.debug();\n\n  if (remove) {\n    localStorage.removeItem('oAds');\n  }\n};\n\nAds.prototype.version = function () {\n  this.utils.log.warn('DEPRECATION NOTICE: Ads.version() will be deprecated in favour of Ads.getVersion()');\n  this.utils.log(`o-ads version: ${this.utils.getVersion()}`);\n};\n\nAds.prototype.getVersion = function () {\n  return this.utils.getVersion();\n};\n\nconst initAll = function () {\n  return ads.init().then(() => {\n    const slots = Array.from(document.querySelectorAll('.o-ads, [data-o-ads-name]'));\n    slots.forEach(ads.slots.initSlot.bind(ads.slots));\n  });\n};\n\nAds.prototype.initAll = initAll;\n\nfunction getConsents() {\n  // derive consent options from ft consent cookie\n  const re = /FTConsent=([^;]+)/;\n  const match = document.cookie.match(re);\n\n  if (!match) {\n    // cookie stasis or no consent cookie found\n    return {\n      behavioral: false,\n      programmatic: false\n    };\n  }\n\n  const consentCookie = decodeURIComponent(match[1]);\n  return {\n    behavioral: consentCookie.indexOf('behaviouraladsOnsite:on') !== -1,\n    programmatic: consentCookie.indexOf('programmaticadsOnsite:on') !== -1\n  };\n}\n\nfunction addDOMEventListener() {\n  document.addEventListener('o.DOMContentLoaded', initAll);\n}\n\nfunction removeDOMEventListener() {\n  document.removeEventListener('o.DOMContentLoaded', initAll);\n}\n\nconst ads = new Ads();\n\nexport { ads as default };\n","/**\n * @file\n * A card that puts an array of items in a list\n */\n\nimport React, { Children } from 'react';\nimport PropTypes from 'prop-types';\nimport Card from '../card';\nimport './styles.scss';\n\nconst ListCard = ({ title, children }) => (\n  <Card className=\"g-list-card\">\n    {title && <h3 className=\"g-list-card__title\">{title}</h3>}\n    <ul className=\"g-list-card__list\">\n      {Children.map(children, child => {\n        return <li className=\"g-list-card__list-item\">{child}</li>;\n      })}\n    </ul>\n  </Card>\n);\n\nListCard.propTypes = {\n  title: PropTypes.string,\n  children: PropTypes.arrayOf(PropTypes.node),\n};\n\nListCard.defaultProps = {\n  title: false,\n  children: [],\n};\n\nexport default ListCard;\n","/**\n * @file\n * Epilogue component\n */\n\nimport React from 'react';\nimport { GridContainer, GridRow, GridChild } from '../grid';\nimport './styles.scss';\n\nconst Epilogue = () => {\n  const year = new Date().getFullYear();\n  return (\n    <GridContainer>\n      <GridRow>\n        <GridChild colspan=\"12 S11 Scenter M10 L9 XL8\">\n          <footer className=\"g-epilogue-copyright\">\n            <a href=\"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\" data-trackable=\"link-copyright\">Copyright</a> The Financial Times Limited {year}. All rights reserved.\n          </footer>\n        </GridChild>\n      </GridRow>\n    </GridContainer>\n  );\n};\n\nEpilogue.displayName = 'GEpilogue';\n\nexport default Epilogue;\n","/**\n * @file\n * List of o-buttons compatible icon names\n */\n\nexport const icons = [\n  'arrow-left',\n  'arrow-right',\n  'upload',\n  'tick',\n  'plus',\n  'warning',\n  'arrow-down',\n  'arrow-up',\n  'grid',\n  'list',\n  'edit',\n  'download',\n  'search',\n];\n\nexport default icons;\n","import React from 'react';\nimport './styles.scss';\nimport Bylines from '@financial-times/g-components/bylines';\nimport { ContextPropType, ContextDefaultProps } from '../../util/prop-types';\n\nconst CustomArticleHead = ({ topic, headline, summary, bylines, publishedDate }) => {\n  return (\n    <div className=\"custom-article-head\">\n      {topic && (\n        <div className=\"topic\">\n          <a href={topic.url} className=\"o-editorial-typography-topic\">\n            {topic.name}\n          </a>\n        </div>\n      )}\n\n      <h1 className=\"o-editorial-layout-heading-1\" itemProp=\"headline\">\n        {headline}\n      </h1>\n\n      {bylines ? (\n        publishedDate ? (\n          <Bylines prefix=\"Updated\" dateFirst names={bylines} date={publishedDate} />\n        ) : (\n          <Bylines prefix=\"By\" names={bylines} />\n        )\n      ) : null}\n\n      {summary && <div className=\"o-editorial-typography-standfirst\">{summary}</div>}\n\n      <meta itemProp=\"dateModified\" content={publishedDate} suppressHydrationWarning />\n    </div>\n  );\n};\n\nCustomArticleHead.propTypes = {\n  ...ContextPropType,\n};\n\nCustomArticleHead.defaultProps = {\n  ...ContextDefaultProps,\n};\n\nexport default CustomArticleHead;\n","import oDate from './src/js/date.js';\nconst constructAll = function () {\n\toDate.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nexport default oDate;\n","import React, { useContext, useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Context } from '@financial-times/g-components/article-layout';\nimport './styles.scss';\n\nconst NavigationHeaderMobileDropdownButton = ({\n  links,\n  currentPage,\n  onClick,\n  isOpen,\n  buttonRef,\n}) => {\n  const { text: currentText } = links.find(({ url }) => url === currentPage);\n  return (\n    <div className=\"navigation-header__mobile-select\">\n      <button\n        ref={buttonRef}\n        className=\"navigation-header__current\"\n        className={`navigation-header__current navigation-header__current--${\n          isOpen ? 'open' : 'closed'\n        }`}\n        value={currentPage}\n        onClick={onClick}\n      >\n        {currentText}\n      </button>\n    </div>\n  );\n};\n\nconst NavigationHeaderMobileDropdown = ({\n  links,\n  currentPage,\n  openLinksInNewWindow,\n  closeDropdown,\n  buttonRef,\n}) => {\n  const dropdownRef = useRef();\n\n  const handleClick = event => {\n    if (dropdownRef.current.contains(event.target) || buttonRef.current.contains(event.target)) {\n      return;\n    }\n    closeDropdown();\n  };\n\n  useEffect(() => {\n    document.addEventListener('mousedown', handleClick);\n    return () => {\n      document.removeEventListener('mousedown', handleClick);\n    };\n  }, []);\n\n  return (\n    <div className=\"navigation-header__dropdown\" ref={dropdownRef}>\n      {links.map(({ text, url }) => (\n        <a\n          key={url}\n          className=\"navigation-header__dropdown-link\"\n          href={currentPage !== url ? url : '#'}\n          target={openLinksInNewWindow ? '_blank' : null}\n          aria-current={currentPage === url ? 'page' : null}\n          role={currentPage === url ? 'button' : null}\n          onClick={closeDropdown}\n        >\n          {text}\n        </a>\n      ))}\n    </div>\n  );\n};\n\nconst NavigationHeader = ({ title, links, currentPage, openLinksInNewWindow }) => {\n  const buttonRef = useRef();\n  const [isOpen, setIsOpen] = useState(false);\n\n  const { breakpoint: b } = useContext(Context);\n  const breakpoint = ((b && b.breakpoint) || 'default').toLowerCase();\n\n  return (\n    <nav className=\"navigation-header\">\n      {title && <div className=\"navigation-header__title\">{title}</div>}\n      {breakpoint === 'default' ? (\n        <NavigationHeaderMobileDropdownButton\n          links={links}\n          currentPage={currentPage}\n          onClick={() => setIsOpen(!isOpen)}\n          isOpen={isOpen}\n          buttonRef={buttonRef}\n        />\n      ) : (\n        <ul className=\"navigation-header__list\">\n          {links.map(({ text, url }) => (\n            <li key={url} className=\"navigation-header__item\">\n              <a\n                className=\"navigation-header__link\"\n                href={currentPage !== url ? url : '#'}\n                target={openLinksInNewWindow ? '_blank' : null}\n                aria-current={currentPage === url ? 'page' : null}\n              >\n                {text}\n              </a>\n            </li>\n          ))}\n        </ul>\n      )}\n      {isOpen && (\n        <NavigationHeaderMobileDropdown\n          links={links}\n          currentPage={currentPage}\n          openLinksInNewWindow={openLinksInNewWindow}\n          closeDropdown={() => setIsOpen(false)}\n          buttonRef={buttonRef}\n        />\n      )}\n    </nav>\n  );\n};\n\nNavigationHeader.propTypes = {\n  title: PropTypes.string,\n  links: PropTypes.arrayOf(\n    PropTypes.shape({\n      text: PropTypes.string,\n      url: PropTypes.string,\n    })\n  ).isRequired,\n  openLinksInNewWindow: PropTypes.bool,\n  currentPage: PropTypes.string,\n};\n\nNavigationHeader.defaultProps = {\n  openLinksInNewWindow: false,\n};\n\nexport default NavigationHeader;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Context } from '@financial-times/g-components/article-layout';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport useScrollPosition from './hooks';\nimport './styles.scss';\n\nconst StickyHeader = ({ children, containerRef, height }) => {\n  const [isSticky, setSticky] = useState(false);\n  const [stickyShadow, setStickyShadow] = useState(false);\n  const [headerHeight, setHeaderHeight] = useState(0);\n  const ref = useRef(null);\n\n  useScrollPosition(({ prevPos, currPos }) => {\n    if (ref.current && containerRef.current) {\n      const { top: stickyTop, height: stickyHeight } = ref.current.getBoundingClientRect();\n      const { bottom: containerBottom } = containerRef.current.getBoundingClientRect();\n      const isSticky = stickyTop <= 0 && containerBottom - stickyHeight >= 0;\n      setSticky(isSticky);\n\n      // Only show shadow when scrolling up\n      if (isSticky) setStickyShadow(currPos.y > prevPos.y);\n    }\n  }, []);\n\n  return (\n    <Context.Consumer>\n      {({ breakpoint: b }) => {\n        const breakpoint = (b && b.breakpoint) || 'default';\n        const breakpointHeight = height[breakpoint];\n\n        const wrapperClasses = classNames(\n          'sticky-header-wrapper',\n          isSticky && 'sticky-header-wrapper--fixed',\n          // Always show shadow on mobile\n          ((stickyShadow && isSticky) || breakpoint === 'default') &&\n            'sticky-header-wrapper--shadow'\n        );\n\n        return (\n          <div\n            className={wrapperClasses}\n            ref={ref}\n            style={{ minHeight: isSticky && breakpointHeight ? breakpointHeight : 'auto' }}\n          >\n            {children}\n          </div>\n        );\n      }}\n    </Context.Consumer>\n  );\n};\n\nStickyHeader.propTypes = {\n  height: PropTypes.object,\n};\n\nexport default StickyHeader;\n","/**\n * Track custom events in Spoor\n * @param {string} category Event category\n * @param {string} action Action description\n * @param {object} extraDetail Extra info to add to the event\n */\nconst sendSpoorEvent = (category, action, extraDetail) => {\n  const event = new CustomEvent('oTracking.event', {\n    detail: {\n      category,\n      action,\n      ...extraDetail,\n    },\n    bubbles: true,\n  });\n  document.body.dispatchEvent(event);\n};\n\nexport default sendSpoorEvent;\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","import React, { useState } from 'react';\nimport Button from '@financial-times/g-components/button';\nimport { Context } from '@financial-times/g-components/article-layout';\nimport PropTypes from 'prop-types';\nimport OptionsOverlay from '../options-overlay';\nimport './styles.scss';\n\nconst OptionsPanel = ({\n  id,\n  mainOptions: MainOptions,\n  additionalOptions: AdditionalOptions,\n  showAdditionalOptionsByDefault,\n}) => {\n  const [showAdditionalOptions, setShowAdditionalOptions] = useState(\n    showAdditionalOptionsByDefault\n  );\n  const toggleAdditionalOptions = () => setShowAdditionalOptions(!showAdditionalOptions);\n\n  return (\n    <Context.Consumer>\n      {({ breakpoint: b }) => {\n        const breakpoint = ((b && b.breakpoint) || 'default').toLowerCase();\n        // Check breakpoint has initialised (after it's initialised the type changes to an object)\n        const breakpointInitialised = b !== 'default';\n        const isSmall = ['default', 's'].includes(breakpoint);\n        const buttonIcon = isSmall ? '' : `arrow-${showAdditionalOptions ? 'up' : 'down'}`;\n        const optionsButtonText = isSmall\n          ? 'Options'\n          : showAdditionalOptions\n          ? 'Close options'\n          : 'More options';\n\n        // If function, then pass breakpoint, otherwise render normally\n        const mainOptions =\n          typeof MainOptions === 'function' ? (\n            <MainOptions breakpoint={breakpoint} breakpointInitialised={breakpointInitialised} />\n          ) : (\n            MainOptions\n          );\n\n        const additionalOptions =\n          typeof AdditionalOptions === 'function' ? (\n            <AdditionalOptions\n              breakpoint={breakpoint}\n              breakpointInitialised={breakpointInitialised}\n              closeOptionsOverlay={isSmall ? () => setShowAdditionalOptions(false) : () => {}}\n            />\n          ) : (\n            AdditionalOptions\n          );\n\n        return (\n          <div className=\"options-panel\">\n            <div className=\"options-panel__main-options\">\n              {mainOptions}\n              <Button\n                id={`more-options-${showAdditionalOptions ? 'up' : 'down'}`}\n                className=\"options-panel__more-button\"\n                big\n                icon={buttonIcon}\n                onClick={() => toggleAdditionalOptions()}\n              >\n                {optionsButtonText}\n              </Button>\n            </div>\n\n            {/* If screen is not small, open the additional options below the main options */}\n            {showAdditionalOptions && !isSmall && (\n              <div className=\"options-panel__additional-options\">{additionalOptions}</div>\n            )}\n\n            {/* If screen is small, open the additional options in an overlay */}\n            <OptionsOverlay\n              id={`options__${id}`}\n              headerText=\"Chart options\"\n              isShowing={showAdditionalOptions && isSmall}\n              closeOptionsOverlay={() => setShowAdditionalOptions(false)}\n            >\n              {additionalOptions}\n            </OptionsOverlay>\n          </div>\n        );\n      }}\n    </Context.Consumer>\n  );\n};\n\nOptionsPanel.propTypes = {\n  mainOptions: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n  additionalOptions: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n  showAdditionalOptionsByDefault: PropTypes.bool,\n};\n\nOptionsPanel.defaultProps = {\n  showAdditionalOptionsByDefault: false,\n};\n\nexport default OptionsPanel;\n","import React from 'react';\nimport Button from '@financial-times/g-components/button';\nimport Overlay from '@financial-times/g-components/overlay';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst OptionsOverlay = ({ id, children, closeOptionsOverlay, isShowing, headerText }) => (\n  <Overlay id={id} className=\"options-overlay\" isShowing={isShowing}>\n    <div className=\"options-overlay__header\">\n      <div className=\"options-overlay__header-row\">\n        <div className=\"options-overlay__header-text\">{headerText}</div>\n        <Button\n          id=\"mobile-cross\"\n          icon=\"cross\"\n          inverse\n          big\n          type=\"primary\"\n          label=\"Close\"\n          onClick={closeOptionsOverlay}\n        />\n      </div>\n    </div>\n    <div className=\"options-overlay__body\">{children}</div>\n  </Overlay>\n);\n\nOptionsOverlay.propTypes = {\n  headerText: PropTypes.string,\n  closeOptionsOverlay: PropTypes.func.isRequired,\n  isShowing: PropTypes.bool,\n};\n\nOptionsOverlay.defaultProps = {\n  headerText: 'Options',\n  isShowing: false,\n};\n\nexport default OptionsOverlay;\n","// Ported from https://github.com/Financial-Times/spark-lists/tree/master/src/client/components/Origami\n\nimport React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '../button';\nimport OverlayContents from './overlayContents';\nimport { useOverlay } from './useOverlay';\nimport './styles.scss';\n\nconst Overlay = ({ children, isShowing, id, className }) => {\n  // Initialise overlay\n  const overlayState = useOverlay({\n    id,\n    visuallyHideTitle: true,\n    oOverlayOptions: {\n      modal: true,\n      customclose: true,\n      preventclosing: true,\n      class: className,\n    },\n  });\n\n  const { showOverlay, hideOverlay } = overlayState;\n\n  useEffect(() => {\n    if (isShowing) {\n      showOverlay();\n    } else if (isShowing === false) {\n      hideOverlay();\n    }\n    // WARNING: Do *not* add showOverlay, hideOverlay to dependencies as this will cause multiple overlays to be mounted\n  }, [isShowing]); // eslint-disable-line react-hooks/exhaustive-deps\n\n  return <OverlayContents overlayState={overlayState}>{children}</OverlayContents>;\n};\n\nOverlay.propTypes = {\n  isShowing: PropTypes.bool,\n  id: PropTypes.string,\n  className: PropTypes.string,\n};\n\nOverlay.defaultProps = {\n  isShowing: false,\n  id: 'overlay',\n  className: 'overlay',\n};\n\nexport default Overlay;\n","import ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\n/**\n * A wrapper for oOverlay contents\n *\n * Based on whether the overlay is shown or not (from `useOverlay`\n * state), create a [React portal](https://reactjs.org/docs/portals.html)\n * to insert the children of this component into oOverlay contents DOM\n * element.\n *\n * @param {Object} props\n * @param {*} props.children - The contents of the overlay\n * @param {Object} props.overlayState - The overlay state (result of `useOverlay`)\n * @param {Object} props.overlayState.isShowing - Whether to create the content or not\n * @param {Object} props.overlayState.oOverlayContentsSelector - A selector to get the DOM element to insert overlay contents into\n */\nconst OverlayContents = ({ children, overlayState }) => {\n  const { isShowing, oOverlayContentsSelector } = overlayState;\n\n  // Find where the overlay contents is, to create the portal\n  const portalContainer = document.querySelector(oOverlayContentsSelector);\n\n  // Only create a portal if the overlay is showing\n  return isShowing ? ReactDOM.createPortal(children, portalContainer) : null;\n};\n\nOverlayContents.propTypes = {\n  overlayState: PropTypes.shape({\n    isShowing: PropTypes.bool,\n    oOverlayContentsSelector: PropTypes.string,\n  }).isRequired,\n};\n\nexport default OverlayContents;\n","import React, { useRef, useState, useEffect } from 'react';\nimport * as d3 from 'd3-time-format';\nimport Button from '@financial-times/g-components/button';\nimport Loading from '@financial-times/g-components/loading';\nimport Icon from '@financial-times/g-components/icon';\nimport DatePickerInput from '../date-picker-input';\nimport { getDateNDaysAgo, getReadableDateFormat } from '../date-picker-input/helpers';\nimport './styles.scss';\n\nconst DatePicker = ({\n  minDate,\n  maxDate,\n  selectedStartDate,\n  selectedEndDate,\n  updateDateRange,\n  inputDateFormat,\n  storedDateFormat,\n  isDateRange,\n  labelText,\n  onApplyCallback,\n  loadingTime = 100,\n  error,\n  setError,\n}) => {\n  const [loading, setLoading] = useState(false);\n  const [supportsDateType, setSupportsDateType] = useState(true);\n\n  const [fallbackStartDate, setFallbackStartDate] = useState(selectedStartDate);\n  const [fallbackEndDate, setFallbackEndDate] = useState(selectedEndDate);\n\n  const startDateRef = useRef();\n  const endDateRef = useRef();\n\n  const inputDateParser = d3.timeParse(inputDateFormat);\n  const storedDateFormatter = d3.timeFormat(storedDateFormat); // For query params\n\n  // The max date for the start date input should change if the end date input is updated\n  const minDateInputMaxDate = isDateRange ? fallbackEndDate : maxDate;\n  const readableDateFormat = getReadableDateFormat();\n\n  const weekBeforeMaxDate = getDateNDaysAgo(minDateInputMaxDate, 7);\n\n  useEffect(() => {\n    let timer;\n\n    if (loading && loadingTime > 0) {\n      timer = setTimeout(() => {\n        setLoading(false);\n        if (loading.endDate) {\n          updateDateRange(loading.startDate, loading.endDate);\n        } else {\n          updateDateRange(loading.startDate);\n        }\n        setError({ state: 'default', message: '' });\n        onApplyCallback();\n      }, loadingTime); // Defaults to 100ms\n    }\n\n    return () => {\n      clearTimeout(timer);\n    };\n  }, [loading]);\n\n  return (\n    <React.Fragment>\n      <div className=\"options-panel__row-item-label\">\n        {labelText}\n        {supportsDateType && (\n          <div className=\"options-panel__row-item-label-subhead\">({readableDateFormat})</div>\n        )}\n      </div>\n      <div\n        className={`options-panel__date-picker${\n          error.state === 'error'\n            ? ' options-panel__date-picker--error'\n            : ' options-panel__date-picker--default'\n        }`}\n      >\n        <DatePickerInput\n          minDate={minDate}\n          maxDate={minDateInputMaxDate}\n          selectedDate={selectedStartDate}\n          fallbackDate={fallbackStartDate}\n          inputDateFormat={inputDateFormat}\n          inputRef={startDateRef}\n          setFallbackDate={setFallbackStartDate}\n          supportsDateType={supportsDateType}\n          setSupportsDateType={setSupportsDateType}\n        />\n        {isDateRange && (\n          <DatePickerInput\n            minDate={fallbackStartDate}\n            maxDate={maxDate}\n            selectedDate={selectedEndDate}\n            fallbackDate={fallbackEndDate}\n            inputDateFormat={inputDateFormat}\n            inputRef={endDateRef}\n            setFallbackDate={setFallbackEndDate}\n            supportsDateType={supportsDateType}\n            setSupportsDateType={setSupportsDateType}\n          />\n        )}\n        <Button\n          className=\"date-picker-submit\"\n          big\n          type=\"primary\"\n          onClick={() => {\n            const parsedStartDate = supportsDateType\n              ? inputDateParser(startDateRef.current.value)\n              : fallbackStartDate;\n            const formattedStartDate = storedDateFormatter(parsedStartDate);\n\n            if (isDateRange) {\n              const parsedEndDate = supportsDateType\n                ? inputDateParser(endDateRef.current.value)\n                : fallbackEndDate;\n              const formattedEndDate = storedDateFormatter(parsedEndDate);\n\n              // Pass callback to run\n              setLoading({ startDate: formattedStartDate, endDate: formattedEndDate });\n              // If start date didn't parse properly because of manual data entry\n            } else if (!parsedStartDate) {\n              setError({ state: 'error', message: 'Please enter a valid date' });\n              // If new date within acceptable range\n            } else if (parsedStartDate <= weekBeforeMaxDate && parsedStartDate >= minDate) {\n              // Pass callback to run\n              setLoading({ startDate: formattedStartDate });\n            } else {\n              const errorMessage =\n                parsedStartDate > weekBeforeMaxDate\n                  ? 'Date must be 7 days before latest date'\n                  : `Date must be after ${d3.timeFormat('%b %-d %Y')(minDate)}`;\n              setError({\n                state: 'error',\n                message: errorMessage,\n              });\n            }\n          }}\n        >\n          Apply\n          {loading ? (\n            <div className=\"date-picker-submit__loading\">\n              <Loading size=\"small\" />\n            </div>\n          ) : null}\n        </Button>\n      </div>\n      {error.message && (\n        <div\n          className={`options-panel__date-picker-message options-panel__date-picker-message--${error.state}`}\n        >\n          {error.state === 'error' && <Icon iconName=\"warning-alt\" iconColor=\"#cc0000\" />}\n          {error.message}\n        </div>\n      )}\n    </React.Fragment>\n  );\n};\n\nexport default DatePicker;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport AutosuggestSearch from '@financial-times/g-components/autosuggest-search';\nimport Icon from '@financial-times/g-components/icon';\nimport './styles.scss';\nimport {\n  findMatch,\n  cleanSearchValue,\n  getSuggestions,\n  formatAreaList,\n  generateErrorMessage,\n} from './helpers';\n\n// Function to render suggestion\nconst RenderSuggestion = ({ display, disabled, selected }) => {\n  return (\n    <div className={`suggestion-entry ${disabled ? 'suggestion-entry--disabled' : ''}`}>\n      {selected && (\n        <Icon\n          className=\"suggestion-entry__tick\"\n          iconName=\"tick\"\n          iconColor=\"#0d7680\"\n          height={40}\n          width={32}\n        />\n      )}\n      <div className=\"suggestion-entry__text\">\n        <span className=\"suggestion-entry__area-name\">{display}</span>\n        {disabled && (\n          <span className=\"suggestion-entry__error\">\n            {' '}\n            (does not appear on this view of the chart)\n          </span>\n        )}\n      </div>\n    </div>\n  );\n};\n\nconst AreaLookup = ({\n  title,\n  areaList,\n  selectedAreas,\n  exclusionList,\n  updateState,\n  maxSelectedAreas,\n  options,\n  areasInData,\n  placeholder,\n  emptyInputErrorMessage,\n  maxSelectedErrorMessage,\n}) => {\n  const selectionErrorMessage = generateErrorMessage(selectedAreas, areasInData, options);\n\n  const selectedAreasValues = selectedAreas.map(({ value }) => value);\n\n  const formattedAreaList = useMemo(\n    () => formatAreaList(areaList, areasInData, selectedAreasValues),\n    [areaList, areasInData, selectedAreasValues]\n  );\n\n  const addAreaToSelection = newArea => {\n    if (selectedAreas.length !== maxSelectedAreas) {\n      const newSelectedAreas = [...new Set([...selectedAreasValues, newArea])];\n      updateState(newSelectedAreas);\n    }\n  };\n\n  const removeAreaFromSelection = areaToRemove => {\n    const newSelectedAreas = selectedAreasValues.filter(v => v !== areaToRemove);\n    updateState(newSelectedAreas);\n    // Clear error\n    return { isError: false, errorMessage: '' };\n  };\n\n  const removeLastAreaFromSelection = () => {\n    if (selectedAreasValues.length > 0) {\n      const newSelectedAreas = selectedAreasValues.slice(0, -1);\n      updateState(newSelectedAreas);\n    }\n  };\n\n  // Function to run on dropdown select\n  const onSelectCallback = ({ value, selected, errorMessage }) => {\n    // If already selected, remove\n    if (selected) {\n      removeAreaFromSelection(value);\n    } else {\n      addAreaToSelection(value);\n    }\n    if (errorMessage) {\n      return { isError: true, errorMessage };\n    }\n  };\n\n  // Function to run on submit\n  const onSubmitCallback = value => {\n    const match = findMatch(formattedAreaList, value);\n\n    if (match) {\n      const { value } = match;\n      addAreaToSelection(value);\n    } else {\n      const exclusionMatch = findMatch(exclusionList, value);\n      if (exclusionMatch) {\n        const { errorMessage } = exclusionMatch;\n        return { isError: true, errorMessage };\n      }\n      return { isError: true, errorMessage: 'No match found' };\n    }\n  };\n\n  const maxSelectedAreasReached = selectedAreas.length === maxSelectedAreas;\n\n  return (\n    <div className=\"area-lookup\">\n      {title && <div className=\"area-lookup__title\">{title}</div>}\n      <AutosuggestSearch\n        placeholder={!maxSelectedAreasReached ? placeholder : ''}\n        width=\"100%\"\n        showClearButton={false}\n        showSearchIcon\n        searchIconPosition=\"right\"\n        searchList={formattedAreaList}\n        selectedValues={selectedAreas}\n        validateInput={input =>\n          input === ''\n            ? { isError: true, errorMessage: emptyInputErrorMessage }\n            : { isError: false, errorMessage: '' }\n        }\n        renderSuggestion={RenderSuggestion}\n        getSuggestions={getSuggestions}\n        onSelectCallback={onSelectCallback}\n        onSubmitCallback={onSubmitCallback}\n        onSelectedValueRemove={removeAreaFromSelection}\n        onEmptyInputBackspace={removeLastAreaFromSelection}\n        onClickCallback={() =>\n          maxSelectedAreasReached\n            ? {\n                isError: true,\n                errorMessage: maxSelectedErrorMessage,\n              }\n            : null\n        }\n        errorMessageOverride={selectionErrorMessage}\n        disabled={maxSelectedAreasReached}\n        blurInputOnSuggestionSubmit={false}\n        usingSelectedValues\n      />\n    </div>\n  );\n};\n\nAreaLookup.propTypes = {\n  title: PropTypes.oneOf([PropTypes.string, PropTypes.node]),\n  areaList: PropTypes.array,\n  addAreaToSelection: PropTypes.func,\n  removeAreaFromSelection: PropTypes.func,\n  exclusionList: PropTypes.array,\n  errorMessage: PropTypes.string,\n  updateState: PropTypes.func,\n  maxSelectedAreas: PropTypes.number,\n  areasInData: PropTypes.array.isRequired,\n  options: PropTypes.object,\n  placeholder: PropTypes.string,\n  emptyInputErrorMessage: PropTypes.string,\n  maxSelectedErrorMessage: PropTypes.string,\n};\n\nAreaLookup.defaultProps = {\n  areaList: [],\n  addAreaToSelection: () => {},\n  removeAreaFromSelection: () => {},\n  exclusionList: [],\n  updateState: () => {},\n  maxSelectedAreas: 6,\n  placeholder: 'Search...',\n  emptyInputErrorMessage: 'Please enter an area name',\n  maxSelectedErrorMessage: 'Maximum number of areas selected',\n};\n\nexport default AreaLookup;\n","/**\n * @file\n * Autosuggest search component\n */\n\nimport React, { useRef, useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Autosuggest from 'react-autosuggest';\nimport classNames from 'classnames';\nimport './styles.scss';\nimport Icon from '../icon';\n\n// Default get suggestions method\nconst defaultGetSuggestions = (value, searchList) => {\n  const inputValue = value.trim().toLowerCase();\n  const inputLength = inputValue.length;\n\n  // Match from the beginning of the string\n  return inputLength === 0\n    ? []\n    : searchList.filter(({ display }) => {\n        const words = display.toLowerCase().split(' ');\n        return words.some(word => word.toLowerCase().slice(0, inputLength) === inputValue);\n      });\n};\n\n// Default component/function to render suggestion\nconst RenderSuggestion = ({ display, disabled }) => (\n  <div className={classNames('suggestion', disabled && 'suggestion--disabled')}>{display}</div>\n);\n\n// Default mapping from suggestion to value\nconst defaultGetSuggestionValue = ({ display }) => display;\n\nconst SelectedValue = ({ className, display, value, onSelectedValueRemove }) => (\n  <div className={`${className}__selected-value`} key={`selected-value__${value}`}>\n    <span id={`selected-value__${value}`}>{display}</span>\n    <button\n      className={`${className}__selected-value-close-button`}\n      aria-labelledby={`selected-value__${value}`}\n      type=\"button\"\n      onClick={() => onSelectedValueRemove(value)}\n    >\n      <Icon\n        className=\"remove-from-selection\"\n        iconName=\"cross\"\n        iconColor=\"ffffff\"\n        width={20}\n        height={20}\n      />\n    </button>\n  </div>\n);\n\nconst AutosuggestSearch = ({\n  className,\n  width,\n  placeholder,\n  defaultValue,\n  disabled,\n  showSearchIcon,\n  searchIconPosition,\n  showClearButton,\n  blurInputOnSuggestionSubmit,\n  // Data to generate suggestions from\n  searchList,\n  // Selected values\n  selectedValues,\n  usingSelectedValues,\n  selectedValueComponent: customSelectedValueComponent,\n  // Suggestions\n  getSuggestions,\n  getSuggestionValue,\n  renderSuggestion,\n  // Callbacks and event handlers\n  onSelectCallback,\n  onSubmitCallback,\n  onClickCallback,\n  onClearFunction,\n  onSelectedValueRemove,\n  onEmptyInputBackspace,\n  // Validation and errors\n  validateInput,\n  errorMessageOverride,\n}) => {\n  const inputRef = useRef();\n  /* This is the last suggestion the user hovered or highlighted using keys\n    - this is reset when the user presses any key other than enter\n    in the input of if they click on the input  */\n  const [activeSuggestion, setActiveSuggestion] = useState(null);\n  const [searchValue, setSearchValue] = useState(defaultValue || '');\n  const [suggestions, setSuggestions] = useState([]);\n  const [errorState, setErrorState] = useState({ isError: false, errorMessage: '' });\n\n  // Function to focus on input wherever you click\n  const focusOnInput = () => inputRef.current.input.focus();\n  // ...and the function that does the opposite\n  const unfocusOnInput = () => inputRef.current.input.blur();\n\n  const selectedValueComponent = customSelectedValueComponent || SelectedValue;\n\n  // Update suggestions based on search value\n  const onSuggestionsFetchRequested = ({ value }) => {\n    setSuggestions(getSuggestions(value, searchList));\n  };\n\n  // Clear suggestions\n  const onSuggestionsClearRequested = () => {\n    setSuggestions([]);\n  };\n\n  // Run callback when suggestion selected from dropdown\n  const onSuggestionSelected = (event, { suggestionValue, suggestion }) => {\n    if (onSelectCallback) {\n      const callbackReturn = onSelectCallback(suggestion);\n      if (callbackReturn) setErrorState(callbackReturn);\n    }\n    // If using selected values tokens, reset the search value each time\n    setSearchValue(usingSelectedValues ? '' : suggestionValue);\n  };\n\n  // Run callback on submit (ENTER)\n  const onSubmit = event => {\n    event.preventDefault();\n    // Don't run this if the submit event is triggered from the dropdown\n    if (!activeSuggestion) {\n      const validateInputResult = validateInput(searchValue);\n      if (validateInput && validateInputResult.isError) setErrorState(validateInputResult);\n      if (onSubmitCallback && !validateInputResult.isError) {\n        const callbackReturn = onSubmitCallback(searchValue);\n        if (callbackReturn) setErrorState(callbackReturn);\n        // If using selected values tokens, reset the search value\n        if (usingSelectedValues) setSearchValue('');\n      }\n      if (blurInputOnSuggestionSubmit) unfocusOnInput();\n    }\n  };\n\n  // Update search value state on input change\n  const onChange = event => {\n    const {\n      target: { value },\n    } = event;\n    setSearchValue(value);\n    setErrorState({ isError: false, errorMessage: '' });\n  };\n\n  // Handle key down event on input\n  const onKeyDownHandler = event => {\n    const { key } = event;\n    if (searchValue === '' && key === 'Backspace') {\n      onEmptyInputBackspace();\n    }\n    // If the user presses any key other than enter, reset the active suggestion\n    if (key !== 'Enter') {\n      setActiveSuggestion(null);\n    }\n  };\n\n  const onClickHandler = e => {\n    // Don't run the callback if the user has clicked on the selected token remove/cross button\n    if (e.target.className !== 'remove-from-selection g-icon') {\n      focusOnInput();\n      const callbackReturn = onClickCallback();\n      if (callbackReturn) setErrorState(callbackReturn);\n    }\n    // Reset the active suggestion\n    setActiveSuggestion(null);\n  };\n\n  // Clear search value on button click\n  const clearSearch = () => {\n    setSearchValue('');\n    setErrorState({ isError: false, errorMessage: '' });\n    focusOnInput();\n    onClearFunction();\n  };\n\n  // Wraps function so that error can be set\n  const onSelectedValueRemoveWrapper = value => {\n    const error = onSelectedValueRemove(value);\n    if (error) setErrorState(error);\n  };\n\n  const { isError: isErrorState, errorMessage: errorMessageState } = errorState;\n  const isError = errorMessageOverride || isErrorState;\n  const errorMessage = errorMessageOverride || errorMessageState;\n\n  // Generate form classes\n  const classes = classNames(\n    className,\n    isError && `${className}--error`,\n    showSearchIcon && searchIconPosition === 'right' && `${className}--with-search-icon-right`,\n  );\n\n  return (\n    <form onSubmit={onSubmit} style={{ width }} onClick={onClickHandler}>\n      <div className={classes}>\n        {showSearchIcon && searchIconPosition === 'left' && (\n          <div className={`${className}__search-icon`}>\n            <Icon iconName=\"search\" iconColor=\"#66605C\" width={30} height={30} />\n          </div>\n        )}\n        <div className={`${className}__selected-values`}>\n          {selectedValues.length > 0 &&\n            selectedValues.map(({ display, value }) =>\n              selectedValueComponent({\n                className,\n                display,\n                value,\n                onSelectedValueRemove: onSelectedValueRemoveWrapper,\n              }),\n            )}\n        </div>\n        <Autosuggest\n          ref={inputRef}\n          suggestions={suggestions}\n          onSuggestionsFetchRequested={onSuggestionsFetchRequested}\n          onSuggestionsClearRequested={onSuggestionsClearRequested}\n          getSuggestionValue={getSuggestionValue}\n          renderSuggestion={renderSuggestion}\n          onSuggestionSelected={onSuggestionSelected}\n          onSuggestionHighlighted={({ suggestion }) => {\n            /* When the dropdown is open, update the active suggestion to the suggestion\n              the user is currently hovering over or has highlighted with arrow keys */\n            if (suggestion && suggestion.display) {\n              setActiveSuggestion(suggestion.display);\n            }\n          }}\n          focusInputOnSuggestionClick={usingSelectedValues}\n          inputProps={{\n            'aria-label': placeholder,\n            placeholder,\n            value: searchValue,\n            onChange,\n            onKeyDown: onKeyDownHandler,\n            disabled,\n          }}\n        />\n        {showClearButton && searchValue !== '' && (\n          <button className={`${className}__clear-button`} type=\"button\" onClick={clearSearch}>\n            <Icon iconName=\"cross\" iconColor=\"#33302e\" width={20} height={20} />\n          </button>\n        )}\n        {showSearchIcon &&\n          searchIconPosition === 'right' &&\n          !(showClearButton && searchValue !== '') && (\n            <div className={`${className}__search-icon-right`}>\n              <Icon iconName=\"search\" iconColor=\"#66605C\" width={30} height={30} />\n            </div>\n          )}\n      </div>\n      {isError && <div className={`${className}__error-message`}>{errorMessage}</div>}\n    </form>\n  );\n};\n\nAutosuggestSearch.displayName = 'GAutosuggestSearch';\n\nAutosuggestSearch.propTypes = {\n  className: PropTypes.string,\n  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  placeholder: PropTypes.string,\n  defaultValue: PropTypes.string,\n  disabled: PropTypes.bool,\n  showSearchIcon: PropTypes.bool,\n  searchIconPosition: PropTypes.oneOf(['left', 'right']),\n  showClearButton: PropTypes.bool,\n  blurInputOnSuggestionSubmit: PropTypes.bool,\n  searchList: PropTypes.arrayOf(PropTypes.object).isRequired,\n  selectedValues: PropTypes.array,\n  usingSelectedValues: PropTypes.bool,\n  selectedValueComponent: PropTypes.func,\n  getSuggestions: PropTypes.func,\n  getSuggestionValue: PropTypes.func,\n  renderSuggestion: PropTypes.func,\n  onSelectCallback: PropTypes.func,\n  onSubmitCallback: PropTypes.func,\n  onClickCallback: PropTypes.func,\n  onClearFunction: PropTypes.func,\n  onSelectedValueRemove: PropTypes.func,\n  onEmptyInputBackspace: PropTypes.func,\n  validateInput: PropTypes.func,\n  errorMessageOverride: PropTypes.string,\n};\n\nAutosuggestSearch.defaultProps = {\n  className: 'g-autosuggest-search',\n  width: '100%',\n  placeholder: '',\n  disabled: false,\n  showSearchIcon: true,\n  searchIconPosition: 'left',\n  showClearButton: true,\n  blurInputOnSuggestionSubmit: true,\n  selectedValues: [],\n  usingSelectedValues: false,\n  getSuggestions: defaultGetSuggestions,\n  getSuggestionValue: defaultGetSuggestionValue,\n  renderSuggestion: RenderSuggestion,\n  onSelectCallback: () => {},\n  onSubmitCallback: () => {},\n  onClickCallback: () => {},\n  onClearCallback: () => {},\n  onSelectedValueRemove: () => {},\n  onEmptyInputBackspace: () => {},\n  validateInput: () => {},\n};\n\nexport default AutosuggestSearch;\n","\"use strict\";\n\nmodule.exports = require('./Autosuggest')[\"default\"];","import { css } from '@emotion/core';\n\nconst additionalAxisStyles = css`\n  .visx-axis-left,\n  .visx-axis-right {\n    .visx-axis-tick:first-of-type line {\n      stroke: #66605c;\n    }\n  }\n`;\n\nexport default additionalAxisStyles;\n","// Returns the logarithm of y with base x\nconst getBaseLog = (x = 10, y) => {\n  return Math.log(y) / Math.log(x);\n};\n\n// Get midpoint of two values on a log scale\nconst getLogMidpoint = (base = 10, a, b) => {\n  const sumOfLogValues = getBaseLog(base, a) + getBaseLog(base, b);\n  return Math.pow(base, sumOfLogValues / 2);\n};\n\n/* From a set of initial values, a maximum and a function that calculates the next value\n  this function generates a series of numbers\n*/\nconst generateTickValueSeries = (initialValues, yMax, nextValueFunction) => {\n  let n = initialValues.length - 1;\n  let tickSeries = [...initialValues];\n\n  /* Keep generating new values in the series until the value is greater\n    than or equal to the max y value */\n  while (tickSeries[n] <= yMax) {\n    // Get previous value\n    const previous = tickSeries[n];\n    /* Generate the new value using the given nextValueFunction\n      from the previous value and the position in the series, n\n    */\n    const newValue = nextValueFunction(previous, n);\n    // Add the new value to the series\n    tickSeries = [...tickSeries, newValue];\n    // Increment n\n    n++;\n  }\n\n  return tickSeries;\n};\n\n/* Function to generate this pattern:\n  0, 1, 2, 5, 10, 20, 50, 100, 200, 500...\n  every value is double the previous except every\n  3n + 1 value which is 2.5 the previous */\nconst defaultSeriesGeneratorFunction = (previous, n) => ((n + 1) % 3 === 0 ? 2.5 : 2) * previous;\n\nconst generateYTickValues = (\n  initialValues,\n  yMax,\n  filterTicksAbove = false,\n  seriesGenerator = defaultSeriesGeneratorFunction\n) => {\n  const tickSeries = generateTickValueSeries(initialValues, yMax, seriesGenerator);\n\n  /* Filter out ticks that are greater than yMax unless yMax is greater\n      than the midpoint on a log scale between the\n      current tick and the previous tick */\n  const filteredTickSeries = filterTicksAbove\n    ? tickSeries.filter((tick, i, arr) => {\n        // We won't ever use this if i is zero anyway\n        const previousTick = i > 0 && arr[i - 1];\n        return tick <= yMax || yMax >= getLogMidpoint(10, previousTick, tick);\n      })\n    : tickSeries;\n\n  return filteredTickSeries;\n};\n\nexport default generateYTickValues;\n","import * as d3 from 'd3-time-format';\nimport addDaysToDate from '../util/addDaysToDate';\n\nconst formatDate = d3.timeFormat('%-d/%-m/%Y');\nconst parseDate = d3.timeParse('%-d/%-m/%Y');\n\n// Function to get difference between two deaths\nconst dateDiff = (first, second) => {\n  // Take the difference between the dates and divide by milliseconds per day.\n  // Round to nearest whole number to deal with DST.\n  return Math.round((second - first) / (1000 * 60 * 60 * 24));\n};\n\n// Function to calculate simple average\nconst getAverage = (numbers, valueAccessor, rollingDate, numberOfDays) => {\n  const filteredByDate = numbers\n    // Filter out data which is older than numberOfDays old\n    .filter(({ date }) => dateDiff(date, rollingDate) < numberOfDays)\n    .map(t => t[valueAccessor]);\n\n  return filteredByDate.reduce((a, b) => a + b) / filteredByDate.length;\n};\n\n// Genrate rolling average of timeseries (filters out first n - 1 values)\nconst generateRollingAverageTimeSeries = (timeSeries, valueAccessor, n) => {\n  // const mappedTimeSeries = timeSeries.map(t => t[valueAccessor]);\n  return (\n    timeSeries\n      .map((entry, i) => {\n        const { date } = entry;\n        return {\n          ...entry,\n          [valueAccessor]:\n            i < n - 1\n              ? // If index is less than n - 1, return null\n                null\n              : // Otherwise take a slice of the timeSeries (the last n entries) and average\n                getAverage(timeSeries.slice(Math.max(0, i - n + 1), i + 1), valueAccessor, date, n),\n        };\n      })\n      // Filter out values with no average\n      .filter(Boolean)\n  );\n};\n\n// Format data for chart based on options\nconst formatDataForChart = (\n  data,\n  {\n    values: casesOrDeaths,\n    cumulative,\n    per100K,\n    byDate,\n    daysSinceN,\n    areas,\n    hideUnselected,\n    startDate,\n  },\n  offsets,\n  getMaxYValueFromSelectedAreas\n) => {\n  // get cases/deaths key if cumulative, get new_cases or new_deaths key if not cumulative\n  const values = cumulative ? casesOrDeaths : `new_${casesOrDeaths}`;\n\n  const filteredOffsets = offsets.filter(\n    ({ options: { per100K: pM, cumulative: c, values: v } }) =>\n      pM === per100K && c === cumulative && casesOrDeaths === v\n  );\n\n  const dataForEachCountry = data\n    .map(({ timeSeries, population, code, ...d }) => {\n      const filteredForValues = timeSeries.map(({ date, ...t }) => ({\n        date: new Date(date),\n        [values]: t[values],\n      }));\n\n      const cumulativeOrAverage = cumulative\n        ? filteredForValues\n        : // Get 7 day rolling average\n          generateRollingAverageTimeSeries(filteredForValues, values, 7);\n\n      const withPer100K = cumulativeOrAverage.map(t => ({\n        ...t,\n        // If the value is null don't calculate the per 100k value as this will return 0\n        [values]: per100K && t[values] ? (t[values] / population) * 100000 : t[values],\n      }));\n\n      // Find date that passed Nth value\n      const { date: dayPassedNthValue } = (!byDate &&\n        withPer100K.find(d => d[values] >= daysSinceN)) || {\n        date: null,\n      };\n\n      // Filter out data below the Nth value\n      if (dayPassedNthValue && !byDate) {\n        const offsetEntry = filteredOffsets.find(({ area }) => area === code);\n        const dayPassedNthValueWithOffset = offsetEntry\n          ? addDaysToDate(dayPassedNthValue, offsetEntry.offset)\n          : dayPassedNthValue;\n\n        const withDaysSincePassedNthValue = withPer100K\n          .map(({ date, ...t }) => ({\n            ...t,\n            date,\n            daysSincePassedNthValue: dateDiff(dayPassedNthValueWithOffset, date),\n          }))\n          .filter(({ daysSincePassedNthValue }) => daysSincePassedNthValue >= 0)\n          // Filter out negative values as these break the chart now\n          .filter(v => v[values] >= 0);\n\n        return {\n          ...d,\n          code,\n          population,\n          dayPassedNthValue: dayPassedNthValueWithOffset,\n          timeSeries: withDaysSincePassedNthValue,\n        };\n      }\n\n      // Make sure all values are greater than or equal to 0 and not null\n      if (byDate) {\n        const validValues = withPer100K.filter(v => v[values] >= 0 && v[values] !== null);\n        const firstDateWithPositiveValue = validValues.find(v => v[values] > 0);\n\n        if (firstDateWithPositiveValue) {\n          const filteredAfterFirstPositiveValue = validValues.filter(\n            v => v.date >= firstDateWithPositiveValue.date && v.date >= startDate\n          );\n          return {\n            ...d,\n            code,\n            population,\n            timeSeries: filteredAfterFirstPositiveValue,\n          };\n        }\n      }\n\n      // If area does not pass nth value return and filter out\n      return null;\n    })\n    .filter(Boolean);\n\n  // Get array of all countries in the dataset (including those filtered out)\n  const countriesPassedNthValue = dataForEachCountry\n    // Also filter out countries where there is no data for set time period\n    .filter(({ timeSeries }) => timeSeries.length > 0)\n    .map(({ area }) => area);\n\n  // Filter out countries with a population of less than 800000\n  const dataForEachCountryFiltered = dataForEachCountry\n    .filter(\n      ({ code, population }) => !per100K || (per100K && population >= 80000) || areas.includes(code)\n    )\n    // Only include selected areas if hideUnselected is set\n    .filter(({ code }) => (hideUnselected && areas.length > 0 ? areas.includes(code) : true));\n\n  // Generate map of day passed Nth value for each country\n  const dayPassedNthValueForEachCountry = dataForEachCountryFiltered.reduce(\n    (acc, { area, dayPassedNthValue }) => acc.set(area, dayPassedNthValue),\n    new Map()\n  );\n\n  // If getMaxYValueFromSelectedAreas set, min/maxValue should be calculated from selected areas only\n  // If none of the selected countries are in the dataset, use all the countries that are within the range to calculate the min/max Y value\n  const dataFromSelection = dataForEachCountryFiltered.filter(({ code }) =>\n    (areas || []).includes(code)\n  );\n  const dataForAxisRange =\n    getMaxYValueFromSelectedAreas && areas.length > 0 && dataFromSelection.length > 0\n      ? dataFromSelection\n      : dataForEachCountryFiltered;\n\n  const maxYValue = Math.max(\n    ...dataForAxisRange.flatMap(({ timeSeries }) => timeSeries.map(t => t[values]))\n  );\n\n  const minYValueAboveZero = Math.min(\n    ...dataForAxisRange\n      .flatMap(({ timeSeries }) => timeSeries.map(t => t[values]))\n      .filter(value => value > 0)\n  );\n\n  // Rotate data\n  const rotatedData = [\n    ...dataForEachCountryFiltered\n      .reduce((acc, { area, timeSeries }) => [...acc, ...timeSeries.map(t => ({ ...t, area }))], [])\n      .reduce(\n        (acc, { daysSincePassedNthValue, date, area, ...t }) =>\n          acc.set(byDate ? date.toString() : daysSincePassedNthValue, {\n            ...(acc.get(byDate ? date.toString() : daysSincePassedNthValue) || {}),\n            [area]: t[values],\n          }),\n        new Map()\n      ),\n  ]\n    // Convert to date so it can be sorted\n    .map(([date, areas]) => ({ date: byDate ? new Date(date) : date, ...areas }))\n    .sort((a, b) => a.date - b.date)\n    // Format date to work with line chart template\n    .map(({ date, ...areas }) => ({ date: byDate ? formatDate(date) : date, ...areas }));\n\n  // Get min + max X value (from latest date)\n  const { date: minXValue } = rotatedData[0];\n  const { date: maxXValue } = rotatedData[rotatedData.length - 1];\n  const formattedMinXValue = byDate ? parseDate(minXValue) : minXValue;\n  const formattedMaxXValue = byDate ? parseDate(maxXValue) : maxXValue;\n\n  return {\n    data: rotatedData,\n    areasInData: countriesPassedNthValue,\n    dayPassedNthValueForEachCountry,\n    minYValueAboveZero,\n    maxYValue,\n    minXValue: formattedMinXValue,\n    maxXValue: formattedMaxXValue,\n  };\n};\n\nexport default formatDataForChart;\n","const round = (value, precision) => {\n  const multiplier = Math.pow(10, precision || 0);\n  return Math.round(value * multiplier) / multiplier;\n};\n\nconst formatValueForTooltip = (value, decimalPlaces, yMin) => {\n  if (value === 0) {\n    return 0;\n  }\n  if (value < yMin) {\n    return `Less than or equal to ${yMin.toFixed(\n      decimalPlaces > 1 ? decimalPlaces - 1 : decimalPlaces\n    )}`;\n  }\n  if (decimalPlaces > 1) {\n    return Number.parseFloat(value.toFixed(decimalPlaces));\n  }\n  return round(value, 1).toLocaleString();\n};\n\nexport default formatValueForTooltip;\n","const getNumberOfDecimalPlacesForTicks = (maxYValue, integerTickCutoffPoint) => {\n  if (maxYValue < integerTickCutoffPoint * 0.01) {\n    return 3;\n  }\n  if (maxYValue < integerTickCutoffPoint * 0.1) {\n    return 2;\n  }\n  if (maxYValue < integerTickCutoffPoint) {\n    return 1;\n  }\n  return 0;\n};\n\nexport default getNumberOfDecimalPlacesForTicks;\n","const areaCodeToDisplay = (area, countryRegionList) => {\n  const areaEntry = countryRegionList.find(({ value }) => area === value);\n  return (areaEntry && areaEntry.display) || null;\n};\n\nexport default areaCodeToDisplay;\n","const getAlternativeCountryNames = area => {\n  switch (area) {\n    case 'United Kingdom':\n      return ['UK'];\n    case 'United States':\n      return ['US'];\n    default:\n      return [];\n  }\n};\n\nexport default getAlternativeCountryNames;\n","module.exports = __webpack_public_path__ + \"images/masthead--0e049dda74cf2efd2601b872fcb07273.svg\";","/**\n * @file\n * Line chart template\n */\n\nimport React from 'react';\nimport { scaleLinear, scaleTime, scaleOrdinal, scaleLog } from '@visx/scale';\nimport { extent } from 'd3-array';\nimport * as GChartcolour from 'g-chartcolour';\nimport { Group } from '@visx/group';\nimport { formatData, getSeriesNames, extentMulti } from '@financial-times/vvc/util/parseData';\nimport { Axis, Chartframe as ChartFrame, Delaunay, Legend } from '@financial-times/vvc/components';\nimport { Lines } from '@financial-times/vvc/components/lines';\nimport { isZeroOrDefined, identity } from '@financial-times/vvc/util';\nimport { Dots } from './dots';\nimport { Labels } from './labels';\nimport { getLineEndPositions } from './helpers';\nimport { lineChartPropTypes, lineChartDefaultProps } from './props.js';\nimport AxisFade from './axis-fade';\nimport MultipleLineTickLabel from './multiple-line-tick-label';\n\nconst LineChart = props => {\n  const {\n    id,\n    data: rawData,\n    // Axis and scale\n    xAxisOrientation,\n    yAxisOrientation,\n    logScale,\n    yTickValues,\n    additionalYTickValues,\n    yTickFormat,\n    yFullLengthTicks,\n    yMin: yMinOverride,\n    yMax: yMaxOverride,\n    xScaleType,\n    xTickValues,\n    xTickFormat,\n    xFullLengthTicks,\n    xMin: xMinOverride,\n    xMax: xMaxOverride,\n    yTransformFunction,\n    hideEndTicks,\n    additionalAxisStyles,\n    xAxisLabel,\n    xAxisLabelOffset,\n    xAxisLabelProps,\n    // Base\n    height,\n    margin,\n    width,\n    // <ChartFrame />\n    type,\n    hideTopper,\n    hideFooter,\n    hideTitleTooltip,\n    stabRule,\n    // Lines\n    xVariable,\n    yVariable,\n    // Legend\n    showLegend,\n    // Line end dots\n    showLineEndDots,\n    labelStrokeColor,\n    labelStrokeWidth,\n    // Highlights\n    seriesToHighlight,\n    // Tooltips\n    showTooltips,\n    tooltipStyle,\n    tooltipComponent,\n    showTooltipLine,\n    allLinesHoverable,\n    hoverRadius,\n    // Color palettes\n    lineColorPalette,\n    labelColorPalette,\n    ghostLineColor,\n    ghostLineHoverColorScale,\n    ghostLineHoverLabelColorScale,\n    // Line outline/halo\n    highlightedLineOutlineWidth,\n    // Y-Axis fade\n    showYAxisFade,\n  } = props;\n  const data = xScaleType === 'time' ? formatData(rawData, '%-d/%-m/%Y') : rawData;\n  const seriesNames = Array.isArray(data) && data.length ? getSeriesNames(data) : [];\n\n  const yValueExtent = extentMulti(data, seriesNames);\n  // yMin cannot be zero for a log scale\n  const yMin = isZeroOrDefined(yMinOverride)\n    ? yMinOverride\n    : logScale && yValueExtent[0] === 0\n    ? 1\n    : yValueExtent[0];\n  const yMax = yMaxOverride || yValueExtent[1];\n  const transformedYMin = yTransformFunction ? yTransformFunction(yMin) : yMin;\n  const transformedYMax = yTransformFunction ? yTransformFunction(yMax) : yMax;\n  const yScale = logScale\n    ? scaleLog({ domain: [transformedYMin, transformedYMax] })\n    : scaleLinear({\n        domain: [transformedYMin, transformedYMax],\n      });\n\n  const xValueExtent = extent(data, d => d[xVariable]);\n  const xMin = xMinOverride || xValueExtent[0];\n  const xMax = xMaxOverride || xValueExtent[1];\n  const xScale =\n    xScaleType === 'time'\n      ? scaleTime({\n          domain: [xMin, xMax],\n        })\n      : scaleLinear({ domain: [xMin, xMax] });\n\n  if (hideEndTicks) {\n    // Before we hide the last tick, make sure the scale is rounded out\n    xScale.nice();\n  }\n\n  /* eslint-disable no-nested-ternary */\n  const colorScaleDomain = yVariable.length\n    ? yVariable\n    : seriesToHighlight.length\n    ? seriesToHighlight\n    : seriesNames;\n  const colorScaleDefaultRange =\n    type === 'print'\n      ? GChartcolour.linePrint\n      : type === 'social' || type === 'video'\n      ? GChartcolour.lineSocial\n      : GChartcolour.lineWeb;\n  /* eslint-enable no-nested-ternary */\n\n  const lineColorScale = scaleOrdinal({\n    domain: colorScaleDomain,\n    range: lineColorPalette || colorScaleDefaultRange,\n  });\n\n  const labelColorScale = labelColorPalette\n    ? scaleOrdinal({ domain: colorScaleDomain, range: labelColorPalette })\n    : lineColorScale;\n\n  const nonEmptyYVariable = Array.isArray(yVariable) && yVariable.length;\n  const seriesToShow = nonEmptyYVariable ? yVariable : seriesNames;\n\n  const nonEmptySeriesToHighlight = Array.isArray(seriesToHighlight) && seriesToHighlight.length;\n\n  // Get line end position for each series\n  const lineEndPositions = getLineEndPositions(data, seriesNames, xVariable, yVariable, yMax);\n\n  // Filter out highlights from main array so we don't draw them twice\n  const seriesToShowFiltered = nonEmptySeriesToHighlight\n    ? seriesToShow.filter(s => !seriesToHighlight.includes(s))\n    : seriesToShow;\n\n  const showAllSeriesAsGhostLines = nonEmptyYVariable && nonEmptySeriesToHighlight === 0;\n\n  // Format data for voronoi\n  const voronoiData = allLinesHoverable\n    ? data.flatMap(d =>\n        seriesNames.map(e => ({\n          [xVariable]: d[xVariable],\n          y: d[e],\n          seriesName: e,\n          labelData: { seriesName: e, yValue: d[e], xValue: d[xVariable] },\n          isHighlighted: seriesToHighlight.includes(e),\n        }))\n      )\n    : nonEmptySeriesToHighlight\n    ? data\n        .filter(d => seriesToHighlight.some(seriesName => isZeroOrDefined(d[seriesName]))) // Or empty string\n        .flatMap(d =>\n          seriesToHighlight.map(e => ({\n            [xVariable]: d[xVariable],\n            y: d[e],\n            seriesName: e,\n            labelData: { seriesName: e, yValue: d[e], xValue: d[xVariable] },\n            isHighlighted: seriesToHighlight.includes(e),\n          }))\n        )\n    : [];\n\n  return (\n    <ChartFrame\n      type={type}\n      width={width}\n      height={height}\n      margin={margin}\n      stabRule={stabRule}\n      tooltipStyle={tooltipStyle}\n      tooltipComponent={tooltipComponent}\n      hideTopper={hideTopper}\n      hideFooter={hideFooter}\n      hideTitleTooltip={hideTitleTooltip}\n    >\n      {/* x-axis */}\n      <Axis\n        orientation={xAxisOrientation}\n        scale={xScale}\n        fullLengthTicks={xFullLengthTicks}\n        hideEndTicks={hideEndTicks}\n        additionalAxisStyles={additionalAxisStyles}\n        label={xAxisLabel}\n        labelOffset={xAxisLabelOffset}\n        labelProps={xAxisLabelProps}\n        tickValues={xTickValues}\n        tickFormat={xTickFormat}\n        tickLabelProps={() => ({\n          dy: '0.75em',\n        })}\n        tickComponent={MultipleLineTickLabel}\n      />\n      {/* y-axis */}\n      <Axis\n        orientation={yAxisOrientation}\n        scale={yScale}\n        tickValues={yTickValues}\n        additionalTickValues={additionalYTickValues}\n        // Use custom y tick format if set, if log scale default to identity function\n        tickFormat={yTickFormat || (logScale && identity)}\n        fullLengthTicks={yFullLengthTicks}\n        additionalAxisStyles={additionalAxisStyles}\n      />\n\n      {showYAxisFade && (\n        <AxisFade\n          orientations={['top', 'left', 'right']}\n          id={`gradientMask_${id}`}\n          offsetStartingPercentage={{ top: 50, left: 100 }}\n          offsetType={{ left: 'solid', right: 'solid' }}\n        />\n      )}\n\n      {showLegend && <Legend {...props} scale={lineColorScale} shape=\"line\" />}\n\n      <Group id=\"lines\" mask={showYAxisFade && `url(#gradientMask_${id})`}>\n        <Group id=\"background-lines\">\n          <Lines\n            seriesNames={seriesToShowFiltered}\n            data={data}\n            xScale={xScale}\n            xVariable={xVariable}\n            yScale={yScale}\n            yTransformFunction={yTransformFunction}\n            colorScale={\n              nonEmptySeriesToHighlight || showAllSeriesAsGhostLines\n                ? () => ghostLineColor\n                : lineColorScale\n            }\n            strokeWidth={nonEmptySeriesToHighlight || showAllSeriesAsGhostLines ? 1 : 3}\n            highlightLinesOnHover={allLinesHoverable}\n            hoveredLinesColorScale={ghostLineHoverColorScale}\n            highlightedLineOutlineWidth={highlightedLineOutlineWidth}\n          />\n        </Group>\n        <Group id=\"highlighted-lines\">\n          {nonEmptySeriesToHighlight && (\n            <Lines\n              seriesNames={seriesToHighlight}\n              data={data}\n              xScale={xScale}\n              xVariable={xVariable}\n              yScale={yScale}\n              yTransformFunction={yTransformFunction}\n              colorScale={lineColorScale}\n              highlightedLineOutlineWidth={highlightedLineOutlineWidth}\n            />\n          )}\n        </Group>\n      </Group>\n\n      {showLineEndDots && (\n        <Dots\n          seriesNames={seriesToHighlight}\n          data={lineEndPositions}\n          xScale={xScale}\n          xVariable=\"x\"\n          yScale={yScale}\n          yTransformFunction={yTransformFunction}\n          yVariable=\"y\"\n          colorScale={lineColorScale}\n          colorVariable=\"\"\n          sizeScale={() => 5}\n          strokeColor=\"#fff1e5\"\n          strokeWidth={1}\n          hoveredDotsColorScale={ghostLineHoverColorScale}\n        />\n      )}\n\n      {showLineEndDots && (\n        <Labels\n          seriesNames={seriesToHighlight}\n          data={lineEndPositions}\n          xScale={xScale}\n          xVariable=\"x\"\n          yScale={yScale}\n          yTransformFunction={yTransformFunction}\n          yVariable=\"y\"\n          colorScale={lineColorScale}\n          colorVariable=\"\"\n          hoveredLabelsColorScale={() => '#66605c'}\n          additionalProps={{\n            dx: 10,\n            dy: 5,\n            fontSize: 18,\n          }}\n          automaticallyRepositionLabels\n        />\n      )}\n\n      {showTooltips &&\n        ((showAllSeriesAsGhostLines && allLinesHoverable) || nonEmptySeriesToHighlight) && (\n          <Delaunay\n            xScale={xScale}\n            yScale={yScale}\n            colorScale={lineColorScale}\n            xVariable={xVariable}\n            yVariable=\"y\"\n            data={voronoiData}\n            yTransformFunction={yTransformFunction}\n            tooltipPositionOverride={({ data, xScale, yScale }) => ({\n              x: xScale(data.date),\n              y: yScale(yMax),\n            })}\n            showLine={showTooltipLine}\n            showCircle={showTooltipLine}\n            lineConfig={{\n              stroke: '#33302e',\n              strokeDasharray: '3, 1',\n            }}\n            circleConfig={{\n              r: 5,\n              stroke: '#fff1e5',\n              strokeWidth: 1,\n            }}\n            hoverRadius={hoverRadius}\n            // debug\n          />\n        )}\n    </ChartFrame>\n  );\n};\n\nLineChart.propTypes = lineChartPropTypes;\nLineChart.defaultProps = lineChartDefaultProps;\n\nexport default LineChart;\n","const categoricalUsSampleData = [\n  {\n    state: 'Iowa',\n    ecvotes: 6,\n    margin: 4.3,\n  },\n  {\n    state: 'Texas',\n    ecvotes: 38,\n    margin: 1.75,\n  },\n  {\n    state: 'North Carolina',\n    ecvotes: 15,\n    margin: 0.5,\n  },\n  {\n    state: 'Wisconsin',\n    ecvotes: 10,\n    margin: -2.3,\n  },\n  {\n    state: 'Florida',\n    ecvotes: 29,\n    margin: -3,\n  },\n  {\n    state: 'Nevada',\n    ecvotes: 6,\n    margin: -4,\n  },\n  {\n    state: 'Arizona',\n    ecvotes: 11,\n    margin: -4.3,\n  },\n  {\n    state: 'New Hampshire',\n    ecvotes: 4,\n    margin: -4.5,\n  },\n  {\n    state: 'Michigan',\n    ecvotes: 16,\n    margin: -5,\n  },\n];\n\nexport default categoricalUsSampleData;\n","/**\n * @file\n * Various FT watermark components\n */\n\nimport React from 'react';\n\nexport const Light = () => (\n  <path\n    fill=\"#8e9095\"\n    id=\"logo\"\n    d=\"M3,8.5c0,0.7,0.2,0.9,1.5,0.9v0.4H0V9.4c0.9,0,1.2-0.1,1.2-0.8V1.4c0-0.8-0.3-0.8-1.2-0.8V0.2h6.1c0.8,0,1.1,0,1.4-0.1l0,2.7H7.2c-0.2-2-0.7-2.2-2.6-2.2H3v4h1.3c1.3,0,1.3-0.2,1.4-1.2h0.4v2.9H5.7c-0.1-1-0.2-1.2-1.4-1.2H3V8.5zM8.4,9.8V9.4c0.9,0,1.2-0.1,1.2-0.8V1.4c0-0.8-0.3-0.8-1.2-0.8V0.2h4.2v0.4c-0.9,0-1.2,0.1-1.2,0.8v7.1c0,0.8,0.3,0.8,1.2,0.8v0.4H8.4z M22,10l-6.6-8.2v6.7c0,0.8,0.5,0.9,1.5,0.9v0.4h-3.5V9.4c0.9,0,1.4-0.1,1.4-0.9V1.1c-0.4-0.4-0.7-0.5-1.4-0.5V0.2h3.1l5.1,6.5V1.5c0-0.8-0.5-0.9-1.5-0.9V0.2h3.5v0.4c-0.9,0-1.4,0.1-1.4,0.9V10H22z M26.7,9.8h-3.5V9.4c0.9,0,1.3-0.1,1.6-0.9L28,0.1h0.9l3.4,8.5c0.3,0.8,0.4,0.8,1.1,0.8v0.4h-4.1V9.4c1.2,0,1.4-0.1,1.1-0.8l-1-2.6h-3l-0.9,2.5c-0.3,0.8,0.2,0.9,1.2,0.9V9.8z M26.6,5.5h2.6L27.9,2L26.6,5.5z M42.6,10l-6.6-8.2v6.7c0,0.8,0.5,0.9,1.5,0.9v0.4H34V9.4c0.8,0,1.3-0.1,1.3-0.9V1.1c-0.5-0.4-0.8-0.5-1.6-0.5V0.2H37l5.1,6.5V1.5c0-0.8-0.5-0.9-1.5-0.9V0.2h3.5v0.4c-0.9,0-1.4,0.1-1.4,0.9V10H42.6z M52.4,0.1h0.2L52.7,3l-0.4,0c-0.2-1.7-1.1-2.5-2.7-2.5c-1.8,0-3.2,1.5-3.2,3.9c0,3,1.9,4.7,3.9,4.7c0.9,0,1.6-0.2,2.4-1.1L53,8.4c-0.6,0.9-1.8,1.6-3.5,1.6c-2.4,0-4.9-1.8-4.9-4.9c0-3,2.3-5.1,5-5.1c1.3,0,2,0.6,2.3,0.6C52.2,0.6,52.3,0.4,52.4,0.1z M53.8,9.8V9.4c0.9,0,1.2-0.1,1.2-0.8V1.4c0-0.8-0.3-0.8-1.2-0.8V0.2H58v0.4c-0.9,0-1.2,0.1-1.2,0.8v7.1c0,0.8,0.3,0.8,1.2,0.8v0.4H53.8z M61.9,9.8h-3.3V9.4c0.7,0,1.1-0.1,1.4-0.9l3.2-8.4h0.9l3.4,8.5c0.3,0.8,0.4,0.8,1.1,0.8v0.4h-4.1V9.4c1.2,0,1.4-0.1,1.1-0.8l-1-2.6h-3l-0.9,2.5c-0.3,0.8,0.2,0.9,1.2,0.9V9.8z M61.8,5.5h2.6L63,2L61.8,5.5z M69.3,9.8V9.4c0.9,0,1.2-0.1,1.2-0.8V1.4c0-0.8-0.3-0.8-1.2-0.8V0.2h4.1v0.4c-0.9,0-1.2,0.1-1.2,0.8v7.2c0,0.6,0.3,0.7,0.8,0.7h0.5c1.9,0,2.5-0.3,3-2.4L77,7l-0.3,2.9H69.3z M89.4,0.1l0,2.9h-0.4c-0.2-2.1-0.7-2.3-2.6-2.3H86v7.9c0,0.8,0.3,0.9,1.5,0.9v0.4h-4.8V9.4c1.2,0,1.5-0.1,1.5-0.9V0.6h-0.6c-1.9,0-2.3,0.3-2.6,2.3h-0.4l0-2.9c0.3,0,0.5,0.1,1.4,0.1h6C88.9,0.2,89.2,0.1,89.4,0.1z M90.4,9.8V9.4c0.9,0,1.2-0.1,1.2-0.8V1.4c0-0.8-0.3-0.8-1.2-0.8V0.2h4.2v0.4c-0.9,0-1.2,0.1-1.2,0.8v7.1c0,0.8,0.3,0.8,1.2,0.8v0.4H90.4z M107,0.2v0.4c-0.9,0-1.3,0-1.2,0.8l0.8,7.2c0.1,0.7,0.4,0.8,1.2,0.8v0.4h-4.1V9.4c0.9,0,1.2-0.1,1.1-0.8L104,1l-3.1,9h-0.1l-3-9l-0.7,7.5c-0.1,0.8,0.4,0.8,1.3,0.8v0.4h-3.2V9.4c0.9,0,1.2-0.1,1.2-0.8l0.7-7.2c0.1-0.8-0.3-0.8-1.2-0.8V0.2h3.4l2,6.6l2.2-6.6H107z M114.8,6.3h-0.4c-0.1-1-0.2-1.2-1.4-1.2h-1.5v3.5c0,0.6,0.3,0.7,0.8,0.7h0.8c1.9,0,2.5-0.3,3-2.4l0.4,0l-0.3,2.9h-7.6V9.4c0.9,0,1.2-0.1,1.2-0.8V1.4c0-0.8-0.3-0.8-1.2-0.8V0.2h7.3l0,2.4h-0.4c-0.2-1.7-0.7-1.9-2.6-1.9h-1.4v3.9h1.5c1.3,0,1.3-0.2,1.4-1.2h0.4V6.3z M122.5,7.8c0-0.9-0.6-1.3-1.5-1.9l-1.5-0.8c-1.2-0.6-1.8-1.3-1.8-2.5c0-1.5,1.3-2.7,3-2.7c1.2,0,1.8,0.6,2.1,0.6c0.2,0,0.3-0.1,0.4-0.4h0.3l0.1,2.7l-0.4,0c-0.2-1.3-1.1-2.3-2.5-2.3c-1,0-1.7,0.6-1.7,1.4c0,0.9,0.7,1.3,1.5,1.7l1.3,0.7c1.2,0.7,2.1,1.4,2.1,2.7c0,1.7-1.5,2.9-3.3,2.9c-1.3,0-1.9-0.6-2.3-0.6c-0.2,0-0.3,0.2-0.4,0.5h-0.3L117.4,7l0.4,0c0.3,1.8,1.5,2.5,2.8,2.5C121.6,9.5,122.5,9,122.5,7.8z\"\n  />\n);\n\nLight.width = 124;\nLight.height = 10;\n\nexport default {\n  Light,\n};\n","/**\n * @file\n * CSS styles for <AxisArrows />\n */\n\nimport { css } from '@emotion/core';\n\nexport const axisArrowsStyles = css`\n  line {\n    stroke: #66605c;\n  }\n\n  path {\n    fill: #66605c;\n  }\n`;\n\nexport default axisArrowsStyles;\n","import React from 'react';\nimport { Group } from '@visx/group';\nimport { inferScaleType } from '@visx/scale';\nimport { axisBandingComponentDefaultProps } from '../default-props';\n\nconst AxisBanding = ({\n  bandingScale,\n  width,\n  height,\n  orientation,\n  tickValues,\n  structure,\n  tickPositionVariable,\n}) => {\n  const scalePointOffset = inferScaleType(bandingScale) === 'point' ? bandingScale.step() / 2 : 0;\n\n  const [minScale, maxScale] = bandingScale.domain();\n  // Copy tickValues;\n  let tickValuesForBanding = [...tickValues];\n\n  // Maps custom tickValuesForBanding object to derive a simple array of tick values\n  if (tickPositionVariable) {\n    const newValues = tickValuesForBanding.map((d) => {\n      return d[tickPositionVariable];\n    });\n    tickValuesForBanding = newValues;\n  }\n\n  let bands;\n  // Builds bands structure if the scale passed down is ordinal\n  if (structure === 'fixed' && isNaN(tickValuesForBanding[0])) {\n    switch (orientation) {\n      case 'top':\n      case 'bottom':\n        bands = tickValuesForBanding\n          .map((d, i) => ({\n            x: bandingScale(d) - scalePointOffset,\n            y: 0,\n            width: bandingScale.bandwidth() || bandingScale.step(),\n            height,\n          }))\n          .filter((d, i) => i % 2 === 0);\n        break;\n      case 'left':\n      case 'right':\n        bands = tickValuesForBanding\n          .map((d, i) => ({\n            x: 0,\n            y: bandingScale(d) - scalePointOffset,\n            width,\n            height: bandingScale.bandwidth() || bandingScale.step(),\n          }))\n          .filter((d, i) => i % 2 === 0);\n        break;\n      default:\n        bands = [];\n    }\n  } else {\n    /* If not an ordinal scale or custom ticks checks to see if the extent of the domain\n      is greater than the extent of ticks allowing thin bands at the begining and end of the scale */\n    if (structure === 'fixed') {\n      // If first tick is less than the min value in the domain, add it to the front of the array\n      if (minScale < tickValuesForBanding[0]) {\n        tickValuesForBanding.unshift(minScale);\n      }\n      // If first tick is greater than the max value in the domain, add it to the end of the array\n      if (maxScale > tickValuesForBanding[tickValuesForBanding.length - 1]) {\n        tickValuesForBanding.push(maxScale);\n      }\n      // Removes last value if tickValuesForBanding array is uneven preventing NaN calculations\n      if (tickValuesForBanding.length % 2 != 0) {\n        tickValuesForBanding.pop();\n      }\n    }\n\n    // Build bands structure if a scaleBanding is Linear\n    switch (orientation) {\n      case 'top':\n      case 'bottom':\n        bands = tickValuesForBanding\n          .map((d, i) => ({\n            label: d,\n            x: bandingScale(d),\n            y: 0,\n            width: Math.abs(\n              bandingScale(\n                i < tickValuesForBanding.length - 1 ? tickValuesForBanding[i + 1] : maxScale\n              ) - bandingScale(d)\n            ),\n            height,\n          }))\n          .filter((d, i) => i % 2 === 0);\n        break;\n      case 'left':\n      case 'right':\n        bands = tickValuesForBanding\n          .map((d, i) => ({\n            label: d,\n            x: 0,\n            y: bandingScale(tickValuesForBanding[structure === 'fixed' ? i + 1 : i]),\n            width,\n            height: Math.abs(\n              bandingScale(\n                i < tickValuesForBanding.length - 1 ? tickValuesForBanding[i + 1] : maxScale\n              ) - bandingScale(d)\n            ),\n          }))\n          .filter((d, i) => i % 2 === 0);\n        break;\n      default:\n        bands = [];\n    }\n  }\n\n  const renderedBands = bands.map((d, i) => {\n    return <rect key={`band${i}`} x={d.x} y={d.y} width={d.width} height={d.height} />;\n  });\n\n  return (\n    <Group className=\"visx-axis-banding\" id=\"axisBanding\">\n      {renderedBands}\n    </Group>\n  );\n};\nAxisBanding.defaultProps = axisBandingComponentDefaultProps;\n\nexport default AxisBanding;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * function Bar() {\n *   this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n  if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n    copyObject(source, keys(source), object);\n    return;\n  }\n  for (var key in source) {\n    if (hasOwnProperty.call(source, key)) {\n      assignValue(object, key, source[key]);\n    }\n  }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assign;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction assignInDefaults(objValue, srcValue, key, object) {\n  if (objValue === undefined ||\n      (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n    return srcValue;\n  }\n  return objValue;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keysIn(source), object, customizer);\n});\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(args) {\n  args.push(undefined, assignInDefaults);\n  return apply(assignInWith, undefined, args);\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = defaults;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result) || cache;\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","// Adapted from https://github.com/hshoff/vx/blob/master/packages/vx-tooltip/src/tooltips/TooltipWithBounds.tsx\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withBoundingRects } from '@visx/bounds';\nimport { Tooltip } from '@visx/tooltip';\n\nconst TooltipWithBounds = ({\n  left: initialLeft = 0,\n  top: initialTop = 0,\n  offsetLeft = 10,\n  offsetTop = 10,\n  offsetX = 0,\n  offsetY = 0,\n  dataYPosition,\n  maxOffsetY,\n  rect,\n  parentRect,\n  getRects,\n  children,\n  style,\n  ...props\n}) => {\n  let left = initialLeft;\n  let top = initialTop;\n\n  /* If the bounding rect of the component and it's parent is available, adjust it's\n    position so it doesn't overflow */\n  if (rect && parentRect) {\n    left =\n      /* If the right side of the bounding rect is greater than the parent bottom or window width\n        subtract the width from the final left position */\n      offsetLeft + rect.right > parentRect.right ||\n      (window && offsetLeft + rect.right > window.innerWidth)\n        ? left - rect.width - offsetLeft\n        : left + offsetLeft;\n\n    top =\n      /* If the bottom side of the bounding rect is greater than the parent bottom or window height\n      subtract the height from the final top position */\n      offsetTop + rect.bottom > parentRect.bottom ||\n      (window && offsetTop + rect.bottom > window.innerHeight)\n        ? top - rect.height - offsetTop\n        : top + offsetTop;\n\n    const heightOfRect = rect.height;\n    // If the y positon of the line is less than bottom of the tooltip (which in this case is offset by -50%)\n    const rectOffset =\n      typeof offsetY === 'number'\n        ? offsetY\n        : // Convert % translation\n          (Number(offsetY.replace('%', '')) / 100) * heightOfRect;\n    if (dataYPosition <= top + heightOfRect + rectOffset) {\n      // @TODO alternatively this could be just below the current position on the line\n      top = maxOffsetY - heightOfRect;\n    }\n  }\n\n  left = Math.round(left);\n  top = Math.round(top);\n\n  return (\n    <Tooltip\n      style={{\n        position: 'absolute',\n        top: 0,\n        transform: `translate(${left}px, ${top}px) translateX(${offsetX}) translateY(${offsetY})`,\n        ...style,\n      }}\n      {...props}\n    >\n      {children}\n    </Tooltip>\n  );\n};\n\nconst rectShapePropTypes = PropTypes.shape({\n  top: PropTypes.number,\n  right: PropTypes.number,\n  bottom: PropTypes.number,\n  left: PropTypes.number,\n  width: PropTypes.number,\n  height: PropTypes.number,\n});\n\nconst withBoundingRectsPropTypes = {\n  getRects: PropTypes.func,\n  rect: rectShapePropTypes,\n  parentRect: rectShapePropTypes,\n};\n\nTooltipWithBounds.propTypes = {\n  ...Tooltip.propTypes,\n  ...withBoundingRectsPropTypes,\n  offsetLeft: PropTypes.number,\n  offsetTop: PropTypes.number,\n  offsetX: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  offsetY: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  maxOffsetY: PropTypes.number,\n  dataYPosition: PropTypes.number,\n};\n\nexport default withBoundingRects(TooltipWithBounds);\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport {\n  copyrightStylesBase,\n  sourceStylesBase,\n  sourceStylesPrint,\n  sourceStylesSocial,\n  sourceStylesVideo,\n} from './styles.js';\nimport { chartFooterPropTypes } from '../prop-types';\nimport { chartFooterDefaultProps } from '../default-props';\n\nconst sourceStylesMap = {\n  print: sourceStylesPrint,\n  social: sourceStylesSocial,\n  video: sourceStylesVideo,\n  web: null,\n};\n\nconst ChartFooter = ({\n  copyright,\n  height,\n  margin,\n  source,\n  sourceFontSize,\n  sourceLineHeight,\n  sourcePosition,\n  type,\n}) => {\n  const { x: sourcePositionX = 0, y: sourcePositionY = 0 } = sourcePosition;\n\n  // Calculate number of source lines\n  const noOfSourceLines = (source && source.split('|').length) || 0;\n  // Calculate the height of the chart source lines (excluding the copyright)\n  const sourceHeight = sourceLineHeight * noOfSourceLines;\n\n  // Calculate the position of the FT copyright line (the bottom left corner)\n  const sourceCopyrightPositionY = height - sourcePositionY;\n  // Calculate the height of the chart copyright line\n  const sourceCopyrightHeight = copyright ? sourceLineHeight : 0;\n\n  // Calculate the position the chart footer should start at\n  // (the bottom left corner of the first line)\n  const sourceTopPositionY =\n    sourceCopyrightPositionY - sourceCopyrightHeight - sourceHeight + sourceLineHeight;\n\n  return (\n    <>\n      {/* Source */}\n      <text\n        css={css`\n          font-size: ${sourceFontSize}px;\n          line-height: ${sourceLineHeight}px;\n          ${sourceStylesBase};\n          ${sourceStylesMap[type]};\n        `}\n        data-id={`ft-webgraphic-${type}source`}\n      >\n        {source\n          ? source.split('|').map((line, i) => (\n              <tspan\n                data-id={`ft-webgraphic-${type}__source-line-${i}`}\n                key={`ft-webgraphic-${type}__source-line-${i}`} // eslint-disable-line react/no-array-index-key\n                x={sourcePositionX}\n                y={sourceTopPositionY + i * sourceLineHeight}\n              >\n                {line}\n              </tspan>\n            ))\n          : null}\n      </text>\n\n      {/* Copyright */}\n      {copyright && (\n        <text\n          css={css`\n            font-size: ${sourceFontSize}px;\n            line-height: ${sourceLineHeight}px;\n            ${copyrightStylesBase};\n          `}\n          data-id=\"chart-copyright\"\n        >\n          <tspan x={sourcePositionX} y={sourceCopyrightPositionY}>\n            {copyright}\n          </tspan>\n        </text>\n      )}\n    </>\n  );\n};\n\nChartFooter.propTypes = chartFooterPropTypes;\nChartFooter.defaultProps = chartFooterDefaultProps;\n\nexport default ChartFooter;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import React from 'react';\nimport Frame from './base';\nimport { convertMMtoPX } from '../../util';\nimport { printChartFrameStyles } from './styles';\nimport { framePrintPropTypes } from '../prop-types';\nimport { framePrintDefaultProps } from '../default-props';\n\nconst FramePrint = ({ type, ...props }) => {\n  // convert mm measures for width and height into pixels\n  const { width: mmWidth, height: mmHeight } = props;\n  const pxWidth = convertMMtoPX(mmWidth);\n  const pxHeight = convertMMtoPX(mmHeight);\n\n  return (\n    <Frame\n      css={printChartFrameStyles}\n      {...props} // eslint-disable-line react/jsx-props-no-spreading\n      type={type}\n      width={pxWidth}\n      height={pxHeight}\n    />\n  );\n};\n\nFramePrint.propTypes = framePrintPropTypes;\nFramePrint.defaultProps = framePrintDefaultProps;\n\nexport default FramePrint;\n","import React from 'react';\nimport Frame from './base';\nimport { socialChartFrameStyles } from './styles';\nimport { frameSocialPropTypes } from '../prop-types';\nimport { frameSocialDefaultProps } from '../default-props';\n\nconst FrameSocial = ({ type, ...props }) => (\n  <Frame\n    css={socialChartFrameStyles}\n    {...props} // eslint-disable-line react/jsx-props-no-spreading\n    type={type}\n  />\n);\n\nFrameSocial.propTypes = frameSocialPropTypes;\nFrameSocial.defaultProps = frameSocialDefaultProps;\n\nexport default FrameSocial;\n","import React from 'react';\nimport Frame from './base';\nimport { videoChartFrameStyles } from './styles';\nimport { frameVideoPropTypes } from '../prop-types';\nimport { frameVideoDefaultProps } from '../default-props';\n\nconst FrameVideo = ({ type, ...props }) => (\n  <Frame\n    css={videoChartFrameStyles}\n    {...props} // eslint-disable-line react/jsx-props-no-spreading\n    type={type}\n  />\n);\n\nFrameVideo.propTypes = frameVideoPropTypes;\nFrameVideo.defaultProps = frameVideoDefaultProps;\n\nexport default FrameVideo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Group } from '@visx/group';\nimport { Bar, Line, Circle } from '@visx/shape';\nimport { Label } from './label';\nimport { approximateTextSize } from '../../util/victory-textsize';\n\n\nexport const legendCategorical = ({ posX, posY, scale, seriesNames, orientation, geometry, fontSize }) => {\n  if (orientation === 'vertical') {\n    return seriesNames.map((d, i) => {\n      const textHeight = approximateTextSize(d, {\n        fontFamily: 'MetricWeb-Regular',\n        fontSize: fontSize,\n      }).height\n      const barWidth = textHeight * 0.9;\n      const barHeight = textHeight * 0.6\n      const diametre = textHeight * 0.6;\n      const radius = diametre* 0.5;\n\n      if (geometry === 'rect') {\n        const yOffset = (textHeight * 0.01)\n        const xOffset = (textHeight * 1.3)\n        return (\n          <Group key={d} className=\"legend\">\n            <Bar\n              fill={scale(d)}\n              x={0}\n              y={i * (textHeight + yOffset)}\n              width={barWidth}\n              height={barHeight}\n            />\n            <Label x={xOffset} y={(i * (textHeight + yOffset)) + (barHeight - yOffset)} category={d} />\n          </Group>\n        );\n      }\n      if (geometry === 'circle') {\n        const yOffset = (textHeight * 0.01)\n        const xOffset = (textHeight * 1)\n        return (\n          <Group key={d} className=\"legend\">\n            <Circle\n              fill={scale(d)}\n              cx={radius}\n              cy={i * (textHeight + yOffset) + radius}\n              r={radius}\n            />\n            <Label x={xOffset} y={(i * (textHeight + yOffset)) + (diametre - yOffset)} category={d} />\n          </Group>\n        );\n      }\n      if (geometry === 'line') {\n        const yOffset = (textHeight * 0.01)\n        const xOffset = (textHeight * 1.3)\n        return (\n          <Group key={d} className=\"legend\">\n            <Line\n              stroke={scale(d)}\n              x1={0}\n              y1={i * (textHeight + yOffset) + (barHeight * 0.5)}\n              x2={barWidth}\n              y2={i * (textHeight + yOffset) + (barHeight * 0.5)}\n            />\n            <Label x={xOffset} y={(i * (textHeight + yOffset)) + (barHeight - yOffset)} category={d} />\n          </Group>\n        );\n      }\n\n      return undefined;\n    });\n  }\n\n  if (orientation === 'horizontal') {\n    let cummulative = 0\n    let labelWidth;\n    return seriesNames.map((d, i) => {\n      const textHeight = approximateTextSize(d, {\n        fontFamily: 'MetricWeb-Regular',\n        fontSize: fontSize,\n      });\n      const barWidth = textHeight.height * 0.9;\n      const barHeight = textHeight.height * 0.6;\n      const diametre = textHeight.height * 0.6;\n      const radius = diametre * 0.5;\n\n      if (geometry === 'rect') {\n        const xOffset = (barWidth * 1.3)\n        const yOffset = (textHeight.height * 0.01)\n        const newX = cummulative;\n        labelWidth = textHeight.width;\n        cummulative = cummulative + xOffset + labelWidth +(xOffset * 0.7);\n        return (\n          <Group key={d} className=\"legend\">\n            <Bar\n              fill={scale(d)}\n              x={newX}\n              y={0}\n              width={barWidth}\n              height={barHeight}\n            />\n            <Label x={newX + xOffset} y={barHeight - yOffset} category={d} />\n          </Group>\n        );\n      }\n      if (geometry === 'circle') {\n        const xOffset = (diametre * 1.1)\n        const yOffset = (textHeight.height * 0.01)\n        const newX = cummulative;\n        labelWidth = textHeight.width;\n        cummulative = cummulative + xOffset + labelWidth +(xOffset *1.2);\n        return (\n          <Group key={d} className=\"legend\">\n            <Circle fill={scale(d)} cx={newX} cy={radius} r={radius} />\n            <Label x={newX + xOffset} y={barHeight - yOffset} category={d} />\n          </Group>\n        );\n      }\n      if (geometry === 'line') {\n        const xOffset = (barWidth * 1.3)\n        const yOffset = (textHeight.height * 0.01)\n        const newX = cummulative;\n        labelWidth = textHeight.width;\n        cummulative = cummulative + xOffset + labelWidth +(xOffset * 0.7);\n        return (\n          <Group key={d} className=\"legend\">\n            <Line\n              stroke={scale(d)}\n              x1={newX}\n              y1={ (barHeight * 0.55)}\n              x2={newX + barWidth}\n              y2={(barHeight * 0.55)}\n            />\n            <Label x={newX + xOffset} y={barHeight - yOffset} category={d} />\n          </Group>\n        );\n      }\n      return undefined;\n    });\n  }\n  return null;\n};\nlegendCategorical.propTypes = {\n  scale: PropTypes.func.isRequired,\n  seriesNames: PropTypes.array.isRequired,\n  orientation: PropTypes.string.isRequired,\n  geometry: PropTypes.string.isRequired,\n  fontSize: PropTypes.number.isRequired,\n  category: PropTypes.string,\n};\n\nexport default legendCategorical;\n\n// @TODO PropTypes\n","import React from 'react';\nimport PropTypes, { bool, number } from 'prop-types';\nimport { Group } from '@visx/group';\nimport { scaleLinear } from '@visx/scale';\nimport { Polygon, Bar, Line } from '@visx/shape';\nimport { Label } from './label';\n\nconst legendThreshold = ({ fontSize, width, orientation, height, scale, invert, median }) => {\n  const valueExtent = [scale.domain()[0], scale.domain()[scale.domain().length - 1]];\n  const yAxis = scaleLinear({\n    domain: [valueExtent[0], valueExtent[1]],\n  });\n  const seriesNames = scale.domain();\n\n  if (orientation === 'horizontal') {\n    if (invert) {\n      yAxis.range([width, 0]);\n      seriesNames.reverse();\n    } else {\n      yAxis.range([0, width]);\n    }\n    return seriesNames.map((d, i) => {\n      if (i < seriesNames.length - 1) {\n        const barWidth = yAxis(seriesNames[i + 1]) - yAxis(d);\n        return (\n          <g key={d} className=\"axis\">\n            <Bar x={yAxis(d)} y={0} width={barWidth} height={fontSize / 2} fill={scale(d)} />\n            <Line x1={yAxis(d)} y1={0} x2={yAxis(d)} y2={fontSize} />\n            <Label x={yAxis(d)} y={fontSize * 2} category={d} textAnchor=\"middle\" />\n          </g>\n        );\n      }\n      if (i + 1 === seriesNames.length) {\n        // const barWidth = yAxis(seriesNames[i + 1]) - yAxis(d);\n        if (typeof median === 'string') {\n          return (\n            <g key={d} className=\"axis\">\n              <Line x1={yAxis(d)} y1={0} x2={yAxis(d)} y2={fontSize} />\n              <Label x={yAxis(d)} y={fontSize * 2} category={d} textAnchor=\"middle\" />\n            </g>\n          );\n        }\n        if (typeof median === 'number') {\n          return (\n            <Group key={d} className=\"axis\">\n              <Line x1={yAxis(d)} y1={0} x2={yAxis(d)} y2={fontSize} />\n              <Label x={yAxis(d)} y={fontSize * 2} category={d} textAnchor=\"middle\" />\n              <Polygon\n                className=\"axis\"\n                sides={3}\n                rotate={30}\n                size={fontSize / 2.5}\n                center={{ x: yAxis(median), y: -fontSize / 2 }}\n              />\n              <Label\n                x={yAxis(median)}\n                y={-fontSize}\n                category={`Median ${median}`}\n                textAnchor=\"middle\"\n              />\n            </Group>\n          );\n        }\n      }\n\n      return undefined;\n    });\n  }\n  if (orientation === 'vertical') {\n    if (invert) {\n      yAxis.range([height, 0]);\n      seriesNames.reverse();\n    } else {\n      yAxis.range([0, height]);\n    }\n    return seriesNames.map((d, i) => {\n      if (i < seriesNames.length - 1) {\n        const barHeight = yAxis(seriesNames[i + 1]) - yAxis(d);\n        return (\n          <Group key={d} className=\"axis\">\n            <Bar\n              x={fontSize * 2}\n              y={yAxis(d)}\n              width={fontSize / 2}\n              height={barHeight}\n              fill={scale(d)}\n            />\n            <Label x={fontSize * 1.3} y={yAxis(d) + 6} category={d} textAnchor=\"end\" />\n            <Line x1={fontSize * 1.5} y1={yAxis(d)} x2={fontSize * 2.5} y2={yAxis(d)} />\n          </Group>\n        );\n      }\n      if (i + 1 === seriesNames.length) {\n        if (typeof median === 'string') {\n          return (\n            <Group key={d} className=\"axis\">\n              <Label x={fontSize * 1.3} y={yAxis(d) + 6} category={d} textAnchor=\"end\" />\n              <Line\n                x1={fontSize * 1.5}\n                y1={yAxis(d)}\n                x2={fontSize * 2.5}\n                y2={yAxis(d)}\n                stroke=\"#000000\"\n              />\n            </Group>\n          );\n        }\n        if (typeof median === 'number') {\n          return (\n            <Group key={d} className=\"axis\">\n              <Label x={fontSize * 1.3} y={yAxis(d) + 6} category={d} textAnchor=\"end\" />\n              <Line\n                x1={fontSize * 1.5}\n                y1={yAxis(d)}\n                x2={fontSize * 2.5}\n                y2={yAxis(d)}\n                stroke=\"#000000\"\n              />\n              <Polygon\n                className=\"axis\"\n                sides={3}\n                rotate={60}\n                size={fontSize / 2.5}\n                center={{ x: fontSize * 3, y: yAxis(median) }}\n              />\n              <Label\n                x={fontSize * 3.4}\n                y={yAxis(median) + fontSize * 0.35}\n                category={`Median ${median}`}\n                textAnchor=\"begin\"\n              />\n            </Group>\n          );\n        }\n      }\n\n      return undefined;\n    });\n  }\n\n  return null;\n};\n\nlegendThreshold.propTypes = {\n  invert: PropTypes.bool,\n  scale: PropTypes.func.isRequired,\n  seriesNames: PropTypes.array.isRequired,\n  orientation: PropTypes.string.isRequired,\n  geometry: PropTypes.string.isRequired,\n  fontSize: PropTypes.number.isRequired,\n  x: PropTypes.number,\n  y: PropTypes.number,\n  width: PropTypes.number,\n  height: PropTypes.number,\n  median: PropTypes.number,\n};\nexport default legendThreshold;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { scaleSqrt } from '@visx/scale';\nimport { extent } from 'd3-array';\nimport { Group } from '@visx/group';\nimport { Line, Circle } from '@visx/shape';\nimport { Label } from './label';\n\nconst legendMagnitude = ({ scale, seriesNames, fontSize, label }) => {\n  const valueExtent = extent(scale.domain());\n  const last = seriesNames.length - 1;\n  const circleScale = scaleSqrt({\n    domain: [0, valueExtent[1]],\n    range: [0, scale.range()[1]],\n  });\n\n  const offsetY = 35;\n  const offsetX = 0;\n\n  return seriesNames.map((d, i) => {\n    if (i === 0) {\n      return (\n        <Group key={d}>\n          <Circle\n            cx={offsetX + circleScale(valueExtent[1])}\n            cy={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i])}\n            r={circleScale(seriesNames[i])}\n            fill=\"none\"\n          />\n          <Line\n            x1={offsetX + circleScale(valueExtent[1])}\n            y1={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2}\n            x2={offsetX + circleScale(valueExtent[1]) + circleScale(valueExtent[1]) + 15}\n            y2={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2}\n          />\n          <Label\n            x={offsetX + circleScale(valueExtent[1]) + circleScale(valueExtent[1]) + 20}\n            y={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2 + 5}\n            category={`Min ${d}`}\n          />\n          <Label x={0} y={fontSize * 0.2} category=\"Circle size shows\" />\n          <Label x={0} y={fontSize * 1.3} category={label} />\n        </Group>\n      );\n    }\n    if (i === last && seriesNames[i] === valueExtent[1]) {\n      return (\n        <Group key={d}>\n          <Circle\n            cx={offsetX + circleScale(valueExtent[1])}\n            cy={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i])}\n            r={circleScale(seriesNames[i])}\n          />\n          <Line\n            x1={offsetX + circleScale(valueExtent[1])}\n            y1={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2}\n            x2={offsetX + circleScale(valueExtent[1]) + circleScale(valueExtent[1]) + 15}\n            y2={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2}\n          />\n          <Label\n            x={offsetX + circleScale(valueExtent[1]) + circleScale(valueExtent[1]) + 20}\n            y={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2 + 5}\n            category={`Max ${d}`}\n          />\n        </Group>\n      );\n    }\n    if (i > 0 && seriesNames[i] !== valueExtent[1]) {\n      return (\n        <Group key={d}>\n          <Circle\n            cx={offsetX + circleScale(valueExtent[1])}\n            cy={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i])}\n            r={circleScale(seriesNames[i])}\n          />\n          <Line\n            x1={offsetX + circleScale(valueExtent[1])}\n            y1={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2}\n            x2={offsetX + circleScale(valueExtent[1]) + circleScale(valueExtent[1]) + 15}\n            y2={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2}\n          />\n          <Label\n            x={offsetX + circleScale(valueExtent[1]) + circleScale(valueExtent[1]) + 20}\n            y={offsetY + circleScale(valueExtent[1]) * 2 - circleScale(seriesNames[i]) * 2 + 5}\n            category={d}\n          />\n        </Group>\n      );\n    }\n    return undefined;\n  });\n};\nlegendMagnitude.propTypes = {\n  scale: PropTypes.func.isRequired,\n  seriesNames: PropTypes.array.isRequired,\n  fontSize: PropTypes.number.isRequired,\n  x: PropTypes.number.isRequired,\n  y: PropTypes.number.isRequired,\n  label: PropTypes.string,\n};\n\nexport default legendMagnitude;\n\n// @TODO PropTypes\n","import React, { useContext, useMemo, Fragment } from 'react';\nimport { Group } from '@visx/group';\nimport { Circle } from '@visx/shape';\nimport { PlotContext } from '@financial-times/vvc/components';\nimport { generateLineEndData } from '../helpers';\n\nconst Dots = ({\n  width,\n  height,\n  margin,\n  padding,\n  data,\n  seriesNames,\n  // Scales\n  xVariable,\n  yVariable,\n  sizeVariable,\n  colorVariable,\n  xScale,\n  yScale,\n  yTransformFunction,\n  sizeScale,\n  colorScale,\n  labelColorScale,\n  // Dot config\n  hollowDots,\n  opacity,\n  strokeWidth,\n  strokeColor,\n}) => {\n  xScale.range([0, width]);\n  yScale.range([height, 0]);\n\n  const transformedYScale = value => yScale(yTransformFunction ? yTransformFunction(value) : value);\n\n  return (\n    <Group>\n      {seriesNames.map(seriesName => (\n        <Group>\n          {(data[seriesName] || []).map(({ label, x, y, r, color }, i) =>\n            transformedYScale(y) >= 0 ? (\n              <Circle\n                key={`series_${seriesName}_${x}_${y}_${i}`}\n                className=\"dot\"\n                cx={xScale(x)}\n                cy={transformedYScale(y)}\n                r={sizeScale(r)}\n                fill={hollowDots ? 'none' : colorScale(color)}\n                stroke={strokeColor || (hollowDots ? colorScale(color) : 'none')}\n                strokeWidth={strokeWidth || 3}\n                fillOpacity={opacity}\n              />\n            ) : null\n          )}\n        </Group>\n      ))}\n    </Group>\n  );\n};\n\nconst MemoisedDots = React.memo(\n  Dots,\n  (prevProps, nextProps) => JSON.stringify(prevProps) === JSON.stringify(nextProps)\n);\n\nconst DotsWithHighlights = ({ seriesNames, hoveredDotsColorScale, ...props }) => {\n  const { width, height, margin, padding, hoveredSeries } = useContext(PlotContext);\n\n  const scaleProperties = {\n    yScaleType: props.yScale.type,\n    yScaleDomain: props.yScale.domain(),\n    yScaleRange: props.yScale.range(),\n    xScaleType: props.xScale.type,\n    xScaleDomain: props.xScale.domain(),\n    xScaleRange: props.xScale.range(),\n  };\n\n  return (\n    <React.Fragment>\n      <MemoisedDots\n        {...props}\n        width={width}\n        height={height}\n        margin={margin}\n        padding={padding}\n        seriesNames={seriesNames}\n        // This should force the lines to rerender when the scale properties change\n        {...scaleProperties}\n      />\n      {hoveredSeries && (\n        <MemoisedDots\n          {...props}\n          width={width}\n          height={height}\n          margin={margin}\n          padding={padding}\n          seriesNames={[hoveredSeries]}\n          colorScale={hoveredDotsColorScale}\n          // This should force the lines to rerender when the scale properties change\n          {...scaleProperties}\n        />\n      )}\n    </React.Fragment>\n  );\n};\n\nexport { DotsWithHighlights as Dots };\nexport default null;\n","import React, { useContext } from 'react';\nimport { Group } from '@visx/group';\nimport { LinePathAnnotation } from '@visx/annotation';\nimport { PlotContext } from '@financial-times/vvc/components';\nimport { repositionLabels } from '../helpers';\nimport { labelComponentDefaultProps } from '../props';\n\nconst LabelArrow = ({ x, y, width, fill, stroke, strokeWidth }) => {\n  const halfWidth = (width + strokeWidth) / 2;\n  return (\n    <path\n      d={`M${x - halfWidth},${y + halfWidth} L${x + halfWidth},${y + halfWidth} L${x},${y -\n        halfWidth} Z`}\n      fill={fill}\n      stroke={stroke}\n      strokeWidth={strokeWidth / 2}\n      strokeLinecap=\"round\"\n    />\n  );\n};\n\nconst Label = ({\n  label, // Label text\n  fill,\n  anchor,\n  fontSize,\n  strokeColor,\n  strokeWidth,\n  x,\n  y,\n  dx,\n  dy,\n  lineStroke,\n  lineStrokeWidth,\n  showArrow,\n  arrowWidth,\n  ...props\n}) => {\n  return (\n    <Group>\n      {strokeColor && (\n        <LinePathAnnotation\n          label={label}\n          labelAnchor={anchor}\n          labelFontSize={fontSize}\n          labelFill={strokeColor}\n          labelStroke={strokeColor}\n          labelStrokeWidth={strokeWidth}\n          points={[{ x, y }]}\n          labelDx={dx}\n          labelDy={dy}\n          stroke=\"transparent\"\n          {...props}\n        />\n      )}\n      <LinePathAnnotation\n        label={label}\n        labelAnchor={anchor}\n        labelFontSize={fontSize}\n        labelFill={fill}\n        labelStroke=\"none\"\n        points={[{ x, y }]}\n        labelDx={dx}\n        labelDy={dy}\n        stroke={lineStroke}\n        strokeWidth={lineStrokeWidth}\n        {...props}\n      />\n      {showArrow && (\n        <LabelArrow\n          x={x}\n          y={y}\n          width={arrowWidth}\n          fill={fill}\n          stroke={strokeColor}\n          strokeWidth={strokeWidth}\n        />\n      )}\n    </Group>\n  );\n};\n\nLabel.defaultProps = labelComponentDefaultProps;\n\nconst Labels = ({\n  width,\n  height,\n  margin,\n  padding,\n  data,\n  seriesNames,\n  automaticallyRepositionLabels,\n  // Scales\n  xVariable,\n  yVariable,\n  colorVariable,\n  xScale,\n  yScale,\n  yTransformFunction,\n  colorScale,\n  strokeColor,\n  additionalProps,\n}) => {\n  xScale.range([0, width]);\n  yScale.range([height, 0]);\n\n  const transformedYScale = value => yScale(yTransformFunction ? yTransformFunction(value) : value);\n\n  const flatData = seriesNames\n    .reduce((acc, seriesName) => [...acc, ...data[seriesName]], [])\n    .map(({ y, ...rest }) => ({ y, yPosition: transformedYScale(y), ...rest }));\n  const positionedLabels = automaticallyRepositionLabels ? repositionLabels(flatData) : flatData;\n\n  return (\n    <Group>\n      {positionedLabels.map(({ x, y, yPosition, color, label, yAxisIntersectionX }) => {\n        const showArrow = transformedYScale(y) < 0;\n        const labelX = showArrow ? xScale(yAxisIntersectionX) : xScale(x);\n        const labelY = showArrow ? 0 : yPosition;\n\n        return (\n          <Label\n            key={label}\n            x={labelX}\n            y={labelY}\n            fill={colorScale(color)}\n            label={label}\n            showArrow={showArrow}\n            {...additionalProps}\n          />\n        );\n      })}\n    </Group>\n  );\n};\n\nconst MemoisedLabels = React.memo(\n  Labels,\n  (prevProps, nextProps) => JSON.stringify(prevProps) === JSON.stringify(nextProps)\n);\n\nconst LabelsWithHighlights = ({ seriesNames, hoveredLabelsColorScale, ...props }) => {\n  const { width, height, margin, padding, hoveredSeries } = useContext(PlotContext);\n\n  const scaleProperties = {\n    yScaleType: props.yScale.type,\n    yScaleDomain: props.yScale.domain(),\n    yScaleRange: props.yScale.range(),\n    xScaleType: props.xScale.type,\n    xScaleDomain: props.xScale.domain(),\n    xScaleRange: props.xScale.range(),\n  };\n\n  return (\n    <React.Fragment>\n      <MemoisedLabels\n        {...props}\n        width={width}\n        height={height}\n        margin={margin}\n        padding={padding}\n        seriesNames={seriesNames}\n        // This should force the lines to rerender when the scale properties change\n        {...scaleProperties}\n      />\n      {hoveredSeries && (\n        <MemoisedLabels\n          {...props}\n          width={width}\n          height={height}\n          margin={margin}\n          padding={padding}\n          seriesNames={[hoveredSeries]}\n          colorScale={hoveredLabelsColorScale}\n          // This should force the lines to rerender when the scale properties change\n          {...scaleProperties}\n          automaticallyRepositionLabels={false}\n        />\n      )}\n    </React.Fragment>\n  );\n};\n\nexport { LabelsWithHighlights as Labels };\nexport default null;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { isZeroOrDefined } from '@financial-times/vvc/util';\nimport { PlotContext } from '@financial-times/vvc/components';\n\nconst AxisFade = ({ orientations, id, offsetStartingPercentage, offsetType }) => {\n  const { margin, padding, width, height } = useContext(PlotContext);\n  const left = margin.left + padding.left;\n  const right = margin.right + padding.right;\n  const top = margin.top + padding.top;\n  const bottom = margin.bottom + padding.bottom;\n  const fullWidth = width + left + right;\n  const fullHeight = height + top + bottom;\n\n  const offsetTypesForOrientations = {\n    top: 'gradient',\n    right: 'gradient',\n    bottom: 'gradient',\n    left: 'gradient',\n    ...offsetType,\n  };\n\n  return (\n    <React.Fragment>\n      <defs>\n        {orientations.includes('top') && offsetTypesForOrientations.top === 'gradient' && (\n          <linearGradient\n            id={`${id}_axisFadeTopGradient`}\n            x1=\"0%\"\n            y1=\"0%\"\n            x2=\"0%\"\n            y2={`${\n              isZeroOrDefined(offsetStartingPercentage.top)\n                ? offsetStartingPercentage.top\n                : offsetStartingPercentage\n            }%`}\n          >\n            <stop offset=\"0%\" stopColor=\"black\" stopOpacity=\"1\" />\n            <stop offset=\"100%\" stopColor=\"black\" stopOpacity=\"0\" />\n          </linearGradient>\n        )}\n\n        {orientations.includes('right') && offsetTypesForOrientations.right === 'gradient' && (\n          <linearGradient\n            id={`${id}_axisFadeRightGradient`}\n            x1=\"0%\"\n            y1=\"0%\"\n            x2={`${\n              isZeroOrDefined(offsetStartingPercentage.right)\n                ? offsetStartingPercentage.right\n                : offsetStartingPercentage\n            }%`}\n            y2=\"0%\"\n          >\n            <stop offset=\"0%\" stopColor=\"black\" stopOpacity=\"0\" />\n            <stop offset=\"100%\" stopColor=\"black\" stopOpacity=\"1\" />\n          </linearGradient>\n        )}\n\n        {orientations.includes('bottom') && offsetTypesForOrientations.bottom === 'gradient' && (\n          <linearGradient\n            id={`${id}_axisFadeBottomGradient`}\n            x1=\"0%\"\n            y1=\"0%\"\n            x2=\"0%\"\n            y2={`${\n              isZeroOrDefined(offsetStartingPercentage.bottom)\n                ? offsetStartingPercentage.bottom\n                : offsetStartingPercentage\n            }%`}\n          >\n            <stop offset=\"0%\" stopColor=\"black\" stopOpacity=\"0\" />\n            <stop offset=\"100%\" stopColor=\"black\" stopOpacity=\"1\" />\n          </linearGradient>\n        )}\n\n        {orientations.includes('left') && offsetTypesForOrientations.left === 'gradient' && (\n          <linearGradient\n            id={`${id}_axisFadeLeftGradient`}\n            x1=\"0%\"\n            y1=\"0%\"\n            x2={`${\n              isZeroOrDefined(offsetStartingPercentage.left)\n                ? offsetStartingPercentage.left\n                : offsetStartingPercentage\n            }%`}\n            y2=\"0%\"\n          >\n            <stop offset=\"0%\" stopColor=\"black\" stopOpacity=\"1\" />\n            <stop offset=\"100%\" stopColor=\"black\" stopOpacity=\"0\" />\n          </linearGradient>\n        )}\n\n        <mask id={id}>\n          <rect x={-left} y={-top} width={fullWidth} height={fullHeight} fill=\"white\" />\n          {orientations.includes('top') && (\n            <rect\n              x={-left}\n              y={-top}\n              width={fullWidth}\n              height={top}\n              fill={\n                offsetTypesForOrientations.top === 'gradient'\n                  ? `url(#${id}_axisFadeTopGradient)`\n                  : 'black'\n              }\n            />\n          )}\n          {orientations.includes('right') && (\n            <rect\n              x={width}\n              y={-top}\n              width={right}\n              height={fullHeight}\n              fill={\n                offsetTypesForOrientations.right === 'gradient'\n                  ? `url(#${id}_axisFadeRightGradient)`\n                  : 'black'\n              }\n            />\n          )}\n          {orientations.includes('bottom') && (\n            <rect\n              x={-left}\n              y={height}\n              width={fullWidth}\n              height={bottom}\n              fill={\n                offsetTypesForOrientations.bottom === 'gradient'\n                  ? `url(#${id}_axisFadeBottomGradient)`\n                  : 'black'\n              }\n            />\n          )}\n          {orientations.includes('left') && (\n            <rect\n              x={-left}\n              y={-top}\n              width={left}\n              height={fullHeight}\n              fill={\n                offsetTypesForOrientations.left === 'gradient'\n                  ? `url(#${id}_axisFadeLeftGradient)`\n                  : 'black'\n              }\n            />\n          )}\n        </mask>\n      </defs>\n    </React.Fragment>\n  );\n};\n\nAxisFade.propTypes = {\n  id: PropTypes.string.isRequired,\n  orientations: PropTypes.arrayOf(PropTypes.string).isRequired,\n  offsetStartingPercentage: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),\n  offsetType: PropTypes.object,\n};\n\nAxisFade.defaultProps = {\n  offsetStartingPercentage: { top: 50, right: 50, bottom: 50, left: 50 },\n};\n\nexport default AxisFade;\n","import React from 'react';\n\nconst MultipleLineTickLabel = ({ formattedValue, ...tickProps }) => {\n  const labelLines = formattedValue.split('|').map(str => str.trim());\n  const { fontSize } = tickProps.style;\n  const { x, dy } = tickProps;\n\n  return (\n    <text {...tickProps}>\n      {labelLines.map((labelLine, index) => (\n        <tspan x={x} dy={index === 0 ? dy : fontSize}>\n          {labelLine}\n        </tspan>\n      ))}\n    </text>\n  );\n};\n\nexport default MultipleLineTickLabel;\n","const getArrayDepth = value => {\n  return Array.isArray(value) ? 1 + Math.max(...value.map(getArrayDepth)) : 0;\n};\n\nexport default getArrayDepth;\n","module.exports = \"Unless otherwise stated below, the data used in these charts comes from the [Johns Hopkins University Center for Systems Science and Engineering](https://github.com/CSSEGISandData/COVID-19), and reflects the date that cases or deaths were recorded, rather than when they occurred.\\n\\nData for the **Cook Islands**; **Guernsey**; **Jersey**; **Kiribati**; **Nauru**; **Niue**; **North Korea**; **Palau**; **Pitcairn**; **St Helena, Ascension and Tristan da Cunha**; **Tokelau**; **Tonga**; **Turkmenistan**; **Tuvalu** and **Wallis and Futuna** come from the the [World Health Organization](https://covid19.who.int/).\\n\\nOn October 1 2020, **Argentina** added 3,050 deaths to its official cumulative death toll, reflecting previous [deaths recorded in the province of Buenos Aires](https://www.argentina.gob.ar/sites/default/files/01-10-20-reporte-vespertino-covid-19.pdf) that had not been attributed to a date. The time series up until that date has been adjusted to redistribute these deaths in proportion to the previously known distribution of the data.\\n\\nOn September 6 2020, **Bolivia** added 1,610 deaths to its official cumulative death toll [without explaination](https://www.lavanguardia.com/politica/20200907/483353930506/bolivia-registra-un-repentino-aumento-de-unos-1600-fallecidos-por-covid-19.html). The time series up until that date has been adjusted to redistribute these deaths in proportion to the previously known distribution of the data.\\n\\nData for **Chile** before July 18 2020 has been adjusted to redistribute revised death totals published on June 6 and July 16, and the addition of previously unreported cases added on June 17, all in proportion to the original data.\\n\\nData for **China** from before April 17 2020 has been adjusted to redistribute [a data revision published on that day](https://www.ft.com/content/26d76ab5-ec59-4353-b027-c4961fd85822) in proportion to its original data.\\n\\nData for the **Czech Repubic** after November 29 2021 comes from the [Ministry of Health of the Czech Republic](https://onemocneni-aktualne.mzcr.cz/covid-19).\\n\\nOn September 6 2020, **Ecuador** [adjusted its methodology](https://www.salud.gob.ec/msp-presenta-actualizacion-de-indicadores-en-infografia-nacional-covid-19/) to cease distinguishing betwween confirmed and suspected Covid-19. This resulted in 3,752 additional deaths previously classified as suspected being added to its official cumulative death toll. The time series up until that date has been adjusted to redistributed these deaths in proportion to the previously known distribution of the data.\\n\\nData for **Eswatini** from before April 12 2021 has been adjusted to redistribute [1,017 previously unreported cases](https://twitter.com/EswatiniGovern1/status/1381579674552262661) in proportion to its original data.\\n\\nData for **France** after April 4, 2020 comes from [Public Health France](https://www.data.gouv.fr/fr/datasets/synthese-des-indicateurs-de-suivi-de-lepidemie-covid-19/). Data for deaths between January 14 and January 22 are estimates based on cumulative totals before and after this period. The data has been adjusted to redistribute nursing home deaths that were [added to the official death toll](http://content/58ece0fb-d297-495e-8889-da216410f2c3) on April 2 2020 as well as [revised confirmed case counts](https://www.santepubliquefrance.fr/maladies-et-traumatismes/maladies-et-infections-respiratoires/infection-a-coronavirus/documents/bulletin-national/covid-19-point-epidemiologique-du-29-mai-2020) on May 5 2020, May 28 2020 and [May 20 2021](https://www.santepubliquefrance.fr/les-actualites/2021/des-indicateurs-plus-precis-pour-le-suivi-des-cas-confirmes-de-covid-19), in proportion to its original data. \\n\\nData for **India** before June 16 2020 have been adjusted to redistribute older deaths added on that date by Maharashtra and Delhi, in proportion to its original data. On June 10 2021 Bihar added 3,951 deaths after an audit. These have been distributed between Mar 1 2021 and May 25 2021 in proportion to the original data.\\n\\nData for **Ireland** comes from the Health Protection Surveillance Centre and the Health Service Executive via [Ireland's COVID-19 Data Hub](https://covid19ireland-geohive.hub.arcgis.com/).\\n\\nData for **Italy** before August 17 2020, has been adjusted to redistribute [154 deaths](https://github.com/pcm-dpc/COVID-19/blob/master/dati-regioni/dpc-covid19-ita-regioni.csv#L3639) from March, April and May that the Parma Local Health Authority had not previously reported. These have been distributed in proportion to the previously-known data for the Emilia-Romagna region in those three months.\\n\\nOn January 30, 2021 **Lebanon** reported 290 deaths in addition to the 61 reported on that day. The health ministry said these were cases from 2020 which had previously been under investigation. The time series for 2020 has been adjusted to redistribute these deaths in proportion to the previously known distribution of the data.\\n\\nOn October 5 2020, **Mexico**’s health ministry said a [record increase](https://twitter.com/HLGatell/status/1313275707166916609) in cumulative cases and deaths was due to the inclusion of data dating back to June. The time series between June 1 and October 8 has been adjusted to redistribute an estimated 23,845 cases and 2,450 deaths in proportion to the previously known distribution of the data.\\n\\nOn May 31 2021, **Peru**'s health ministry [said](https://www.ft.com/content/eab50165-35ae-4b57-8bd6-39f1a7e5cd4d#post-a06f18ee-df66-429c-b8e7-945678ad51a7) there had been 180,764 deaths up to May 22 2021, an addition of 111,422. Figure 4 of [the report](https://cdn.www.gob.pe/uploads/document/file/1920747/Criterios%20t%C3%A9cnicos.pdf) has been used to distibute these deaths up to May 22.\\n\\nOn April 6 2021, the **Philippines** reported [341 deaths](https://www.reuters.com/article/health-coronavirus-philippines/philippines-reports-record-382-coronavirus-deaths-idUSL4N2LZ1ZZ) from previous months. These have been redistributed across the period prior to March 31 2021.\\n\\nData for **Slovenia** comes from the [Slovenian Ministry of Health and National Institute for Public Health](https://www.gov.si/en/topics/coronavirus-disease-covid-19/actual-data/).\\n\\nCase data for **South Africa** up to November 23 2021 has been amended to [include positive antigen tests](https://sacoronavirus.co.za/2021/11/23/media-statement-health-department-adds-antigen-tests-on-the-line-list-of-covid-19-statistics/), distributed according to a dataset provided by the South African Ministry of Health. 506 deaths identified during an [audit](https://sacoronavirus.co.za/2022/01/06/media-statement-health-department-records-covid-19-deaths-backlog/) and reported on January 6 2022 have been redistributed between November 18 2021 and January 4 2022.\\n\\nData for **Sweden** after April 5 2020, is calculated from the daily difference of cumulative figures published [Tuesday through Fridays](https://www.folkhalsomyndigheten.se/smittskydd-beredskap/utbrott/aktuella-utbrott/covid-19/statistik-och-analyser/bekraftade-fall-i-sverige/) by the [Swedish Public Health Agency](https://experience.arcgis.com/experience/09f821667ce64bf7be6f9f87457ed9aa). Unlike most other countries, Sweden uses [\\\"date of incidence\\\" figures](https://ourworldindata.org/covid-sweden-death-reporting) for its official death toll, so these \\\"date of reporting\\\" figures will not match official data for the most recent days. _Correction: Between August 11 and September 15 2021 new cases and new deaths data for Sweden was displayed incorrectly due to a programming error. This was corrected on September 16, 2021._\\n\\nThe [last known update of coronavirus data](https://www.ft.com/content/64521099-0850-4b94-b918-c302ada63916) from **Tanzania** before July 23 2021 was released on May 7 2020.\\n\\nCases data for **Turkey** prior to November 26 2020, reflected a \\\"new patients\\\" metric that [excluded asymptomatic cases](https://www.ft.com/content/5307a438-f083-4f7f-a1da-5b0a0eaa6047). On December 10, Turkey [updated its cumulative total of cases](https://medicalxpress.com/news/2020-12-turkey-adjusts-coronavirus-cases-million.html) to reflect this change. The time series up to November 25 has been adjusted to redistribute these 792,801 additional cases in proportion to the previously known distribution of the data.\\n\\n**UK** deaths and new cases data, and all data from that nations of the UK, comes from the [UK Government coronavirus dashboard](https://coronavirus.data.gov.uk/about-data), with the following changes:\\n\\n- **England**: The 513 deaths reported between December 27 2021 and December 30 2021 have been redistributed equally across this period to correct for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/258bbad6-5c7b-458c-ab88-fcc6b9df4b7a).\\n\\n- **Northern Ireland**: The 22,972 cases and 14 deaths reported between December 25 2021 and December 29 2021 have been redistributed equally across this period to correct for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/35f8a430-8519-41be-8f52-efd794a48f78). The 30,423 cases and 15 deaths reported between January 1 and January 4 2022, have been redistributed equally across this periods to correct for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/61f5cf21-1d93-4eb2-9195-391996abd1d5).\\n\\n- **Wales**: The 20,537 cases reported between December 10 2020 and December 17 2020 have been redistributed equally across this period to correct for a [backlog of more than 11,000 cases](https://phw.nhs.wales/news/daily-dashboard-now-updated/) that was reported on December 17 2020. The 12,378 cases and 3 deaths reported between December 27 2021 and December 28 2021 have been redistributed equally across this period to correct for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/356ee2e5-c488-465e-9e47-305f4ffe486a). The 22,317 cases and 8 deaths reported between January 3 and 4, 2022 have been redistributed equally across this period to correct for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/61f5cf21-1d93-4eb2-9195-391996abd1d5).\\n\\nData for the **US**, its individual states, **Puerto Rico**, **Guam**, **American Samoa**, the **US Virgin Islands** and the **Northern Mariana Islands** is calculated from county-level data compiled by the Johns Hopkins CSSE. Substantial revisions to individual states’ data are distribtuted proportionally to the previously-known data in the approximate period that they are reported to have occured:\\n\\n- **Delaware** data between May 15 2020 and June 30 2021 has been adjusted to include [130 deaths](https://news.delaware.gov/2021/07/30/positive-case-numbers-continue-to-rise-and-delta-variant-continues-to-dominate/) added to the state total on July 30 2021 after a review of death certificates.\\n\\n- **Iowa** data prior to February 19 2021 includes 26,822 additional positvive tests added to the cumulative total due to a [change in the definition of cases](https://eu.amestrib.com/story/news/2021/02/22/whats-changed-iowa-department-public-health-coronavirus-dashboard-website/4541471001/) from unique persons testing positive to total postitive tests. \\n\\n- **Kentucky** data between November 2020 and January 2021 has been adjusted to include [604 deaths](https://eu.courier-journal.com/story/news/2021/03/18/kentucky-adding-604-covid-19-deaths-its-total-after-state-audit/4755735001/) occurred in that period but were first recorded on March 18 and 19 following an audit. A further [88 deaths first reported on March 25](https://www.kentucky.com/news/coronavirus/article250205940.html) have been distributed over the period since October 2020 and [260 deaths first reported on June 1](https://www.kentucky.com/news/coronavirus/article251818393.html) have been distributed between March 20 2020 and October 26 2020.\\n\\n- **Maryland** data between May 26 2020 and May 26 2021 has been adjusted to include [517 previously misclassified deaths](https://health.maryland.gov/newsroom/Pages/Maryland-Department-of-Health-Vital-Statistics-Administration-issues-revision-of-COVID-19-death-data.aspx) reported on May 27.\\n\\n- **New Jersey** data prior to April 24 2021 has been reduced proporitionally to account for [10,442 duplicate postive tests](https://www.nj.com/coronavirus/2021/04/nj-reports-60-covid-deaths-1930-cases-transmission-rate-hits-2-month-low.html) that the state removed from its cumulative total on that date.\\n\\n- **New Mexico** data prior to May 25 2021 includes [113 deaths](https://cv.nmhealth.org/2021/05/25/department-of-health-completes-processing-of-death-certificate-backlog/) that the state added on May 24 after processing a backlog of death certificates.\\n\\n- **New York** state data between March 19 2021 and March 23 2021 includes 19,563 cases and 210 deaths added to its cumulative totals on March 24 2021 following [technical issues](https://github.com/nychealth/coronavirus-data#important-update-on-march-24-2021). The numbers of cases and deaths added were calculated by comparing data from [Johns Hopkins CSSE](https://github.com/CSSEGISandData/COVID-19) to [Governor Andrew Cuomo's daily updates](https://www.governor.ny.gov/news/governor-cuomo-updates-new-yorkers-states-progress-during-covid-19-pandemic-152).\\n\\n- **Oklahoma** added a [large number of previously unreported cases and deaths](https://oklahoma.gov/covid19/newsroom/2021/april/osdh-provides-update-on-covid-19-case--death-data.html) to its cumulative totals on April 7 2021. The 1,148 cases whose month of occurance were disclosed by the state have been redistributed in the appropriate months between December 2020 and March 2021; [1,701 deaths](https://oklahoma.gov/content/dam/ok/en/covid19/documents/weekly-epi-report/2021.04.07%20Weekly%20Epi%20Report-1.pdf) have been redistributed before March 31 2021.\\n\\n- **West Virginia** data in December 2020 and January 2021 includes [165 deaths](https://dhhr.wv.gov/News/2021/Pages/DHHR-Discovers-Unreported-COVID-19-Related-Deaths-by-Healthcare-Facilities.aspx) first reported on March 12 2021 following an audit. The state's data prior to April 27 2021 has been reduced proportionlly to account for [162 previously-reported deaths](https://dhhr.wv.gov/News/2021/Pages/COVID-19-Daily-Update-4-27-2021.aspx) that were removed following a review.\\n\"","module.exports = \"Unless otherwise stated, population figures used to adjust data come from the 2020 estimates by the [World Bank](https://data.worldbank.org/indicator/SP.POP.TOTL). Population data for **Anguilla** and **Western Sahara** come from the [United Nations Population Division](https://population.un.org/wpp/Download/Standard/Population/). Data for **Eritrea** comes from the [WHO](https://www.who.int/countries/eri/en/). Local population sources are used for: [**Ascension**](https://www.sainthelena.gov.sh/ascension-3/), [**Bonaire**, **Sint Eustatius** and **Saba**](https://opendata.cbs.nl/statline/#/CBS/nl/dataset/83698NED/table?ts=1578654405815), [**Cyprus**](https://www.mof.gov.cy/mof/cystat/statistics.nsf/All/6C25304C1E70C304C2257833003432B3/$file/Demographic_Statistics_Results-2018-EN-291119.pdf?OpenElement), the [**Falkland Islands**](https://www.fig.gov.fk/policy/statistics/census), [**Guernsey**](https://www.gov.gg/population), [**Jersey**](https://www.gov.je/News/2019/Pages/Population-estimate-for-2018-released.aspx), [**Malta**](https://nso.gov.mt/en/News_Releases/Documents/2021/07/News2021_122.pdf), [**Moldova**](https://statistica.gov.md/newsview.php?l=ro&idc=168&id=6416), [**St Helena**](https://www.sainthelena.gov.sh/population-150321/), [**Taiwan**](https://eng.stat.gov.tw/point.asp?index=9), [**Tristan da Cunha**](https://www.tristandc.com/population.php) the [**UK**](https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationestimates/datasets/populationestimatesforukenglandandwalesscotlandandnorthernireland), the [**US**](https://data.census.gov/cedsci/table?q=population&t=Populations%20and%20People&g=0100000US,%240400000&y=2020&tid=DECENNIALPL2020.P1&hidePreview=true&tp=true) and the [**Vatican City**](https://www.vaticanstate.va/it/stato-governo/note-generali/popolazione.html).\"","module.exports = \"**Help us improve these charts:** We are looking for further sources of national or municipal mortality data showing total deaths from all causes, preferably broken down by day or week and including figures for recent weeks.  If you know of a source of this data for your area, please email <coronavirus-data@ft.com>.\"","module.exports = \"Governments’ stark daily figures on the spread of coronavirus are difficult to compare across countries, and [may be significant undercounts](https://www.ft.com/content/6bd88b7d-3386-4543-b2e9-0d5c6fac846c). But the data needed to analyse the more reliable and comparable [excess mortality](https://www.ft.com/content/a26fbf7e-48f8-11ea-aeb3-955839e06441) metric are only available in a few jurisdictions, leaving these official case and death counts the best available data for much of the world.\"","module.exports = \"### US states in detail\\n\\nSince the start of the pandemic, lockdowns and social distancing procedures in the United States have been largely managed on a state-by-state basis.\"","module.exports = \"### Cases or deaths\\n\\nComparing the spread of coronavirus in different countries is difficult using the data being released by governments. Confirmed case counts depend heavily on the extent of countries’ very different testing regimes, so higher totals may simply reflect more testing.\\n\\nDeaths are somewhat more reliable, but remain problematic because countries have different rules for what deaths to include in their official numbers. The most notable difference between countries’ Covid mortality figures is whether or not they include deaths outside hospitals, particularly in care homes. Some countries like France and the UK have even changed which deaths they include during the course of the epidemic.\\n\\nFor either measure, we use a seven-day rolling average to adjust for the impact of administrative delays to reporting new data over weekends.\\n\\nThe FT is [tracking excess mortality](https://www.ft.com/coronavirus-latest) — the difference between deaths from all causes during the pandemic and the historic seasonal average — in the handful of countries and municipalities [that publish suitably recent data](https://www.ft.com/content/6bd88b7d-3386-4543-b2e9-0d5c6fac846c), and has reported on the specific circumstances in [Mexico](https://www.ft.com/content/5746d3c0-ea4c-4552-b465-ea0c491079b2), [Russia](https://www.ft.com/content/77cd2cba-b0e2-4022-a265-e0a9a7930bda), [South Africa](https://www.ft.com/content/e9cf5ed0-a590-4bd6-8c00-b41d0c4ae6e0), [Turkey](https://www.ft.com/content/80bb222c-b6eb-40ea-8014-563cbe9e0117) and [the UK](https://www.ft.com/content/40fc8904-febf-4a66-8d1c-ea3e48bbc034).\\\"\\n\\n### Logarithmic or linear scales\\n\\nThe vertical axis of our charts are shown using a [logarithmic scale](https://www.ft.com/content/3062d082-e3da-11e6-8405-9e5580d6e5fb), where the same distance on the scale represents multiplying or dividing by the same amount, instead of adding or subtracting the same amount as is the case with a linear scale. Log scales are particularly suited to displaying trends in relative rates of change, like a virus spreading. By comparing the slopes of two lines, a log scale allows us to compare epidemics at a very early stage with those that are much more advanced, even though they have very different absolute numbers of cases or deaths.\\n\\nOn a log scale, an epidemic looks like a steep diagonal line that flattens towards a horizontal line as its rate of growth slows. On the more familiar linear scale, the same data looks like a hockey stick shooting upwards, which gives a better sense of the overall size of each country’s epidemic.\\n\\n### Adjusting for population\\n\\nUnusually for cross-national data, adjusting for population isn’t strictly necessary when analysing the speed at which a virus spreads. Viruses don’t respect borders, and the rate at which they spread is not affected by the overall population of the affected country.\\n\\nPopulation matters least in the early stages of an epidemic because cases are likely to be highly concentrated in particular regions like Hubei or Lombardy. Later, though, viewing the values per 100,000 people gives a sense of the pandemic’s relative strain on countries’ resources. Switching to the “per 100k” view won’t alter the shape of each country’s curve, but will reorder them relative to one another.\\n\\nAdjusted for population, small countries with broad definitions for what cases or deaths to include in their data will look particularly badly affected, while epidemics concentrated in parts of a very populous country look surprisingly small. Try changing this setting while comparing [Belgium to the US](?areas=bel&areas=usa&cumulative=0&logScale=1&per100K=1&values=deaths#chart) or China.\\\"\\n\\nWe hide countries with populations under 80,000 to avoid distorting the scale of population-adjusted charts. You can still search from them, though: Try looking at [San Marino and Andorra](?areas=and&areas=smr&cumulative=1&logScale=1&per100K=1&values=cases#chart); both European microstates have large proportions of their population affected.\\n\"","module.exports = \"**January 7 2022:** 506 deaths reported in **South Africa** on January 6 have been redistributed between November 18 2021 and January 4 2022. The deaths were identified during an [audit of backlogged covid-19 records](https://sacoronavirus.co.za/2022/01/06/media-statement-health-department-records-covid-19-deaths-backlog/).\\n\\n**January 4 2022:** The 30,423 case and 15 deaths reported in **Northern Irleand** between January 1 and January 4 and the 22,317 cases and 8 deaths reported in **Wales** between January 3 and 4 have been redistributed equally across these periods. This corrects for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/61f5cf21-1d93-4eb2-9195-391996abd1d5).\\n\\n**December 31 2021:** Data for UK nations [will not be complete](https://coronavirus.data.gov.uk/details/whats-new/record/863ee4e6-faae-4c30-a935-431bc02640d9) and therefore will not be displayed here until January 4. Data sourced from the World Health Organization [will not be updated](https://covid19.who.int/) until January 4. The 513 deaths reported in **England** between December 27 2021 and December 30 2021 have been redistributed equally across this period. This corrects for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/258bbad6-5c7b-458c-ab88-fcc6b9df4b7a).\\n\\n**December 30 2021:** The 12,378 cases and 3 deaths reported in **Wales** between December 27 2021 and December 28 2021 have been redistributed equally across this period. This corrects for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/356ee2e5-c488-465e-9e47-305f4ffe486a). The 22,972 cases and 14 deaths reported in **Northern Ireland** between December 25 2021 and December 29 2021 have been redistributed equally across this period. This corrects for [inconstistent reporting during the holiday period](https://coronavirus.data.gov.uk/details/whats-new/record/35f8a430-8519-41be-8f52-efd794a48f78).\\n\"","if (process.env.NODE_ENV !== 'production') {\n  var hot = require('./index').hot;\n  if (module.hot) {\n    var cache = require.cache;\n\n    if (!module.parents || module.parents.length === 0) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n    // access parent\n    var parent = cache[module.parents[0]];\n    if (!parent) {\n      throw new Error(\n        'React-Hot-Loader: `react-hot-loader/root` is not supported on your system. ' +\n        'Please use `import {hot} from \"react-hot-loader\"` instead'\n      );\n    }\n\n    // remove self from a cache\n    delete cache[module.id];\n\n    // setup hot for caller\n    exports.hot = hot(parent);\n  } else {\n    fallbackHot();\n  }\n} else {\n  // prod mode\n  fallbackHot();\n}\n\nfunction fallbackHot() {\n  exports.hot = function (a) {\n    return a;\n  };\n}\n","export default function(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","var letterFrequency = [{\n  letter: 'A',\n  frequency: 0.08167\n}, {\n  letter: 'B',\n  frequency: 0.01492\n}, {\n  letter: 'C',\n  frequency: 0.02782\n}, {\n  letter: 'D',\n  frequency: 0.04253\n}, {\n  letter: 'E',\n  frequency: 0.12702\n}, {\n  letter: 'F',\n  frequency: 0.02288\n}, {\n  letter: 'G',\n  frequency: 0.02015\n}, {\n  letter: 'H',\n  frequency: 0.06094\n}, {\n  letter: 'I',\n  frequency: 0.06966\n}, {\n  letter: 'J',\n  frequency: 0.00153\n}, {\n  letter: 'K',\n  frequency: 0.00772\n}, {\n  letter: 'L',\n  frequency: 0.04025\n}, {\n  letter: 'M',\n  frequency: 0.02406\n}, {\n  letter: 'N',\n  frequency: 0.06749\n}, {\n  letter: 'O',\n  frequency: 0.07507\n}, {\n  letter: 'P',\n  frequency: 0.01929\n}, {\n  letter: 'Q',\n  frequency: 0.00095\n}, {\n  letter: 'R',\n  frequency: 0.05987\n}, {\n  letter: 'S',\n  frequency: 0.06327\n}, {\n  letter: 'T',\n  frequency: 0.09056\n}, {\n  letter: 'U',\n  frequency: 0.02758\n}, {\n  letter: 'V',\n  frequency: 0.00978\n}, {\n  letter: 'W',\n  frequency: 0.0236\n}, {\n  letter: 'X',\n  frequency: 0.0015\n}, {\n  letter: 'Y',\n  frequency: 0.01974\n}, {\n  letter: 'Z',\n  frequency: 0.00074\n}];\nexport default letterFrequency;","import _pt from \"prop-types\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nexport var defaultStyles = {\n  position: 'absolute',\n  backgroundColor: 'white',\n  color: '#666666',\n  padding: '.3rem .5rem',\n  borderRadius: '3px',\n  fontSize: '14px',\n  boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\n  lineHeight: '1em',\n  pointerEvents: 'none'\n};\nexport default function Tooltip(_ref) {\n  var className = _ref.className,\n      top = _ref.top,\n      left = _ref.left,\n      _ref$offsetLeft = _ref.offsetLeft,\n      offsetLeft = _ref$offsetLeft === void 0 ? 10 : _ref$offsetLeft,\n      _ref$offsetTop = _ref.offsetTop,\n      offsetTop = _ref$offsetTop === void 0 ? 10 : _ref$offsetTop,\n      _ref$style = _ref.style,\n      style = _ref$style === void 0 ? defaultStyles : _ref$style,\n      children = _ref.children,\n      _ref$unstyled = _ref.unstyled,\n      unstyled = _ref$unstyled === void 0 ? false : _ref$unstyled,\n      _ref$applyPositionSty = _ref.applyPositionStyle,\n      applyPositionStyle = _ref$applyPositionSty === void 0 ? false : _ref$applyPositionSty,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"className\", \"top\", \"left\", \"offsetLeft\", \"offsetTop\", \"style\", \"children\", \"unstyled\", \"applyPositionStyle\"]);\n\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    className: cx('visx-tooltip', className),\n    style: _extends({\n      top: top == null || offsetTop == null ? top : top + offsetTop,\n      left: left == null || offsetLeft == null ? left : left + offsetLeft\n    }, applyPositionStyle && {\n      position: 'absolute'\n    }, !unstyled && style)\n  }, restProps), children);\n}\nTooltip.propTypes = {\n  children: _pt.node,\n  className: _pt.string,\n  left: _pt.number,\n  offsetLeft: _pt.number,\n  offsetTop: _pt.number,\n  top: _pt.number,\n  applyPositionStyle: _pt.bool,\n  unstyled: _pt.bool\n};","function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React, { useState, useCallback } from 'react';\nexport default function useTooltip(\n/** Optional initial TooltipState. */\ninitialTooltipState) {\n  var _useState = useState(_extends({\n    tooltipOpen: false\n  }, initialTooltipState)),\n      tooltipState = _useState[0],\n      setTooltipState = _useState[1];\n\n  var showTooltip = useCallback(function (showArgs) {\n    return setTooltipState(typeof showArgs === 'function' ? function (_ref) {\n      var tooltipOpen = _ref.tooltipOpen,\n          show = _objectWithoutPropertiesLoose(_ref, [\"tooltipOpen\"]);\n\n      return _extends({}, showArgs(show), {\n        tooltipOpen: true\n      });\n    } : {\n      tooltipOpen: true,\n      tooltipLeft: showArgs.tooltipLeft,\n      tooltipTop: showArgs.tooltipTop,\n      tooltipData: showArgs.tooltipData\n    });\n  }, [setTooltipState]);\n  var hideTooltip = useCallback(function () {\n    return setTooltipState({\n      tooltipOpen: false,\n      tooltipLeft: undefined,\n      tooltipTop: undefined,\n      tooltipData: undefined\n    });\n  }, [setTooltipState]);\n  return {\n    tooltipOpen: tooltipState.tooltipOpen,\n    tooltipLeft: tooltipState.tooltipLeft,\n    tooltipTop: tooltipState.tooltipTop,\n    tooltipData: tooltipState.tooltipData,\n    updateTooltip: setTooltipState,\n    showTooltip: showTooltip,\n    hideTooltip: hideTooltip\n  };\n}","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n","import { scaleSqrt } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateSqrtScale = scaleOperator('domain', 'range', 'reverse', 'clamp', 'interpolate', 'nice', 'round', 'zero');\nexport default function createSqrtScale(config) {\n  return updateSqrtScale(scaleSqrt(), config);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { degreesToRadians } from '../util/trigonometry';\nvar DEFAULT_CENTER = {\n  x: 0,\n  y: 0\n};\nexport var getPoint = function getPoint(_ref) {\n  var _ref$sides = _ref.sides,\n      sides = _ref$sides === void 0 ? 4 : _ref$sides,\n      _ref$size = _ref.size,\n      size = _ref$size === void 0 ? 25 : _ref$size,\n      _ref$center = _ref.center,\n      center = _ref$center === void 0 ? DEFAULT_CENTER : _ref$center,\n      _ref$rotate = _ref.rotate,\n      rotate = _ref$rotate === void 0 ? 0 : _ref$rotate,\n      side = _ref.side;\n  var degrees = 360 / sides * side - rotate;\n  var radians = degreesToRadians(degrees);\n  return {\n    x: center.x + size * Math.cos(radians),\n    y: center.y + size * Math.sin(radians)\n  };\n};\nexport var getPoints = function getPoints(_ref2) {\n  var sides = _ref2.sides,\n      size = _ref2.size,\n      center = _ref2.center,\n      rotate = _ref2.rotate;\n  return new Array(sides).fill(0).map(function (_, side) {\n    return getPoint({\n      sides: sides,\n      size: size,\n      center: center,\n      rotate: rotate,\n      side: side\n    });\n  });\n};\nexport default function Polygon(_ref3) {\n  var _ref3$sides = _ref3.sides,\n      sides = _ref3$sides === void 0 ? 4 : _ref3$sides,\n      _ref3$size = _ref3.size,\n      size = _ref3$size === void 0 ? 25 : _ref3$size,\n      _ref3$center = _ref3.center,\n      center = _ref3$center === void 0 ? DEFAULT_CENTER : _ref3$center,\n      _ref3$rotate = _ref3.rotate,\n      rotate = _ref3$rotate === void 0 ? 0 : _ref3$rotate,\n      className = _ref3.className,\n      children = _ref3.children,\n      innerRef = _ref3.innerRef,\n      points = _ref3.points,\n      restProps = _objectWithoutPropertiesLoose(_ref3, [\"sides\", \"size\", \"center\", \"rotate\", \"className\", \"children\", \"innerRef\", \"points\"]);\n\n  var pointsToRender = points || getPoints({\n    sides: sides,\n    size: size,\n    center: center,\n    rotate: rotate\n  }).map(function (_ref4) {\n    var x = _ref4.x,\n        y = _ref4.y;\n    return [x, y];\n  }); // eslint-disable-next-line react/jsx-no-useless-fragment\n\n  if (children) return /*#__PURE__*/React.createElement(React.Fragment, null, children({\n    points: pointsToRender\n  }));\n  return /*#__PURE__*/React.createElement(\"polygon\", _extends({\n    ref: innerRef,\n    className: cx('visx-polygon', className),\n    points: pointsToRender.join(' ')\n  }, restProps));\n}","export var degreesToRadians = function degreesToRadians(degrees) {\n  return Math.PI / 180 * degrees;\n};","'use strict';\n\nif (!module.hot || process.env.NODE_ENV === 'production') {\n  module.exports = require('./dist/react-hot-loader.production.min.js');\n} else {\n  module.exports = require('./dist/react-hot-loader.development.js');\n}\n","\"use strict\";function _interopDefault(e){return e&&\"object\"==typeof e&&\"default\"in e?e.default:e}Object.defineProperty(exports,\"__esModule\",{value:!0});var React=_interopDefault(require(\"react\"));function AppContainer(e){return AppContainer.warnAboutHMRDisabled&&(AppContainer.warnAboutHMRDisabled=!0,console.error(\"React-Hot-Loader: misconfiguration detected, using production version in non-production environment.\"),console.error(\"React-Hot-Loader: Hot Module Replacement is not enabled.\")),React.Children.only(e.children)}AppContainer.warnAboutHMRDisabled=!1;var hot=function e(){return e.shouldWrapWithAppContainer?function(e){return function(n){return React.createElement(AppContainer,null,React.createElement(e,n))}}:function(e){return e}};hot.shouldWrapWithAppContainer=!1;var areComponentsEqual=function(e,n){return e===n},setConfig=function(){},cold=function(e){return e},configureComponent=function(){};exports.AppContainer=AppContainer,exports.hot=hot,exports.areComponentsEqual=areComponentsEqual,exports.setConfig=setConfig,exports.cold=cold,exports.configureComponent=configureComponent;\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/**\n * @file\n * Main client/SSR entry point.\n *\n * You probably don't want to touch anything in here unless you know what\n * you're doing. #justsayin\n */\n\nimport React from 'react';\nimport { hydrate, render } from 'react-dom';\nimport App from './app';\nimport '@financial-times/g-components/shared/critical-path.scss';\nimport './styles.scss';\n\nconst rootElement = document.getElementById('root');\n\n// This sets up the initial render and subsequent renders\n(async () => {\n  // Get context from JSON\n  try {\n    const context = {\n      ...(await (await fetch('./context.json')).json()),\n    };\n\n    window.context = context; // Useful for debugging context issues\n\n    if (rootElement.hasChildNodes()) {\n      hydrate(<App {...window.context} />, rootElement);\n    } else {\n      render(<App {...window.context} />, rootElement);\n    }\n  } catch (e) {\n    console.error(e); // eslint-disable-line\n  }\n})();\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n  function shim(props, propName, componentName, location, propFullName, secret) {\n    if (secret === ReactPropTypesSecret) {\n      // It is still safe when called from React.\n      return;\n    }\n    var err = new Error(\n      'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n      'Use PropTypes.checkPropTypes() to call them. ' +\n      'Read more at http://fb.me/use-check-prop-types'\n    );\n    err.name = 'Invariant Violation';\n    throw err;\n  };\n  shim.isRequired = shim;\n  function getShim() {\n    return shim;\n  };\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n  var ReactPropTypes = {\n    array: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict'\n\nvar bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n  .use(pipelineParse)\n  .use(pipelineRun)\n  .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n  ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n  p.run(ctx.tree, ctx.file, done)\n\n  function done(error, tree, file) {\n    if (error) {\n      next(error)\n    } else {\n      ctx.tree = tree\n      ctx.file = file\n      next()\n    }\n  }\n}\n\nfunction pipelineStringify(p, ctx) {\n  var result = p.stringify(ctx.tree, ctx.file)\n\n  if (result === undefined || result === null) {\n    // Empty.\n  } else if (typeof result === 'string' || buffer(result)) {\n    if ('value' in ctx.file) {\n      ctx.file.value = result\n    }\n\n    ctx.file.contents = result\n  } else {\n    ctx.file.result = result\n  }\n}\n\n// Function to create the first processor.\nfunction unified() {\n  var attachers = []\n  var transformers = trough()\n  var namespace = {}\n  var freezeIndex = -1\n  var frozen\n\n  // Data management.\n  processor.data = data\n\n  // Lock.\n  processor.freeze = freeze\n\n  // Plugins.\n  processor.attachers = attachers\n  processor.use = use\n\n  // API.\n  processor.parse = parse\n  processor.stringify = stringify\n  processor.run = run\n  processor.runSync = runSync\n  processor.process = process\n  processor.processSync = processSync\n\n  // Expose.\n  return processor\n\n  // Create a new processor based on the processor in the current scope.\n  function processor() {\n    var destination = unified()\n    var index = -1\n\n    while (++index < attachers.length) {\n      destination.use.apply(null, attachers[index])\n    }\n\n    destination.data(extend(true, {}, namespace))\n\n    return destination\n  }\n\n  // Freeze: used to signal a processor that has finished configuration.\n  //\n  // For example, take unified itself: it’s frozen.\n  // Plugins should not be added to it.\n  // Rather, it should be extended, by invoking it, before modifying it.\n  //\n  // In essence, always invoke this when exporting a processor.\n  function freeze() {\n    var values\n    var transformer\n\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      values = attachers[freezeIndex]\n\n      if (values[1] === false) {\n        continue\n      }\n\n      if (values[1] === true) {\n        values[1] = undefined\n      }\n\n      transformer = values[0].apply(processor, values.slice(1))\n\n      if (typeof transformer === 'function') {\n        transformers.use(transformer)\n      }\n    }\n\n    frozen = true\n    freezeIndex = Infinity\n\n    return processor\n  }\n\n  // Data management.\n  // Getter / setter for processor-specific informtion.\n  function data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n        namespace[key] = value\n        return processor\n      }\n\n      // Get `key`.\n      return (own.call(namespace, key) && namespace[key]) || null\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', frozen)\n      namespace = key\n      return processor\n    }\n\n    // Get space.\n    return namespace\n  }\n\n  // Plugin management.\n  //\n  // Pass it:\n  // *   an attacher and options,\n  // *   a preset,\n  // *   a list of presets, attachers, and arguments (list of attachers and\n  //     options).\n  function use(value) {\n    var settings\n\n    assertUnfrozen('use', frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin.apply(null, arguments)\n    } else if (typeof value === 'object') {\n      if ('length' in value) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new Error('Expected usable value, not `' + value + '`')\n    }\n\n    if (settings) {\n      namespace.settings = extend(namespace.settings || {}, settings)\n    }\n\n    return processor\n\n    function addPreset(result) {\n      addList(result.plugins)\n\n      if (result.settings) {\n        settings = extend(settings || {}, result.settings)\n      }\n    }\n\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value)\n      } else if (typeof value === 'object') {\n        if ('length' in value) {\n          addPlugin.apply(null, value)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new Error('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    function addList(plugins) {\n      var index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (typeof plugins === 'object' && 'length' in plugins) {\n        while (++index < plugins.length) {\n          add(plugins[index])\n        }\n      } else {\n        throw new Error('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    function addPlugin(plugin, value) {\n      var entry = find(plugin)\n\n      if (entry) {\n        if (plain(entry[1]) && plain(value)) {\n          value = extend(true, entry[1], value)\n        }\n\n        entry[1] = value\n      } else {\n        attachers.push(slice.call(arguments))\n      }\n    }\n  }\n\n  function find(plugin) {\n    var index = -1\n\n    while (++index < attachers.length) {\n      if (attachers[index][0] === plugin) {\n        return attachers[index]\n      }\n    }\n  }\n\n  // Parse a file (in string or vfile representation) into a unist node using\n  // the `Parser` on the processor.\n  function parse(doc) {\n    var file = vfile(doc)\n    var Parser\n\n    freeze()\n    Parser = processor.Parser\n    assertParser('parse', Parser)\n\n    if (newable(Parser, 'parse')) {\n      return new Parser(String(file), file).parse()\n    }\n\n    return Parser(String(file), file) // eslint-disable-line new-cap\n  }\n\n  // Run transforms on a unist node representation of a file (in string or\n  // vfile representation), async.\n  function run(node, file, cb) {\n    assertNode(node)\n    freeze()\n\n    if (!cb && typeof file === 'function') {\n      cb = file\n      file = null\n    }\n\n    if (!cb) {\n      return new Promise(executor)\n    }\n\n    executor(null, cb)\n\n    function executor(resolve, reject) {\n      transformers.run(node, vfile(file), done)\n\n      function done(error, tree, file) {\n        tree = tree || node\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(tree)\n        } else {\n          cb(null, tree, file)\n        }\n      }\n    }\n  }\n\n  // Run transforms on a unist node representation of a file (in string or\n  // vfile representation), sync.\n  function runSync(node, file) {\n    var result\n    var complete\n\n    run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    return result\n\n    function done(error, tree) {\n      complete = true\n      result = tree\n      bail(error)\n    }\n  }\n\n  // Stringify a unist node representation of a file (in string or vfile\n  // representation) into a string using the `Compiler` on the processor.\n  function stringify(node, doc) {\n    var file = vfile(doc)\n    var Compiler\n\n    freeze()\n    Compiler = processor.Compiler\n    assertCompiler('stringify', Compiler)\n    assertNode(node)\n\n    if (newable(Compiler, 'compile')) {\n      return new Compiler(node, file).compile()\n    }\n\n    return Compiler(node, file) // eslint-disable-line new-cap\n  }\n\n  // Parse a file (in string or vfile representation) into a unist node using\n  // the `Parser` on the processor, then run transforms on that node, and\n  // compile the resulting node using the `Compiler` on the processor, and\n  // store that result on the vfile.\n  function process(doc, cb) {\n    freeze()\n    assertParser('process', processor.Parser)\n    assertCompiler('process', processor.Compiler)\n\n    if (!cb) {\n      return new Promise(executor)\n    }\n\n    executor(null, cb)\n\n    function executor(resolve, reject) {\n      var file = vfile(doc)\n\n      pipeline.run(processor, {file: file}, done)\n\n      function done(error) {\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          cb(null, file)\n        }\n      }\n    }\n  }\n\n  // Process the given document (in string or vfile representation), sync.\n  function processSync(doc) {\n    var file\n    var complete\n\n    freeze()\n    assertParser('processSync', processor.Parser)\n    assertCompiler('processSync', processor.Compiler)\n    file = vfile(doc)\n\n    process(file, done)\n\n    assertDone('processSync', 'process', complete)\n\n    return file\n\n    function done(error) {\n      complete = true\n      bail(error)\n    }\n  }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n  return (\n    typeof value === 'function' &&\n    value.prototype &&\n    // A function with keys in its prototype is probably a constructor.\n    // Classes’ prototype methods are not enumerable, so we check if some value\n    // exists in the prototype.\n    (keys(value.prototype) || name in value.prototype)\n  )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n  var key\n  for (key in value) {\n    return true\n  }\n\n  return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n  if (typeof Parser !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Parser`')\n  }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n  if (typeof Compiler !== 'function') {\n    throw new Error('Cannot `' + name + '` without `Compiler`')\n  }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot invoke `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n  if (!node || typeof node.type !== 'string') {\n    throw new Error('Expected node, got `' + node + '`')\n  }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n  if (err) {\n    throw err\n  }\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n  var fns = []\n  var middleware = {}\n\n  middleware.run = run\n  middleware.use = use\n\n  return middleware\n\n  // Run `fns`.  Last argument must be a completion handler.\n  function run() {\n    var index = -1\n    var input = slice.call(arguments, 0, -1)\n    var done = arguments[arguments.length - 1]\n\n    if (typeof done !== 'function') {\n      throw new Error('Expected function as last argument, not ' + done)\n    }\n\n    next.apply(null, [null].concat(input))\n\n    // Run the next `fn`, if any.\n    function next(err) {\n      var fn = fns[++index]\n      var params = slice.call(arguments, 0)\n      var values = params.slice(1)\n      var length = input.length\n      var pos = -1\n\n      if (err) {\n        done(err)\n        return\n      }\n\n      // Copy non-nully input into values.\n      while (++pos < length) {\n        if (values[pos] === null || values[pos] === undefined) {\n          values[pos] = input[pos]\n        }\n      }\n\n      input = values\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next).apply(null, input)\n      } else {\n        done.apply(null, [null].concat(input))\n      }\n    }\n  }\n\n  // Add `fn` to the list.\n  function use(fn) {\n    if (typeof fn !== 'function') {\n      throw new Error('Expected `fn` to be a function, not ' + fn)\n    }\n\n    fns.push(fn)\n\n    return middleware\n  }\n}\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n  var invoked\n\n  return wrapped\n\n  function wrapped() {\n    var params = slice.call(arguments, 0)\n    var callback = fn.length > params.length\n    var result\n\n    if (callback) {\n      params.push(done)\n    }\n\n    try {\n      result = fn.apply(null, params)\n    } catch (error) {\n      // Well, this is quite the pickle.\n      // `fn` received a callback and invoked it (thus continuing the pipeline),\n      // but later also threw an error.\n      // We’re not about to restart the pipeline again, so the only thing left\n      // to do is to throw the thing instead.\n      if (callback && invoked) {\n        throw error\n      }\n\n      return done(error)\n    }\n\n    if (!callback) {\n      if (result && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  // Invoke `next`, only once.\n  function done() {\n    if (!invoked) {\n      invoked = true\n\n      callback.apply(null, arguments)\n    }\n  }\n\n  // Invoke `done` with one value.\n  // Tracks if an error is passed, too.\n  function then(value) {\n    done(null, value)\n  }\n}\n","'use strict'\n\nmodule.exports = require('./lib')\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n  var message = new VMessage(reason, position, origin)\n\n  if (this.path) {\n    message.name = this.path + ':' + message.name\n    message.file = this.path\n  }\n\n  message.fatal = false\n\n  this.messages.push(message)\n\n  return message\n}\n\n// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n  var message = this.message.apply(this, arguments)\n\n  message.fatal = true\n\n  throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n  var message = this.message.apply(this, arguments)\n\n  message.fatal = null\n\n  return message\n}\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n  var parts\n  var range\n  var location\n\n  if (typeof position === 'string') {\n    origin = position\n    position = null\n  }\n\n  parts = parseOrigin(origin)\n  range = stringify(position) || '1:1'\n\n  location = {\n    start: {line: null, column: null},\n    end: {line: null, column: null}\n  }\n\n  // Node.\n  if (position && position.position) {\n    position = position.position\n  }\n\n  if (position) {\n    // Position.\n    if (position.start) {\n      location = position\n      position = position.start\n    } else {\n      // Point.\n      location.start = position\n    }\n  }\n\n  if (reason.stack) {\n    this.stack = reason.stack\n    reason = reason.message\n  }\n\n  this.message = reason\n  this.name = range\n  this.reason = reason\n  this.line = position ? position.line : null\n  this.column = position ? position.column : null\n  this.location = location\n  this.source = parts[0]\n  this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n  var result = [null, null]\n  var index\n\n  if (typeof origin === 'string') {\n    index = origin.indexOf(':')\n\n    if (index === -1) {\n      result[1] = origin\n    } else {\n      result[0] = origin.slice(0, index)\n      result[1] = origin.slice(index + 1)\n    }\n  }\n\n  return result\n}\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n  get: getDirname,\n  set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n  get: getBasename,\n  set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n  get: getExtname,\n  set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n  var prop\n  var index\n\n  if (!options) {\n    options = {}\n  } else if (typeof options === 'string' || buffer(options)) {\n    options = {contents: options}\n  } else if ('message' in options && 'messages' in options) {\n    return options\n  }\n\n  if (!(this instanceof VFile)) {\n    return new VFile(options)\n  }\n\n  this.data = {}\n  this.messages = []\n  this.history = []\n  this.cwd = proc.cwd()\n\n  // Set path related properties in the correct order.\n  index = -1\n\n  while (++index < order.length) {\n    prop = order[index]\n\n    if (own.call(options, prop)) {\n      this[prop] = options[prop]\n    }\n  }\n\n  // Set non-path related properties.\n  for (prop in options) {\n    if (order.indexOf(prop) < 0) {\n      this[prop] = options[prop]\n    }\n  }\n}\n\nfunction getPath() {\n  return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n  assertNonEmpty(path, 'path')\n\n  if (this.path !== path) {\n    this.history.push(path)\n  }\n}\n\nfunction getDirname() {\n  return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n  assertPath(this.path, 'dirname')\n  this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n  return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n  assertNonEmpty(basename, 'basename')\n  assertPart(basename, 'basename')\n  this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n  return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n  assertPart(extname, 'extname')\n  assertPath(this.path, 'extname')\n\n  if (extname) {\n    if (extname.charCodeAt(0) !== 46 /* `.` */) {\n      throw new Error('`extname` must start with `.`')\n    }\n\n    if (extname.indexOf('.', 1) > -1) {\n      throw new Error('`extname` cannot contain multiple dots')\n    }\n  }\n\n  this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n  return typeof this.path === 'string'\n    ? p.basename(this.path, this.extname)\n    : undefined\n}\n\nfunction setStem(stem) {\n  assertNonEmpty(stem, 'stem')\n  assertPart(stem, 'stem')\n  this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n  return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n  if (part && part.indexOf(p.sep) > -1) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n    )\n  }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n","'use strict'\n\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexports.basename = basename\nexports.dirname = dirname\nexports.extname = extname\nexports.join = join\nexports.sep = '/'\n\nfunction basename(path, ext) {\n  var start = 0\n  var end = -1\n  var index\n  var firstNonSlashEnd\n  var seenNonSlash\n  var extIndex\n\n  if (ext !== undefined && typeof ext !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  index = path.length\n\n  if (ext === undefined || !ext.length || ext.length > path.length) {\n    while (index--) {\n      if (path.charCodeAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (ext === path) {\n    return ''\n  }\n\n  firstNonSlashEnd = -1\n  extIndex = ext.length - 1\n\n  while (index--) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n          if (extIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\nfunction dirname(path) {\n  var end\n  var unmatchedSlash\n  var index\n\n  assertPath(path)\n\n  if (!path.length) {\n    return '.'\n  }\n\n  end = -1\n  index = path.length\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.charCodeAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.charCodeAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n    ? '//'\n    : path.slice(0, end)\n}\n\nfunction extname(path) {\n  var startDot = -1\n  var startPart = 0\n  var end = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  var preDotState = 0\n  var unmatchedSlash\n  var code\n  var index\n\n  assertPath(path)\n\n  index = path.length\n\n  while (index--) {\n    code = path.charCodeAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\nfunction join() {\n  var index = -1\n  var joined\n\n  while (++index < arguments.length) {\n    assertPath(arguments[index])\n\n    if (arguments[index]) {\n      joined =\n        joined === undefined\n          ? arguments[index]\n          : joined + '/' + arguments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  var absolute\n  var value\n\n  assertPath(path)\n\n  absolute = path.charCodeAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  value = normalizeString(path, !absolute)\n\n  if (!value.length && !absolute) {\n    value = '.'\n  }\n\n  if (value.length && path.charCodeAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n// Resolve `.` and `..` elements in a path with directory names.\nfunction normalizeString(path, allowAboveRoot) {\n  var result = ''\n  var lastSegmentLength = 0\n  var lastSlash = -1\n  var dots = 0\n  var index = -1\n  var code\n  var lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.charCodeAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n          result.charCodeAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            /* istanbul ignore else - No clue how to cover it. */\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n","'use strict'\n\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexports.cwd = cwd\n\nfunction cwd() {\n  return '/'\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n  var self = this\n\n  this.Parser = parse\n\n  function parse(doc) {\n    return fromMarkdown(\n      doc,\n      Object.assign({}, self.data('settings'), options, {\n        // Note: these options are not in the readme.\n        // The goal is for them to be set by plugins on `data` instead of being\n        // passed by users.\n        extensions: self.data('micromarkExtensions') || [],\n        mdastExtensions: self.data('fromMarkdownExtensions') || []\n      })\n    )\n  }\n}\n","'use strict'\n\nmodule.exports = require('./dist')\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n  if (typeof encoding !== 'string') {\n    options = encoding\n    encoding = undefined\n  }\n\n  return compiler(options)(\n    postprocess(\n      parser(options).document().write(preprocessor()(value, encoding, true))\n    )\n  )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n  var settings = options || {}\n  var config = configure(\n    {\n      transforms: [],\n      canContainEols: [\n        'emphasis',\n        'fragment',\n        'heading',\n        'paragraph',\n        'strong'\n      ],\n\n      enter: {\n        autolink: opener(link),\n        autolinkProtocol: onenterdata,\n        autolinkEmail: onenterdata,\n        atxHeading: opener(heading),\n        blockQuote: opener(blockQuote),\n        characterEscape: onenterdata,\n        characterReference: onenterdata,\n        codeFenced: opener(codeFlow),\n        codeFencedFenceInfo: buffer,\n        codeFencedFenceMeta: buffer,\n        codeIndented: opener(codeFlow, buffer),\n        codeText: opener(codeText, buffer),\n        codeTextData: onenterdata,\n        data: onenterdata,\n        codeFlowValue: onenterdata,\n        definition: opener(definition),\n        definitionDestinationString: buffer,\n        definitionLabelString: buffer,\n        definitionTitleString: buffer,\n        emphasis: opener(emphasis),\n        hardBreakEscape: opener(hardBreak),\n        hardBreakTrailing: opener(hardBreak),\n        htmlFlow: opener(html, buffer),\n        htmlFlowData: onenterdata,\n        htmlText: opener(html, buffer),\n        htmlTextData: onenterdata,\n        image: opener(image),\n        label: buffer,\n        link: opener(link),\n        listItem: opener(listItem),\n        listItemValue: onenterlistitemvalue,\n        listOrdered: opener(list, onenterlistordered),\n        listUnordered: opener(list),\n        paragraph: opener(paragraph),\n        reference: onenterreference,\n        referenceString: buffer,\n        resourceDestinationString: buffer,\n        resourceTitleString: buffer,\n        setextHeading: opener(heading),\n        strong: opener(strong),\n        thematicBreak: opener(thematicBreak)\n      },\n\n      exit: {\n        atxHeading: closer(),\n        atxHeadingSequence: onexitatxheadingsequence,\n        autolink: closer(),\n        autolinkEmail: onexitautolinkemail,\n        autolinkProtocol: onexitautolinkprotocol,\n        blockQuote: closer(),\n        characterEscapeValue: onexitdata,\n        characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n        characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n        characterReferenceValue: onexitcharacterreferencevalue,\n        codeFenced: closer(onexitcodefenced),\n        codeFencedFence: onexitcodefencedfence,\n        codeFencedFenceInfo: onexitcodefencedfenceinfo,\n        codeFencedFenceMeta: onexitcodefencedfencemeta,\n        codeFlowValue: onexitdata,\n        codeIndented: closer(onexitcodeindented),\n        codeText: closer(onexitcodetext),\n        codeTextData: onexitdata,\n        data: onexitdata,\n        definition: closer(),\n        definitionDestinationString: onexitdefinitiondestinationstring,\n        definitionLabelString: onexitdefinitionlabelstring,\n        definitionTitleString: onexitdefinitiontitlestring,\n        emphasis: closer(),\n        hardBreakEscape: closer(onexithardbreak),\n        hardBreakTrailing: closer(onexithardbreak),\n        htmlFlow: closer(onexithtmlflow),\n        htmlFlowData: onexitdata,\n        htmlText: closer(onexithtmltext),\n        htmlTextData: onexitdata,\n        image: closer(onexitimage),\n        label: onexitlabel,\n        labelText: onexitlabeltext,\n        lineEnding: onexitlineending,\n        link: closer(onexitlink),\n        listItem: closer(),\n        listOrdered: closer(),\n        listUnordered: closer(),\n        paragraph: closer(),\n        referenceString: onexitreferencestring,\n        resourceDestinationString: onexitresourcedestinationstring,\n        resourceTitleString: onexitresourcetitlestring,\n        resource: onexitresource,\n        setextHeading: closer(onexitsetextheading),\n        setextHeadingLineSequence: onexitsetextheadinglinesequence,\n        setextHeadingText: onexitsetextheadingtext,\n        strong: closer(),\n        thematicBreak: closer()\n      }\n    },\n\n    settings.mdastExtensions || []\n  )\n\n  var data = {}\n\n  return compile\n\n  function compile(events) {\n    var tree = {type: 'root', children: []}\n    var stack = [tree]\n    var tokenStack = []\n    var listStack = []\n    var index = -1\n    var handler\n    var listStart\n\n    var context = {\n      stack: stack,\n      tokenStack: tokenStack,\n      config: config,\n      enter: enter,\n      exit: exit,\n      buffer: buffer,\n      resume: resume,\n      setData: setData,\n      getData: getData\n    }\n\n    while (++index < events.length) {\n      // We preprocess lists to add `listItem` tokens, and to infer whether\n      // items the list itself are spread out.\n      if (\n        events[index][1].type === 'listOrdered' ||\n        events[index][1].type === 'listUnordered'\n      ) {\n        if (events[index][0] === 'enter') {\n          listStack.push(index)\n        } else {\n          listStart = listStack.pop(index)\n          index = prepareList(events, listStart, index)\n        }\n      }\n    }\n\n    index = -1\n\n    while (++index < events.length) {\n      handler = config[events[index][0]]\n\n      if (own.call(handler, events[index][1].type)) {\n        handler[events[index][1].type].call(\n          assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n          events[index][1]\n        )\n      }\n    }\n\n    if (tokenStack.length) {\n      throw new Error(\n        'Cannot close document, a token (`' +\n          tokenStack[tokenStack.length - 1].type +\n          '`, ' +\n          stringifyPosition({\n            start: tokenStack[tokenStack.length - 1].start,\n            end: tokenStack[tokenStack.length - 1].end\n          }) +\n          ') is still open'\n      )\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(\n        events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n      ),\n\n      end: point(\n        events.length\n          ? events[events.length - 2][1].end\n          : {line: 1, column: 1, offset: 0}\n      )\n    }\n\n    index = -1\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree\n    }\n\n    return tree\n  }\n\n  function prepareList(events, start, length) {\n    var index = start - 1\n    var containerBalance = -1\n    var listSpread = false\n    var listItem\n    var tailIndex\n    var lineIndex\n    var tailEvent\n    var event\n    var firstBlankLineIndex\n    var atMarker\n\n    while (++index <= length) {\n      event = events[index]\n\n      if (\n        event[1].type === 'listUnordered' ||\n        event[1].type === 'listOrdered' ||\n        event[1].type === 'blockQuote'\n      ) {\n        if (event[0] === 'enter') {\n          containerBalance++\n        } else {\n          containerBalance--\n        }\n\n        atMarker = undefined\n      } else if (event[1].type === 'lineEndingBlank') {\n        if (event[0] === 'enter') {\n          if (\n            listItem &&\n            !atMarker &&\n            !containerBalance &&\n            !firstBlankLineIndex\n          ) {\n            firstBlankLineIndex = index\n          }\n\n          atMarker = undefined\n        }\n      } else if (\n        event[1].type === 'linePrefix' ||\n        event[1].type === 'listItemValue' ||\n        event[1].type === 'listItemMarker' ||\n        event[1].type === 'listItemPrefix' ||\n        event[1].type === 'listItemPrefixWhitespace'\n      ) {\n        // Empty.\n      } else {\n        atMarker = undefined\n      }\n\n      if (\n        (!containerBalance &&\n          event[0] === 'enter' &&\n          event[1].type === 'listItemPrefix') ||\n        (containerBalance === -1 &&\n          event[0] === 'exit' &&\n          (event[1].type === 'listUnordered' ||\n            event[1].type === 'listOrdered'))\n      ) {\n        if (listItem) {\n          tailIndex = index\n          lineIndex = undefined\n\n          while (tailIndex--) {\n            tailEvent = events[tailIndex]\n\n            if (\n              tailEvent[1].type === 'lineEnding' ||\n              tailEvent[1].type === 'lineEndingBlank'\n            ) {\n              if (tailEvent[0] === 'exit') continue\n\n              if (lineIndex) {\n                events[lineIndex][1].type = 'lineEndingBlank'\n                listSpread = true\n              }\n\n              tailEvent[1].type = 'lineEnding'\n              lineIndex = tailIndex\n            } else if (\n              tailEvent[1].type === 'linePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefix' ||\n              tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n              tailEvent[1].type === 'blockQuoteMarker' ||\n              tailEvent[1].type === 'listItemIndent'\n            ) {\n              // Empty\n            } else {\n              break\n            }\n          }\n\n          if (\n            firstBlankLineIndex &&\n            (!lineIndex || firstBlankLineIndex < lineIndex)\n          ) {\n            listItem._spread = true\n          }\n\n          // Fix position.\n          listItem.end = point(\n            lineIndex ? events[lineIndex][1].start : event[1].end\n          )\n\n          events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n          index++\n          length++\n        }\n\n        // Create a new list item.\n        if (event[1].type === 'listItemPrefix') {\n          listItem = {\n            type: 'listItem',\n            _spread: false,\n            start: point(event[1].start)\n          }\n\n          events.splice(index, 0, ['enter', listItem, event[2]])\n          index++\n          length++\n          firstBlankLineIndex = undefined\n          atMarker = true\n        }\n      }\n    }\n\n    events[start][1]._spread = listSpread\n    return length\n  }\n\n  function setData(key, value) {\n    data[key] = value\n  }\n\n  function getData(key) {\n    return data[key]\n  }\n\n  function point(d) {\n    return {line: d.line, column: d.column, offset: d.offset}\n  }\n\n  function opener(create, and) {\n    return open\n\n    function open(token) {\n      enter.call(this, create(token), token)\n      if (and) and.call(this, token)\n    }\n  }\n\n  function buffer() {\n    this.stack.push({type: 'fragment', children: []})\n  }\n\n  function enter(node, token) {\n    this.stack[this.stack.length - 1].children.push(node)\n    this.stack.push(node)\n    this.tokenStack.push(token)\n    node.position = {start: point(token.start)}\n    return node\n  }\n\n  function closer(and) {\n    return close\n\n    function close(token) {\n      if (and) and.call(this, token)\n      exit.call(this, token)\n    }\n  }\n\n  function exit(token) {\n    var node = this.stack.pop()\n    var open = this.tokenStack.pop()\n\n    if (!open) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          stringifyPosition({start: token.start, end: token.end}) +\n          '): it’s not open'\n      )\n    } else if (open.type !== token.type) {\n      throw new Error(\n        'Cannot close `' +\n          token.type +\n          '` (' +\n          stringifyPosition({start: token.start, end: token.end}) +\n          '): a different token (`' +\n          open.type +\n          '`, ' +\n          stringifyPosition({start: open.start, end: open.end}) +\n          ') is open'\n      )\n    }\n\n    node.position.end = point(token.end)\n    return node\n  }\n\n  function resume() {\n    return toString(this.stack.pop())\n  }\n\n  //\n  // Handlers.\n  //\n\n  function onenterlistordered() {\n    setData('expectingFirstListItemValue', true)\n  }\n\n  function onenterlistitemvalue(token) {\n    if (getData('expectingFirstListItemValue')) {\n      this.stack[this.stack.length - 2].start = parseInt(\n        this.sliceSerialize(token),\n        10\n      )\n\n      setData('expectingFirstListItemValue')\n    }\n  }\n\n  function onexitcodefencedfenceinfo() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].lang = data\n  }\n\n  function onexitcodefencedfencemeta() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].meta = data\n  }\n\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (getData('flowCodeInside')) return\n    this.buffer()\n    setData('flowCodeInside', true)\n  }\n\n  function onexitcodefenced() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data.replace(\n      /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n      ''\n    )\n\n    setData('flowCodeInside')\n  }\n\n  function onexitcodeindented() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexitdefinitionlabelstring(token) {\n    // Discard label, use the source content instead.\n    var label = this.resume()\n    this.stack[this.stack.length - 1].label = label\n    this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  function onexitdefinitiontitlestring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].title = data\n  }\n\n  function onexitdefinitiondestinationstring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].url = data\n  }\n\n  function onexitatxheadingsequence(token) {\n    if (!this.stack[this.stack.length - 1].depth) {\n      this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n        token\n      ).length\n    }\n  }\n\n  function onexitsetextheadingtext() {\n    setData('setextHeadingSlurpLineEnding', true)\n  }\n\n  function onexitsetextheadinglinesequence(token) {\n    this.stack[this.stack.length - 1].depth =\n      this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n  }\n\n  function onexitsetextheading() {\n    setData('setextHeadingSlurpLineEnding')\n  }\n\n  function onenterdata(token) {\n    var siblings = this.stack[this.stack.length - 1].children\n    var tail = siblings[siblings.length - 1]\n\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text()\n      tail.position = {start: point(token.start)}\n      this.stack[this.stack.length - 1].children.push(tail)\n    }\n\n    this.stack.push(tail)\n  }\n\n  function onexitdata(token) {\n    var tail = this.stack.pop()\n    tail.value += this.sliceSerialize(token)\n    tail.position.end = point(token.end)\n  }\n\n  function onexitlineending(token) {\n    var context = this.stack[this.stack.length - 1]\n\n    // If we’re at a hard break, include the line ending in there.\n    if (getData('atHardBreak')) {\n      context.children[context.children.length - 1].position.end = point(\n        token.end\n      )\n\n      setData('atHardBreak')\n      return\n    }\n\n    if (\n      !getData('setextHeadingSlurpLineEnding') &&\n      config.canContainEols.indexOf(context.type) > -1\n    ) {\n      onenterdata.call(this, token)\n      onexitdata.call(this, token)\n    }\n  }\n\n  function onexithardbreak() {\n    setData('atHardBreak', true)\n  }\n\n  function onexithtmlflow() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexithtmltext() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexitcodetext() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].value = data\n  }\n\n  function onexitlink() {\n    var context = this.stack[this.stack.length - 1]\n\n    // To do: clean.\n    if (getData('inReference')) {\n      context.type += 'Reference'\n      context.referenceType = getData('referenceType') || 'shortcut'\n      delete context.url\n      delete context.title\n    } else {\n      delete context.identifier\n      delete context.label\n      delete context.referenceType\n    }\n\n    setData('referenceType')\n  }\n\n  function onexitimage() {\n    var context = this.stack[this.stack.length - 1]\n\n    // To do: clean.\n    if (getData('inReference')) {\n      context.type += 'Reference'\n      context.referenceType = getData('referenceType') || 'shortcut'\n      delete context.url\n      delete context.title\n    } else {\n      delete context.identifier\n      delete context.label\n      delete context.referenceType\n    }\n\n    setData('referenceType')\n  }\n\n  function onexitlabeltext(token) {\n    this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n  }\n\n  function onexitlabel() {\n    var fragment = this.stack[this.stack.length - 1]\n    var value = this.resume()\n\n    this.stack[this.stack.length - 1].label = value\n\n    // Assume a reference.\n    setData('inReference', true)\n\n    if (this.stack[this.stack.length - 1].type === 'link') {\n      this.stack[this.stack.length - 1].children = fragment.children\n    } else {\n      this.stack[this.stack.length - 1].alt = value\n    }\n  }\n\n  function onexitresourcedestinationstring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].url = data\n  }\n\n  function onexitresourcetitlestring() {\n    var data = this.resume()\n    this.stack[this.stack.length - 1].title = data\n  }\n\n  function onexitresource() {\n    setData('inReference')\n  }\n\n  function onenterreference() {\n    setData('referenceType', 'collapsed')\n  }\n\n  function onexitreferencestring(token) {\n    var label = this.resume()\n    this.stack[this.stack.length - 1].label = label\n    this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n      this.sliceSerialize(token)\n    ).toLowerCase()\n    setData('referenceType', 'full')\n  }\n\n  function onexitcharacterreferencemarker(token) {\n    setData('characterReferenceType', token.type)\n  }\n\n  function onexitcharacterreferencevalue(token) {\n    var data = this.sliceSerialize(token)\n    var type = getData('characterReferenceType')\n    var value\n    var tail\n\n    if (type) {\n      value = safeFromInt(\n        data,\n        type === 'characterReferenceMarkerNumeric' ? 10 : 16\n      )\n\n      setData('characterReferenceType')\n    } else {\n      value = decode(data)\n    }\n\n    tail = this.stack.pop()\n    tail.value += value\n    tail.position.end = point(token.end)\n  }\n\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token)\n    this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n  }\n\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token)\n    this.stack[this.stack.length - 1].url =\n      'mailto:' + this.sliceSerialize(token)\n  }\n\n  //\n  // Creaters.\n  //\n\n  function blockQuote() {\n    return {type: 'blockquote', children: []}\n  }\n\n  function codeFlow() {\n    return {type: 'code', lang: null, meta: null, value: ''}\n  }\n\n  function codeText() {\n    return {type: 'inlineCode', value: ''}\n  }\n\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: ''\n    }\n  }\n\n  function emphasis() {\n    return {type: 'emphasis', children: []}\n  }\n\n  function heading() {\n    return {type: 'heading', depth: undefined, children: []}\n  }\n\n  function hardBreak() {\n    return {type: 'break'}\n  }\n\n  function html() {\n    return {type: 'html', value: ''}\n  }\n\n  function image() {\n    return {type: 'image', title: null, url: '', alt: null}\n  }\n\n  function link() {\n    return {type: 'link', title: null, url: '', children: []}\n  }\n\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: []\n    }\n  }\n\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: []\n    }\n  }\n\n  function paragraph() {\n    return {type: 'paragraph', children: []}\n  }\n\n  function strong() {\n    return {type: 'strong', children: []}\n  }\n\n  function text() {\n    return {type: 'text', value: ''}\n  }\n\n  function thematicBreak() {\n    return {type: 'thematicBreak'}\n  }\n}\n\nfunction configure(config, extensions) {\n  var index = -1\n\n  while (++index < extensions.length) {\n    extension(config, extensions[index])\n  }\n\n  return config\n}\n\nfunction extension(config, extension) {\n  var key\n  var left\n\n  for (key in extension) {\n    left = own.call(config, key) ? config[key] : (config[key] = {})\n\n    if (key === 'canContainEols' || key === 'transforms') {\n      config[key] = [].concat(left, extension[key])\n    } else {\n      Object.assign(left, extension[key])\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = toString\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n  return (\n    (node &&\n      (node.value ||\n        node.alt ||\n        node.title ||\n        ('children' in node && all(node.children)) ||\n        ('length' in node && all(node)))) ||\n    ''\n  )\n}\n\nfunction all(values) {\n  var result = []\n  var index = -1\n\n  while (++index < values.length) {\n    result[index] = toString(values[index])\n  }\n\n  return result.join('')\n}\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n  var code = parseInt(value, base)\n\n  if (\n    // C0 except for HT, LF, FF, CR, space\n    code < 9 ||\n    code === 11 ||\n    (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n    (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n    (code > 55295 && code < 57344) || // Noncharacters.\n    (code > 64975 && code < 65008) ||\n    (code & 65535) === 65535 ||\n    (code & 65535) === 65534 || // Out of range\n    code > 1114111\n  ) {\n    return '\\uFFFD'\n  }\n\n  return fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar miniflat = require('./util/miniflat.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n  var settings = options || {}\n  var parser = {\n    defined: [],\n    constructs: combineExtensions(\n      [constructs].concat(miniflat(settings.extensions))\n    ),\n    content: create(content),\n    document: create(document),\n    flow: create(flow),\n    string: create(text.string),\n    text: create(text.text)\n  }\n  return parser\n\n  function create(initializer) {\n    return creator\n\n    function creator(from) {\n      return createTokenizer(parser, initializer, from)\n    }\n  }\n}\n\nmodule.exports = parse\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n  var contentStart = effects.attempt(\n    this.parser.constructs.contentInitial,\n    afterContentStartConstruct,\n    paragraphInitial\n  )\n  var previous\n  return contentStart\n\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, contentStart, 'linePrefix')\n  }\n\n  function paragraphInitial(code) {\n    effects.enter('paragraph')\n    return lineStart(code)\n  }\n\n  function lineStart(code) {\n    var token = effects.enter('chunkText', {\n      contentType: 'text',\n      previous: previous\n    })\n\n    if (previous) {\n      previous.next = token\n    }\n\n    previous = token\n    return data(code)\n  }\n\n  function data(code) {\n    if (code === null) {\n      effects.exit('chunkText')\n      effects.exit('paragraph')\n      effects.consume(code)\n      return\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      effects.exit('chunkText')\n      return lineStart\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n  tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n  tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n  var self = this\n  var stack = []\n  var continued = 0\n  var inspectConstruct = {\n    tokenize: tokenizeInspect,\n    partial: true\n  }\n  var inspectResult\n  var childFlow\n  var childToken\n  return start\n\n  function start(code) {\n    if (continued < stack.length) {\n      self.containerState = stack[continued][1]\n      return effects.attempt(\n        stack[continued][0].continuation,\n        documentContinue,\n        documentContinued\n      )(code)\n    }\n\n    return documentContinued(code)\n  }\n\n  function documentContinue(code) {\n    continued++\n    return start(code)\n  }\n\n  function documentContinued(code) {\n    // If we’re in a concrete construct (such as when expecting another line of\n    // HTML, or we resulted in lazy content), we can immediately start flow.\n    if (inspectResult && inspectResult.flowContinue) {\n      return flowStart(code)\n    }\n\n    self.interrupt =\n      childFlow &&\n      childFlow.currentConstruct &&\n      childFlow.currentConstruct.interruptible\n    self.containerState = {}\n    return effects.attempt(\n      containerConstruct,\n      containerContinue,\n      flowStart\n    )(code)\n  }\n\n  function containerContinue(code) {\n    stack.push([self.currentConstruct, self.containerState])\n    self.containerState = undefined\n    return documentContinued(code)\n  }\n\n  function flowStart(code) {\n    if (code === null) {\n      exitContainers(0, true)\n      effects.consume(code)\n      return\n    }\n\n    childFlow = childFlow || self.parser.flow(self.now())\n    effects.enter('chunkFlow', {\n      contentType: 'flow',\n      previous: childToken,\n      _tokenizer: childFlow\n    })\n    return flowContinue(code)\n  }\n\n  function flowContinue(code) {\n    if (code === null) {\n      continueFlow(effects.exit('chunkFlow'))\n      return flowStart(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.consume(code)\n      continueFlow(effects.exit('chunkFlow'))\n      return effects.check(inspectConstruct, documentAfterPeek)\n    }\n\n    effects.consume(code)\n    return flowContinue\n  }\n\n  function documentAfterPeek(code) {\n    exitContainers(\n      inspectResult.continued,\n      inspectResult && inspectResult.flowEnd\n    )\n    continued = 0\n    return start(code)\n  }\n\n  function continueFlow(token) {\n    if (childToken) childToken.next = token\n    childToken = token\n    childFlow.lazy = inspectResult && inspectResult.lazy\n    childFlow.defineSkip(token.start)\n    childFlow.write(self.sliceStream(token))\n  }\n\n  function exitContainers(size, end) {\n    var index = stack.length // Close the flow.\n\n    if (childFlow && end) {\n      childFlow.write([null])\n      childToken = childFlow = undefined\n    } // Exit open containers.\n\n    while (index-- > size) {\n      self.containerState = stack[index][1]\n      stack[index][0].exit.call(self, effects)\n    }\n\n    stack.length = size\n  }\n\n  function tokenizeInspect(effects, ok) {\n    var subcontinued = 0\n    inspectResult = {}\n    return inspectStart\n\n    function inspectStart(code) {\n      if (subcontinued < stack.length) {\n        self.containerState = stack[subcontinued][1]\n        return effects.attempt(\n          stack[subcontinued][0].continuation,\n          inspectContinue,\n          inspectLess\n        )(code)\n      } // If we’re continued but in a concrete flow, we can’t have more\n      // containers.\n\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        inspectResult.flowContinue = true\n        return inspectDone(code)\n      }\n\n      self.interrupt =\n        childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n      self.containerState = {}\n      return effects.attempt(\n        containerConstruct,\n        inspectFlowEnd,\n        inspectDone\n      )(code)\n    }\n\n    function inspectContinue(code) {\n      subcontinued++\n      return self.containerState._closeFlow\n        ? inspectFlowEnd(code)\n        : inspectStart(code)\n    }\n\n    function inspectLess(code) {\n      if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n        // Maybe another container?\n        self.containerState = {}\n        return effects.attempt(\n          containerConstruct,\n          inspectFlowEnd, // Maybe flow, or a blank line?\n          effects.attempt(\n            lazyFlowConstruct,\n            inspectFlowEnd,\n            effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n          )\n        )(code)\n      } // Otherwise we’re interrupting.\n\n      return inspectFlowEnd(code)\n    }\n\n    function inspectLazy(code) {\n      // Act as if all containers are continued.\n      subcontinued = stack.length\n      inspectResult.lazy = true\n      inspectResult.flowContinue = true\n      return inspectDone(code)\n    } // We’re done with flow if we have more containers, or an interruption.\n\n    function inspectFlowEnd(code) {\n      inspectResult.flowEnd = true\n      return inspectDone(code)\n    }\n\n    function inspectDone(code) {\n      inspectResult.continued = subcontinued\n      self.interrupt = self.containerState = undefined\n      return ok(code)\n    }\n  }\n}\n\nfunction tokenizeContainer(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(this.parser.constructs.document, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4\n  )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.lazy(this.parser.constructs.flow, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4\n  )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar content = require('../tokenize/content.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n  var self = this\n  var initial = effects.attempt(\n    // Try to parse a blank line.\n    partialBlankLine,\n    atBlankEnding, // Try to parse initial flow (essentially, only code).\n    effects.attempt(\n      this.parser.constructs.flowInitial,\n      afterConstruct,\n      factorySpace(\n        effects,\n        effects.attempt(\n          this.parser.constructs.flow,\n          afterConstruct,\n          effects.attempt(content, afterConstruct)\n        ),\n        'linePrefix'\n      )\n    )\n  )\n  return initial\n\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    self.currentConstruct = undefined\n    return initial\n  }\n\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code)\n      return\n    }\n\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    self.currentConstruct = undefined\n    return initial\n  }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar subtokenize = require('../util/subtokenize.js')\nvar factorySpace = require('./factory-space.js')\n\n// No name because it must not be turned off.\nvar content = {\n  tokenize: tokenizeContent,\n  resolve: resolveContent,\n  interruptible: true,\n  lazy: true\n}\nvar continuationConstruct = {\n  tokenize: tokenizeContinuation,\n  partial: true\n} // Content is transparent: it’s parsed right now. That way, definitions are also\n// parsed right now: before text in paragraphs (specifically, media) are parsed.\n\nfunction resolveContent(events) {\n  subtokenize(events)\n  return events\n}\n\nfunction tokenizeContent(effects, ok) {\n  var previous\n  return start\n\n  function start(code) {\n    effects.enter('content')\n    previous = effects.enter('chunkContent', {\n      contentType: 'content'\n    })\n    return data(code)\n  }\n\n  function data(code) {\n    if (code === null) {\n      return contentEnd(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.check(\n        continuationConstruct,\n        contentContinue,\n        contentEnd\n      )(code)\n    } // Data.\n\n    effects.consume(code)\n    return data\n  }\n\n  function contentEnd(code) {\n    effects.exit('chunkContent')\n    effects.exit('content')\n    return ok(code)\n  }\n\n  function contentContinue(code) {\n    effects.consume(code)\n    effects.exit('chunkContent')\n    previous = previous.next = effects.enter('chunkContent', {\n      contentType: 'content',\n      previous: previous\n    })\n    return data\n  }\n}\n\nfunction tokenizeContinuation(effects, ok, nok) {\n  var self = this\n  return startLookahead\n\n  function startLookahead(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, prefixed, 'linePrefix')\n  }\n\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    if (\n      self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||\n      prefixSize(self.events, 'linePrefix') < 4\n    ) {\n      return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n    }\n\n    return ok(code)\n  }\n}\n\nmodule.exports = content\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n  var all = {}\n  var index = -1\n\n  while (++index < extensions.length) {\n    extension(all, extensions[index])\n  }\n\n  return all\n}\n\nfunction extension(all, extension) {\n  var hook\n  var left\n  var right\n  var code\n\n  for (hook in extension) {\n    left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n    right = extension[hook]\n\n    for (code in right) {\n      left[code] = constructs(\n        miniflat(right[code]),\n        hasOwnProperty.call(left, code) ? left[code] : []\n      )\n    }\n  }\n}\n\nfunction constructs(list, existing) {\n  var index = -1\n  var before = []\n\n  while (++index < list.length) {\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  chunkedSplice(existing, 0, 0, before)\n  return existing\n}\n\nmodule.exports = combineExtensions\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedPush = require('./chunked-push.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar shallow = require('./shallow.js')\nvar sliceChunks = require('./slice-chunks.js')\n\n// Create a tokenizer.\n// Tokenizers deal with one type of data (e.g., containers, flow, text).\n// The parser is the object dealing with it all.\n// `initialize` works like other constructs, except that only its `tokenize`\n// function is used, in which case it doesn’t receive an `ok` or `nok`.\n// `from` can be given to set the point before the first character, although\n// when further lines are indented, they must be set with `defineSkip`.\nfunction createTokenizer(parser, initialize, from) {\n  var point = from\n    ? shallow(from)\n    : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }\n  var columnStart = {}\n  var resolveAllConstructs = []\n  var chunks = []\n  var stack = []\n\n  var effects = {\n    consume: consume,\n    enter: enter,\n    exit: exit,\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    }),\n    lazy: constructFactory(onsuccessfulcheck, {\n      lazy: true\n    })\n  } // State and tools for resolving and serializing.\n\n  var context = {\n    previous: null,\n    events: [],\n    parser: parser,\n    sliceStream: sliceStream,\n    sliceSerialize: sliceSerialize,\n    now: now,\n    defineSkip: skip,\n    write: write\n  } // The state function.\n\n  var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize)\n  } // Store where we are in the input stream.\n\n  point._index = 0\n  point._bufferIndex = -1\n  return context\n\n  function write(slice) {\n    chunks = chunkedPush(chunks, slice)\n    main() // Exit if we’re not done, resolve might change stuff.\n\n    if (chunks[chunks.length - 1] !== null) {\n      return []\n    }\n\n    addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n    context.events = resolveAll(resolveAllConstructs, context.events, context)\n    return context.events\n  } //\n  // Tools.\n  //\n\n  function sliceSerialize(token) {\n    return serializeChunks(sliceStream(token))\n  }\n\n  function sliceStream(token) {\n    return sliceChunks(chunks, token)\n  }\n\n  function now() {\n    return shallow(point)\n  }\n\n  function skip(value) {\n    columnStart[value.line] = value.column\n    accountForPotentialSkip()\n  } //\n  // State management.\n  //\n  // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n  // `consume`).\n  // Here is where we walk through the chunks, which either include strings of\n  // several characters, or numerical character codes.\n  // The reason to do this in a loop instead of a call is so the stack can\n  // drain.\n\n  function main() {\n    var chunkIndex\n    var chunk\n\n    while (point._index < chunks.length) {\n      chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n      if (typeof chunk === 'string') {\n        chunkIndex = point._index\n\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0\n        }\n\n        while (\n          point._index === chunkIndex &&\n          point._bufferIndex < chunk.length\n        ) {\n          go(chunk.charCodeAt(point._bufferIndex))\n        }\n      } else {\n        go(chunk)\n      }\n    }\n  } // Deal with one code.\n\n  function go(code) {\n    state = state(code)\n  } // Move a character forward.\n\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++\n      point.column = 1\n      point.offset += code === -3 ? 2 : 1\n      accountForPotentialSkip()\n    } else if (code !== -1) {\n      point.column++\n      point.offset++\n    } // Not in a string chunk.\n\n    if (point._bufferIndex < 0) {\n      point._index++\n    } else {\n      point._bufferIndex++ // At end of string chunk.\n\n      if (point._bufferIndex === chunks[point._index].length) {\n        point._bufferIndex = -1\n        point._index++\n      }\n    } // Expose the previous character.\n\n    context.previous = code // Mark as consumed.\n  } // Start a token.\n\n  function enter(type, fields) {\n    var token = fields || {}\n    token.type = type\n    token.start = now()\n    context.events.push(['enter', token, context])\n    stack.push(token)\n    return token\n  } // Stop a token.\n\n  function exit(type) {\n    var token = stack.pop()\n    token.end = now()\n    context.events.push(['exit', token, context])\n    return token\n  } // Use results.\n\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from)\n  } // Discard results.\n\n  function onsuccessfulcheck(construct, info) {\n    info.restore()\n  } // Factory to attempt/check/interrupt.\n\n  function constructFactory(onreturn, fields) {\n    return hook // Handle either an object mapping codes to constructs, a list of\n    // constructs, or a single construct.\n\n    function hook(constructs, returnState, bogusState) {\n      var listOfConstructs\n      var constructIndex\n      var currentConstruct\n      var info\n      return constructs.tokenize || 'length' in constructs\n        ? handleListOfConstructs(miniflat(constructs))\n        : handleMapOfConstructs\n\n      function handleMapOfConstructs(code) {\n        if (code in constructs || null in constructs) {\n          return handleListOfConstructs(\n            constructs.null\n              ? /* c8 ignore next */\n                miniflat(constructs[code]).concat(miniflat(constructs.null))\n              : constructs[code]\n          )(code)\n        }\n\n        return bogusState(code)\n      }\n\n      function handleListOfConstructs(list) {\n        listOfConstructs = list\n        constructIndex = 0\n        return handleConstruct(list[constructIndex])\n      }\n\n      function handleConstruct(construct) {\n        return start\n\n        function start(code) {\n          // To do: not nede to store if there is no bogus state, probably?\n          // Currently doesn’t work because `inspect` in document does a check\n          // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n          // by not storing.\n          info = store()\n          currentConstruct = construct\n\n          if (!construct.partial) {\n            context.currentConstruct = construct\n          }\n\n          if (\n            construct.name &&\n            context.parser.constructs.disable.null.indexOf(construct.name) > -1\n          ) {\n            return nok()\n          }\n\n          return construct.tokenize.call(\n            fields ? assign({}, context, fields) : context,\n            effects,\n            ok,\n            nok\n          )(code)\n        }\n      }\n\n      function ok(code) {\n        onreturn(currentConstruct, info)\n        return returnState\n      }\n\n      function nok(code) {\n        info.restore()\n\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex])\n        }\n\n        return bogusState\n      }\n    }\n  }\n\n  function addResult(construct, from) {\n    if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n      resolveAllConstructs.push(construct)\n    }\n\n    if (construct.resolve) {\n      chunkedSplice(\n        context.events,\n        from,\n        context.events.length - from,\n        construct.resolve(context.events.slice(from), context)\n      )\n    }\n\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context)\n    }\n  }\n\n  function store() {\n    var startPoint = now()\n    var startPrevious = context.previous\n    var startCurrentConstruct = context.currentConstruct\n    var startEventsIndex = context.events.length\n    var startStack = Array.from(stack)\n    return {\n      restore: restore,\n      from: startEventsIndex\n    }\n\n    function restore() {\n      point = startPoint\n      context.previous = startPrevious\n      context.currentConstruct = startCurrentConstruct\n      context.events.length = startEventsIndex\n      stack = startStack\n      accountForPotentialSkip()\n    }\n  }\n\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line]\n      point.offset += columnStart[point.line] - 1\n    }\n  }\n}\n\nmodule.exports = createTokenizer\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n  var index = -1\n  var result = []\n  var chunk\n  var value\n  var atTab\n\n  while (++index < chunks.length) {\n    chunk = chunks[index]\n\n    if (typeof chunk === 'string') {\n      value = chunk\n    } else if (chunk === -5) {\n      value = '\\r'\n    } else if (chunk === -4) {\n      value = '\\n'\n    } else if (chunk === -3) {\n      value = '\\r' + '\\n'\n    } else if (chunk === -2) {\n      value = '\\t'\n    } else if (chunk === -1) {\n      if (atTab) continue\n      value = ' '\n    } else {\n      // Currently only replacement character.\n      value = fromCharCode(chunk)\n    }\n\n    atTab = chunk === -2\n    result.push(value)\n  }\n\n  return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n  var startIndex = token.start._index\n  var startBufferIndex = token.start._bufferIndex\n  var endIndex = token.end._index\n  var endBufferIndex = token.end._bufferIndex\n  var view\n\n  if (startIndex === endIndex) {\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n  } else {\n    view = chunks.slice(startIndex, endIndex)\n\n    if (startBufferIndex > -1) {\n      view[0] = view[0].slice(startBufferIndex)\n    }\n\n    if (endBufferIndex > 0) {\n      view.push(chunks[endIndex].slice(0, endBufferIndex))\n    }\n  }\n\n  return view\n}\n\nmodule.exports = sliceChunks\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\n\nvar document = {\n  42: list,\n  // Asterisk\n  43: list,\n  // Plus sign\n  45: list,\n  // Dash\n  48: list,\n  // 0\n  49: list,\n  // 1\n  50: list,\n  // 2\n  51: list,\n  // 3\n  52: list,\n  // 4\n  53: list,\n  // 5\n  54: list,\n  // 6\n  55: list,\n  // 7\n  56: list,\n  // 8\n  57: list,\n  // 9\n  62: blockQuote // Greater than\n}\nvar contentInitial = {\n  91: definition // Left square bracket\n}\nvar flowInitial = {\n  '-2': codeIndented,\n  // Horizontal tab\n  '-1': codeIndented,\n  // Virtual space\n  32: codeIndented // Space\n}\nvar flow = {\n  35: headingAtx,\n  // Number sign\n  42: thematicBreak,\n  // Asterisk\n  45: [setextUnderline, thematicBreak],\n  // Dash\n  60: htmlFlow,\n  // Less than\n  61: setextUnderline,\n  // Equals to\n  95: thematicBreak,\n  // Underscore\n  96: codeFenced,\n  // Grave accent\n  126: codeFenced // Tilde\n}\nvar string = {\n  38: characterReference,\n  // Ampersand\n  92: characterEscape // Backslash\n}\nvar text = {\n  '-5': lineEnding,\n  // Carriage return\n  '-4': lineEnding,\n  // Line feed\n  '-3': lineEnding,\n  // Carriage return + line feed\n  33: labelStartImage,\n  // Exclamation mark\n  38: characterReference,\n  // Ampersand\n  42: attention,\n  // Asterisk\n  60: [autolink, htmlText],\n  // Less than\n  91: labelStartLink,\n  // Left square bracket\n  92: [hardBreakEscape, characterEscape],\n  // Backslash\n  93: labelEnd,\n  // Right square bracket\n  95: attention,\n  // Underscore\n  96: codeText // Grave accent\n}\nvar insideSpan = {\n  null: [attention, text$1.resolver]\n}\nvar disable = {\n  null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar chunkedPush = require('../util/chunked-push.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar shallow = require('../util/shallow.js')\n\nvar attention = {\n  name: 'attention',\n  tokenize: tokenizeAttention,\n  resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n  var index = -1\n  var open\n  var group\n  var text\n  var openingSequence\n  var closingSequence\n  var use\n  var nextEvents\n  var offset // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it’s\n  // a bottleneck for malicious stuff.\n\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (\n      events[index][0] === 'enter' &&\n      events[index][1].type === 'attentionSequence' &&\n      events[index][1]._close\n    ) {\n      open = index // Now walk back to find an opener.\n\n      while (open--) {\n        // Find a token that can open the closer.\n        if (\n          events[open][0] === 'exit' &&\n          events[open][1].type === 'attentionSequence' &&\n          events[open][1]._open && // If the markers are the same:\n          context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n            context.sliceSerialize(events[index][1]).charCodeAt(0)\n        ) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don’t match.\n          if (\n            (events[open][1]._close || events[index][1]._open) &&\n            (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n            !(\n              (events[open][1].end.offset -\n                events[open][1].start.offset +\n                events[index][1].end.offset -\n                events[index][1].start.offset) %\n              3\n            )\n          ) {\n            continue\n          } // Number of markers to use from the sequence.\n\n          use =\n            events[open][1].end.offset - events[open][1].start.offset > 1 &&\n            events[index][1].end.offset - events[index][1].start.offset > 1\n              ? 2\n              : 1\n          openingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start: movePoint(shallow(events[open][1].end), -use),\n            end: shallow(events[open][1].end)\n          }\n          closingSequence = {\n            type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n            start: shallow(events[index][1].start),\n            end: movePoint(shallow(events[index][1].start), use)\n          }\n          text = {\n            type: use > 1 ? 'strongText' : 'emphasisText',\n            start: shallow(events[open][1].end),\n            end: shallow(events[index][1].start)\n          }\n          group = {\n            type: use > 1 ? 'strong' : 'emphasis',\n            start: shallow(openingSequence.start),\n            end: shallow(closingSequence.end)\n          }\n          events[open][1].end = shallow(openingSequence.start)\n          events[index][1].start = shallow(closingSequence.end)\n          nextEvents = [] // If there are more markers in the opening, add them before.\n\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = chunkedPush(nextEvents, [\n              ['enter', events[open][1], context],\n              ['exit', events[open][1], context]\n            ])\n          } // Opening.\n\n          nextEvents = chunkedPush(nextEvents, [\n            ['enter', group, context],\n            ['enter', openingSequence, context],\n            ['exit', openingSequence, context],\n            ['enter', text, context]\n          ]) // Between.\n\n          nextEvents = chunkedPush(\n            nextEvents,\n            resolveAll(\n              context.parser.constructs.insideSpan.null,\n              events.slice(open + 1, index),\n              context\n            )\n          ) // Closing.\n\n          nextEvents = chunkedPush(nextEvents, [\n            ['exit', text, context],\n            ['enter', closingSequence, context],\n            ['exit', closingSequence, context],\n            ['exit', group, context]\n          ]) // If there are more markers in the closing, add them after.\n\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2\n            nextEvents = chunkedPush(nextEvents, [\n              ['enter', events[index][1], context],\n              ['exit', events[index][1], context]\n            ])\n          } else {\n            offset = 0\n          }\n\n          chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n          index = open + nextEvents.length - offset - 2\n          break\n        }\n      }\n    }\n  } // Remove remaining sequences.\n\n  index = -1\n\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data'\n    }\n  }\n\n  return events\n}\n\nfunction tokenizeAttention(effects, ok) {\n  var before = classifyCharacter(this.previous)\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('attentionSequence')\n    marker = code\n    return sequence(code)\n  }\n\n  function sequence(code) {\n    var token\n    var after\n    var open\n    var close\n\n    if (code === marker) {\n      effects.consume(code)\n      return sequence\n    }\n\n    token = effects.exit('attentionSequence')\n    after = classifyCharacter(code)\n    open = !after || (after === 2 && before)\n    close = !before || (before === 2 && after)\n    token._open = marker === 42 ? open : open && (before || !close)\n    token._close = marker === 42 ? close : close && (after || !open)\n    return ok(code)\n  }\n}\n\nmodule.exports = attention\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction classifyCharacter(code) {\n  if (\n    code === null ||\n    markdownLineEndingOrSpace(code) ||\n    unicodeWhitespace(code)\n  ) {\n    return 1\n  }\n\n  if (unicodePunctuation(code)) {\n    return 2\n  }\n}\n\nmodule.exports = classifyCharacter\n","'use strict'\n\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\nvar regexCheck = require('../util/regex-check.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n  point.column += offset\n  point.offset += offset\n  point._bufferIndex += offset\n  return point\n}\n\nmodule.exports = movePoint\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n  var size = 1\n  return start\n\n  function start(code) {\n    effects.enter('autolink')\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.enter('autolinkProtocol')\n    return open\n  }\n\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return schemeOrEmailAtext\n    }\n\n    return asciiAtext(code) ? emailAtext(code) : nok(code)\n  }\n\n  function schemeOrEmailAtext(code) {\n    return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n      ? schemeInsideOrEmailAtext(code)\n      : emailAtext(code)\n  }\n\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code)\n      return urlInside\n    }\n\n    if (\n      (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n      size++ < 32\n    ) {\n      effects.consume(code)\n      return schemeInsideOrEmailAtext\n    }\n\n    return emailAtext(code)\n  }\n\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit('autolinkProtocol')\n      return end(code)\n    }\n\n    if (code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return urlInside\n  }\n\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (asciiAtext(code)) {\n      effects.consume(code)\n      return emailAtext\n    }\n\n    return nok(code)\n  }\n\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n  }\n\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code)\n      size = 0\n      return emailAtSignOrDot\n    }\n\n    if (code === 62) {\n      // Exit, then change the type.\n      effects.exit('autolinkProtocol').type = 'autolinkEmail'\n      return end(code)\n    }\n\n    return emailValue(code)\n  }\n\n  function emailValue(code) {\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      effects.consume(code)\n      return code === 45 ? emailValue : emailLabel\n    }\n\n    return nok(code)\n  }\n\n  function end(code) {\n    effects.enter('autolinkMarker')\n    effects.consume(code)\n    effects.exit('autolinkMarker')\n    effects.exit('autolink')\n    return ok\n  }\n}\n\nmodule.exports = autolink\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart,\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    if (code === 62) {\n      if (!self.containerState.open) {\n        effects.enter('blockQuote', {\n          _container: true\n        })\n        self.containerState.open = true\n      }\n\n      effects.enter('blockQuotePrefix')\n      effects.enter('blockQuoteMarker')\n      effects.consume(code)\n      effects.exit('blockQuoteMarker')\n      return after\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter('blockQuotePrefixWhitespace')\n      effects.consume(code)\n      effects.exit('blockQuotePrefixWhitespace')\n      effects.exit('blockQuotePrefix')\n      return ok\n    }\n\n    effects.exit('blockQuotePrefix')\n    return ok(code)\n  }\n}\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  return factorySpace(\n    effects,\n    effects.attempt(blockQuote, ok, nok),\n    'linePrefix',\n    this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4\n  )\n}\n\nfunction exit(effects) {\n  effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('characterEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    effects.exit('escapeMarker')\n    return open\n  }\n\n  function open(code) {\n    if (asciiPunctuation(code)) {\n      effects.enter('characterEscapeValue')\n      effects.consume(code)\n      effects.exit('characterEscapeValue')\n      effects.exit('characterEscape')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = characterEscape\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nvar decodeEntity = require('parse-entities/decode-entity.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar asciiHexDigit = require('../character/ascii-hex-digit.js')\n\nfunction _interopDefaultLegacy(e) {\n  return e && typeof e === 'object' && 'default' in e ? e : {default: e}\n}\n\nvar decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)\n\nvar characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n}\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  var self = this\n  var size = 0\n  var max\n  var test\n  return start\n\n  function start(code) {\n    effects.enter('characterReference')\n    effects.enter('characterReferenceMarker')\n    effects.consume(code)\n    effects.exit('characterReferenceMarker')\n    return open\n  }\n\n  function open(code) {\n    if (code === 35) {\n      effects.enter('characterReferenceMarkerNumeric')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerNumeric')\n      return numeric\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 31\n    test = asciiAlphanumeric\n    return value(code)\n  }\n\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter('characterReferenceMarkerHexadecimal')\n      effects.consume(code)\n      effects.exit('characterReferenceMarkerHexadecimal')\n      effects.enter('characterReferenceValue')\n      max = 6\n      test = asciiHexDigit\n      return value\n    }\n\n    effects.enter('characterReferenceValue')\n    max = 7\n    test = asciiDigit\n    return value(code)\n  }\n\n  function value(code) {\n    var token\n\n    if (code === 59 && size) {\n      token = effects.exit('characterReferenceValue')\n\n      if (\n        test === asciiAlphanumeric &&\n        !decodeEntity__default['default'](self.sliceSerialize(token))\n      ) {\n        return nok(code)\n      }\n\n      effects.enter('characterReferenceMarker')\n      effects.consume(code)\n      effects.exit('characterReferenceMarker')\n      effects.exit('characterReference')\n      return ok\n    }\n\n    if (test(code) && size++ < max) {\n      effects.consume(code)\n      return value\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = characterReference\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeFenced = {\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced,\n  concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  var self = this\n  var closingFenceConstruct = {\n    tokenize: tokenizeClosingFence,\n    partial: true\n  }\n  var initialPrefix = prefixSize(this.events, 'linePrefix')\n  var sizeOpen = 0\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('codeFenced')\n    effects.enter('codeFencedFence')\n    effects.enter('codeFencedFenceSequence')\n    marker = code\n    return sequenceOpen(code)\n  }\n\n  function sequenceOpen(code) {\n    if (code === marker) {\n      effects.consume(code)\n      sizeOpen++\n      return sequenceOpen\n    }\n\n    effects.exit('codeFencedFenceSequence')\n    return sizeOpen < 3\n      ? nok(code)\n      : factorySpace(effects, infoOpen, 'whitespace')(code)\n  }\n\n  function infoOpen(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceInfo')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return info(code)\n  }\n\n  function info(code) {\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceInfo')\n      return factorySpace(effects, infoAfter, 'whitespace')(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return info\n  }\n\n  function infoAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return openAfter(code)\n    }\n\n    effects.enter('codeFencedFenceMeta')\n    effects.enter('chunkString', {\n      contentType: 'string'\n    })\n    return meta(code)\n  }\n\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('chunkString')\n      effects.exit('codeFencedFenceMeta')\n      return openAfter(code)\n    }\n\n    if (code === 96 && code === marker) return nok(code)\n    effects.consume(code)\n    return meta\n  }\n\n  function openAfter(code) {\n    effects.exit('codeFencedFence')\n    return self.interrupt ? ok(code) : content(code)\n  }\n\n  function content(code) {\n    if (code === null) {\n      return after(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return effects.attempt(\n        closingFenceConstruct,\n        after,\n        initialPrefix\n          ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n          : content\n      )\n    }\n\n    effects.enter('codeFlowValue')\n    return contentContinue(code)\n  }\n\n  function contentContinue(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return content(code)\n    }\n\n    effects.consume(code)\n    return contentContinue\n  }\n\n  function after(code) {\n    effects.exit('codeFenced')\n    return ok(code)\n  }\n\n  function tokenizeClosingFence(effects, ok, nok) {\n    var size = 0\n    return factorySpace(\n      effects,\n      closingSequenceStart,\n      'linePrefix',\n      this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n        ? undefined\n        : 4\n    )\n\n    function closingSequenceStart(code) {\n      effects.enter('codeFencedFence')\n      effects.enter('codeFencedFenceSequence')\n      return closingSequence(code)\n    }\n\n    function closingSequence(code) {\n      if (code === marker) {\n        effects.consume(code)\n        size++\n        return closingSequence\n      }\n\n      if (size < sizeOpen) return nok(code)\n      effects.exit('codeFencedFenceSequence')\n      return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n    }\n\n    function closingSequenceEnd(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit('codeFencedFence')\n        return ok(code)\n      }\n\n      return nok(code)\n    }\n  }\n}\n\nmodule.exports = codeFenced\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar factorySpace = require('./factory-space.js')\n\nvar codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented,\n  resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n  tokenize: tokenizeIndentedContent,\n  partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n  var code = {\n    type: 'codeIndented',\n    start: events[0][1].start,\n    end: events[events.length - 1][1].end\n  }\n  chunkedSplice(events, 0, 0, [['enter', code, context]])\n  chunkedSplice(events, events.length, 0, [['exit', code, context]])\n  return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n  function afterPrefix(code) {\n    if (code === null) {\n      return ok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n    }\n\n    effects.enter('codeFlowValue')\n    return content(code)\n  }\n\n  function content(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('codeFlowValue')\n      return afterPrefix(code)\n    }\n\n    effects.consume(code)\n    return content\n  }\n}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n  var self = this\n  return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n  function afterPrefix(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n    }\n\n    return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n  }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n  name: 'codeText',\n  tokenize: tokenizeCodeText,\n  resolve: resolveCodeText,\n  previous: previous\n}\n\nfunction resolveCodeText(events) {\n  var tailExitIndex = events.length - 4\n  var headEnterIndex = 3\n  var index\n  var enter // If we start and end with an EOL or a space.\n\n  if (\n    (events[headEnterIndex][1].type === 'lineEnding' ||\n      events[headEnterIndex][1].type === 'space') &&\n    (events[tailExitIndex][1].type === 'lineEnding' ||\n      events[tailExitIndex][1].type === 'space')\n  ) {\n    index = headEnterIndex // And we have data.\n\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === 'codeTextData') {\n        // Then we have padding.\n        events[tailExitIndex][1].type = events[headEnterIndex][1].type =\n          'codeTextPadding'\n        headEnterIndex += 2\n        tailExitIndex -= 2\n        break\n      }\n    }\n  } // Merge adjacent spaces and data.\n\n  index = headEnterIndex - 1\n  tailExitIndex++\n\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n        enter = index\n      }\n    } else if (\n      index === tailExitIndex ||\n      events[index][1].type === 'lineEnding'\n    ) {\n      events[enter][1].type = 'codeTextData'\n\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end\n        events.splice(enter + 2, index - enter - 2)\n        tailExitIndex -= index - enter - 2\n        index = enter + 2\n      }\n\n      enter = undefined\n    }\n  }\n\n  return events\n}\n\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return (\n    code !== 96 ||\n    this.events[this.events.length - 1][1].type === 'characterEscape'\n  )\n}\n\nfunction tokenizeCodeText(effects, ok, nok) {\n  var sizeOpen = 0\n  var size\n  var token\n  return start\n\n  function start(code) {\n    effects.enter('codeText')\n    effects.enter('codeTextSequence')\n    return openingSequence(code)\n  }\n\n  function openingSequence(code) {\n    if (code === 96) {\n      effects.consume(code)\n      sizeOpen++\n      return openingSequence\n    }\n\n    effects.exit('codeTextSequence')\n    return gap(code)\n  }\n\n  function gap(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code)\n    } // Closing fence?\n    // Could also be data.\n\n    if (code === 96) {\n      token = effects.enter('codeTextSequence')\n      size = 0\n      return closingSequence(code)\n    } // Tabs don’t work, and virtual spaces don’t make sense.\n\n    if (code === 32) {\n      effects.enter('space')\n      effects.consume(code)\n      effects.exit('space')\n      return gap\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return gap\n    } // Data.\n\n    effects.enter('codeTextData')\n    return data(code)\n  } // In code.\n\n  function data(code) {\n    if (\n      code === null ||\n      code === 32 ||\n      code === 96 ||\n      markdownLineEnding(code)\n    ) {\n      effects.exit('codeTextData')\n      return gap(code)\n    }\n\n    effects.consume(code)\n    return data\n  } // Closing fence.\n\n  function closingSequence(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code)\n      size++\n      return closingSequence\n    } // Done!\n\n    if (size === sizeOpen) {\n      effects.exit('codeTextSequence')\n      effects.exit('codeText')\n      return ok(code)\n    } // More or less accents: mark as data.\n\n    token.type = 'codeTextData'\n    return data(code)\n  }\n}\n\nmodule.exports = codeText\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factorySpace = require('./factory-space.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n  tokenize: tokenizeTitle,\n  partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n  var self = this\n  var identifier\n  return start\n\n  function start(code) {\n    effects.enter('definition')\n    return factoryLabel.call(\n      self,\n      effects,\n      labelAfter,\n      nok,\n      'definitionLabel',\n      'definitionLabelMarker',\n      'definitionLabelString'\n    )(code)\n  }\n\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(\n      self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n    )\n\n    if (code === 58) {\n      effects.enter('definitionMarker')\n      effects.consume(code)\n      effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n      return factoryWhitespace(\n        effects,\n        factoryDestination(\n          effects,\n          effects.attempt(\n            titleConstruct,\n            factorySpace(effects, after, 'whitespace'),\n            factorySpace(effects, after, 'whitespace')\n          ),\n          nok,\n          'definitionDestination',\n          'definitionDestinationLiteral',\n          'definitionDestinationLiteralMarker',\n          'definitionDestinationRaw',\n          'definitionDestinationString'\n        )\n      )\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('definition')\n\n      if (self.parser.defined.indexOf(identifier) < 0) {\n        self.parser.defined.push(identifier)\n      }\n\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    return markdownLineEndingOrSpace(code)\n      ? factoryWhitespace(effects, before)(code)\n      : nok(code)\n  }\n\n  function before(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(\n        effects,\n        factorySpace(effects, after, 'whitespace'),\n        nok,\n        'definitionTitle',\n        'definitionTitleMarker',\n        'definitionTitleString'\n      )(code)\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n  }\n}\n\nmodule.exports = definition\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.enter('hardBreakEscape')\n    effects.enter('escapeMarker')\n    effects.consume(code)\n    return open\n  }\n\n  function open(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit('escapeMarker')\n      effects.exit('hardBreakEscape')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = hardBreakEscape\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar factorySpace = require('./factory-space.js')\n\nvar headingAtx = {\n  name: 'headingAtx',\n  tokenize: tokenizeHeadingAtx,\n  resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n  var contentEnd = events.length - 2\n  var contentStart = 3\n  var content\n  var text // Prefix whitespace, part of the opening.\n\n  if (events[contentStart][1].type === 'whitespace') {\n    contentStart += 2\n  } // Suffix whitespace, part of the closing.\n\n  if (\n    contentEnd - 2 > contentStart &&\n    events[contentEnd][1].type === 'whitespace'\n  ) {\n    contentEnd -= 2\n  }\n\n  if (\n    events[contentEnd][1].type === 'atxHeadingSequence' &&\n    (contentStart === contentEnd - 1 ||\n      (contentEnd - 4 > contentStart &&\n        events[contentEnd - 2][1].type === 'whitespace'))\n  ) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n  }\n\n  if (contentEnd > contentStart) {\n    content = {\n      type: 'atxHeadingText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    }\n    text = {\n      type: 'chunkText',\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: 'text'\n    }\n    chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [\n      ['enter', content, context],\n      ['enter', text, context],\n      ['exit', text, context],\n      ['exit', content, context]\n    ])\n  }\n\n  return events\n}\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  var self = this\n  var size = 0\n  return start\n\n  function start(code) {\n    effects.enter('atxHeading')\n    effects.enter('atxHeadingSequence')\n    return fenceOpenInside(code)\n  }\n\n  function fenceOpenInside(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code)\n      return fenceOpenInside\n    }\n\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingSequence')\n      return self.interrupt ? ok(code) : headingBreak(code)\n    }\n\n    return nok(code)\n  }\n\n  function headingBreak(code) {\n    if (code === 35) {\n      effects.enter('atxHeadingSequence')\n      return sequence(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('atxHeading')\n      return ok(code)\n    }\n\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headingBreak, 'whitespace')(code)\n    }\n\n    effects.enter('atxHeadingText')\n    return data(code)\n  }\n\n  function sequence(code) {\n    if (code === 35) {\n      effects.consume(code)\n      return sequence\n    }\n\n    effects.exit('atxHeadingSequence')\n    return headingBreak(code)\n  }\n\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit('atxHeadingText')\n      return headingBreak(code)\n    }\n\n    effects.consume(code)\n    return data\n  }\n}\n\nmodule.exports = headingAtx\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar fromCharCode = require('../constant/from-char-code.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\nvar partialBlankLine = require('./partial-blank-line.js')\n\nvar htmlFlow = {\n  name: 'htmlFlow',\n  tokenize: tokenizeHtmlFlow,\n  resolveTo: resolveToHtmlFlow,\n  concrete: true\n}\nvar nextBlankConstruct = {\n  tokenize: tokenizeNextBlank,\n  partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n  var index = events.length\n\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n      break\n    }\n  }\n\n  if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n    events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n    events.splice(index - 2, 2)\n  }\n\n  return events\n}\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  var self = this\n  var kind\n  var startTag\n  var buffer\n  var index\n  var marker\n  return start\n\n  function start(code) {\n    effects.enter('htmlFlow')\n    effects.enter('htmlFlowData')\n    effects.consume(code)\n    return open\n  }\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationStart\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = fromCharCode(code)\n      startTag = true\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  function declarationStart(code) {\n    if (code === 45) {\n      effects.consume(code)\n      kind = 2\n      return commentOpenInside\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      kind = 5\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpenInside\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      kind = 4\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuationDeclarationInside\n    }\n\n    return nok(code)\n  }\n\n  function cdataOpenInside(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length\n        ? self.interrupt\n          ? ok\n          : continuation\n        : cdataOpenInside\n    }\n\n    return nok(code)\n  }\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      buffer = fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  function tagName(code) {\n    if (\n      code === null ||\n      code === 47 ||\n      code === 62 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      if (\n        code !== 47 &&\n        startTag &&\n        htmlRawNames.indexOf(buffer.toLowerCase()) > -1\n      ) {\n        kind = 1\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\n        kind = 6\n\n        if (code === 47) {\n          effects.consume(code)\n          return basicSelfClosing\n        }\n\n        return self.interrupt ? ok(code) : continuation(code)\n      }\n\n      kind = 7 // Do not support complete HTML when interrupting.\n\n      return self.interrupt\n        ? nok(code)\n        : startTag\n        ? completeAttributeNameBefore(code)\n        : completeClosingTagAfter(code)\n    }\n\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      buffer += fromCharCode(code)\n      return tagName\n    }\n\n    return nok(code)\n  }\n\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return self.interrupt ? ok : continuation\n    }\n\n    return nok(code)\n  }\n\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeClosingTagAfter\n    }\n\n    return completeEnd(code)\n  }\n\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return completeEnd\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameBefore\n    }\n\n    return completeEnd(code)\n  }\n\n  function completeAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return completeAttributeName\n    }\n\n    return completeAttributeNameAfter(code)\n  }\n\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeNameAfter\n    }\n\n    return completeAttributeNameBefore(code)\n  }\n\n  function completeAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return completeAttributeValueQuoted\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAttributeValueBefore\n    }\n\n    marker = undefined\n    return completeAttributeValueUnquoted(code)\n  }\n\n  function completeAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return completeAttributeValueQuotedAfter\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code)\n    }\n\n    effects.consume(code)\n    return completeAttributeValueQuoted\n  }\n\n  function completeAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96 ||\n      markdownLineEndingOrSpace(code)\n    ) {\n      return completeAttributeNameAfter(code)\n    }\n\n    effects.consume(code)\n    return completeAttributeValueUnquoted\n  }\n\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code)\n    }\n\n    return nok(code)\n  }\n\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return nok(code)\n  }\n\n  function completeAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return completeAfter\n    }\n\n    return code === null || markdownLineEnding(code)\n      ? continuation(code)\n      : nok(code)\n  }\n\n  function continuation(code) {\n    if (code === 45 && kind === 2) {\n      effects.consume(code)\n      return continuationCommentInside\n    }\n\n    if (code === 60 && kind === 1) {\n      effects.consume(code)\n      return continuationRawTagOpen\n    }\n\n    if (code === 62 && kind === 4) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (code === 63 && kind === 3) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    if (code === 93 && kind === 5) {\n      effects.consume(code)\n      return continuationCharacterDataInside\n    }\n\n    if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n      return effects.check(\n        nextBlankConstruct,\n        continuationClose,\n        continuationAtLineEnding\n      )(code)\n    }\n\n    if (code === null || markdownLineEnding(code)) {\n      return continuationAtLineEnding(code)\n    }\n\n    effects.consume(code)\n    return continuation\n  }\n\n  function continuationAtLineEnding(code) {\n    effects.exit('htmlFlowData')\n    return htmlContinueStart(code)\n  }\n\n  function htmlContinueStart(code) {\n    if (code === null) {\n      return done(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      effects.enter('lineEnding')\n      effects.consume(code)\n      effects.exit('lineEnding')\n      return htmlContinueStart\n    }\n\n    effects.enter('htmlFlowData')\n    return continuation(code)\n  }\n\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code)\n      buffer = ''\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n\n  function continuationRawEndTag(code) {\n    if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    if (asciiAlpha(code) && buffer.length < 8) {\n      effects.consume(code)\n      buffer += fromCharCode(code)\n      return continuationRawEndTag\n    }\n\n    return continuation(code)\n  }\n\n  function continuationCharacterDataInside(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return continuationDeclarationInside\n    }\n\n    return continuation(code)\n  }\n\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code)\n      return continuationClose\n    }\n\n    return continuation(code)\n  }\n\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('htmlFlowData')\n      return done(code)\n    }\n\n    effects.consume(code)\n    return continuationClose\n  }\n\n  function done(code) {\n    effects.exit('htmlFlow')\n    return ok(code)\n  }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n  return start\n\n  function start(code) {\n    effects.exit('htmlFlowData')\n    effects.enter('lineEndingBlank')\n    effects.consume(code)\n    effects.exit('lineEndingBlank')\n    return effects.attempt(partialBlankLine, ok, nok)\n  }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar basics = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'section',\n  'source',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict'\n\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n  var self = this\n  var marker\n  var buffer\n  var index\n  var returnState\n  return start\n\n  function start(code) {\n    effects.enter('htmlText')\n    effects.enter('htmlTextData')\n    effects.consume(code)\n    return open\n  }\n\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code)\n      return declarationOpen\n    }\n\n    if (code === 47) {\n      effects.consume(code)\n      return tagCloseStart\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instruction\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    return nok(code)\n  }\n\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentOpen\n    }\n\n    if (code === 91) {\n      effects.consume(code)\n      buffer = 'CDATA['\n      index = 0\n      return cdataOpen\n    }\n\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return declaration\n    }\n\n    return nok(code)\n  }\n\n  function commentOpen(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return commentStart\n    }\n\n    return nok(code)\n  }\n\n  function commentStart(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentStartDash\n    }\n\n    return comment(code)\n  }\n\n  function commentStartDash(code) {\n    if (code === null || code === 62) {\n      return nok(code)\n    }\n\n    return comment(code)\n  }\n\n  function comment(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 45) {\n      effects.consume(code)\n      return commentClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = comment\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return comment\n  }\n\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code)\n      return end\n    }\n\n    return comment(code)\n  }\n\n  function cdataOpen(code) {\n    if (code === buffer.charCodeAt(index++)) {\n      effects.consume(code)\n      return index === buffer.length ? cdata : cdataOpen\n    }\n\n    return nok(code)\n  }\n\n  function cdata(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = cdata\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return cdata\n  }\n\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code)\n    }\n\n    if (code === 93) {\n      effects.consume(code)\n      return cdataEnd\n    }\n\n    return cdata(code)\n  }\n\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = declaration\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return declaration\n  }\n\n  function instruction(code) {\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (code === 63) {\n      effects.consume(code)\n      return instructionClose\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = instruction\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return instruction\n  }\n\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code)\n  }\n\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return nok(code)\n  }\n\n  function tagClose(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagClose\n    }\n\n    return tagCloseBetween(code)\n  }\n\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagCloseBetween\n    }\n\n    return end(code)\n  }\n\n  function tagOpen(code) {\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code)\n      return tagOpen\n    }\n\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code)\n      return end\n    }\n\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenBetween\n    }\n\n    return end(code)\n  }\n\n  function tagOpenAttributeName(code) {\n    if (\n      code === 45 ||\n      code === 46 ||\n      code === 58 ||\n      code === 95 ||\n      asciiAlphanumeric(code)\n    ) {\n      effects.consume(code)\n      return tagOpenAttributeName\n    }\n\n    return tagOpenAttributeNameAfter(code)\n  }\n\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeNameAfter\n    }\n\n    return tagOpenBetween(code)\n  }\n\n  function tagOpenAttributeValueBefore(code) {\n    if (\n      code === null ||\n      code === 60 ||\n      code === 61 ||\n      code === 62 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 34 || code === 39) {\n      effects.consume(code)\n      marker = code\n      return tagOpenAttributeValueQuoted\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore\n      return atLineEnding(code)\n    }\n\n    if (markdownSpace(code)) {\n      effects.consume(code)\n      return tagOpenAttributeValueBefore\n    }\n\n    effects.consume(code)\n    marker = undefined\n    return tagOpenAttributeValueUnquoted\n  }\n\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return tagOpenAttributeValueQuotedAfter\n    }\n\n    if (code === null) {\n      return nok(code)\n    }\n\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted\n      return atLineEnding(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueQuoted\n  }\n\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    return nok(code)\n  }\n\n  function tagOpenAttributeValueUnquoted(code) {\n    if (\n      code === null ||\n      code === 34 ||\n      code === 39 ||\n      code === 60 ||\n      code === 61 ||\n      code === 96\n    ) {\n      return nok(code)\n    }\n\n    if (code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code)\n    }\n\n    effects.consume(code)\n    return tagOpenAttributeValueUnquoted\n  } // We can’t have blank lines in content, so no need to worry about empty\n  // tokens.\n\n  function atLineEnding(code) {\n    effects.exit('htmlTextData')\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(\n      effects,\n      afterPrefix,\n      'linePrefix',\n      self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n        ? undefined\n        : 4\n    )\n  }\n\n  function afterPrefix(code) {\n    effects.enter('htmlTextData')\n    return returnState(code)\n  }\n\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code)\n      effects.exit('htmlTextData')\n      effects.exit('htmlText')\n      return ok\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = htmlText\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n  name: 'labelStartImage',\n  tokenize: tokenizeLabelStartImage,\n  resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    effects.enter('labelImage')\n    effects.enter('labelImageMarker')\n    effects.consume(code)\n    effects.exit('labelImageMarker')\n    return open\n  }\n\n  function open(code) {\n    if (code === 91) {\n      effects.enter('labelMarker')\n      effects.consume(code)\n      effects.exit('labelMarker')\n      effects.exit('labelImage')\n      return after\n    }\n\n    return nok(code)\n  }\n\n  function after(code) {\n    /* c8 ignore next */\n    return code === 94 &&\n      /* c8 ignore next */\n      '_hiddenFootnoteSupport' in self.parser.constructs\n      ? /* c8 ignore next */\n        nok(code)\n      : ok(code)\n  }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n  name: 'labelStartLink',\n  tokenize: tokenizeLabelStartLink,\n  resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  var self = this\n  return start\n\n  function start(code) {\n    effects.enter('labelLink')\n    effects.enter('labelMarker')\n    effects.consume(code)\n    effects.exit('labelMarker')\n    effects.exit('labelLink')\n    return after\n  }\n\n  function after(code) {\n    /* c8 ignore next */\n    return code === 94 &&\n      /* c8 ignore next */\n      '_hiddenFootnoteSupport' in self.parser.constructs\n      ? /* c8 ignore next */\n        nok(code)\n      : ok(code)\n  }\n}\n\nmodule.exports = labelStartLink\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n  return start\n\n  function start(code) {\n    effects.enter('lineEnding')\n    effects.consume(code)\n    effects.exit('lineEnding')\n    return factorySpace(effects, ok, 'linePrefix')\n  }\n}\n\nmodule.exports = lineEnding\n","'use strict'\n\nvar asciiDigit = require('../character/ascii-digit.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n  name: 'list',\n  tokenize: tokenizeListStart,\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n  tokenize: tokenizeListItemPrefixWhitespace,\n  partial: true\n}\nvar indentConstruct = {\n  tokenize: tokenizeIndent,\n  partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n  var self = this\n  var initialSize = prefixSize(self.events, 'linePrefix')\n  var size = 0\n  return start\n\n  function start(code) {\n    var kind =\n      self.containerState.type ||\n      (code === 42 || code === 43 || code === 45\n        ? 'listUnordered'\n        : 'listOrdered')\n\n    if (\n      kind === 'listUnordered'\n        ? !self.containerState.marker || code === self.containerState.marker\n        : asciiDigit(code)\n    ) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind\n        effects.enter(kind, {\n          _container: true\n        })\n      }\n\n      if (kind === 'listUnordered') {\n        effects.enter('listItemPrefix')\n        return code === 42 || code === 45\n          ? effects.check(thematicBreak, nok, atMarker)(code)\n          : atMarker(code)\n      }\n\n      if (!self.interrupt || code === 49) {\n        effects.enter('listItemPrefix')\n        effects.enter('listItemValue')\n        return inside(code)\n      }\n    }\n\n    return nok(code)\n  }\n\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code)\n      return inside\n    }\n\n    if (\n      (!self.interrupt || size < 2) &&\n      (self.containerState.marker\n        ? code === self.containerState.marker\n        : code === 41 || code === 46)\n    ) {\n      effects.exit('listItemValue')\n      return atMarker(code)\n    }\n\n    return nok(code)\n  }\n\n  function atMarker(code) {\n    effects.enter('listItemMarker')\n    effects.consume(code)\n    effects.exit('listItemMarker')\n    self.containerState.marker = self.containerState.marker || code\n    return effects.check(\n      partialBlankLine, // Can’t be empty when interrupting.\n      self.interrupt ? nok : onBlank,\n      effects.attempt(\n        listItemPrefixWhitespaceConstruct,\n        endOfPrefix,\n        otherPrefix\n      )\n    )\n  }\n\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true\n    initialSize++\n    return endOfPrefix(code)\n  }\n\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter('listItemPrefixWhitespace')\n      effects.consume(code)\n      effects.exit('listItemPrefixWhitespace')\n      return endOfPrefix\n    }\n\n    return nok(code)\n  }\n\n  function endOfPrefix(code) {\n    self.containerState.size =\n      initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n    return ok(code)\n  }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n  var self = this\n  self.containerState._closeFlow = undefined\n  return effects.check(partialBlankLine, onBlank, notBlank)\n\n  function onBlank(code) {\n    self.containerState.furtherBlankLines =\n      self.containerState.furtherBlankLines ||\n      self.containerState.initialBlankLine // We have a blank line.\n    // Still, try to consume at most the items size.\n\n    return factorySpace(\n      effects,\n      ok,\n      'listItemIndent',\n      self.containerState.size + 1\n    )(code)\n  }\n\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n      return notInCurrentItem(code)\n    }\n\n    self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n  }\n\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n    self.interrupt = undefined\n    return factorySpace(\n      effects,\n      effects.attempt(list, ok, nok),\n      'linePrefix',\n      self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n        ? undefined\n        : 4\n    )(code)\n  }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n  var self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemIndent',\n    self.containerState.size + 1\n  )\n\n  function afterPrefix(code) {\n    return prefixSize(self.events, 'listItemIndent') ===\n      self.containerState.size\n      ? ok(code)\n      : nok(code)\n  }\n}\n\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  var self = this\n  return factorySpace(\n    effects,\n    afterPrefix,\n    'listItemPrefixWhitespace',\n    self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n      ? undefined\n      : 4 + 1\n  )\n\n  function afterPrefix(code) {\n    return markdownSpace(code) ||\n      !prefixSize(self.events, 'listItemPrefixWhitespace')\n      ? nok(code)\n      : ok(code)\n  }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('../util/shallow.js')\nvar factorySpace = require('./factory-space.js')\n\nvar setextUnderline = {\n  name: 'setextUnderline',\n  tokenize: tokenizeSetextUnderline,\n  resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n  var index = events.length\n  var content\n  var text\n  var definition\n  var heading // Find the opening of the content.\n  // It’ll always exist: we don’t tokenize if it isn’t there.\n\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === 'content') {\n        content = index\n        break\n      }\n\n      if (events[index][1].type === 'paragraph') {\n        text = index\n      }\n    } // Exit\n    else {\n      if (events[index][1].type === 'content') {\n        // Remove the content end (if needed we’ll add it later)\n        events.splice(index, 1)\n      }\n\n      if (!definition && events[index][1].type === 'definition') {\n        definition = index\n      }\n    }\n  }\n\n  heading = {\n    type: 'setextHeading',\n    start: shallow(events[text][1].start),\n    end: shallow(events[events.length - 1][1].end)\n  } // Change the paragraph to setext heading text.\n\n  events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n  // but we need move it.\n\n  if (definition) {\n    events.splice(text, 0, ['enter', heading, context])\n    events.splice(definition + 1, 0, ['exit', events[content][1], context])\n    events[content][1].end = shallow(events[definition][1].end)\n  } else {\n    events[content][1] = heading\n  } // Add the heading exit at the end.\n\n  events.push(['exit', heading, context])\n  return events\n}\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  var self = this\n  var index = self.events.length\n  var marker\n  var paragraph // Find an opening.\n\n  while (index--) {\n    // Skip enter/exit of line ending, line prefix, and content.\n    // We can now either have a definition or a paragraph.\n    if (\n      self.events[index][1].type !== 'lineEnding' &&\n      self.events[index][1].type !== 'linePrefix' &&\n      self.events[index][1].type !== 'content'\n    ) {\n      paragraph = self.events[index][1].type === 'paragraph'\n      break\n    }\n  }\n\n  return start\n\n  function start(code) {\n    if (!self.lazy && (self.interrupt || paragraph)) {\n      effects.enter('setextHeadingLine')\n      effects.enter('setextHeadingLineSequence')\n      marker = code\n      return closingSequence(code)\n    }\n\n    return nok(code)\n  }\n\n  function closingSequence(code) {\n    if (code === marker) {\n      effects.consume(code)\n      return closingSequence\n    }\n\n    effects.exit('setextHeadingLineSequence')\n    return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n  }\n\n  function closingSequenceEnd(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('setextHeadingLine')\n      return ok(code)\n    }\n\n    return nok(code)\n  }\n}\n\nmodule.exports = setextUnderline\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n  var start = true\n  var column = 1\n  var buffer = ''\n  var atCarriageReturn\n  return preprocessor\n\n  function preprocessor(value, encoding, end) {\n    var chunks = []\n    var match\n    var next\n    var startPosition\n    var endPosition\n    var code\n    value = buffer + value.toString(encoding)\n    startPosition = 0\n    buffer = ''\n\n    if (start) {\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++\n      }\n\n      start = undefined\n    }\n\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition\n      match = search.exec(value)\n      endPosition = match ? match.index : value.length\n      code = value.charCodeAt(endPosition)\n\n      if (!match) {\n        buffer = value.slice(startPosition)\n        break\n      }\n\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3)\n        atCarriageReturn = undefined\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5)\n          atCarriageReturn = undefined\n        }\n\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition))\n          column += endPosition - startPosition\n        }\n\n        if (code === 0) {\n          chunks.push(65533)\n          column++\n        } else if (code === 9) {\n          next = Math.ceil(column / 4) * 4\n          chunks.push(-2)\n\n          while (column++ < next) chunks.push(-1)\n        } else if (code === 10) {\n          chunks.push(-4)\n          column = 1\n        } // Must be carriage return.\n        else {\n          atCarriageReturn = true\n          column = 1\n        }\n      }\n\n      startPosition = endPosition + 1\n    }\n\n    if (end) {\n      if (atCarriageReturn) chunks.push(-5)\n      if (buffer) chunks.push(buffer)\n      chunks.push(null)\n    }\n\n    return chunks\n  }\n}\n\nmodule.exports = preprocess\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n\n  return events\n}\n\nmodule.exports = postprocess\n","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n  return function (ast) {\n    visitWithParents(ast, 'list', function (listNode, parents) {\n      var depth = 0, i, n;\n      for (i = 0, n = parents.length; i < n; i++) {\n        if (parents[i].type === 'list') depth += 1;\n      }\n      for (i = 0, n = listNode.children.length; i < n; i++) {\n        var child = listNode.children[i];\n        child.index = i;\n        child.ordered = listNode.ordered;\n      }\n      listNode.depth = depth;\n    });\n    return ast;\n  };\n}\n\nmodule.exports = addListMetadata;\n","'use strict'\n\n/* Expose. */\nmodule.exports = visitParents\n\n/* Visit. */\nfunction visitParents(tree, type, visitor) {\n  var stack = []\n\n  if (typeof type === 'function') {\n    visitor = type\n    type = null\n  }\n\n  one(tree)\n\n  /* Visit a single node. */\n  function one(node) {\n    var result\n\n    if (!type || node.type === type) {\n      result = visitor(node, stack.concat())\n    }\n\n    if (node.children && result !== false) {\n      return all(node.children, node)\n    }\n\n    return result\n  }\n\n  /* Visit children in `parent`. */\n  function all(children, parent) {\n    var length = children.length\n    var index = -1\n    var child\n\n    stack.push(parent)\n\n    while (++index < length) {\n      child = children[index]\n\n      if (child && one(child) === false) {\n        return false\n      }\n    }\n\n    stack.pop()\n\n    return true\n  }\n}\n","\"use strict\";\n\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say <strong>foo</strong>, but not <strong class=\"very\">foo</strong>\n * For proper HTML support, you'll want a different plugin\n **/\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n  var open;\n  var currentParent;\n  visit(tree, 'html', function (node, index, parent) {\n    if (currentParent !== parent) {\n      open = [];\n      currentParent = parent;\n    }\n\n    var selfClosing = getSelfClosing(node);\n\n    if (selfClosing) {\n      parent.children.splice(index, 1, {\n        type: type,\n        tag: selfClosing,\n        position: node.position\n      });\n      return true;\n    }\n\n    var current = getSimpleTag(node, parent);\n\n    if (!current) {\n      return true;\n    }\n\n    var matching = findAndPull(open, current.tag);\n\n    if (matching) {\n      parent.children.splice(index, 0, virtual(current, matching, parent));\n    } else if (!current.opening) {\n      open.push(current);\n    }\n\n    return true;\n  }, true // Iterate in reverse\n  );\n  return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n  var i = open.length;\n\n  while (i--) {\n    if (open[i].tag === matchingTag) {\n      return open.splice(i, 1)[0];\n    }\n  }\n\n  return false;\n}\n\nfunction getSimpleTag(node, parent) {\n  var match = node.value.match(simpleTagRe);\n  return match ? {\n    tag: match[2],\n    opening: !match[1],\n    node: node\n  } : false;\n}\n\nfunction getSelfClosing(node) {\n  var match = node.value.match(selfClosingRe);\n  return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n  var fromIndex = parent.children.indexOf(fromNode.node);\n  var toIndex = parent.children.indexOf(toNode.node);\n  var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n  var children = extracted.slice(1, -1);\n  return {\n    type: type,\n    children: children,\n    tag: fromNode.tag,\n    position: {\n      start: fromNode.node.position.start,\n      end: toNode.node.position.end,\n      indent: []\n    }\n  };\n}","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\nvar color = require('./color')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n  var step\n  var is\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    visitor = test\n    test = null\n  }\n\n  is = convert(test)\n  step = reverse ? -1 : 1\n\n  factory(tree, null, [])()\n\n  function factory(node, index, parents) {\n    var value = typeof node === 'object' && node !== null ? node : {}\n    var name\n\n    if (typeof value.type === 'string') {\n      name =\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : typeof value.name === 'string'\n          ? value.name\n          : undefined\n\n      visit.displayName =\n        'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')'\n    }\n\n    return visit\n\n    function visit() {\n      var grandparents = parents.concat(node)\n      var result = []\n      var subresult\n      var offset\n\n      if (!test || is(node, index, parents[parents.length - 1] || null)) {\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if (node.children && result[0] !== SKIP) {\n        offset = (reverse ? node.children.length : -1) + step\n\n        while (offset > -1 && offset < node.children.length) {\n          subresult = factory(node.children[offset], offset, grandparents)()\n\n          if (subresult[0] === EXIT) {\n            return subresult\n          }\n\n          offset =\n            typeof subresult[1] === 'number' ? subresult[1] : offset + step\n        }\n      }\n\n      return result\n    }\n  }\n}\n\nfunction toResult(value) {\n  if (value !== null && typeof value === 'object' && 'length' in value) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return [value]\n}\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n  if (test == null) {\n    return ok\n  }\n\n  if (typeof test === 'string') {\n    return typeFactory(test)\n  }\n\n  if (typeof test === 'object') {\n    return 'length' in test ? anyFactory(test) : allFactory(test)\n  }\n\n  if (typeof test === 'function') {\n    return test\n  }\n\n  throw new Error('Expected function, string, or object as test')\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n  return all\n\n  function all(node) {\n    var key\n\n    for (key in test) {\n      if (node[key] !== test[key]) return false\n    }\n\n    return true\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = []\n  var index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return any\n\n  function any() {\n    var index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, arguments)) {\n        return true\n      }\n    }\n\n    return false\n  }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n  return type\n\n  function type(node) {\n    return Boolean(node && node.type === test)\n  }\n}\n\n// Utility to return true.\nfunction ok() {\n  return true\n}\n","module.exports = identity\nfunction identity(d) {\n  return d\n}\n","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nvar splice = [].splice;\n\nexports.ofType = function (types, mode) {\n  return ifNotMatch(allow, mode);\n\n  function allow(node, index, parent) {\n    return !types.includes(node.type);\n  }\n};\n\nexports.ifNotMatch = ifNotMatch;\n\nfunction ifNotMatch(allow, mode) {\n  return transform;\n\n  function transform(tree) {\n    visit(tree, filter);\n    return tree;\n  } // eslint-disable-next-line consistent-return\n\n\n  function filter(node, index, parent) {\n    if (parent && !allow(node, index, parent)) {\n      var parameters = [index, 1];\n\n      if (mode === 'unwrap' && node.children) {\n        parameters = parameters.concat(node.children);\n      }\n\n      splice.apply(parent.children, parameters);\n      return index;\n    }\n  }\n}","'use strict';\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nfunction astToReact(node, options) {\n  var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n  var renderer = options.renderers[node.type]; // Nodes created by plugins do not have positional info, in which case we set\n  // an object that matches the positon interface.\n\n  if (!node.position) {\n    node.position = {\n      start: {\n        line: null,\n        column: null,\n        offset: null\n      },\n      end: {\n        line: null,\n        column: null,\n        offset: null\n      }\n    };\n  }\n\n  var pos = node.position.start;\n  var key = [node.type, pos.line, pos.column, index].join('-');\n\n  if (!ReactIs.isValidElementType(renderer)) {\n    throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n  }\n\n  var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n  return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n  function resolveChildren() {\n    return node.children && node.children.map(function (childNode, i) {\n      return astToReact(childNode, options, {\n        node: node,\n        props: nodeProps\n      }, i);\n    });\n  }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n  var props = {\n    key: key\n  };\n  var isSimpleRenderer = typeof renderer === 'string' || renderer === React.Fragment; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n  if (opts.sourcePos && node.position) {\n    props['data-sourcepos'] = flattenPosition(node.position);\n  }\n\n  if (opts.rawSourcePos && !isSimpleRenderer) {\n    props.sourcePosition = node.position;\n  } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n  if (opts.includeNodeIndex && parent.node && parent.node.children && !isSimpleRenderer) {\n    props.index = parent.node.children.indexOf(node);\n    props.parentChildCount = parent.node.children.length;\n  }\n\n  var ref = node.identifier !== null && node.identifier !== undefined ?\n  /* istanbul ignore next - plugins could inject an undefined reference. */\n  opts.definitions[node.identifier.toUpperCase()] || {} : null;\n\n  switch (node.type) {\n    case 'root':\n      assignDefined(props, {\n        className: opts.className\n      });\n      break;\n\n    case 'text':\n      props.nodeKey = key;\n      props.children = node.value;\n      break;\n\n    case 'heading':\n      props.level = node.depth;\n      break;\n\n    case 'list':\n      props.start = node.start;\n      props.ordered = node.ordered;\n      props.spread = node.spread;\n      props.depth = node.depth;\n      break;\n\n    case 'listItem':\n      props.checked = node.checked;\n      props.spread = node.spread;\n      props.ordered = node.ordered;\n      props.index = node.index;\n      props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n        return astToReact(childNode, opts, {\n          node: node,\n          props: props\n        }, i);\n      });\n      break;\n\n    case 'definition':\n      assignDefined(props, {\n        identifier: node.identifier,\n        title: node.title,\n        url: node.url\n      });\n      break;\n\n    case 'code':\n      assignDefined(props, {\n        language: node.lang && node.lang.split(/\\s/, 1)[0]\n      });\n      break;\n\n    case 'inlineCode':\n      props.children = node.value;\n      props.inline = true;\n      break;\n\n    case 'link':\n      assignDefined(props, {\n        title: node.title || undefined,\n        target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n        href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n      });\n      break;\n\n    case 'image':\n      assignDefined(props, {\n        src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url,\n        alt: node.alt || '',\n        title: node.title || undefined\n      });\n      break;\n\n    case 'linkReference':\n      assignDefined(props, xtend(ref, {\n        href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n      }));\n      break;\n\n    case 'imageReference':\n      assignDefined(props, {\n        src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n        alt: node.alt || '',\n        title: ref.title || undefined\n      });\n      break;\n\n    case 'table':\n    case 'tableHead':\n    case 'tableBody':\n      props.columnAlignment = node.align;\n      break;\n\n    case 'tableRow':\n      props.isHeader = parent.node.type === 'tableHead';\n      props.columnAlignment = parent.props.columnAlignment;\n      break;\n\n    case 'tableCell':\n      assignDefined(props, {\n        isHeader: parent.props.isHeader,\n        align: parent.props.columnAlignment[index]\n      });\n      break;\n\n    case 'virtualHtml':\n      props.tag = node.tag;\n      break;\n\n    case 'html':\n      // @todo find a better way than this\n      props.isBlock = node.position.start.line !== node.position.end.line;\n      props.allowDangerousHtml = opts.allowDangerousHtml;\n      props.escapeHtml = opts.escapeHtml;\n      props.skipHtml = opts.skipHtml;\n      break;\n\n    case 'parsedHtml':\n      {\n        var parsedChildren;\n\n        if (node.children) {\n          parsedChildren = node.children.map(function (child, i) {\n            return astToReact(child, opts, {\n              node: node,\n              props: props\n            }, i);\n          });\n        }\n\n        props.allowDangerousHtml = opts.allowDangerousHtml;\n        props.escapeHtml = opts.escapeHtml;\n        props.skipHtml = opts.skipHtml;\n        props.element = node.element ? mergeNodeChildren(node, parsedChildren) : null;\n        break;\n      }\n\n    default:\n      assignDefined(props, xtend(node, {\n        type: undefined,\n        position: undefined,\n        children: undefined\n      }));\n  }\n\n  if (!isSimpleRenderer && node.value) {\n    props.value = node.value;\n  }\n\n  if (!isSimpleRenderer) {\n    props.node = node;\n  }\n\n  return props;\n}\n\nfunction assignDefined(target, attrs) {\n  for (var key in attrs) {\n    if (typeof attrs[key] !== 'undefined') {\n      target[key] = attrs[key];\n    }\n  }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n  var el = node.element;\n\n  if (Array.isArray(el)) {\n    /* istanbul ignore next - `div` fallback for old React. */\n    var Fragment = React.Fragment || 'div';\n    return React.createElement(Fragment, null, el);\n  }\n\n  if (el.props.children || parsedChildren) {\n    var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n    return React.cloneElement(el, null, children);\n  }\n\n  return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n  return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n  /* istanbul ignore next - list items are always in a list, but best to be sure. */\n  var loose = parent && parent.node ? listLoose(parent.node) : listItemLoose(node);\n  return loose ? node.children : unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n  return node.children.reduce(function (array, child) {\n    return array.concat(child.type === 'paragraph' ? child.children : [child]);\n  }, []);\n}\n\nfunction listLoose(node) {\n  var children = node.children;\n  var loose = node.spread;\n  var index = -1;\n\n  while (!loose && ++index < children.length) {\n    loose = listItemLoose(children[index]);\n  }\n\n  return loose;\n}\n\nfunction listItemLoose(node) {\n  var spread = node.spread;\n  /* istanbul ignore next - spread is present from remark-parse, but maybe plugins don’t set it. */\n\n  return spread === undefined || spread === null ? node.children.length > 1 : spread;\n}\n\nmodule.exports = astToReact;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n  visit(node, 'table', wrap);\n  return node;\n};\n\nfunction wrap(table) {\n  var children = table.children;\n  table.children = [{\n    type: 'tableHead',\n    align: table.align,\n    children: [children[0]],\n    position: children[0].position\n  }];\n\n  if (children.length > 1) {\n    table.children.push({\n      type: 'tableBody',\n      align: table.align,\n      children: children.slice(1),\n      position: {\n        start: children[1].position.start,\n        end: children[children.length - 1].position.end\n      }\n    });\n  }\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function getDefinitions(tree) {\n  var definitions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  visit(tree, 'definition', function (node) {\n    var identifier = node.identifier.toUpperCase();\n    if (identifier in definitions) return;\n    definitions[identifier] = {\n      href: node.url,\n      title: node.title\n    };\n  });\n  return definitions;\n};","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n  var url = (uri || '').trim();\n  var first = url.charAt(0);\n\n  if (first === '#' || first === '/') {\n    return url;\n  }\n\n  var colon = url.indexOf(':');\n\n  if (colon === -1) {\n    return url;\n  }\n\n  var length = protocols.length;\n  var index = -1;\n\n  while (++index < length) {\n    var protocol = protocols[index];\n\n    if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n      return url;\n    }\n  }\n\n  index = url.indexOf('?');\n\n  if (index !== -1 && colon > index) {\n    return url;\n  }\n\n  index = url.indexOf('#');\n\n  if (index !== -1 && colon > index) {\n    return url;\n  } // eslint-disable-next-line no-script-url\n\n\n  return 'javascript:void(0)';\n};","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n/* istanbul ignore next - Don’t crash on old React. */\n\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n  break: 'br',\n  paragraph: 'p',\n  emphasis: 'em',\n  strong: 'strong',\n  thematicBreak: 'hr',\n  blockquote: 'blockquote',\n  delete: 'del',\n  link: 'a',\n  image: 'img',\n  linkReference: 'a',\n  imageReference: 'img',\n  table: SimpleRenderer.bind(null, 'table'),\n  tableHead: SimpleRenderer.bind(null, 'thead'),\n  tableBody: SimpleRenderer.bind(null, 'tbody'),\n  tableRow: SimpleRenderer.bind(null, 'tr'),\n  tableCell: TableCell,\n  root: Root,\n  text: TextRenderer,\n  list: List,\n  listItem: ListItem,\n  definition: NullRenderer,\n  heading: Heading,\n  inlineCode: InlineCode,\n  code: CodeBlock,\n  html: Html,\n  virtualHtml: VirtualHtml,\n  parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n  /* istanbul ignore next - a text node w/o a value could be injected by plugins */\n  var children = props.children || '';\n  /* istanbul ignore next - `span` is a fallback for old React. */\n\n  return supportsStringRender ? children : createElement('span', null, children);\n}\n\nfunction Root(props) {\n  var className = props.className;\n  var root = !className && React.Fragment || 'div';\n  return createElement(root, className ? {\n    className: className\n  } : null, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n  return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n  var style = props.align ? {\n    textAlign: props.align\n  } : undefined;\n  var coreProps = getCoreProps(props);\n  return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n    style: style\n  }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n  return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n  var attrs = getCoreProps(props);\n\n  if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n    attrs.start = props.start.toString();\n  }\n\n  return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n  var checkbox = null;\n\n  if (props.checked !== null && props.checked !== undefined) {\n    var checked = props.checked;\n    checkbox = createElement('input', {\n      type: 'checkbox',\n      checked: checked,\n      readOnly: true\n    });\n  }\n\n  return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n  var className = props.language && \"language-\".concat(props.language);\n  var code = createElement('code', className ? {\n    className: className\n  } : null, props.value);\n  return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n  return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n  if (props.skipHtml) {\n    return null;\n  }\n\n  var dangerous = props.allowDangerousHtml || props.escapeHtml === false;\n  var tag = props.isBlock ? 'div' : 'span';\n\n  if (!dangerous) {\n    /* istanbul ignore next - `tag` is a fallback for old React. */\n    return createElement(React.Fragment || tag, null, props.value);\n  }\n\n  var nodeProps = {\n    dangerouslySetInnerHTML: {\n      __html: props.value\n    }\n  };\n  return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n  /* To do: `React.cloneElement` is slow, is it really needed? */\n  return props['data-sourcepos'] ? React.cloneElement(props.element, {\n    'data-sourcepos': props['data-sourcepos']\n  }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n  return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n  return null;\n}\n\nfunction getCoreProps(props) {\n  var source = props['data-sourcepos'];\n  /* istanbul ignore next - nodes from plugins w/o position */\n\n  return source ? {\n    'data-sourcepos': source\n  } : {};\n}","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\n/* istanbul ignore next - Fallback for `Symbol`. */\n\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","//! moment-timezone.js\n//! version : 0.5.34\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory);                 // AMD\n\t} else {\n\t\tfactory(root.moment);                        // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.34\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils  = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname       : data[0],\n\t\t\tabbrs      : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets    : mapIndices(offsets, indices),\n\t\t\tuntils     : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name       = unpacked.name;\n\t\t\tthis.abbrs      = unpacked.abbrs;\n\t\t\tthis.untils     = unpacked.untils;\n\t\t\tthis.offsets    = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\tfor (i = 0; i < untils.length; i++) {\n\t\t\t\tif (target < untils[i]) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target  = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils  = this.untils,\n\t\t\t\tmax     = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset     = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\toffsets = [last],\n\t\t\tchange, next, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\tif (next.offset !== last.offset) {\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t}\n\t\t\tlast = next;\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\ti, j, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\tguessesOffset = guesses[offsets[i].offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tzone = getZone(name),\n\t\t\tout  = moment.utc.apply(null, args);\n\n\t\tif (zone && !moment.isMoment(input) && needsOffset(out)) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version      = VERSION;\n\ttz.dataVersion  = '';\n\ttz._zones       = zones;\n\ttz._links       = links;\n\ttz._names       = names;\n\ttz._countries\t= countries;\n\ttz.add          = addZone;\n\ttz.link         = addLink;\n\ttz.load         = loadData;\n\ttz.zone         = getZone;\n\ttz.zoneExists   = zoneExists; // deprecated in 0.1.0\n\ttz.guess        = guess;\n\ttz.names        = getNames;\n\ttz.Zone         = Zone;\n\ttz.unpack       = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset  = needsOffset;\n\ttz.moveInvalidForward   = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries    = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName  = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr  = abbrWrap(fn.zoneAbbr);\n\tfn.utc       = resetZoneWrap(fn.utc);\n\tfn.local     = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","var map = {\n\t\"./af\": 202,\n\t\"./af.js\": 202,\n\t\"./ar\": 203,\n\t\"./ar-dz\": 204,\n\t\"./ar-dz.js\": 204,\n\t\"./ar-kw\": 205,\n\t\"./ar-kw.js\": 205,\n\t\"./ar-ly\": 206,\n\t\"./ar-ly.js\": 206,\n\t\"./ar-ma\": 207,\n\t\"./ar-ma.js\": 207,\n\t\"./ar-sa\": 208,\n\t\"./ar-sa.js\": 208,\n\t\"./ar-tn\": 209,\n\t\"./ar-tn.js\": 209,\n\t\"./ar.js\": 203,\n\t\"./az\": 210,\n\t\"./az.js\": 210,\n\t\"./be\": 211,\n\t\"./be.js\": 211,\n\t\"./bg\": 212,\n\t\"./bg.js\": 212,\n\t\"./bm\": 213,\n\t\"./bm.js\": 213,\n\t\"./bn\": 214,\n\t\"./bn-bd\": 215,\n\t\"./bn-bd.js\": 215,\n\t\"./bn.js\": 214,\n\t\"./bo\": 216,\n\t\"./bo.js\": 216,\n\t\"./br\": 217,\n\t\"./br.js\": 217,\n\t\"./bs\": 218,\n\t\"./bs.js\": 218,\n\t\"./ca\": 219,\n\t\"./ca.js\": 219,\n\t\"./cs\": 220,\n\t\"./cs.js\": 220,\n\t\"./cv\": 221,\n\t\"./cv.js\": 221,\n\t\"./cy\": 222,\n\t\"./cy.js\": 222,\n\t\"./da\": 223,\n\t\"./da.js\": 223,\n\t\"./de\": 224,\n\t\"./de-at\": 225,\n\t\"./de-at.js\": 225,\n\t\"./de-ch\": 226,\n\t\"./de-ch.js\": 226,\n\t\"./de.js\": 224,\n\t\"./dv\": 227,\n\t\"./dv.js\": 227,\n\t\"./el\": 228,\n\t\"./el.js\": 228,\n\t\"./en-au\": 229,\n\t\"./en-au.js\": 229,\n\t\"./en-ca\": 230,\n\t\"./en-ca.js\": 230,\n\t\"./en-gb\": 231,\n\t\"./en-gb.js\": 231,\n\t\"./en-ie\": 232,\n\t\"./en-ie.js\": 232,\n\t\"./en-il\": 233,\n\t\"./en-il.js\": 233,\n\t\"./en-in\": 234,\n\t\"./en-in.js\": 234,\n\t\"./en-nz\": 235,\n\t\"./en-nz.js\": 235,\n\t\"./en-sg\": 236,\n\t\"./en-sg.js\": 236,\n\t\"./eo\": 237,\n\t\"./eo.js\": 237,\n\t\"./es\": 238,\n\t\"./es-do\": 239,\n\t\"./es-do.js\": 239,\n\t\"./es-mx\": 240,\n\t\"./es-mx.js\": 240,\n\t\"./es-us\": 241,\n\t\"./es-us.js\": 241,\n\t\"./es.js\": 238,\n\t\"./et\": 242,\n\t\"./et.js\": 242,\n\t\"./eu\": 243,\n\t\"./eu.js\": 243,\n\t\"./fa\": 244,\n\t\"./fa.js\": 244,\n\t\"./fi\": 245,\n\t\"./fi.js\": 245,\n\t\"./fil\": 246,\n\t\"./fil.js\": 246,\n\t\"./fo\": 247,\n\t\"./fo.js\": 247,\n\t\"./fr\": 248,\n\t\"./fr-ca\": 249,\n\t\"./fr-ca.js\": 249,\n\t\"./fr-ch\": 250,\n\t\"./fr-ch.js\": 250,\n\t\"./fr.js\": 248,\n\t\"./fy\": 251,\n\t\"./fy.js\": 251,\n\t\"./ga\": 252,\n\t\"./ga.js\": 252,\n\t\"./gd\": 253,\n\t\"./gd.js\": 253,\n\t\"./gl\": 254,\n\t\"./gl.js\": 254,\n\t\"./gom-deva\": 255,\n\t\"./gom-deva.js\": 255,\n\t\"./gom-latn\": 256,\n\t\"./gom-latn.js\": 256,\n\t\"./gu\": 257,\n\t\"./gu.js\": 257,\n\t\"./he\": 258,\n\t\"./he.js\": 258,\n\t\"./hi\": 259,\n\t\"./hi.js\": 259,\n\t\"./hr\": 260,\n\t\"./hr.js\": 260,\n\t\"./hu\": 261,\n\t\"./hu.js\": 261,\n\t\"./hy-am\": 262,\n\t\"./hy-am.js\": 262,\n\t\"./id\": 263,\n\t\"./id.js\": 263,\n\t\"./is\": 264,\n\t\"./is.js\": 264,\n\t\"./it\": 265,\n\t\"./it-ch\": 266,\n\t\"./it-ch.js\": 266,\n\t\"./it.js\": 265,\n\t\"./ja\": 267,\n\t\"./ja.js\": 267,\n\t\"./jv\": 268,\n\t\"./jv.js\": 268,\n\t\"./ka\": 269,\n\t\"./ka.js\": 269,\n\t\"./kk\": 270,\n\t\"./kk.js\": 270,\n\t\"./km\": 271,\n\t\"./km.js\": 271,\n\t\"./kn\": 272,\n\t\"./kn.js\": 272,\n\t\"./ko\": 273,\n\t\"./ko.js\": 273,\n\t\"./ku\": 274,\n\t\"./ku.js\": 274,\n\t\"./ky\": 275,\n\t\"./ky.js\": 275,\n\t\"./lb\": 276,\n\t\"./lb.js\": 276,\n\t\"./lo\": 277,\n\t\"./lo.js\": 277,\n\t\"./lt\": 278,\n\t\"./lt.js\": 278,\n\t\"./lv\": 279,\n\t\"./lv.js\": 279,\n\t\"./me\": 280,\n\t\"./me.js\": 280,\n\t\"./mi\": 281,\n\t\"./mi.js\": 281,\n\t\"./mk\": 282,\n\t\"./mk.js\": 282,\n\t\"./ml\": 283,\n\t\"./ml.js\": 283,\n\t\"./mn\": 284,\n\t\"./mn.js\": 284,\n\t\"./mr\": 285,\n\t\"./mr.js\": 285,\n\t\"./ms\": 286,\n\t\"./ms-my\": 287,\n\t\"./ms-my.js\": 287,\n\t\"./ms.js\": 286,\n\t\"./mt\": 288,\n\t\"./mt.js\": 288,\n\t\"./my\": 289,\n\t\"./my.js\": 289,\n\t\"./nb\": 290,\n\t\"./nb.js\": 290,\n\t\"./ne\": 291,\n\t\"./ne.js\": 291,\n\t\"./nl\": 292,\n\t\"./nl-be\": 293,\n\t\"./nl-be.js\": 293,\n\t\"./nl.js\": 292,\n\t\"./nn\": 294,\n\t\"./nn.js\": 294,\n\t\"./oc-lnc\": 295,\n\t\"./oc-lnc.js\": 295,\n\t\"./pa-in\": 296,\n\t\"./pa-in.js\": 296,\n\t\"./pl\": 297,\n\t\"./pl.js\": 297,\n\t\"./pt\": 298,\n\t\"./pt-br\": 299,\n\t\"./pt-br.js\": 299,\n\t\"./pt.js\": 298,\n\t\"./ro\": 300,\n\t\"./ro.js\": 300,\n\t\"./ru\": 301,\n\t\"./ru.js\": 301,\n\t\"./sd\": 302,\n\t\"./sd.js\": 302,\n\t\"./se\": 303,\n\t\"./se.js\": 303,\n\t\"./si\": 304,\n\t\"./si.js\": 304,\n\t\"./sk\": 305,\n\t\"./sk.js\": 305,\n\t\"./sl\": 306,\n\t\"./sl.js\": 306,\n\t\"./sq\": 307,\n\t\"./sq.js\": 307,\n\t\"./sr\": 308,\n\t\"./sr-cyrl\": 309,\n\t\"./sr-cyrl.js\": 309,\n\t\"./sr.js\": 308,\n\t\"./ss\": 310,\n\t\"./ss.js\": 310,\n\t\"./sv\": 311,\n\t\"./sv.js\": 311,\n\t\"./sw\": 312,\n\t\"./sw.js\": 312,\n\t\"./ta\": 313,\n\t\"./ta.js\": 313,\n\t\"./te\": 314,\n\t\"./te.js\": 314,\n\t\"./tet\": 315,\n\t\"./tet.js\": 315,\n\t\"./tg\": 316,\n\t\"./tg.js\": 316,\n\t\"./th\": 317,\n\t\"./th.js\": 317,\n\t\"./tk\": 318,\n\t\"./tk.js\": 318,\n\t\"./tl-ph\": 319,\n\t\"./tl-ph.js\": 319,\n\t\"./tlh\": 320,\n\t\"./tlh.js\": 320,\n\t\"./tr\": 321,\n\t\"./tr.js\": 321,\n\t\"./tzl\": 322,\n\t\"./tzl.js\": 322,\n\t\"./tzm\": 323,\n\t\"./tzm-latn\": 324,\n\t\"./tzm-latn.js\": 324,\n\t\"./tzm.js\": 323,\n\t\"./ug-cn\": 325,\n\t\"./ug-cn.js\": 325,\n\t\"./uk\": 326,\n\t\"./uk.js\": 326,\n\t\"./ur\": 327,\n\t\"./ur.js\": 327,\n\t\"./uz\": 328,\n\t\"./uz-latn\": 329,\n\t\"./uz-latn.js\": 329,\n\t\"./uz.js\": 328,\n\t\"./vi\": 330,\n\t\"./vi.js\": 330,\n\t\"./x-pseudo\": 331,\n\t\"./x-pseudo.js\": 331,\n\t\"./yo\": 332,\n\t\"./yo.js\": 332,\n\t\"./zh-cn\": 333,\n\t\"./zh-cn.js\": 333,\n\t\"./zh-hk\": 334,\n\t\"./zh-hk.js\": 334,\n\t\"./zh-mo\": 335,\n\t\"./zh-mo.js\": 335,\n\t\"./zh-tw\": 336,\n\t\"./zh-tw.js\": 336\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 562;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _arrays = _interopRequireDefault(require(\"shallow-equal/arrays\"));\n\nvar _Autowhatever = _interopRequireDefault(require(\"./Autowhatever\"));\n\nvar _theme = require(\"./theme\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar alwaysTrue = function alwaysTrue() {\n  return true;\n};\n\nvar defaultShouldRenderSuggestions = function defaultShouldRenderSuggestions(value) {\n  return value.trim().length > 0;\n};\n\nvar defaultRenderSuggestionsContainer = function defaultRenderSuggestionsContainer(_ref) {\n  var containerProps = _ref.containerProps,\n      children = _ref.children;\n  return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\n\nvar REASON_SUGGESTIONS_REVEALED = 'suggestions-revealed';\nvar REASON_SUGGESTIONS_UPDATED = 'suggestions-updated';\nvar REASON_SUGGESTION_SELECTED = 'suggestion-selected';\nvar REASON_INPUT_FOCUSED = 'input-focused';\nvar REASON_INPUT_CHANGED = 'input-changed';\nvar REASON_INPUT_BLURRED = 'input-blurred';\nvar REASON_ESCAPE_PRESSED = 'escape-pressed';\n\nvar Autosuggest = /*#__PURE__*/function (_Component) {\n  _inherits(Autosuggest, _Component);\n\n  var _super = _createSuper(Autosuggest);\n\n  function Autosuggest(_ref2) {\n    var _this;\n\n    var _alwaysRenderSuggestions = _ref2.alwaysRenderSuggestions;\n\n    _classCallCheck(this, Autosuggest);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseDown\", function (event) {\n      _this.justClickedOnSuggestionsContainer = false;\n      var node = event.detail && event.detail.target || // This is for testing only. Please show me a better way to emulate this.\n      event.target;\n\n      while (node !== null && node !== document) {\n        if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n          // Suggestion was clicked\n          return;\n        }\n\n        if (node === _this.suggestionsContainer) {\n          // Something else inside suggestions container was clicked\n          _this.justClickedOnSuggestionsContainer = true;\n          return;\n        }\n\n        node = node.parentNode;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"storeAutowhateverRef\", function (autowhatever) {\n      if (autowhatever !== null) {\n        _this.autowhatever = autowhatever;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseEnter\", function (event, _ref3) {\n      var sectionIndex = _ref3.sectionIndex,\n          itemIndex = _ref3.itemIndex;\n\n      _this.updateHighlightedSuggestion(sectionIndex, itemIndex);\n\n      if (event.target === _this.pressedSuggestion) {\n        _this.justSelectedSuggestion = true;\n      }\n\n      _this.justMouseEntered = true;\n      setTimeout(function () {\n        _this.justMouseEntered = false;\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"highlightFirstSuggestion\", function () {\n      _this.updateHighlightedSuggestion(_this.props.multiSection ? 0 : null, 0);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseUp\", function () {\n      if (_this.pressedSuggestion && !_this.justSelectedSuggestion) {\n        _this.input.focus();\n      }\n\n      _this.pressedSuggestion = null;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseDown\", function (event) {\n      // Checking if this.justSelectedSuggestion is already true to not duplicate touch events in chrome\n      // See: https://github.com/facebook/react/issues/9809#issuecomment-413978405\n      if (!_this.justSelectedSuggestion) {\n        _this.justSelectedSuggestion = true;\n        _this.pressedSuggestion = event.target;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionsClearRequested\", function () {\n      var onSuggestionsClearRequested = _this.props.onSuggestionsClearRequested;\n      onSuggestionsClearRequested && onSuggestionsClearRequested();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionSelected\", function (event, data) {\n      var _this$props = _this.props,\n          alwaysRenderSuggestions = _this$props.alwaysRenderSuggestions,\n          onSuggestionSelected = _this$props.onSuggestionSelected,\n          onSuggestionsFetchRequested = _this$props.onSuggestionsFetchRequested;\n      onSuggestionSelected && onSuggestionSelected(event, data);\n\n      var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(data.suggestion);\n\n      if (alwaysRenderSuggestions || keepSuggestionsOnSelect) {\n        onSuggestionsFetchRequested({\n          value: data.suggestionValue,\n          reason: REASON_SUGGESTION_SELECTED\n        });\n      } else {\n        _this.onSuggestionsClearRequested();\n      }\n\n      _this.resetHighlightedSuggestion();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionClick\", function (event) {\n      var _this$props2 = _this.props,\n          alwaysRenderSuggestions = _this$props2.alwaysRenderSuggestions,\n          focusInputOnSuggestionClick = _this$props2.focusInputOnSuggestionClick;\n\n      var _this$getSuggestionIn = _this.getSuggestionIndices(_this.findSuggestionElement(event.target)),\n          sectionIndex = _this$getSuggestionIn.sectionIndex,\n          suggestionIndex = _this$getSuggestionIn.suggestionIndex;\n\n      var clickedSuggestion = _this.getSuggestion(sectionIndex, suggestionIndex);\n\n      var clickedSuggestionValue = _this.props.getSuggestionValue(clickedSuggestion);\n\n      _this.maybeCallOnChange(event, clickedSuggestionValue, 'click');\n\n      _this.onSuggestionSelected(event, {\n        suggestion: clickedSuggestion,\n        suggestionValue: clickedSuggestionValue,\n        suggestionIndex: suggestionIndex,\n        sectionIndex: sectionIndex,\n        method: 'click'\n      });\n\n      var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(clickedSuggestion);\n\n      if (!(alwaysRenderSuggestions || keepSuggestionsOnSelect)) {\n        _this.closeSuggestions();\n      }\n\n      if (focusInputOnSuggestionClick === true) {\n        _this.input.focus();\n      } else {\n        _this.onBlur();\n      }\n\n      setTimeout(function () {\n        _this.justSelectedSuggestion = false;\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n      var _this$props3 = _this.props,\n          inputProps = _this$props3.inputProps,\n          shouldRenderSuggestions = _this$props3.shouldRenderSuggestions;\n      var value = inputProps.value,\n          onBlur = inputProps.onBlur;\n\n      var highlightedSuggestion = _this.getHighlightedSuggestion();\n\n      var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_BLURRED);\n\n      _this.setState({\n        isFocused: false,\n        highlightedSectionIndex: null,\n        highlightedSuggestionIndex: null,\n        highlightedSuggestion: null,\n        valueBeforeUpDown: null,\n        isCollapsed: !shouldRender\n      });\n\n      onBlur && onBlur(_this.blurEvent, {\n        highlightedSuggestion: highlightedSuggestion\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseLeave\", function (event) {\n      _this.resetHighlightedSuggestion(false); // shouldResetValueBeforeUpDown\n\n\n      if (_this.justSelectedSuggestion && event.target === _this.pressedSuggestion) {\n        _this.justSelectedSuggestion = false;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchStart\", function () {\n      _this.justSelectedSuggestion = true; // todo: event.preventDefault when https://github.com/facebook/react/issues/2043\n      // todo: gets released so onSuggestionMouseDown won't fire in chrome\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchMove\", function () {\n      _this.justSelectedSuggestion = false;\n      _this.pressedSuggestion = null;\n\n      _this.input.focus();\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"itemProps\", function (_ref4) {\n      var sectionIndex = _ref4.sectionIndex,\n          itemIndex = _ref4.itemIndex;\n      return {\n        'data-section-index': sectionIndex,\n        'data-suggestion-index': itemIndex,\n        onMouseEnter: _this.onSuggestionMouseEnter,\n        onMouseLeave: _this.onSuggestionMouseLeave,\n        onMouseDown: _this.onSuggestionMouseDown,\n        onTouchStart: _this.onSuggestionTouchStart,\n        onTouchMove: _this.onSuggestionTouchMove,\n        onClick: _this.onSuggestionClick\n      };\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"renderSuggestionsContainer\", function (_ref5) {\n      var containerProps = _ref5.containerProps,\n          children = _ref5.children;\n      var renderSuggestionsContainer = _this.props.renderSuggestionsContainer;\n      return renderSuggestionsContainer({\n        containerProps: containerProps,\n        children: children,\n        query: _this.getQuery()\n      });\n    });\n\n    _this.state = {\n      isFocused: false,\n      isCollapsed: !_alwaysRenderSuggestions,\n      highlightedSectionIndex: null,\n      highlightedSuggestionIndex: null,\n      highlightedSuggestion: null,\n      valueBeforeUpDown: null\n    };\n    _this.justPressedUpDown = false;\n    _this.justMouseEntered = false;\n    _this.pressedSuggestion = null;\n    return _this;\n  }\n\n  _createClass(Autosuggest, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      document.addEventListener('mousedown', this.onDocumentMouseDown);\n      document.addEventListener('mouseup', this.onDocumentMouseUp);\n      this.input = this.autowhatever.input;\n      this.suggestionsContainer = this.autowhatever.itemsContainer;\n    } // eslint-disable-next-line camelcase, react/sort-comp\n\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      // When highlightFirstSuggestion becomes deactivated, if the first suggestion was\n      // set, we should reset the suggestion back to the unselected default state.\n      var shouldResetHighlighting = this.state.highlightedSuggestionIndex === 0 && this.props.highlightFirstSuggestion && !nextProps.highlightFirstSuggestion;\n\n      if ((0, _arrays[\"default\"])(nextProps.suggestions, this.props.suggestions)) {\n        if (nextProps.highlightFirstSuggestion && nextProps.suggestions.length > 0 && this.justPressedUpDown === false && this.justMouseEntered === false) {\n          this.highlightFirstSuggestion();\n        } else if (shouldResetHighlighting) {\n          this.resetHighlightedSuggestion();\n        }\n      } else {\n        if (this.willRenderSuggestions(nextProps, REASON_SUGGESTIONS_UPDATED)) {\n          if (this.state.isCollapsed && !this.justSelectedSuggestion) {\n            this.revealSuggestions();\n          }\n\n          if (shouldResetHighlighting) {\n            this.resetHighlightedSuggestion();\n          }\n        } else {\n          this.resetHighlightedSuggestion();\n        }\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate(prevProps, prevState) {\n      var _this$props4 = this.props,\n          suggestions = _this$props4.suggestions,\n          onSuggestionHighlighted = _this$props4.onSuggestionHighlighted,\n          highlightFirstSuggestion = _this$props4.highlightFirstSuggestion;\n\n      if (!(0, _arrays[\"default\"])(suggestions, prevProps.suggestions) && suggestions.length > 0 && highlightFirstSuggestion) {\n        this.highlightFirstSuggestion();\n        return;\n      }\n\n      if (onSuggestionHighlighted) {\n        var highlightedSuggestion = this.getHighlightedSuggestion();\n        var prevHighlightedSuggestion = prevState.highlightedSuggestion;\n\n        if (highlightedSuggestion != prevHighlightedSuggestion) {\n          onSuggestionHighlighted({\n            suggestion: highlightedSuggestion\n          });\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      document.removeEventListener('mousedown', this.onDocumentMouseDown);\n      document.removeEventListener('mouseup', this.onDocumentMouseUp);\n    }\n  }, {\n    key: \"updateHighlightedSuggestion\",\n    value: function updateHighlightedSuggestion(sectionIndex, suggestionIndex, prevValue) {\n      var _this2 = this;\n\n      this.setState(function (state) {\n        var valueBeforeUpDown = state.valueBeforeUpDown;\n\n        if (suggestionIndex === null) {\n          valueBeforeUpDown = null;\n        } else if (valueBeforeUpDown === null && typeof prevValue !== 'undefined') {\n          valueBeforeUpDown = prevValue;\n        }\n\n        return {\n          highlightedSectionIndex: sectionIndex,\n          highlightedSuggestionIndex: suggestionIndex,\n          highlightedSuggestion: suggestionIndex === null ? null : _this2.getSuggestion(sectionIndex, suggestionIndex),\n          valueBeforeUpDown: valueBeforeUpDown\n        };\n      });\n    }\n  }, {\n    key: \"resetHighlightedSuggestion\",\n    value: function resetHighlightedSuggestion() {\n      var shouldResetValueBeforeUpDown = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n      this.setState(function (state) {\n        var valueBeforeUpDown = state.valueBeforeUpDown;\n        return {\n          highlightedSectionIndex: null,\n          highlightedSuggestionIndex: null,\n          highlightedSuggestion: null,\n          valueBeforeUpDown: shouldResetValueBeforeUpDown ? null : valueBeforeUpDown\n        };\n      });\n    }\n  }, {\n    key: \"revealSuggestions\",\n    value: function revealSuggestions() {\n      this.setState({\n        isCollapsed: false\n      });\n    }\n  }, {\n    key: \"closeSuggestions\",\n    value: function closeSuggestions() {\n      this.setState({\n        highlightedSectionIndex: null,\n        highlightedSuggestionIndex: null,\n        highlightedSuggestion: null,\n        valueBeforeUpDown: null,\n        isCollapsed: true\n      });\n    }\n  }, {\n    key: \"getSuggestion\",\n    value: function getSuggestion(sectionIndex, suggestionIndex) {\n      var _this$props5 = this.props,\n          suggestions = _this$props5.suggestions,\n          multiSection = _this$props5.multiSection,\n          getSectionSuggestions = _this$props5.getSectionSuggestions;\n\n      if (multiSection) {\n        return getSectionSuggestions(suggestions[sectionIndex])[suggestionIndex];\n      }\n\n      return suggestions[suggestionIndex];\n    }\n  }, {\n    key: \"getHighlightedSuggestion\",\n    value: function getHighlightedSuggestion() {\n      var _this$state = this.state,\n          highlightedSectionIndex = _this$state.highlightedSectionIndex,\n          highlightedSuggestionIndex = _this$state.highlightedSuggestionIndex;\n\n      if (highlightedSuggestionIndex === null) {\n        return null;\n      }\n\n      return this.getSuggestion(highlightedSectionIndex, highlightedSuggestionIndex);\n    }\n  }, {\n    key: \"getSuggestionValueByIndex\",\n    value: function getSuggestionValueByIndex(sectionIndex, suggestionIndex) {\n      var getSuggestionValue = this.props.getSuggestionValue;\n      return getSuggestionValue(this.getSuggestion(sectionIndex, suggestionIndex));\n    }\n  }, {\n    key: \"getSuggestionIndices\",\n    value: function getSuggestionIndices(suggestionElement) {\n      var sectionIndex = suggestionElement.getAttribute('data-section-index');\n      var suggestionIndex = suggestionElement.getAttribute('data-suggestion-index');\n      return {\n        sectionIndex: typeof sectionIndex === 'string' ? parseInt(sectionIndex, 10) : null,\n        suggestionIndex: parseInt(suggestionIndex, 10)\n      };\n    }\n  }, {\n    key: \"findSuggestionElement\",\n    value: function findSuggestionElement(startNode) {\n      var node = startNode;\n\n      do {\n        if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n          return node;\n        }\n\n        node = node.parentNode;\n      } while (node !== null);\n\n      console.error('Clicked element:', startNode); // eslint-disable-line no-console\n\n      throw new Error(\"Couldn't find suggestion element\");\n    }\n  }, {\n    key: \"maybeCallOnChange\",\n    value: function maybeCallOnChange(event, newValue, method) {\n      var _this$props$inputProp = this.props.inputProps,\n          value = _this$props$inputProp.value,\n          onChange = _this$props$inputProp.onChange;\n\n      if (newValue !== value) {\n        onChange(event, {\n          newValue: newValue,\n          method: method\n        });\n      }\n    }\n  }, {\n    key: \"willRenderSuggestions\",\n    value: function willRenderSuggestions(props, reason) {\n      var suggestions = props.suggestions,\n          inputProps = props.inputProps,\n          shouldRenderSuggestions = props.shouldRenderSuggestions;\n      var value = inputProps.value;\n      return suggestions.length > 0 && shouldRenderSuggestions(value, reason);\n    }\n  }, {\n    key: \"getQuery\",\n    value: function getQuery() {\n      var inputProps = this.props.inputProps;\n      var value = inputProps.value;\n      var valueBeforeUpDown = this.state.valueBeforeUpDown;\n      return (valueBeforeUpDown === null ? value : valueBeforeUpDown).trim();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this3 = this;\n\n      var _this$props6 = this.props,\n          suggestions = _this$props6.suggestions,\n          renderInputComponent = _this$props6.renderInputComponent,\n          onSuggestionsFetchRequested = _this$props6.onSuggestionsFetchRequested,\n          renderSuggestion = _this$props6.renderSuggestion,\n          inputProps = _this$props6.inputProps,\n          multiSection = _this$props6.multiSection,\n          renderSectionTitle = _this$props6.renderSectionTitle,\n          id = _this$props6.id,\n          getSectionSuggestions = _this$props6.getSectionSuggestions,\n          theme = _this$props6.theme,\n          getSuggestionValue = _this$props6.getSuggestionValue,\n          alwaysRenderSuggestions = _this$props6.alwaysRenderSuggestions,\n          highlightFirstSuggestion = _this$props6.highlightFirstSuggestion,\n          containerProps = _this$props6.containerProps;\n      var _this$state2 = this.state,\n          isFocused = _this$state2.isFocused,\n          isCollapsed = _this$state2.isCollapsed,\n          highlightedSectionIndex = _this$state2.highlightedSectionIndex,\n          highlightedSuggestionIndex = _this$state2.highlightedSuggestionIndex,\n          valueBeforeUpDown = _this$state2.valueBeforeUpDown;\n      var shouldRenderSuggestions = alwaysRenderSuggestions ? alwaysTrue : this.props.shouldRenderSuggestions;\n      var value = inputProps.value,\n          _onFocus = inputProps.onFocus,\n          _onKeyDown = inputProps.onKeyDown;\n      var willRenderSuggestions = this.willRenderSuggestions(this.props, 'render');\n      var isOpen = alwaysRenderSuggestions || isFocused && !isCollapsed && willRenderSuggestions;\n      var items = isOpen ? suggestions : [];\n\n      var autowhateverInputProps = _objectSpread({}, inputProps, {\n        onFocus: function onFocus(event) {\n          if (!_this3.justSelectedSuggestion && !_this3.justClickedOnSuggestionsContainer) {\n            var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_FOCUSED);\n\n            _this3.setState({\n              isFocused: true,\n              isCollapsed: !shouldRender\n            });\n\n            _onFocus && _onFocus(event);\n\n            if (shouldRender) {\n              onSuggestionsFetchRequested({\n                value: value,\n                reason: REASON_INPUT_FOCUSED\n              });\n            }\n          }\n        },\n        onBlur: function onBlur(event) {\n          if (_this3.justClickedOnSuggestionsContainer) {\n            _this3.input.focus();\n\n            return;\n          }\n\n          _this3.blurEvent = event;\n\n          if (!_this3.justSelectedSuggestion) {\n            _this3.onBlur();\n\n            _this3.onSuggestionsClearRequested();\n          }\n        },\n        onChange: function onChange(event) {\n          var value = event.target.value;\n          var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_CHANGED);\n\n          _this3.maybeCallOnChange(event, value, 'type');\n\n          if (_this3.suggestionsContainer) {\n            _this3.suggestionsContainer.scrollTop = 0;\n          }\n\n          _this3.setState(_objectSpread({}, highlightFirstSuggestion ? {} : {\n            highlightedSectionIndex: null,\n            highlightedSuggestionIndex: null,\n            highlightedSuggestion: null\n          }, {\n            valueBeforeUpDown: null,\n            isCollapsed: !shouldRender\n          }));\n\n          if (shouldRender) {\n            onSuggestionsFetchRequested({\n              value: value,\n              reason: REASON_INPUT_CHANGED\n            });\n          } else {\n            _this3.onSuggestionsClearRequested();\n          }\n        },\n        onKeyDown: function onKeyDown(event, data) {\n          var keyCode = event.keyCode;\n\n          switch (keyCode) {\n            case 40: // ArrowDown\n\n            case 38:\n              // ArrowUp\n              if (isCollapsed) {\n                if (shouldRenderSuggestions(value, REASON_SUGGESTIONS_REVEALED)) {\n                  onSuggestionsFetchRequested({\n                    value: value,\n                    reason: REASON_SUGGESTIONS_REVEALED\n                  });\n\n                  _this3.revealSuggestions();\n\n                  event.preventDefault(); // We act on the key.\n                }\n              } else if (suggestions.length > 0) {\n                var newHighlightedSectionIndex = data.newHighlightedSectionIndex,\n                    newHighlightedItemIndex = data.newHighlightedItemIndex;\n                var newValue;\n\n                if (newHighlightedItemIndex === null) {\n                  // valueBeforeUpDown can be null if, for example, user\n                  // hovers on the first suggestion and then pressed Up.\n                  // If that happens, use the original input value.\n                  newValue = valueBeforeUpDown === null ? value : valueBeforeUpDown;\n                } else {\n                  newValue = _this3.getSuggestionValueByIndex(newHighlightedSectionIndex, newHighlightedItemIndex);\n                }\n\n                _this3.updateHighlightedSuggestion(newHighlightedSectionIndex, newHighlightedItemIndex, value);\n\n                _this3.maybeCallOnChange(event, newValue, keyCode === 40 ? 'down' : 'up');\n\n                event.preventDefault(); // We act on the key.\n              }\n\n              _this3.justPressedUpDown = true;\n              setTimeout(function () {\n                _this3.justPressedUpDown = false;\n              });\n              break;\n            // Enter\n\n            case 13:\n              {\n                // See #388\n                if (event.keyCode === 229) {\n                  break;\n                }\n\n                var highlightedSuggestion = _this3.getHighlightedSuggestion();\n\n                if (isOpen && !alwaysRenderSuggestions) {\n                  _this3.closeSuggestions();\n                }\n\n                if (highlightedSuggestion != null) {\n                  event.preventDefault();\n\n                  var _newValue = getSuggestionValue(highlightedSuggestion);\n\n                  _this3.maybeCallOnChange(event, _newValue, 'enter');\n\n                  _this3.onSuggestionSelected(event, {\n                    suggestion: highlightedSuggestion,\n                    suggestionValue: _newValue,\n                    suggestionIndex: highlightedSuggestionIndex,\n                    sectionIndex: highlightedSectionIndex,\n                    method: 'enter'\n                  });\n\n                  _this3.justSelectedSuggestion = true;\n                  setTimeout(function () {\n                    _this3.justSelectedSuggestion = false;\n                  });\n                }\n\n                break;\n              }\n            // Escape\n\n            case 27:\n              {\n                if (isOpen) {\n                  // If input.type === 'search', the browser clears the input\n                  // when Escape is pressed. We want to disable this default\n                  // behaviour so that, when suggestions are shown, we just hide\n                  // them, without clearing the input.\n                  event.preventDefault();\n                }\n\n                var willCloseSuggestions = isOpen && !alwaysRenderSuggestions;\n\n                if (valueBeforeUpDown === null) {\n                  // Didn't interact with Up/Down\n                  if (!willCloseSuggestions) {\n                    var _newValue2 = '';\n\n                    _this3.maybeCallOnChange(event, _newValue2, 'escape');\n\n                    if (shouldRenderSuggestions(_newValue2, REASON_ESCAPE_PRESSED)) {\n                      onSuggestionsFetchRequested({\n                        value: _newValue2,\n                        reason: REASON_ESCAPE_PRESSED\n                      });\n                    } else {\n                      _this3.onSuggestionsClearRequested();\n                    }\n                  }\n                } else {\n                  // Interacted with Up/Down\n                  _this3.maybeCallOnChange(event, valueBeforeUpDown, 'escape');\n                }\n\n                if (willCloseSuggestions) {\n                  _this3.onSuggestionsClearRequested();\n\n                  _this3.closeSuggestions();\n                } else {\n                  _this3.resetHighlightedSuggestion();\n                }\n\n                break;\n              }\n          }\n\n          _onKeyDown && _onKeyDown(event);\n        }\n      });\n\n      var renderSuggestionData = {\n        query: this.getQuery()\n      };\n      return /*#__PURE__*/_react[\"default\"].createElement(_Autowhatever[\"default\"], {\n        multiSection: multiSection,\n        items: items,\n        renderInputComponent: renderInputComponent,\n        renderItemsContainer: this.renderSuggestionsContainer,\n        renderItem: renderSuggestion,\n        renderItemData: renderSuggestionData,\n        renderSectionTitle: renderSectionTitle,\n        getSectionItems: getSectionSuggestions,\n        highlightedSectionIndex: highlightedSectionIndex,\n        highlightedItemIndex: highlightedSuggestionIndex,\n        containerProps: containerProps,\n        inputProps: autowhateverInputProps,\n        itemProps: this.itemProps,\n        theme: (0, _theme.mapToAutowhateverTheme)(theme),\n        id: id,\n        ref: this.storeAutowhateverRef\n      });\n    }\n  }]);\n\n  return Autosuggest;\n}(_react.Component);\n\nexports[\"default\"] = Autosuggest;\n\n_defineProperty(Autosuggest, \"propTypes\", {\n  suggestions: _propTypes[\"default\"].array.isRequired,\n  onSuggestionsFetchRequested: function onSuggestionsFetchRequested(props, propName) {\n    var onSuggestionsFetchRequested = props[propName];\n\n    if (typeof onSuggestionsFetchRequested !== 'function') {\n      throw new Error(\"'onSuggestionsFetchRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsFetchRequestedProp\");\n    }\n  },\n  onSuggestionsClearRequested: function onSuggestionsClearRequested(props, propName) {\n    var onSuggestionsClearRequested = props[propName];\n\n    if (props.alwaysRenderSuggestions === false && typeof onSuggestionsClearRequested !== 'function') {\n      throw new Error(\"'onSuggestionsClearRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsClearRequestedProp\");\n    }\n  },\n  shouldKeepSuggestionsOnSelect: _propTypes[\"default\"].func,\n  onSuggestionSelected: _propTypes[\"default\"].func,\n  onSuggestionHighlighted: _propTypes[\"default\"].func,\n  renderInputComponent: _propTypes[\"default\"].func,\n  renderSuggestionsContainer: _propTypes[\"default\"].func,\n  getSuggestionValue: _propTypes[\"default\"].func.isRequired,\n  renderSuggestion: _propTypes[\"default\"].func.isRequired,\n  inputProps: function inputProps(props, propName) {\n    var inputProps = props[propName];\n\n    if (!inputProps) {\n      throw new Error(\"'inputProps' must be passed.\");\n    }\n\n    if (!Object.prototype.hasOwnProperty.call(inputProps, 'value')) {\n      throw new Error(\"'inputProps' must have 'value'.\");\n    }\n\n    if (!Object.prototype.hasOwnProperty.call(inputProps, 'onChange')) {\n      throw new Error(\"'inputProps' must have 'onChange'.\");\n    }\n  },\n  shouldRenderSuggestions: _propTypes[\"default\"].func,\n  alwaysRenderSuggestions: _propTypes[\"default\"].bool,\n  multiSection: _propTypes[\"default\"].bool,\n  renderSectionTitle: function renderSectionTitle(props, propName) {\n    var renderSectionTitle = props[propName];\n\n    if (props.multiSection === true && typeof renderSectionTitle !== 'function') {\n      throw new Error(\"'renderSectionTitle' must be implemented. See: https://github.com/moroshko/react-autosuggest#renderSectionTitleProp\");\n    }\n  },\n  getSectionSuggestions: function getSectionSuggestions(props, propName) {\n    var getSectionSuggestions = props[propName];\n\n    if (props.multiSection === true && typeof getSectionSuggestions !== 'function') {\n      throw new Error(\"'getSectionSuggestions' must be implemented. See: https://github.com/moroshko/react-autosuggest#getSectionSuggestionsProp\");\n    }\n  },\n  focusInputOnSuggestionClick: _propTypes[\"default\"].bool,\n  highlightFirstSuggestion: _propTypes[\"default\"].bool,\n  theme: _propTypes[\"default\"].object,\n  id: _propTypes[\"default\"].string,\n  containerProps: _propTypes[\"default\"].object // Arbitrary container props\n\n});\n\n_defineProperty(Autosuggest, \"defaultProps\", {\n  renderSuggestionsContainer: defaultRenderSuggestionsContainer,\n  shouldRenderSuggestions: defaultShouldRenderSuggestions,\n  alwaysRenderSuggestions: false,\n  multiSection: false,\n  shouldKeepSuggestionsOnSelect: function shouldKeepSuggestionsOnSelect() {\n    return false;\n  },\n  focusInputOnSuggestionClick: true,\n  highlightFirstSuggestion: false,\n  theme: _theme.defaultTheme,\n  id: '1',\n  containerProps: {}\n});","'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n  if (arrA === arrB) {\n    return true;\n  }\n\n  if (!arrA || !arrB) {\n    return false;\n  }\n\n  var len = arrA.length;\n\n  if (arrB.length !== len) {\n    return false;\n  }\n\n  for (var i = 0; i < len; i++) {\n    if (arrA[i] !== arrB[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nmodule.exports = shallowEqualArrays;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sectionIterator = _interopRequireDefault(require(\"section-iterator\"));\n\nvar _reactThemeable = _interopRequireDefault(require(\"react-themeable\"));\n\nvar _SectionTitle = _interopRequireDefault(require(\"./SectionTitle\"));\n\nvar _ItemList = _interopRequireDefault(require(\"./ItemList\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(n); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar emptyObject = {};\n\nvar defaultRenderInputComponent = function defaultRenderInputComponent(props) {\n  return /*#__PURE__*/_react[\"default\"].createElement(\"input\", props);\n};\n\nvar defaultRenderItemsContainer = function defaultRenderItemsContainer(_ref) {\n  var containerProps = _ref.containerProps,\n      children = _ref.children;\n  return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\n\nvar defaultTheme = {\n  container: 'react-autowhatever__container',\n  containerOpen: 'react-autowhatever__container--open',\n  input: 'react-autowhatever__input',\n  inputOpen: 'react-autowhatever__input--open',\n  inputFocused: 'react-autowhatever__input--focused',\n  itemsContainer: 'react-autowhatever__items-container',\n  itemsContainerOpen: 'react-autowhatever__items-container--open',\n  itemsList: 'react-autowhatever__items-list',\n  item: 'react-autowhatever__item',\n  itemFirst: 'react-autowhatever__item--first',\n  itemHighlighted: 'react-autowhatever__item--highlighted',\n  sectionContainer: 'react-autowhatever__section-container',\n  sectionContainerFirst: 'react-autowhatever__section-container--first',\n  sectionTitle: 'react-autowhatever__section-title'\n};\n\nvar Autowhatever = /*#__PURE__*/function (_Component) {\n  _inherits(Autowhatever, _Component);\n\n  var _super = _createSuper(Autowhatever);\n\n  function Autowhatever(props) {\n    var _this;\n\n    _classCallCheck(this, Autowhatever);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"storeInputReference\", function (input) {\n      if (input !== null) {\n        _this.input = input;\n      }\n\n      var userRef = _this.props.inputProps.ref;\n\n      if (userRef) {\n        if (typeof userRef === 'function') {\n          userRef(input);\n        } else if (_typeof(userRef) === 'object' && Object.prototype.hasOwnProperty.call(userRef, 'current')) {\n          userRef.current = input;\n        }\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"storeItemsContainerReference\", function (itemsContainer) {\n      if (itemsContainer !== null) {\n        _this.itemsContainer = itemsContainer;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onHighlightedItemChange\", function (highlightedItem) {\n      _this.highlightedItem = highlightedItem;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"getItemId\", function (sectionIndex, itemIndex) {\n      if (itemIndex === null) {\n        return null;\n      }\n\n      var id = _this.props.id;\n      var section = sectionIndex === null ? '' : \"section-\".concat(sectionIndex);\n      return \"react-autowhatever-\".concat(id, \"-\").concat(section, \"-item-\").concat(itemIndex);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n      var inputProps = _this.props.inputProps;\n\n      _this.setState({\n        isInputFocused: true\n      });\n\n      inputProps.onFocus && inputProps.onFocus(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (event) {\n      var inputProps = _this.props.inputProps;\n\n      _this.setState({\n        isInputFocused: false\n      });\n\n      inputProps.onBlur && inputProps.onBlur(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      var _this$props = _this.props,\n          inputProps = _this$props.inputProps,\n          highlightedSectionIndex = _this$props.highlightedSectionIndex,\n          highlightedItemIndex = _this$props.highlightedItemIndex;\n      var keyCode = event.keyCode;\n\n      switch (keyCode) {\n        case 40: // ArrowDown\n\n        case 38:\n          {\n            // ArrowUp\n            var nextPrev = keyCode === 40 ? 'next' : 'prev';\n\n            var _this$sectionIterator = _this.sectionIterator[nextPrev]([highlightedSectionIndex, highlightedItemIndex]),\n                _this$sectionIterator2 = _slicedToArray(_this$sectionIterator, 2),\n                newHighlightedSectionIndex = _this$sectionIterator2[0],\n                newHighlightedItemIndex = _this$sectionIterator2[1];\n\n            inputProps.onKeyDown(event, {\n              newHighlightedSectionIndex: newHighlightedSectionIndex,\n              newHighlightedItemIndex: newHighlightedItemIndex\n            });\n            break;\n          }\n\n        default:\n          inputProps.onKeyDown(event, {\n            highlightedSectionIndex: highlightedSectionIndex,\n            highlightedItemIndex: highlightedItemIndex\n          });\n      }\n    });\n\n    _this.highlightedItem = null;\n    _this.state = {\n      isInputFocused: false\n    };\n\n    _this.setSectionsItems(props);\n\n    _this.setSectionIterator(props);\n\n    _this.setTheme(props);\n\n    return _this;\n  }\n\n  _createClass(Autowhatever, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.ensureHighlightedItemIsVisible();\n    } // eslint-disable-next-line camelcase, react/sort-comp\n\n  }, {\n    key: \"UNSAFE_componentWillReceiveProps\",\n    value: function UNSAFE_componentWillReceiveProps(nextProps) {\n      if (nextProps.items !== this.props.items) {\n        this.setSectionsItems(nextProps);\n      }\n\n      if (nextProps.items !== this.props.items || nextProps.multiSection !== this.props.multiSection) {\n        this.setSectionIterator(nextProps);\n      }\n\n      if (nextProps.theme !== this.props.theme) {\n        this.setTheme(nextProps);\n      }\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.ensureHighlightedItemIsVisible();\n    }\n  }, {\n    key: \"setSectionsItems\",\n    value: function setSectionsItems(props) {\n      if (props.multiSection) {\n        this.sectionsItems = props.items.map(function (section) {\n          return props.getSectionItems(section);\n        });\n        this.sectionsLengths = this.sectionsItems.map(function (items) {\n          return items.length;\n        });\n        this.allSectionsAreEmpty = this.sectionsLengths.every(function (itemsCount) {\n          return itemsCount === 0;\n        });\n      }\n    }\n  }, {\n    key: \"setSectionIterator\",\n    value: function setSectionIterator(props) {\n      this.sectionIterator = (0, _sectionIterator[\"default\"])({\n        multiSection: props.multiSection,\n        data: props.multiSection ? this.sectionsLengths : props.items.length\n      });\n    }\n  }, {\n    key: \"setTheme\",\n    value: function setTheme(props) {\n      this.theme = (0, _reactThemeable[\"default\"])(props.theme);\n    }\n  }, {\n    key: \"renderSections\",\n    value: function renderSections() {\n      var _this2 = this;\n\n      if (this.allSectionsAreEmpty) {\n        return null;\n      }\n\n      var theme = this.theme;\n      var _this$props2 = this.props,\n          id = _this$props2.id,\n          items = _this$props2.items,\n          renderItem = _this$props2.renderItem,\n          renderItemData = _this$props2.renderItemData,\n          renderSectionTitle = _this$props2.renderSectionTitle,\n          highlightedSectionIndex = _this$props2.highlightedSectionIndex,\n          highlightedItemIndex = _this$props2.highlightedItemIndex,\n          itemProps = _this$props2.itemProps;\n      return items.map(function (section, sectionIndex) {\n        var keyPrefix = \"react-autowhatever-\".concat(id, \"-\");\n        var sectionKeyPrefix = \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n        var isFirstSection = sectionIndex === 0; // `key` is provided by theme()\n\n        /* eslint-disable react/jsx-key */\n\n        return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"container\"), 'sectionContainer', isFirstSection && 'sectionContainerFirst'), /*#__PURE__*/_react[\"default\"].createElement(_SectionTitle[\"default\"], {\n          section: section,\n          renderSectionTitle: renderSectionTitle,\n          theme: theme,\n          sectionKeyPrefix: sectionKeyPrefix\n        }), /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n          items: _this2.sectionsItems[sectionIndex],\n          itemProps: itemProps,\n          renderItem: renderItem,\n          renderItemData: renderItemData,\n          sectionIndex: sectionIndex,\n          highlightedItemIndex: highlightedSectionIndex === sectionIndex ? highlightedItemIndex : null,\n          onHighlightedItemChange: _this2.onHighlightedItemChange,\n          getItemId: _this2.getItemId,\n          theme: theme,\n          keyPrefix: keyPrefix,\n          ref: _this2.storeItemsListReference\n        }));\n        /* eslint-enable react/jsx-key */\n      });\n    }\n  }, {\n    key: \"renderItems\",\n    value: function renderItems() {\n      var items = this.props.items;\n\n      if (items.length === 0) {\n        return null;\n      }\n\n      var theme = this.theme;\n      var _this$props3 = this.props,\n          id = _this$props3.id,\n          renderItem = _this$props3.renderItem,\n          renderItemData = _this$props3.renderItemData,\n          highlightedSectionIndex = _this$props3.highlightedSectionIndex,\n          highlightedItemIndex = _this$props3.highlightedItemIndex,\n          itemProps = _this$props3.itemProps;\n      return /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n        items: items,\n        itemProps: itemProps,\n        renderItem: renderItem,\n        renderItemData: renderItemData,\n        highlightedItemIndex: highlightedSectionIndex === null ? highlightedItemIndex : null,\n        onHighlightedItemChange: this.onHighlightedItemChange,\n        getItemId: this.getItemId,\n        theme: theme,\n        keyPrefix: \"react-autowhatever-\".concat(id, \"-\")\n      });\n    }\n  }, {\n    key: \"ensureHighlightedItemIsVisible\",\n    value: function ensureHighlightedItemIsVisible() {\n      var highlightedItem = this.highlightedItem;\n\n      if (!highlightedItem) {\n        return;\n      }\n\n      var itemsContainer = this.itemsContainer;\n      var itemOffsetRelativeToContainer = highlightedItem.offsetParent === itemsContainer ? highlightedItem.offsetTop : highlightedItem.offsetTop - itemsContainer.offsetTop;\n      var scrollTop = itemsContainer.scrollTop; // Top of the visible area\n\n      if (itemOffsetRelativeToContainer < scrollTop) {\n        // Item is off the top of the visible area\n        scrollTop = itemOffsetRelativeToContainer;\n      } else if (itemOffsetRelativeToContainer + highlightedItem.offsetHeight > scrollTop + itemsContainer.offsetHeight) {\n        // Item is off the bottom of the visible area\n        scrollTop = itemOffsetRelativeToContainer + highlightedItem.offsetHeight - itemsContainer.offsetHeight;\n      }\n\n      if (scrollTop !== itemsContainer.scrollTop) {\n        itemsContainer.scrollTop = scrollTop;\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var theme = this.theme;\n      var _this$props4 = this.props,\n          id = _this$props4.id,\n          multiSection = _this$props4.multiSection,\n          renderInputComponent = _this$props4.renderInputComponent,\n          renderItemsContainer = _this$props4.renderItemsContainer,\n          highlightedSectionIndex = _this$props4.highlightedSectionIndex,\n          highlightedItemIndex = _this$props4.highlightedItemIndex;\n      var isInputFocused = this.state.isInputFocused;\n      var renderedItems = multiSection ? this.renderSections() : this.renderItems();\n      var isOpen = renderedItems !== null;\n      var ariaActivedescendant = this.getItemId(highlightedSectionIndex, highlightedItemIndex);\n      var itemsContainerId = \"react-autowhatever-\".concat(id);\n\n      var containerProps = _objectSpread({\n        role: 'combobox',\n        'aria-haspopup': 'listbox',\n        'aria-owns': itemsContainerId,\n        'aria-expanded': isOpen\n      }, theme(\"react-autowhatever-\".concat(id, \"-container\"), 'container', isOpen && 'containerOpen'), {}, this.props.containerProps);\n\n      var inputComponent = renderInputComponent(_objectSpread({\n        type: 'text',\n        value: '',\n        autoComplete: 'off',\n        'aria-autocomplete': 'list',\n        'aria-controls': itemsContainerId,\n        'aria-activedescendant': ariaActivedescendant\n      }, theme(\"react-autowhatever-\".concat(id, \"-input\"), 'input', isOpen && 'inputOpen', isInputFocused && 'inputFocused'), {}, this.props.inputProps, {\n        onFocus: this.onFocus,\n        onBlur: this.onBlur,\n        onKeyDown: this.props.inputProps.onKeyDown && this.onKeyDown,\n        ref: this.storeInputReference\n      }));\n      var itemsContainer = renderItemsContainer({\n        containerProps: _objectSpread({\n          id: itemsContainerId,\n          role: 'listbox'\n        }, theme(\"react-autowhatever-\".concat(id, \"-items-container\"), 'itemsContainer', isOpen && 'itemsContainerOpen'), {\n          ref: this.storeItemsContainerReference\n        }),\n        children: renderedItems\n      });\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, inputComponent, itemsContainer);\n    }\n  }]);\n\n  return Autowhatever;\n}(_react.Component);\n\nexports[\"default\"] = Autowhatever;\n\n_defineProperty(Autowhatever, \"propTypes\", {\n  id: _propTypes[\"default\"].string,\n  // Used in aria-* attributes. If multiple Autowhatever's are rendered on a page, they must have unique ids.\n  multiSection: _propTypes[\"default\"].bool,\n  // Indicates whether a multi section layout should be rendered.\n  renderInputComponent: _propTypes[\"default\"].func,\n  // When specified, it is used to render the input element.\n  renderItemsContainer: _propTypes[\"default\"].func,\n  // Renders the items container.\n  items: _propTypes[\"default\"].array.isRequired,\n  // Array of items or sections to render.\n  renderItem: _propTypes[\"default\"].func,\n  // This function renders a single item.\n  renderItemData: _propTypes[\"default\"].object,\n  // Arbitrary data that will be passed to renderItem()\n  renderSectionTitle: _propTypes[\"default\"].func,\n  // This function gets a section and renders its title.\n  getSectionItems: _propTypes[\"default\"].func,\n  // This function gets a section and returns its items, which will be passed into `renderItem` for rendering.\n  containerProps: _propTypes[\"default\"].object,\n  // Arbitrary container props\n  inputProps: _propTypes[\"default\"].object,\n  // Arbitrary input props\n  itemProps: _propTypes[\"default\"].oneOfType([// Arbitrary item props\n  _propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n  highlightedSectionIndex: _propTypes[\"default\"].number,\n  // Section index of the highlighted item\n  highlightedItemIndex: _propTypes[\"default\"].number,\n  // Highlighted item index (within a section)\n  theme: _propTypes[\"default\"].oneOfType([// Styles. See: https://github.com/markdalgleish/react-themeable\n  _propTypes[\"default\"].object, _propTypes[\"default\"].array])\n});\n\n_defineProperty(Autowhatever, \"defaultProps\", {\n  id: '1',\n  multiSection: false,\n  renderInputComponent: defaultRenderInputComponent,\n  renderItemsContainer: defaultRenderItemsContainer,\n  renderItem: function renderItem() {\n    throw new Error('`renderItem` must be provided');\n  },\n  renderItemData: emptyObject,\n  renderSectionTitle: function renderSectionTitle() {\n    throw new Error('`renderSectionTitle` must be provided');\n  },\n  getSectionItems: function getSectionItems() {\n    throw new Error('`getSectionItems` must be provided');\n  },\n  containerProps: emptyObject,\n  inputProps: emptyObject,\n  itemProps: emptyObject,\n  highlightedSectionIndex: null,\n  highlightedItemIndex: null,\n  theme: defaultTheme\n});","\"use strict\";\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nmodule.exports = function (_ref) {\n  var data = _ref.data;\n  var multiSection = _ref.multiSection;\n\n  function nextNonEmptySectionIndex(sectionIndex) {\n    if (sectionIndex === null) {\n      sectionIndex = 0;\n    } else {\n      sectionIndex++;\n    }\n\n    while (sectionIndex < data.length && data[sectionIndex] === 0) {\n      sectionIndex++;\n    }\n\n    return sectionIndex === data.length ? null : sectionIndex;\n  }\n\n  function prevNonEmptySectionIndex(sectionIndex) {\n    if (sectionIndex === null) {\n      sectionIndex = data.length - 1;\n    } else {\n      sectionIndex--;\n    }\n\n    while (sectionIndex >= 0 && data[sectionIndex] === 0) {\n      sectionIndex--;\n    }\n\n    return sectionIndex === -1 ? null : sectionIndex;\n  }\n\n  function next(position) {\n    var _position = _slicedToArray(position, 2);\n\n    var sectionIndex = _position[0];\n    var itemIndex = _position[1];\n\n\n    if (multiSection) {\n      if (itemIndex === null || itemIndex === data[sectionIndex] - 1) {\n        sectionIndex = nextNonEmptySectionIndex(sectionIndex);\n\n        if (sectionIndex === null) {\n          return [null, null];\n        }\n\n        return [sectionIndex, 0];\n      }\n\n      return [sectionIndex, itemIndex + 1];\n    }\n\n    if (data === 0 || itemIndex === data - 1) {\n      return [null, null];\n    }\n\n    if (itemIndex === null) {\n      return [null, 0];\n    }\n\n    return [null, itemIndex + 1];\n  }\n\n  function prev(position) {\n    var _position2 = _slicedToArray(position, 2);\n\n    var sectionIndex = _position2[0];\n    var itemIndex = _position2[1];\n\n\n    if (multiSection) {\n      if (itemIndex === null || itemIndex === 0) {\n        sectionIndex = prevNonEmptySectionIndex(sectionIndex);\n\n        if (sectionIndex === null) {\n          return [null, null];\n        }\n\n        return [sectionIndex, data[sectionIndex] - 1];\n      }\n\n      return [sectionIndex, itemIndex - 1];\n    }\n\n    if (data === 0 || itemIndex === 0) {\n      return [null, null];\n    }\n\n    if (itemIndex === null) {\n      return [null, data - 1];\n    }\n\n    return [null, itemIndex - 1];\n  }\n\n  function isLast(position) {\n    return next(position)[1] === null;\n  }\n\n  return {\n    next: next,\n    prev: prev,\n    isLast: isLast\n  };\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar truthy = function truthy(x) {\n  return x;\n};\n\nexports['default'] = function (input) {\n  var _ref = Array.isArray(input) && input.length === 2 ? input : [input, null];\n\n  var _ref2 = _slicedToArray(_ref, 2);\n\n  var theme = _ref2[0];\n  var classNameDecorator = _ref2[1];\n\n  return function (key) {\n    for (var _len = arguments.length, names = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      names[_key - 1] = arguments[_key];\n    }\n\n    var styles = names.map(function (name) {\n      return theme[name];\n    }).filter(truthy);\n\n    return typeof styles[0] === 'string' || typeof classNameDecorator === 'function' ? { key: key, className: classNameDecorator ? classNameDecorator.apply(undefined, _toConsumableArray(styles)) : styles.join(' ') } : { key: key, style: _objectAssign2['default'].apply(undefined, [{}].concat(_toConsumableArray(styles))) };\n  };\n};\n\nmodule.exports = exports['default'];","'use strict';\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction ToObject(val) {\n\tif (val == null) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction ownEnumerableKeys(obj) {\n\tvar keys = Object.getOwnPropertyNames(obj);\n\n\tif (Object.getOwnPropertySymbols) {\n\t\tkeys = keys.concat(Object.getOwnPropertySymbols(obj));\n\t}\n\n\treturn keys.filter(function (key) {\n\t\treturn propIsEnumerable.call(obj, key);\n\t});\n}\n\nmodule.exports = Object.assign || function (target, source) {\n\tvar from;\n\tvar keys;\n\tvar to = ToObject(target);\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = arguments[s];\n\t\tkeys = ownEnumerableKeys(Object(from));\n\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tto[keys[i]] = from[keys[i]];\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar SectionTitle = /*#__PURE__*/function (_Component) {\n  _inherits(SectionTitle, _Component);\n\n  var _super = _createSuper(SectionTitle);\n\n  function SectionTitle() {\n    _classCallCheck(this, SectionTitle);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(SectionTitle, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return (0, _compareObjects[\"default\"])(nextProps, this.props);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props = this.props,\n          section = _this$props.section,\n          renderSectionTitle = _this$props.renderSectionTitle,\n          theme = _this$props.theme,\n          sectionKeyPrefix = _this$props.sectionKeyPrefix;\n      var sectionTitle = renderSectionTitle(section);\n\n      if (!sectionTitle) {\n        return null;\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"title\"), 'sectionTitle'), sectionTitle);\n    }\n  }]);\n\n  return SectionTitle;\n}(_react.Component);\n\nexports[\"default\"] = SectionTitle;\n\n_defineProperty(SectionTitle, \"propTypes\", {\n  section: _propTypes[\"default\"].any.isRequired,\n  renderSectionTitle: _propTypes[\"default\"].func.isRequired,\n  theme: _propTypes[\"default\"].func.isRequired,\n  sectionKeyPrefix: _propTypes[\"default\"].string.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Item = _interopRequireDefault(require(\"./Item\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar ItemsList = /*#__PURE__*/function (_Component) {\n  _inherits(ItemsList, _Component);\n\n  var _super = _createSuper(ItemsList);\n\n  function ItemsList() {\n    var _this;\n\n    _classCallCheck(this, ItemsList);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"storeHighlightedItemReference\", function (highlightedItem) {\n      _this.props.onHighlightedItemChange(highlightedItem === null ? null : highlightedItem.item);\n    });\n\n    return _this;\n  }\n\n  _createClass(ItemsList, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return (0, _compareObjects[\"default\"])(nextProps, this.props, ['itemProps']);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var _this$props = this.props,\n          items = _this$props.items,\n          itemProps = _this$props.itemProps,\n          renderItem = _this$props.renderItem,\n          renderItemData = _this$props.renderItemData,\n          sectionIndex = _this$props.sectionIndex,\n          highlightedItemIndex = _this$props.highlightedItemIndex,\n          getItemId = _this$props.getItemId,\n          theme = _this$props.theme,\n          keyPrefix = _this$props.keyPrefix;\n      var sectionPrefix = sectionIndex === null ? keyPrefix : \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n      var isItemPropsFunction = typeof itemProps === 'function';\n      return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", _extends({\n        role: \"listbox\"\n      }, theme(\"\".concat(sectionPrefix, \"items-list\"), 'itemsList')), items.map(function (item, itemIndex) {\n        var isFirst = itemIndex === 0;\n        var isHighlighted = itemIndex === highlightedItemIndex;\n        var itemKey = \"\".concat(sectionPrefix, \"item-\").concat(itemIndex);\n        var itemPropsObj = isItemPropsFunction ? itemProps({\n          sectionIndex: sectionIndex,\n          itemIndex: itemIndex\n        }) : itemProps;\n\n        var allItemProps = _objectSpread({\n          id: getItemId(sectionIndex, itemIndex),\n          'aria-selected': isHighlighted\n        }, theme(itemKey, 'item', isFirst && 'itemFirst', isHighlighted && 'itemHighlighted'), {}, itemPropsObj);\n\n        if (isHighlighted) {\n          allItemProps.ref = _this2.storeHighlightedItemReference;\n        } // `key` is provided by theme()\n\n        /* eslint-disable react/jsx-key */\n\n\n        return /*#__PURE__*/_react[\"default\"].createElement(_Item[\"default\"], _extends({}, allItemProps, {\n          sectionIndex: sectionIndex,\n          isHighlighted: isHighlighted,\n          itemIndex: itemIndex,\n          item: item,\n          renderItem: renderItem,\n          renderItemData: renderItemData\n        }));\n        /* eslint-enable react/jsx-key */\n      }));\n    }\n  }]);\n\n  return ItemsList;\n}(_react.Component);\n\nexports[\"default\"] = ItemsList;\n\n_defineProperty(ItemsList, \"propTypes\", {\n  items: _propTypes[\"default\"].array.isRequired,\n  itemProps: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n  renderItem: _propTypes[\"default\"].func.isRequired,\n  renderItemData: _propTypes[\"default\"].object.isRequired,\n  sectionIndex: _propTypes[\"default\"].number,\n  highlightedItemIndex: _propTypes[\"default\"].number,\n  onHighlightedItemChange: _propTypes[\"default\"].func.isRequired,\n  getItemId: _propTypes[\"default\"].func.isRequired,\n  theme: _propTypes[\"default\"].func.isRequired,\n  keyPrefix: _propTypes[\"default\"].string.isRequired\n});\n\n_defineProperty(ItemsList, \"defaultProps\", {\n  sectionIndex: null\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Item = /*#__PURE__*/function (_Component) {\n  _inherits(Item, _Component);\n\n  var _super = _createSuper(Item);\n\n  function Item() {\n    var _this;\n\n    _classCallCheck(this, Item);\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"storeItemReference\", function (item) {\n      if (item !== null) {\n        _this.item = item;\n      }\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (event) {\n      var _this$props = _this.props,\n          sectionIndex = _this$props.sectionIndex,\n          itemIndex = _this$props.itemIndex;\n\n      _this.props.onMouseEnter(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (event) {\n      var _this$props2 = _this.props,\n          sectionIndex = _this$props2.sectionIndex,\n          itemIndex = _this$props2.itemIndex;\n\n      _this.props.onMouseLeave(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (event) {\n      var _this$props3 = _this.props,\n          sectionIndex = _this$props3.sectionIndex,\n          itemIndex = _this$props3.itemIndex;\n\n      _this.props.onMouseDown(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n      var _this$props4 = _this.props,\n          sectionIndex = _this$props4.sectionIndex,\n          itemIndex = _this$props4.itemIndex;\n\n      _this.props.onClick(event, {\n        sectionIndex: sectionIndex,\n        itemIndex: itemIndex\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(Item, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return (0, _compareObjects[\"default\"])(nextProps, this.props, ['renderItemData']);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props5 = this.props,\n          isHighlighted = _this$props5.isHighlighted,\n          item = _this$props5.item,\n          renderItem = _this$props5.renderItem,\n          renderItemData = _this$props5.renderItemData,\n          restProps = _objectWithoutProperties(_this$props5, [\"isHighlighted\", \"item\", \"renderItem\", \"renderItemData\"]);\n\n      delete restProps.sectionIndex;\n      delete restProps.itemIndex;\n\n      if (typeof restProps.onMouseEnter === 'function') {\n        restProps.onMouseEnter = this.onMouseEnter;\n      }\n\n      if (typeof restProps.onMouseLeave === 'function') {\n        restProps.onMouseLeave = this.onMouseLeave;\n      }\n\n      if (typeof restProps.onMouseDown === 'function') {\n        restProps.onMouseDown = this.onMouseDown;\n      }\n\n      if (typeof restProps.onClick === 'function') {\n        restProps.onClick = this.onClick;\n      }\n\n      return /*#__PURE__*/_react[\"default\"].createElement(\"li\", _extends({\n        role: \"option\"\n      }, restProps, {\n        ref: this.storeItemReference\n      }), renderItem(item, _objectSpread({\n        isHighlighted: isHighlighted\n      }, renderItemData)));\n    }\n  }]);\n\n  return Item;\n}(_react.Component);\n\nexports[\"default\"] = Item;\n\n_defineProperty(Item, \"propTypes\", {\n  sectionIndex: _propTypes[\"default\"].number,\n  isHighlighted: _propTypes[\"default\"].bool.isRequired,\n  itemIndex: _propTypes[\"default\"].number.isRequired,\n  item: _propTypes[\"default\"].any.isRequired,\n  renderItem: _propTypes[\"default\"].func.isRequired,\n  renderItemData: _propTypes[\"default\"].object.isRequired,\n  onMouseEnter: _propTypes[\"default\"].func,\n  onMouseLeave: _propTypes[\"default\"].func,\n  onMouseDown: _propTypes[\"default\"].func,\n  onClick: _propTypes[\"default\"].func\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.mapToAutowhateverTheme = exports.defaultTheme = void 0;\nvar defaultTheme = {\n  container: 'react-autosuggest__container',\n  containerOpen: 'react-autosuggest__container--open',\n  input: 'react-autosuggest__input',\n  inputOpen: 'react-autosuggest__input--open',\n  inputFocused: 'react-autosuggest__input--focused',\n  suggestionsContainer: 'react-autosuggest__suggestions-container',\n  suggestionsContainerOpen: 'react-autosuggest__suggestions-container--open',\n  suggestionsList: 'react-autosuggest__suggestions-list',\n  suggestion: 'react-autosuggest__suggestion',\n  suggestionFirst: 'react-autosuggest__suggestion--first',\n  suggestionHighlighted: 'react-autosuggest__suggestion--highlighted',\n  sectionContainer: 'react-autosuggest__section-container',\n  sectionContainerFirst: 'react-autosuggest__section-container--first',\n  sectionTitle: 'react-autosuggest__section-title'\n};\nexports.defaultTheme = defaultTheme;\n\nvar mapToAutowhateverTheme = function mapToAutowhateverTheme(theme) {\n  var result = {};\n\n  for (var key in theme) {\n    switch (key) {\n      case 'suggestionsContainer':\n        result['itemsContainer'] = theme[key];\n        break;\n\n      case 'suggestionsContainerOpen':\n        result['itemsContainerOpen'] = theme[key];\n        break;\n\n      case 'suggestion':\n        result['item'] = theme[key];\n        break;\n\n      case 'suggestionFirst':\n        result['itemFirst'] = theme[key];\n        break;\n\n      case 'suggestionHighlighted':\n        result['itemHighlighted'] = theme[key];\n        break;\n\n      case 'suggestionsList':\n        result['itemsList'] = theme[key];\n        break;\n\n      default:\n        result[key] = theme[key];\n    }\n  }\n\n  return result;\n};\n\nexports.mapToAutowhateverTheme = mapToAutowhateverTheme;","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\n\n/**\n * Expose `reduceFunctionCall`\n *\n * @type {Function}\n */\nmodule.exports = reduceFunctionCall\n\n/**\n * Walkthrough all expressions, evaluate them and insert them into the declaration\n *\n * @param {Array} expressions\n * @param {Object} declaration\n */\n\nfunction reduceFunctionCall(string, functionRE, callback) {\n  var call = string\n  return getFunctionCalls(string, functionRE).reduce(function(string, obj) {\n    return string.replace(obj.functionIdentifier + \"(\" + obj.matches.body + \")\", evalFunctionCall(obj.matches.body, obj.functionIdentifier, callback, call, functionRE))\n  }, string)\n}\n\n/**\n * Parses expressions in a value\n *\n * @param {String} value\n * @returns {Array}\n * @api private\n */\n\nfunction getFunctionCalls(call, functionRE) {\n  var expressions = []\n\n  var fnRE = typeof functionRE === \"string\" ? new RegExp(\"\\\\b(\" + functionRE + \")\\\\(\") : functionRE\n  do {\n    var searchMatch = fnRE.exec(call)\n    if (!searchMatch) {\n      return expressions\n    }\n    if (searchMatch[1] === undefined) {\n      throw new Error(\"Missing the first couple of parenthesis to get the function identifier in \" + functionRE)\n    }\n    var fn = searchMatch[1]\n    var startIndex = searchMatch.index\n    var matches = balanced(\"(\", \")\", call.substring(startIndex))\n\n    if (!matches || matches.start !== searchMatch[0].length - 1) {\n      throw new SyntaxError(fn + \"(): missing closing ')' in the value '\" + call + \"'\")\n    }\n\n    expressions.push({matches: matches, functionIdentifier: fn})\n    call = matches.post\n  }\n  while (fnRE.test(call))\n\n  return expressions\n}\n\n/**\n * Evaluates an expression\n *\n * @param {String} expression\n * @returns {String}\n * @api private\n */\n\nfunction evalFunctionCall (string, functionIdentifier, callback, call, functionRE) {\n  // allow recursivity\n  return callback(reduceFunctionCall(string, functionRE, callback), functionIdentifier, call)\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","var Mexp=require('./postfix_evaluator.js');\r\nMexp.prototype.formulaEval = function () {\r\n\t\"use strict\";\r\n\tvar stack=[],pop1,pop2,pop3;\r\n\tvar disp=[];\r\n\tvar temp='';\r\n\tvar arr=this.value;\r\n\tfor(var i=0;i<arr.length;i++){\r\n\t\tif(arr[i].type===1||arr[i].type===3){\r\n\t\t\tdisp.push({value:arr[i].type===3?arr[i].show:arr[i].value,type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===13){\r\n\t\t\tdisp.push({value:arr[i].show,type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===0){\r\n\t\t\tdisp[disp.length-1]={value:arr[i].show+(arr[i].show!=\"-\"?\"(\":\"\")+disp[disp.length-1].value+(arr[i].show!=\"-\"?\")\":\"\"),type:0};\r\n\t\t}\r\n\t\telse if(arr[i].type===7){\r\n\t\t\tdisp[disp.length-1]={value:(disp[disp.length-1].type!=1?\"(\":\"\")+disp[disp.length-1].value+(disp[disp.length-1].type!=1?\")\":\"\")+arr[i].show,type:7};\r\n\t\t}\r\n\t\telse if(arr[i].type===10){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tif(arr[i].show==='P'||arr[i].show==='C')disp.push({value:\"<sup>\"+pop2.value+\"</sup>\"+arr[i].show+\"<sub>\"+pop1.value+\"</sub>\",type:10});\r\n\t\t\telse disp.push({value:(pop2.type!=1?\"(\":\"\")+pop2.value+(pop2.type!=1?\")\":\"\")+\"<sup>\"+pop1.value+\"</sup>\",type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===2||arr[i].type===9){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tdisp.push({value:(pop2.type!=1?\"(\":\"\")+pop2.value+(pop2.type!=1?\")\":\"\")+arr[i].show+(pop1.type!=1?\"(\":\"\")+pop1.value+(pop1.type!=1?\")\":\"\"),type:arr[i].type});\r\n\t\t}\r\n\t\telse if(arr[i].type===12){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tpop3=disp.pop();\r\n\t\t\tdisp.push({value:arr[i].show+\"(\"+pop3.value+\",\"+pop2.value+\",\"+pop1.value+\")\",type:12});\r\n\t\t}\r\n\t}\r\n\treturn disp[0].value;\r\n};\r\nmodule.exports=Mexp;","var Mexp=require('./postfix.js');\r\nMexp.prototype.postfixEval = function (UserDefined) {\r\n\t'use strict';\r\n\tUserDefined=UserDefined||{};\r\n\tUserDefined.PI=Math.PI;\r\n\tUserDefined.E=Math.E;\r\n\tvar stack=[],pop1,pop2,pop3;\r\n\tvar disp=[];\r\n\tvar temp='';\r\n\tvar arr=this.value;\r\n\tvar bool=(typeof UserDefined.n!==\"undefined\");\r\n\tfor(var i=0;i<arr.length;i++){\r\n\t\tif(arr[i].type===1){\r\n\t\t\tstack.push({value:arr[i].value,type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===3){\r\n\t\t\tstack.push({value:UserDefined[arr[i].value],type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===0){\r\n\t\t\tif(typeof stack[stack.length-1].type===\"undefined\"){\r\n\t\t\t\tstack[stack.length-1].value.push(arr[i]);\r\n\t\t\t}\r\n\t\t\telse stack[stack.length-1].value=arr[i].value(stack[stack.length-1].value);\r\n\t\t}\r\n\t\telse if(arr[i].type===7){\r\n\t\t\tif(typeof stack[stack.length-1].type===\"undefined\"){\r\n\t\t\t\tstack[stack.length-1].value.push(arr[i]);\r\n\t\t\t}\r\n\t\t\telse stack[stack.length-1].value=arr[i].value(stack[stack.length-1].value);\r\n\t\t}\r\n\t\telse if(arr[i].type===8){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tstack.push({type:1,value:arr[i].value(pop2.value,pop1.value)});\r\n\t\t}\r\n\t\telse if(arr[i].type===10){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tif(typeof pop2.type===\"undefined\"){\r\n\t\t\t\tpop2.value=pop2.concat(pop1);\r\n\t\t\t\tpop2.value.push(arr[i]);\r\n\t\t\t\tstack.push(pop2);\r\n\t\t\t}\r\n\t\t\telse if (typeof pop1.type===\"undefined\") {\r\n\t\t\t\tpop1.unshift(pop2);\r\n\t\t\t\tpop1.push(arr[i]);\r\n\t\t\t\tstack.push(pop1);\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tstack.push({type:1,value:arr[i].value(pop2.value,pop1.value)});\r\n            }\r\n\t\t}\r\n\t\telse if(arr[i].type===2||arr[i].type===9){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tif(typeof pop2.type===\"undefined\"){\r\n\t\t\t\tpop2=pop2.concat(pop1);\r\n\t\t\t\tpop2.push(arr[i]);\r\n\t\t\t\tstack.push(pop2);\r\n\t\t\t}\r\n\t\t\telse if (typeof pop1.type===\"undefined\") {\r\n\t\t\t\tpop1.unshift(pop2);\r\n\t\t\t\tpop1.push(arr[i]);\r\n\t\t\t\tstack.push(pop1);\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tstack.push({type:1,value:arr[i].value(pop2.value,pop1.value)});\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if(arr[i].type===12){\r\n\t\t\tpop1=stack.pop();\r\n\t\t\tif (typeof pop1.type!==\"undefined\") {\r\n\t\t\t\tpop1=[pop1];\r\n\t\t\t}\r\n\t\t\tpop2=stack.pop();\r\n\t\t\tpop3=stack.pop();\r\n\t\t\tstack.push({type:1,value:arr[i].value(pop3.value,pop2.value,new Mexp(pop1))});\r\n\t\t}\r\n\t\telse if(arr[i].type===13){\r\n\t\t\tif(bool){\r\n\t\t\t\tstack.push({value:UserDefined[arr[i].value],type:3});\r\n\t\t\t}\r\n\t\t\telse stack.push([arr[i]]);\r\n\t\t}\r\n\t}\r\n\tif (stack.length>1) {\r\n\t\tthrow(new Mexp.Exception(\"Uncaught Syntax error\"));\r\n\t}\r\n\treturn stack[0].value>1000000000000000?\"Infinity\":parseFloat(stack[0].value.toFixed(15));\r\n};\r\nMexp.eval=function(str,tokens,obj){\r\n\tif (typeof tokens===\"undefined\") {\r\n\t\treturn this.lex(str).toPostfix().postfixEval();\r\n\t}\r\n\telse if (typeof obj===\"undefined\") {\r\n\t\tif (typeof tokens.length!==\"undefined\") \r\n\t\t\treturn this.lex(str,tokens).toPostfix().postfixEval();\r\n\t\telse\r\n\t\t\treturn this.lex(str).toPostfix().postfixEval(tokens);\r\n\t}\r\n\telse\r\n\t\treturn this.lex(str,tokens).toPostfix().postfixEval(obj);\r\n};\r\nmodule.exports=Mexp;","\r\nvar Mexp = require('./lexer.js');\r\n\r\nMexp.prototype.toPostfix = function () {\r\n\t'use strict';\r\n\tvar post = [], elem, popped, prep, pre, ele;\r\n\tvar stack = [{ value: \"(\", type: 4, pre: 0 }];\r\n\tvar arr = this.value;\r\n\tfor (var i = 1; i < arr.length; i++) {\r\n\t\tif (arr[i].type === 1 || arr[i].type === 3 || arr[i].type === 13) {\t//if token is number,constant,or n(which is also a special constant in our case)\r\n\t\t\tif (arr[i].type === 1)\r\n\t\t\t\tarr[i].value = Number(arr[i].value);\r\n\t\t\tpost.push(arr[i]);\r\n\t\t}\r\n\t\telse if (arr[i].type === 4) {\r\n\t\t\tstack.push(arr[i]);\r\n\t\t}\r\n\t\telse if (arr[i].type === 5) {\r\n\t\t\twhile ((popped = stack.pop()).type !== 4) {\r\n\t\t\t\tpost.push(popped);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (arr[i].type === 11) {\r\n\t\t\twhile ((popped = stack.pop()).type !== 4) {\r\n\t\t\t\tpost.push(popped);\r\n\t\t\t}\r\n\t\t\tstack.push(popped);\r\n\t\t}\r\n\t\telse {\r\n\t\t\telem = arr[i];\r\n\t\t\tpre = elem.pre;\r\n\t\t\tele = stack[stack.length - 1];\r\n\t\t\tprep = ele.pre;\r\n\t\t\tvar flag = ele.value == 'Math.pow' && elem.value == 'Math.pow';\r\n\t\t\tif (pre > prep) stack.push(elem);\r\n\t\t\telse {\r\n\t\t\t\twhile (prep >= pre && !flag || flag && pre < prep) {\r\n\t\t\t\t\tpopped = stack.pop();\r\n\t\t\t\t\tele = stack[stack.length - 1];\r\n\t\t\t\t\tpost.push(popped);\r\n\t\t\t\t\tprep = ele.pre;\r\n\t\t\t\t\tflag = elem.value == 'Math.pow' && ele.value == 'Math.pow';\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(elem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn new Mexp(post);\r\n};\r\nmodule.exports = Mexp;","'use strict'\r\nvar Mexp = require('./math_function.js')\r\nfunction inc (arr, val) {\r\n  for (var i = 0; i < arr.length; i++) {\r\n    arr[i] += val\r\n  }\r\n  return arr\r\n}\r\nvar token = [\r\n  'sin',\r\n  'cos',\r\n  'tan',\r\n  'pi',\r\n  '(',\r\n  ')',\r\n  'P',\r\n  'C',\r\n  ' ',\r\n  'asin',\r\n  'acos',\r\n  'atan',\r\n  '7',\r\n  '8',\r\n  '9',\r\n  'int',\r\n  'cosh',\r\n  'acosh',\r\n  'ln',\r\n  '^',\r\n  'root',\r\n  '4',\r\n  '5',\r\n  '6',\r\n  '/',\r\n  '!',\r\n  'tanh',\r\n  'atanh',\r\n  'Mod',\r\n  '1',\r\n  '2',\r\n  '3',\r\n  '*',\r\n  'sinh',\r\n  'asinh',\r\n  'e',\r\n  'log',\r\n  '0',\r\n  '.',\r\n  '+',\r\n  '-',\r\n  ',',\r\n  'Sigma',\r\n  'n',\r\n  'Pi',\r\n  'pow'\r\n]\r\nvar show = [\r\n  'sin',\r\n  'cos',\r\n  'tan',\r\n  '&pi;',\r\n  '(',\r\n  ')',\r\n  'P',\r\n  'C',\r\n  ' ',\r\n  'asin',\r\n  'acos',\r\n  'atan',\r\n  '7',\r\n  '8',\r\n  '9',\r\n  'Int',\r\n  'cosh',\r\n  'acosh',\r\n  ' ln',\r\n  '^',\r\n  'root',\r\n  '4',\r\n  '5',\r\n  '6',\r\n  '&divide;',\r\n  '!',\r\n  'tanh',\r\n  'atanh',\r\n  ' Mod ',\r\n  '1',\r\n  '2',\r\n  '3',\r\n  '&times;',\r\n  'sinh',\r\n  'asinh',\r\n  'e',\r\n  ' log',\r\n  '0',\r\n  '.',\r\n  '+',\r\n  '-',\r\n  ',',\r\n  '&Sigma;',\r\n  'n',\r\n  '&Pi;',\r\n  'pow'\r\n]\r\nvar eva = [\r\n  Mexp.math.sin,\r\n  Mexp.math.cos,\r\n  Mexp.math.tan,\r\n  'PI',\r\n  '(',\r\n  ')',\r\n  Mexp.math.P,\r\n  Mexp.math.C,\r\n  ' '.anchor,\r\n  Mexp.math.asin,\r\n  Mexp.math.acos,\r\n  Mexp.math.atan,\r\n  '7',\r\n  '8',\r\n  '9',\r\n  Math.floor,\r\n  Mexp.math.cosh,\r\n  Mexp.math.acosh,\r\n  Math.log,\r\n  Math.pow,\r\n  Math.sqrt,\r\n  '4',\r\n  '5',\r\n  '6',\r\n  Mexp.math.div,\r\n  Mexp.math.fact,\r\n  Mexp.math.tanh,\r\n  Mexp.math.atanh,\r\n  Mexp.math.mod,\r\n  '1',\r\n  '2',\r\n  '3',\r\n  Mexp.math.mul,\r\n  Mexp.math.sinh,\r\n  Mexp.math.asinh,\r\n  'E',\r\n  Mexp.math.log,\r\n  '0',\r\n  '.',\r\n  Mexp.math.add,\r\n  Mexp.math.sub,\r\n  ',',\r\n  Mexp.math.sigma,\r\n  'n',\r\n  Mexp.math.Pi,\r\n  Math.pow\r\n]\r\nvar preced = {\r\n  0: 11,\r\n  1: 0,\r\n  2: 3,\r\n  3: 0,\r\n  4: 0,\r\n  5: 0,\r\n  6: 0,\r\n  7: 11,\r\n  8: 11,\r\n  9: 1,\r\n  10: 10,\r\n  11: 0,\r\n  12: 11,\r\n  13: 0,\r\n  14: -1 // will be filtered after lexer\r\n} // stores precedence by types\r\nvar type = [\r\n  0, 0, 0, 3, 4, 5, 10, 10, 14, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 10, 0, 1, 1, 1, 2, 7, 0, 0, 2, 1, 1,\r\n  1, 2, 0, 0, 3, 0, 1, 6, 9, 9, 11, 12, 13, 12, 8\r\n]\r\n/*\r\n0 : function with syntax function_name(Maths_exp)\r\n1 : numbers\r\n2 : binary operators like * / Mod left associate and same precedence\r\n3 : Math constant values like e,pi,Cruncher ans\r\n4 : opening bracket\r\n5 : closing bracket\r\n6 : decimal\r\n7 : function with syntax (Math_exp)function_name\r\n8: function with syntax function_name(Math_exp1,Math_exp2)\r\n9 : binary operator like +,-\r\n10: binary operator like P C or ^\r\n11: ,\r\n12: function with , seperated three parameters and third parameter is a string that will be mexp string\r\n13: variable of Sigma function\r\n*/\r\nvar type0 = {\r\n  0: true,\r\n  1: true,\r\n  3: true,\r\n  4: true,\r\n  6: true,\r\n  8: true,\r\n  9: true,\r\n  12: true,\r\n  13: true,\r\n  14: true\r\n} // type2:true,type4:true,type9:true,type11:true,type21:true,type22\r\nvar type1 = {\r\n  0: true,\r\n  1: true,\r\n  2: true,\r\n  3: true,\r\n  4: true,\r\n  5: true,\r\n  6: true,\r\n  7: true,\r\n  8: true,\r\n  9: true,\r\n  10: true,\r\n  11: true,\r\n  12: true,\r\n  13: true\r\n} // type3:true,type5:true,type7:true,type23\r\nvar type1Asterick = {\r\n  0: true,\r\n  3: true,\r\n  4: true,\r\n  8: true,\r\n  12: true,\r\n  13: true\r\n}\r\nvar empty = {}\r\nvar type3Asterick = {\r\n  0: true,\r\n  1: true,\r\n  3: true,\r\n  4: true,\r\n  6: true,\r\n  8: true,\r\n  12: true,\r\n  13: true\r\n} // type_5:true,type_7:true,type_23\r\nvar type6 = {\r\n  1: true\r\n}\r\nvar newAr = [\r\n  [],\r\n  [\r\n    '1',\r\n    '2',\r\n    '3',\r\n    '7',\r\n    '8',\r\n    '9',\r\n    '4',\r\n    '5',\r\n    '6',\r\n    '+',\r\n    '-',\r\n    '*',\r\n    '/',\r\n    '(',\r\n    ')',\r\n    '^',\r\n    '!',\r\n    'P',\r\n    'C',\r\n    'e',\r\n    '0',\r\n    '.',\r\n    ',',\r\n    'n',\r\n    ' '\r\n  ],\r\n  ['pi', 'ln', 'Pi'],\r\n  ['sin', 'cos', 'tan', 'Del', 'int', 'Mod', 'log', 'pow'],\r\n  ['asin', 'acos', 'atan', 'cosh', 'root', 'tanh', 'sinh'],\r\n  ['acosh', 'atanh', 'asinh', 'Sigma']\r\n]\r\n\r\nfunction match (str1, str2, i, x) {\r\n  for (var f = 0; f < x; f++) {\r\n    if (str1[i + f] !== str2[f]) {\r\n      return false\r\n    }\r\n  }\r\n  return true\r\n}\r\nMexp.addToken = function (tokens) {\r\n  for (var i = 0; i < tokens.length; i++) {\r\n    var x = tokens[i].token.length\r\n    var temp = -1\r\n\r\n    // newAr is a specially designed data structure index of 1d array = length of tokens\r\n    newAr[x] = newAr[x] || []\r\n    for (var y = 0; y < newAr[x].length; y++) {\r\n      if (tokens[i].token === newAr[x][y]) {\r\n        temp = token.indexOf(newAr[x][y])\r\n        break\r\n      }\r\n    }\r\n    if (temp === -1) {\r\n      token.push(tokens[i].token)\r\n      type.push(tokens[i].type)\r\n      if (newAr.length <= tokens[i].token.length) {\r\n        newAr[tokens[i].token.length] = []\r\n      }\r\n      newAr[tokens[i].token.length].push(tokens[i].token)\r\n      eva.push(tokens[i].value)\r\n      show.push(tokens[i].show)\r\n    } else {\r\n      // overwrite\r\n      token[temp] = tokens[i].token\r\n      type[temp] = tokens[i].type\r\n      eva[temp] = tokens[i].value\r\n      show[temp] = tokens[i].show\r\n    }\r\n  }\r\n}\r\n\r\nfunction tokenize (string) {\r\n  var nodes = []\r\n  var length = string.length\r\n  var key, x, y\r\n  for (var i = 0; i < length; i++) {\r\n    if (i < length - 1 && string[i] === ' ' && string[i + 1] === ' ') {\r\n      continue\r\n    }\r\n    key = ''\r\n    for (\r\n      x = string.length - i > newAr.length - 2 ? newAr.length - 1 : string.length - i;\r\n      x > 0;\r\n      x--\r\n    ) {\r\n      if (newAr[x] === undefined) continue\r\n      for (y = 0; y < newAr[x].length; y++) {\r\n        if (match(string, newAr[x][y], i, x)) {\r\n          key = newAr[x][y]\r\n          y = newAr[x].length\r\n          x = 0\r\n        }\r\n      }\r\n    }\r\n    i += key.length - 1\r\n    if (key === '') {\r\n      throw new Mexp.Exception(\"Can't understand after \" + string.slice(i))\r\n    }\r\n    var index = token.indexOf(key)\r\n    nodes.push({\r\n      index: index,\r\n      token: key,\r\n      type: type[index],\r\n      eval: eva[index],\r\n      precedence: preced[type[index]],\r\n      show: show[index]\r\n    })\r\n  }\r\n  return nodes\r\n}\r\n\r\nMexp.lex = function (inp, tokens) {\r\n  'use strict'\r\n\r\n  var changeSignObj = {\r\n    value: Mexp.math.changeSign,\r\n    type: 0,\r\n    pre: 21,\r\n    show: '-'\r\n  }\r\n  var closingParObj = {\r\n    value: ')',\r\n    show: ')',\r\n    type: 5,\r\n    pre: 0\r\n  }\r\n  var openingParObj = {\r\n    value: '(',\r\n    type: 4,\r\n    pre: 0,\r\n    show: '('\r\n  }\r\n  var str = [openingParObj]\r\n\r\n  var ptc = [] // Parenthesis to close at the beginning is after one token\r\n  var inpStr = inp\r\n  var allowed = type0\r\n  var bracToClose = 0\r\n  var asterick = empty\r\n  var prevKey = ''\r\n  var i\r\n  if (typeof tokens !== 'undefined') {\r\n    Mexp.addToken(tokens)\r\n  }\r\n  var obj = {}\r\n  var nodes = tokenize(inpStr)\r\n  for (i = 0; i < nodes.length; i++) {\r\n    var node = nodes[i]\r\n    if (node.type === 14) {\r\n      if (\r\n        i > 0 &&\r\n        i < nodes.length - 1 &&\r\n        nodes[i + 1].type === 1 &&\r\n        (nodes[i - 1].type === 1 || nodes[i - 1].type === 6)\r\n      ) { throw new Mexp.Exception('Unexpected Space') }\r\n      continue\r\n    }\r\n    var cToken = node.token\r\n    var cType = node.type\r\n    var cEv = node.eval\r\n    var cPre = node.precedence\r\n    var cShow = node.show\r\n    var pre = str[str.length - 1]\r\n    var j\r\n    for (j = ptc.length; j--;) {\r\n      // loop over ptc\r\n      if (ptc[j] === 0) {\r\n        if ([0, 2, 3, 4, 5, 9, 11, 12, 13].indexOf(cType) !== -1) {\r\n          if (allowed[cType] !== true) {\r\n            throw new Mexp.Exception(cToken + ' is not allowed after ' + prevKey)\r\n          }\r\n          str.push(closingParObj)\r\n          allowed = type1\r\n          asterick = type3Asterick\r\n          inc(ptc, -1).pop()\r\n        }\r\n      } else break\r\n    }\r\n    if (allowed[cType] !== true) {\r\n      throw new Mexp.Exception(cToken + ' is not allowed after ' + prevKey)\r\n    }\r\n    if (asterick[cType] === true) {\r\n      cType = 2\r\n      cEv = Mexp.math.mul\r\n      cShow = '&times;'\r\n      cPre = 3\r\n      i = i - 1\r\n    }\r\n    obj = {\r\n      value: cEv,\r\n      type: cType,\r\n      pre: cPre,\r\n      show: cShow\r\n    }\r\n    if (cType === 0) {\r\n      allowed = type0\r\n      asterick = empty\r\n      inc(ptc, 2).push(2)\r\n      str.push(obj)\r\n      str.push(openingParObj)\r\n    } else if (cType === 1) {\r\n      if (pre.type === 1) {\r\n        pre.value += cEv\r\n        inc(ptc, 1)\r\n      } else {\r\n        str.push(obj)\r\n      }\r\n      allowed = type1\r\n      asterick = type1Asterick\r\n    } else if (cType === 2) {\r\n      allowed = type0\r\n      asterick = empty\r\n      inc(ptc, 2)\r\n      str.push(obj)\r\n    } else if (cType === 3) {\r\n      // constant\r\n      str.push(obj)\r\n      allowed = type1\r\n      asterick = type3Asterick\r\n    } else if (cType === 4) {\r\n      inc(ptc, 1)\r\n      bracToClose++\r\n      allowed = type0\r\n      asterick = empty\r\n      str.push(obj)\r\n    } else if (cType === 5) {\r\n      if (!bracToClose) {\r\n        throw new Mexp.Exception('Closing parenthesis are more than opening one, wait What!!!')\r\n      }\r\n      bracToClose--\r\n      allowed = type1\r\n      asterick = type3Asterick\r\n      str.push(obj)\r\n      inc(ptc, 1)\r\n    } else if (cType === 6) {\r\n      if (pre.hasDec) {\r\n        throw new Mexp.Exception('Two decimals are not allowed in one number')\r\n      }\r\n      if (pre.type !== 1) {\r\n        pre = {\r\n          value: 0,\r\n          type: 1,\r\n          pre: 0\r\n        } // pre needs to be changed as it will the last value now to be safe in later code\r\n        str.push(pre)\r\n        inc(ptc, -1)\r\n      }\r\n      allowed = type6\r\n      inc(ptc, 1)\r\n      asterick = empty\r\n      pre.value += cEv\r\n      pre.hasDec = true\r\n    } else if (cType === 7) {\r\n      allowed = type1\r\n      asterick = type3Asterick\r\n      inc(ptc, 1)\r\n      str.push(obj)\r\n    }\r\n    if (cType === 8) {\r\n      allowed = type0\r\n      asterick = empty\r\n      inc(ptc, 4).push(4)\r\n      str.push(obj)\r\n      str.push(openingParObj)\r\n    } else if (cType === 9) {\r\n      if (pre.type === 9) {\r\n        if (pre.value === Mexp.math.add) {\r\n          pre.value = cEv\r\n          pre.show = cShow\r\n          inc(ptc, 1)\r\n        } else if (pre.value === Mexp.math.sub && cShow === '-') {\r\n          pre.value = Mexp.math.add\r\n          pre.show = '+'\r\n          inc(ptc, 1)\r\n        }\r\n      } else if (\r\n        pre.type !== 5 &&\r\n        pre.type !== 7 &&\r\n        pre.type !== 1 &&\r\n        pre.type !== 3 &&\r\n        pre.type !== 13\r\n      ) {\r\n        // changesign only when negative is found\r\n        if (cToken === '-') {\r\n          // do nothing for + token\r\n          // don't add with the above if statement as that will run the else statement of parent if on Ctoken +\r\n          allowed = type0\r\n          asterick = empty\r\n          inc(ptc, 2).push(2)\r\n          str.push(changeSignObj)\r\n          str.push(openingParObj)\r\n        }\r\n      } else {\r\n        str.push(obj)\r\n        inc(ptc, 2)\r\n      }\r\n      allowed = type0\r\n      asterick = empty\r\n    } else if (cType === 10) {\r\n      allowed = type0\r\n      asterick = empty\r\n      inc(ptc, 2)\r\n      str.push(obj)\r\n    } else if (cType === 11) {\r\n      allowed = type0\r\n      asterick = empty\r\n      str.push(obj)\r\n    } else if (cType === 12) {\r\n      allowed = type0\r\n      asterick = empty\r\n      inc(ptc, 6).push(6)\r\n      str.push(obj)\r\n      str.push(openingParObj)\r\n    } else if (cType === 13) {\r\n      allowed = type1\r\n      asterick = type3Asterick\r\n      str.push(obj)\r\n    }\r\n    inc(ptc, -1)\r\n    prevKey = cToken\r\n  }\r\n  for (j = ptc.length; j--;) {\r\n    // loop over ptc\r\n    if (ptc[j] === 0) {\r\n      str.push(closingParObj)\r\n      inc(ptc, -1).pop()\r\n    } else break // if it is not zero so before ptc also cant be zero\r\n  }\r\n  if (allowed[5] !== true) {\r\n    throw new Mexp.Exception('complete the expression')\r\n  }\r\n  while (bracToClose--) {\r\n    str.push(closingParObj)\r\n  }\r\n\r\n  str.push(closingParObj)\r\n  //        console.log(str);\r\n  return new Mexp(str)\r\n}\r\nmodule.exports = Mexp\r\n","\"use strict\";\r\nvar Mexp = function (parsed) {\r\n  this.value = parsed\r\n}\r\n\r\nMexp.math = {\r\n  isDegree: true, // mode of calculator\r\n  acos: function (x) {\r\n    return (Mexp.math.isDegree ? 180 / Math.PI * Math.acos(x) : Math.acos(x))\r\n  },\r\n  add: function (a, b) {\r\n    return a + b\r\n  },\r\n  asin: function (x) {\r\n    return (Mexp.math.isDegree ? 180 / Math.PI * Math.asin(x) : Math.asin(x))\r\n  },\r\n  atan: function (x) {\r\n    return (Mexp.math.isDegree ? 180 / Math.PI * Math.atan(x) : Math.atan(x))\r\n  },\r\n  acosh: function (x) {\r\n    return Math.log(x + Math.sqrt(x * x - 1))\r\n  },\r\n  asinh: function (x) {\r\n    return Math.log(x + Math.sqrt(x * x + 1))\r\n  },\r\n  atanh: function (x) {\r\n    return Math.log((1 + x) / (1 - x))\r\n  },\r\n  C: function (n, r) {\r\n    var pro = 1\r\n    var other = n - r\r\n    var choice = r\r\n    if (choice < other) {\r\n      choice = other\r\n      other = r\r\n    }\r\n    for (var i = choice + 1; i <= n; i++) {\r\n      pro *= i\r\n    }\r\n    return pro / Mexp.math.fact(other)\r\n  },\r\n  changeSign: function (x) {\r\n    return -x\r\n  },\r\n  cos: function (x) {\r\n    if (Mexp.math.isDegree) x = Mexp.math.toRadian(x)\r\n    return Math.cos(x)\r\n  },\r\n  cosh: function (x) {\r\n    return (Math.pow(Math.E, x) + Math.pow(Math.E, -1 * x)) / 2\r\n  },\r\n  div: function (a, b) {\r\n    return a / b\r\n  },\r\n  fact: function (n) {\r\n    if (n % 1 !== 0) return 'NaN'\r\n    var pro = 1\r\n    for (var i = 2; i <= n; i++) {\r\n      pro *= i\r\n    }\r\n    return pro\r\n  },\r\n  inverse: function (x) {\r\n    return 1 / x\r\n  },\r\n  log: function (i) {\r\n    return Math.log(i) / Math.log(10)\r\n  },\r\n  mod: function (a, b) {\r\n    return a % b\r\n  },\r\n  mul: function (a, b) {\r\n    return a * b\r\n  },\r\n  P: function (n, r) {\r\n    var pro = 1\r\n    for (var i = Math.floor(n) - Math.floor(r) + 1; i <= Math.floor(n); i++) {\r\n      pro *= i\r\n    }\r\n    return pro\r\n  },\r\n  Pi: function (low, high, ex) {\r\n    var pro = 1\r\n    for (var i = low; i <= high; i++) {\r\n      pro *= Number(ex.postfixEval({\r\n        n: i\r\n      }))\r\n    }\r\n    return pro\r\n  },\r\n  pow10x: function (e) {\r\n    var x = 1\r\n    while (e--) {\r\n      x *= 10\r\n    }\r\n    return x\r\n  },\r\n  sigma: function (low, high, ex) {\r\n    var sum = 0\r\n    for (var i = low; i <= high; i++) {\r\n      sum += Number(ex.postfixEval({\r\n        n: i\r\n      }))\r\n    }\r\n    return sum\r\n  },\r\n  sin: function (x) {\r\n    if (Mexp.math.isDegree) x = Mexp.math.toRadian(x)\r\n    return Math.sin(x)\r\n  },\r\n  sinh: function (x) {\r\n    return (Math.pow(Math.E, x) - Math.pow(Math.E, -1 * x)) / 2\r\n  },\r\n  sub: function (a, b) {\r\n    return a - b\r\n  },\r\n  tan: function (x) {\r\n    if (Mexp.math.isDegree) x = Mexp.math.toRadian(x)\r\n    return Math.tan(x)\r\n  },\r\n  tanh: function (x) {\r\n    return Mexp.sinha(x) / Mexp.cosha(x)\r\n  },\r\n  toRadian: function (x) {\r\n    return x * Math.PI / 180\r\n  }\r\n}\r\nMexp.Exception = function (message) {\r\n  this.message = message\r\n}\r\nmodule.exports = Mexp\r\n","var mapCacheClear = require('./_mapCacheClear'),\n    mapCacheDelete = require('./_mapCacheDelete'),\n    mapCacheGet = require('./_mapCacheGet'),\n    mapCacheHas = require('./_mapCacheHas'),\n    mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n    ListCache = require('./_ListCache'),\n    Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n    hashDelete = require('./_hashDelete'),\n    hashGet = require('./_hashGet'),\n    hashHas = require('./_hashHas'),\n    hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n    isMasked = require('./_isMasked'),\n    isObject = require('./isObject'),\n    toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n    isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\nmodule.exports = hashSet;\n","var listCacheClear = require('./_listCacheClear'),\n    listCacheDelete = require('./_listCacheDelete'),\n    listCacheGet = require('./_listCacheGet'),\n    listCacheHas = require('./_listCacheHas'),\n    listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\nmodule.exports = listCacheDelete;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\nmodule.exports = listCacheSet;\n","var getNative = require('./_getNative'),\n    root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\nmodule.exports = mapCacheSet;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n    isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = baseTrim(value);\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n  return string\n    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n    : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n  var index = string.length;\n\n  while (index-- && reWhitespace.test(string.charAt(index))) {}\n  return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = localPoint;\n\nvar _point = require(\"@visx/point\");\n\nvar _typeGuards = require(\"./typeGuards\");\n\nvar _getXAndYFromEvent = _interopRequireDefault(require(\"./getXAndYFromEvent\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction localPoint(node, event) {\n  if (!node || !event) return null;\n  var coords = (0, _getXAndYFromEvent.default)(event); // find top-most SVG\n\n  var svg = (0, _typeGuards.isSVGElement)(node) ? node.ownerSVGElement : node;\n  var screenCTM = (0, _typeGuards.isSVGGraphicsElement)(svg) ? svg.getScreenCTM() : null;\n\n  if ((0, _typeGuards.isSVGSVGElement)(svg) && screenCTM) {\n    var point = svg.createSVGPoint();\n    point.x = coords.x;\n    point.y = coords.y;\n    point = point.matrixTransform(screenCTM.inverse());\n    return new _point.Point({\n      x: point.x,\n      y: point.y\n    });\n  } // fall back to bounding box\n\n\n  var rect = node.getBoundingClientRect();\n  return new _point.Point({\n    x: coords.x - rect.left - node.clientLeft,\n    y: coords.y - rect.top - node.clientTop\n  });\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getXAndYFromEvent;\n\nvar _typeGuards = require(\"./typeGuards\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar DEFAULT_POINT = {\n  x: 0,\n  y: 0\n};\n\nfunction getXAndYFromEvent(event) {\n  if (!event) return _extends({}, DEFAULT_POINT);\n\n  if ((0, _typeGuards.isTouchEvent)(event)) {\n    return event.changedTouches.length > 0 ? {\n      x: event.changedTouches[0].clientX,\n      y: event.changedTouches[0].clientY\n    } : _extends({}, DEFAULT_POINT);\n  }\n\n  if ((0, _typeGuards.isMouseEvent)(event)) {\n    return {\n      x: event.clientX,\n      y: event.clientY\n    };\n  } // for focus events try to extract the center position of the target element\n\n\n  var target = event == null ? void 0 : event.target;\n  var boundingClientRect = target && 'getBoundingClientRect' in target ? target.getBoundingClientRect() : null;\n  if (!boundingClientRect) return _extends({}, DEFAULT_POINT);\n  return {\n    x: boundingClientRect.x + boundingClientRect.width / 2,\n    y: boundingClientRect.y + boundingClientRect.height / 2\n  };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport Axis from './Axis';\nimport Orientation from '../constants/orientation';\nexport var topTickLabelProps = function topTickLabelProps() {\n  return (\n    /** tickValue, index */\n    {\n      dy: '-0.75em',\n      fill: '#222',\n      fontFamily: 'Arial',\n      fontSize: 10,\n      textAnchor: 'middle'\n    }\n  );\n};\nexport default function AxisTop(_ref) {\n  var axisClassName = _ref.axisClassName,\n      _ref$labelOffset = _ref.labelOffset,\n      labelOffset = _ref$labelOffset === void 0 ? 8 : _ref$labelOffset,\n      _ref$tickLabelProps = _ref.tickLabelProps,\n      tickLabelProps = _ref$tickLabelProps === void 0 ? topTickLabelProps : _ref$tickLabelProps,\n      _ref$tickLength = _ref.tickLength,\n      tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"axisClassName\", \"labelOffset\", \"tickLabelProps\", \"tickLength\"]);\n\n  return /*#__PURE__*/React.createElement(Axis, _extends({\n    axisClassName: cx('visx-axis-top', axisClassName),\n    labelOffset: labelOffset,\n    orientation: Orientation.top,\n    tickLabelProps: tickLabelProps,\n    tickLength: tickLength\n  }, restProps));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport Axis from './Axis';\nimport Orientation from '../constants/orientation';\nexport var rightTickLabelProps = function rightTickLabelProps() {\n  return (\n    /** tickValue, index */\n    {\n      dx: '0.25em',\n      dy: '0.25em',\n      fill: '#222',\n      fontFamily: 'Arial',\n      fontSize: 10,\n      textAnchor: 'start'\n    }\n  );\n};\nexport default function AxisRight(_ref) {\n  var axisClassName = _ref.axisClassName,\n      _ref$labelOffset = _ref.labelOffset,\n      labelOffset = _ref$labelOffset === void 0 ? 36 : _ref$labelOffset,\n      _ref$tickLabelProps = _ref.tickLabelProps,\n      tickLabelProps = _ref$tickLabelProps === void 0 ? rightTickLabelProps : _ref$tickLabelProps,\n      _ref$tickLength = _ref.tickLength,\n      tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"axisClassName\", \"labelOffset\", \"tickLabelProps\", \"tickLength\"]);\n\n  return /*#__PURE__*/React.createElement(Axis, _extends({\n    axisClassName: cx('visx-axis-right', axisClassName),\n    labelOffset: labelOffset,\n    orientation: Orientation.right,\n    tickLabelProps: tickLabelProps,\n    tickLength: tickLength\n  }, restProps));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport Axis from './Axis';\nimport Orientation from '../constants/orientation';\nexport var bottomTickLabelProps = function bottomTickLabelProps() {\n  return (\n    /** tickValue, index */\n    {\n      dy: '0.25em',\n      fill: '#222',\n      fontFamily: 'Arial',\n      fontSize: 10,\n      textAnchor: 'middle'\n    }\n  );\n};\nexport default function AxisBottom(_ref) {\n  var axisClassName = _ref.axisClassName,\n      _ref$labelOffset = _ref.labelOffset,\n      labelOffset = _ref$labelOffset === void 0 ? 8 : _ref$labelOffset,\n      _ref$tickLabelProps = _ref.tickLabelProps,\n      tickLabelProps = _ref$tickLabelProps === void 0 ? bottomTickLabelProps : _ref$tickLabelProps,\n      _ref$tickLength = _ref.tickLength,\n      tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"axisClassName\", \"labelOffset\", \"tickLabelProps\", \"tickLength\"]);\n\n  return /*#__PURE__*/React.createElement(Axis, _extends({\n    axisClassName: cx('visx-axis-bottom', axisClassName),\n    labelOffset: labelOffset,\n    orientation: Orientation.bottom,\n    tickLabelProps: tickLabelProps,\n    tickLength: tickLength\n  }, restProps));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from 'react';\nimport cx from 'classnames';\nimport Axis from './Axis';\nimport Orientation from '../constants/orientation';\nexport var leftTickLabelProps = function leftTickLabelProps() {\n  return (\n    /** tickValue, index */\n    {\n      dx: '-0.25em',\n      dy: '0.25em',\n      fill: '#222',\n      fontFamily: 'Arial',\n      fontSize: 10,\n      textAnchor: 'end'\n    }\n  );\n};\nexport default function AxisLeft(_ref) {\n  var axisClassName = _ref.axisClassName,\n      _ref$labelOffset = _ref.labelOffset,\n      labelOffset = _ref$labelOffset === void 0 ? 36 : _ref$labelOffset,\n      _ref$tickLabelProps = _ref.tickLabelProps,\n      tickLabelProps = _ref$tickLabelProps === void 0 ? leftTickLabelProps : _ref$tickLabelProps,\n      _ref$tickLength = _ref.tickLength,\n      tickLength = _ref$tickLength === void 0 ? 8 : _ref$tickLength,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"axisClassName\", \"labelOffset\", \"tickLabelProps\", \"tickLength\"]);\n\n  return /*#__PURE__*/React.createElement(Axis, _extends({\n    axisClassName: cx('visx-axis-left', axisClassName),\n    labelOffset: labelOffset,\n    orientation: Orientation.left,\n    tickLabelProps: tickLabelProps,\n    tickLength: tickLength\n  }, restProps));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint react/no-did-mount-set-state: 0, react/no-find-dom-node: 0 */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nvar emptyRect = {\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  width: 0,\n  height: 0\n};\nexport default function withBoundingRects(BaseComponent) {\n  var _class, _temp;\n\n  return _temp = _class = /*#__PURE__*/function (_React$PureComponent) {\n    _inheritsLoose(WrappedComponent, _React$PureComponent);\n\n    function WrappedComponent(props) {\n      var _this;\n\n      _this = _React$PureComponent.call(this, props) || this;\n\n      _defineProperty(_assertThisInitialized(_this), \"node\", void 0);\n\n      _this.state = {\n        rect: undefined,\n        parentRect: undefined\n      };\n      _this.getRects = _this.getRects.bind(_assertThisInitialized(_this));\n      return _this;\n    }\n\n    var _proto = WrappedComponent.prototype;\n\n    _proto.componentDidMount = function componentDidMount() {\n      var _this2 = this;\n\n      this.node = ReactDOM.findDOMNode(this);\n      this.setState(function () {\n        return _this2.getRects();\n      });\n    };\n\n    _proto.getRects = function getRects() {\n      if (!this.node) return this.state;\n      var node = this.node;\n      var parentNode = node.parentNode;\n      var rect = node.getBoundingClientRect ? node.getBoundingClientRect() : emptyRect;\n      var parentRect = parentNode && parentNode.getBoundingClientRect ? parentNode.getBoundingClientRect() : emptyRect;\n      return {\n        rect: rect,\n        parentRect: parentRect\n      };\n    };\n\n    _proto.render = function render() {\n      return /*#__PURE__*/React.createElement(BaseComponent, _extends({\n        getRects: this.getRects\n      }, this.state, this.props));\n    };\n\n    return WrappedComponent;\n  }(React.PureComponent), _defineProperty(_class, \"displayName\", \"withBoundingRects(\" + (BaseComponent.displayName || '') + \")\"), _temp;\n}","import _pt from \"prop-types\";\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport debounce from 'lodash/debounce';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nexport default function ParentSize(_ref) {\n  var className = _ref.className,\n      children = _ref.children,\n      _ref$debounceTime = _ref.debounceTime,\n      debounceTime = _ref$debounceTime === void 0 ? 300 : _ref$debounceTime,\n      _ref$ignoreDimensions = _ref.ignoreDimensions,\n      ignoreDimensions = _ref$ignoreDimensions === void 0 ? [] : _ref$ignoreDimensions,\n      _ref$parentSizeStyles = _ref.parentSizeStyles,\n      parentSizeStyles = _ref$parentSizeStyles === void 0 ? {\n    width: '100%',\n    height: '100%'\n  } : _ref$parentSizeStyles,\n      _ref$enableDebounceLe = _ref.enableDebounceLeadingCall,\n      enableDebounceLeadingCall = _ref$enableDebounceLe === void 0 ? true : _ref$enableDebounceLe,\n      restProps = _objectWithoutPropertiesLoose(_ref, [\"className\", \"children\", \"debounceTime\", \"ignoreDimensions\", \"parentSizeStyles\", \"enableDebounceLeadingCall\"]);\n\n  var target = useRef(null);\n  var animationFrameID = useRef(0);\n\n  var _useState = useState({\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  }),\n      state = _useState[0],\n      setState = _useState[1];\n\n  var resize = useMemo(function () {\n    var normalized = Array.isArray(ignoreDimensions) ? ignoreDimensions : [ignoreDimensions];\n    return debounce(function (incoming) {\n      setState(function (existing) {\n        var stateKeys = Object.keys(existing);\n        var keysWithChanges = stateKeys.filter(function (key) {\n          return existing[key] !== incoming[key];\n        });\n        var shouldBail = keysWithChanges.every(function (key) {\n          return normalized.includes(key);\n        });\n        return shouldBail ? existing : incoming;\n      });\n    }, debounceTime, {\n      leading: enableDebounceLeadingCall\n    });\n  }, [debounceTime, enableDebounceLeadingCall, ignoreDimensions]);\n  useEffect(function () {\n    var observer = new ResizeObserver(function (entries\n    /** , observer */\n    ) {\n      if (entries === void 0) {\n        entries = [];\n      }\n\n      entries.forEach(function (entry) {\n        var _entry$contentRect = entry.contentRect,\n            left = _entry$contentRect.left,\n            top = _entry$contentRect.top,\n            width = _entry$contentRect.width,\n            height = _entry$contentRect.height;\n        animationFrameID.current = window.requestAnimationFrame(function () {\n          resize({\n            width: width,\n            height: height,\n            top: top,\n            left: left\n          });\n        });\n      });\n    });\n    if (target.current) observer.observe(target.current);\n    return function () {\n      window.cancelAnimationFrame(animationFrameID.current);\n      observer.disconnect();\n      if (resize && resize.cancel) resize.cancel();\n    };\n  }, [resize]);\n  return /*#__PURE__*/React.createElement(\"div\", _extends({\n    style: parentSizeStyles,\n    ref: target,\n    className: className\n  }, restProps), children(_extends({}, state, {\n    ref: target.current,\n    resize: resize\n  })));\n}\nParentSize.propTypes = {\n  className: _pt.string,\n  debounceTime: _pt.number,\n  enableDebounceLeadingCall: _pt.bool,\n  ignoreDimensions: _pt.oneOfType([_pt.any, _pt.arrayOf(_pt.any)]),\n  children: _pt.func.isRequired\n};","export default function extent(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n  let delta = f;\n  let compare = f;\n\n  if (f.length === 1) {\n    delta = (d, x) => f(d) - x;\n    compare = ascendingComparator(f);\n  }\n\n  function left(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) < 0) lo = mid + 1;\n      else hi = mid;\n    }\n    return lo;\n  }\n\n  function right(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) > 0) hi = mid;\n      else lo = mid + 1;\n    }\n    return lo;\n  }\n\n  function center(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n  return (d, x) => ascending(f(d), x);\n}\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n    if (r0 * step < start) ++r0;\n    if (r1 * step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) * step;\n  } else {\n    step = -step;\n    let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n    if (r0 / step < start) ++r0;\n    if (r1 / step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return interval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import { scaleTime } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateTimeScale = scaleOperator('domain', 'range', 'reverse', 'clamp', 'interpolate', 'nice', 'round');\nexport default function createTimeScale(config) {\n  return updateTimeScale(scaleTime(), config);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { isMouseEvent, isTouchEvent } from './typeGuards';\nvar DEFAULT_POINT = {\n  x: 0,\n  y: 0\n};\nexport default function getXAndYFromEvent(event) {\n  if (!event) return _extends({}, DEFAULT_POINT);\n\n  if (isTouchEvent(event)) {\n    return event.changedTouches.length > 0 ? {\n      x: event.changedTouches[0].clientX,\n      y: event.changedTouches[0].clientY\n    } : _extends({}, DEFAULT_POINT);\n  }\n\n  if (isMouseEvent(event)) {\n    return {\n      x: event.clientX,\n      y: event.clientY\n    };\n  } // for focus events try to extract the center position of the target element\n\n\n  var target = event == null ? void 0 : event.target;\n  var boundingClientRect = target && 'getBoundingClientRect' in target ? target.getBoundingClientRect() : null;\n  if (!boundingClientRect) return _extends({}, DEFAULT_POINT);\n  return {\n    x: boundingClientRect.x + boundingClientRect.width / 2,\n    y: boundingClientRect.y + boundingClientRect.height / 2\n  };\n}","import { Point } from '@visx/point';\nimport { isSVGElement, isSVGGraphicsElement, isSVGSVGElement } from './typeGuards';\nimport getXAndYFromEvent from './getXAndYFromEvent';\nexport default function localPoint(node, event) {\n  if (!node || !event) return null;\n  var coords = getXAndYFromEvent(event); // find top-most SVG\n\n  var svg = isSVGElement(node) ? node.ownerSVGElement : node;\n  var screenCTM = isSVGGraphicsElement(svg) ? svg.getScreenCTM() : null;\n\n  if (isSVGSVGElement(svg) && screenCTM) {\n    var point = svg.createSVGPoint();\n    point.x = coords.x;\n    point.y = coords.y;\n    point = point.matrixTransform(screenCTM.inverse());\n    return new Point({\n      x: point.x,\n      y: point.y\n    });\n  } // fall back to bounding box\n\n\n  var rect = node.getBoundingClientRect();\n  return new Point({\n    x: coords.x - rect.left - node.clientLeft,\n    y: coords.y - rect.top - node.clientTop\n  });\n}","export function isElement(elem) {\n  return !!elem && elem instanceof Element;\n} // functional definition of isSVGElement. Note that SVGSVGElements are HTMLElements\n\nexport function isSVGElement(elem) {\n  return !!elem && (elem instanceof SVGElement || 'ownerSVGElement' in elem);\n} // functional definition of SVGGElement\n\nexport function isSVGSVGElement(elem) {\n  return !!elem && 'createSVGPoint' in elem;\n}\nexport function isSVGGraphicsElement(elem) {\n  return !!elem && 'getScreenCTM' in elem;\n} // functional definition of TouchEvent\n\nexport function isTouchEvent(event) {\n  return !!event && 'changedTouches' in event;\n} // functional definition of MouseEvent\n\nexport function isMouseEvent(event) {\n  return !!event && 'clientX' in event;\n} // functional definition of event\n\nexport function isEvent(event) {\n  return !!event && (event instanceof Event || 'nativeEvent' in event && event.nativeEvent instanceof Event);\n}","import localPointGeneric from './localPointGeneric';\nimport { isElement, isEvent } from './typeGuards';\n/** Handles two signatures for backwards compatibility. */\n\nexport default function localPoint(nodeOrEvent, maybeEvent) {\n  // localPoint(node, event)\n  if (isElement(nodeOrEvent) && maybeEvent) {\n    return localPointGeneric(nodeOrEvent, maybeEvent);\n  } // localPoint(event)\n\n\n  if (isEvent(nodeOrEvent)) {\n    var event = nodeOrEvent;\n    var node = event.target;\n    if (node) return localPointGeneric(node, event);\n  }\n\n  return null;\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { useCallback, useEffect, useRef } from 'react';\nimport { localPoint } from '@visx/event';\nimport useStateWithCallback from './util/useStateWithCallback';\n\n/** Hook for dragging, returns a `UseDrag` object. */\nexport default function useDrag(_temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      _ref$resetOnStart = _ref.resetOnStart,\n      resetOnStart = _ref$resetOnStart === void 0 ? false : _ref$resetOnStart,\n      onDragEnd = _ref.onDragEnd,\n      onDragMove = _ref.onDragMove,\n      onDragStart = _ref.onDragStart,\n      x = _ref.x,\n      y = _ref.y,\n      dx = _ref.dx,\n      dy = _ref.dy,\n      isDragging = _ref.isDragging;\n\n  // use ref to detect prop changes\n  var positionPropsRef = useRef({\n    x: x,\n    y: y,\n    dx: dx,\n    dy: dy\n  });\n\n  var _useStateWithCallback = useStateWithCallback({\n    x: x,\n    y: y,\n    dx: dx != null ? dx : 0,\n    dy: dy != null ? dy : 0,\n    isDragging: false\n  }),\n      dragState = _useStateWithCallback[0],\n      setDragStateWithCallback = _useStateWithCallback[1]; // if prop position changes, update state\n\n\n  useEffect(function () {\n    if (positionPropsRef.current.x !== x || positionPropsRef.current.y !== y || positionPropsRef.current.dx !== dx || positionPropsRef.current.dy !== dy) {\n      positionPropsRef.current = {\n        x: x,\n        y: y,\n        dx: dx,\n        dy: dy\n      };\n      setDragStateWithCallback(function (currState) {\n        return _extends({}, currState, {\n          x: x,\n          y: y,\n          dx: dx != null ? dx : 0,\n          dy: dy != null ? dy : 0\n        });\n      });\n    }\n  });\n  useEffect(function () {\n    if (isDragging !== undefined && dragState.isDragging !== isDragging) {\n      setDragStateWithCallback(function (currState) {\n        return _extends({}, currState, {\n          isDragging: isDragging\n        });\n      });\n    }\n  }, [dragState.isDragging, isDragging, setDragStateWithCallback]);\n  var handleDragStart = useCallback(function (event) {\n    event.persist();\n    setDragStateWithCallback(function (currState) {\n      var point = localPoint(event) || {\n        x: 0,\n        y: 0\n      };\n      return {\n        isDragging: true,\n        dx: resetOnStart ? 0 : currState.dx,\n        dy: resetOnStart ? 0 : currState.dy,\n        x: resetOnStart ? point.x : point.x - currState.dx,\n        y: resetOnStart ? point.y : point.y - currState.dy\n      };\n    }, onDragStart && function (currState) {\n      onDragStart(_extends({}, currState, {\n        event: event\n      }));\n    });\n  }, [onDragStart, resetOnStart, setDragStateWithCallback]);\n  var handleDragMove = useCallback(function (event) {\n    event.persist();\n    setDragStateWithCallback(function (currState) {\n      var point = localPoint(event) || {\n        x: 0,\n        y: 0\n      };\n      return currState.isDragging ? _extends({}, currState, {\n        isDragging: true,\n        dx: point.x - (currState.x || 0),\n        dy: point.y - (currState.y || 0)\n      }) : currState;\n    }, onDragMove && function (currState) {\n      if (currState.isDragging) onDragMove(_extends({}, currState, {\n        event: event\n      }));\n    });\n  }, [onDragMove, setDragStateWithCallback]);\n  var handleDragEnd = useCallback(function (event) {\n    event.persist();\n    setDragStateWithCallback(function (currState) {\n      return _extends({}, currState, {\n        isDragging: false\n      });\n    }, onDragEnd && function (currState) {\n      onDragEnd(_extends({}, currState, {\n        event: event\n      }));\n    });\n  }, [onDragEnd, setDragStateWithCallback]);\n  return _extends({}, dragState, {\n    dragEnd: handleDragEnd,\n    dragMove: handleDragMove,\n    dragStart: handleDragStart\n  });\n}","import React, { useCallback, useLayoutEffect, useRef, useState } from 'react';\n\n/** A hook that exposes a setState(state, callback) API similar to a component class. */\nexport default function useStateWithCallback(initialState) {\n  var _useState = useState(initialState),\n      state = _useState[0],\n      setState = _useState[1];\n\n  var callbackRef = useRef(null);\n  var setStateCallback = useCallback(function (nextState, callback) {\n    callbackRef.current = callback || null;\n    setState(nextState);\n  }, [setState]); // if we use useEffect, some callback invocations are skipped\n\n  useLayoutEffect(function () {\n    // `null` on initial render, so we only execute callback on state *updates*\n    if (callbackRef.current) {\n      callbackRef.current(state);\n      callbackRef.current = null; // reset callback after execution\n    }\n  }, [state]);\n  return [state, setStateCallback];\n}","import _pt from \"prop-types\";\n\n/* eslint-disable react/jsx-handler-names */\nimport React from 'react';\nimport useDrag from './useDrag';\nexport default function Drag(_ref) {\n  var _ref$captureDragArea = _ref.captureDragArea,\n      captureDragArea = _ref$captureDragArea === void 0 ? true : _ref$captureDragArea,\n      children = _ref.children,\n      dx = _ref.dx,\n      dy = _ref.dy,\n      height = _ref.height,\n      onDragEnd = _ref.onDragEnd,\n      onDragMove = _ref.onDragMove,\n      onDragStart = _ref.onDragStart,\n      resetOnStart = _ref.resetOnStart,\n      width = _ref.width,\n      x = _ref.x,\n      y = _ref.y,\n      isDragging = _ref.isDragging;\n  var drag = useDrag({\n    resetOnStart: resetOnStart,\n    onDragEnd: onDragEnd,\n    onDragMove: onDragMove,\n    onDragStart: onDragStart,\n    x: x,\n    y: y,\n    dx: dx,\n    dy: dy,\n    isDragging: isDragging\n  });\n  return /*#__PURE__*/React.createElement(React.Fragment, null, drag.isDragging && captureDragArea && /*#__PURE__*/React.createElement(\"rect\", {\n    width: width,\n    height: height,\n    onPointerDown: drag.dragStart,\n    onPointerMove: drag.dragMove,\n    onPointerUp: drag.dragEnd,\n    fill: \"transparent\"\n  }), children(drag));\n}\nDrag.propTypes = {\n  children: _pt.func.isRequired,\n  width: _pt.number.isRequired,\n  height: _pt.number.isRequired,\n  captureDragArea: _pt.bool,\n  isDragging: _pt.bool\n};","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nexport default class Delaunator {\n\n    static from(points, getX = defaultGetX, getY = defaultGetY) {\n        const n = points.length;\n        const coords = new Float64Array(n * 2);\n\n        for (let i = 0; i < n; i++) {\n            const p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    }\n\n    constructor(coords) {\n        const n = coords.length >> 1;\n        if (n > 0 && typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        const maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize).fill(-1); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    }\n\n    update() {\n        const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} =  this;\n        const n = coords.length >> 1;\n\n        // populate an array of point indices; calculate input data bbox\n        let minX = Infinity;\n        let minY = Infinity;\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n\n        for (let i = 0; i < n; i++) {\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n            if (x < minX) minX = x;\n            if (y < minY) minY = y;\n            if (x > maxX) maxX = x;\n            if (y > maxY) maxY = y;\n            this._ids[i] = i;\n        }\n        const cx = (minX + maxX) / 2;\n        const cy = (minY + maxY) / 2;\n\n        let minDist = Infinity;\n        let i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0; i < n; i++) {\n            const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist) {\n                i0 = i;\n                minDist = d;\n            }\n        }\n        const i0x = coords[2 * i0];\n        const i0y = coords[2 * i0 + 1];\n\n        minDist = Infinity;\n\n        // find the point closest to the seed\n        for (let i = 0; i < n; i++) {\n            if (i === i0) continue;\n            const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n            if (d < minDist && d > 0) {\n                i1 = i;\n                minDist = d;\n            }\n        }\n        let i1x = coords[2 * i1];\n        let i1y = coords[2 * i1 + 1];\n\n        let minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (let i = 0; i < n; i++) {\n            if (i === i0 || i === i1) continue;\n            const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n            if (r < minRadius) {\n                i2 = i;\n                minRadius = r;\n            }\n        }\n        let i2x = coords[2 * i2];\n        let i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (let i = 0; i < n; i++) {\n                this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            const hull = new Uint32Array(n);\n            let j = 0;\n            for (let i = 0, d0 = -Infinity; i < n; i++) {\n                const id = this._ids[i];\n                if (this._dists[id] > d0) {\n                    hull[j++] = id;\n                    d0 = this._dists[id];\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient(i0x, i0y, i1x, i1y, i2x, i2y)) {\n            const i = i1;\n            const x = i1x;\n            const y = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i;\n            i2x = x;\n            i2y = y;\n        }\n\n        const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (let i = 0; i < n; i++) {\n            this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        let hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (let k = 0, xp, yp; k < this._ids.length; k++) {\n            const i = this._ids[k];\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n\n            // skip near-duplicate points\n            if (k > 0 && Math.abs(x - xp) <= EPSILON && Math.abs(y - yp) <= EPSILON) continue;\n            xp = x;\n            yp = y;\n\n            // skip seed triangle points\n            if (i === i0 || i === i1 || i === i2) continue;\n\n            // find a visible edge on the convex hull using edge hash\n            let start = 0;\n            for (let j = 0, key = this._hashKey(x, y); j < this._hashSize; j++) {\n                start = hullHash[(key + j) % this._hashSize];\n                if (start !== -1 && start !== hullNext[start]) break;\n            }\n\n            start = hullPrev[start];\n            let e = start, q;\n            while (q = hullNext[e], !orient(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1])) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) continue; // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            let n = hullNext[e];\n            while (q = hullNext[n], orient(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1])) {\n                t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n                hullTri[i] = this._legalize(t + 2);\n                hullNext[n] = n; // mark as removed\n                hullSize--;\n                n = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1])) {\n                    t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i] = e;\n            hullNext[e] = hullPrev[n] = i;\n            hullNext[i] = n;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x, y)] = i;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (let i = 0, e = this._hullStart; i < hullSize; i++) {\n            this.hull[i] = e;\n            e = hullNext[e];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    }\n\n    _hashKey(x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    }\n\n    _legalize(a) {\n        const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n        let i = 0;\n        let ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            const b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *           pl                    pl\n             *          /||\\                  /  \\\n             *       al/ || \\bl            al/    \\a\n             *        /  ||  \\              /      \\\n             *       /  a||b  \\    flip    /___ar___\\\n             *     p0\\   ||   /p1   =>   p0\\---bl---/p1\n             *        \\  ||  /              \\      /\n             *       ar\\ || /br             b\\    /br\n             *          \\||/                  \\  /\n             *           pr                    pr\n             */\n            const a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            const b0 = b - b % 3;\n            const al = a0 + (a + 1) % 3;\n            const bl = b0 + (b + 2) % 3;\n\n            const p0 = triangles[ar];\n            const pr = triangles[a];\n            const pl = triangles[al];\n            const p1 = triangles[bl];\n\n            const illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                const hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    let e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                const br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i < EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    }\n\n    _link(a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) this._halfedges[b] = a;\n    }\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    _addTriangle(i0, i1, i2, a, b, c) {\n        const t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n    const p = dx / (Math.abs(dx) + Math.abs(dy));\n    return (dy > 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\n// return 2d orientation sign if we're confident in it through J. Shewchuk's error bound check\nfunction orientIfSure(px, py, rx, ry, qx, qy) {\n    const l = (ry - py) * (qx - px);\n    const r = (rx - px) * (qy - py);\n    return Math.abs(l - r) >= 3.3306690738754716e-16 * Math.abs(l + r) ? l - r : 0;\n}\n\n// a more robust orientation test that's stable in a given triangle (to fix robustness issues)\nfunction orient(rx, ry, qx, qy, px, py) {\n    const sign = orientIfSure(px, py, rx, ry, qx, qy) ||\n    orientIfSure(rx, ry, qx, qy, px, py) ||\n    orientIfSure(qx, qy, px, py, rx, ry);\n    return sign < 0;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n    const dx = ax - px;\n    const dy = ay - py;\n    const ex = bx - px;\n    const ey = by - py;\n    const fx = cx - px;\n    const fy = cy - py;\n\n    const ap = dx * dx + dy * dy;\n    const bp = ex * ex + ey * ey;\n    const cp = fx * fx + fy * fy;\n\n    return dx * (ey * cp - bp * fy) -\n           dy * (ex * cp - bp * fx) +\n           ap * (ex * fy - ey * fx) < 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = (ey * bl - dy * cl) * d;\n    const y = (dx * cl - ex * bl) * d;\n\n    return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = ax + (ey * bl - dy * cl) * d;\n    const y = ay + (dx * cl - ex * bl) * d;\n\n    return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n    if (right - left <= 20) {\n        for (let i = left + 1; i <= right; i++) {\n            const temp = ids[i];\n            const tempDist = dists[temp];\n            let j = i - 1;\n            while (j >= left && dists[ids[j]] > tempDist) ids[j + 1] = ids[j--];\n            ids[j + 1] = temp;\n        }\n    } else {\n        const median = (left + right) >> 1;\n        let i = left + 1;\n        let j = right;\n        swap(ids, median, i);\n        if (dists[ids[left]] > dists[ids[right]]) swap(ids, left, right);\n        if (dists[ids[i]] > dists[ids[right]]) swap(ids, i, right);\n        if (dists[ids[left]] > dists[ids[i]]) swap(ids, left, i);\n\n        const temp = ids[i];\n        const tempDist = dists[temp];\n        while (true) {\n            do i++; while (dists[ids[i]] < tempDist);\n            do j--; while (dists[ids[j]] > tempDist);\n            if (j < i) break;\n            swap(ids, i, j);\n        }\n        ids[left + 1] = ids[j];\n        ids[j] = temp;\n\n        if (right - i + 1 >= j - left) {\n            quicksort(ids, dists, i, right);\n            quicksort(ids, dists, left, j - 1);\n        } else {\n            quicksort(ids, dists, left, j - 1);\n            quicksort(ids, dists, i, right);\n        }\n    }\n}\n\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n    return p[0];\n}\nfunction defaultGetY(p) {\n    return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n  constructor() {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n  }\n  moveTo(x, y) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  }\n  lineTo(x, y) {\n    this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arc(x, y, r) {\n    x = +x, y = +y, r = +r;\n    const x0 = x + r;\n    const y0 = y;\n    if (r < 0) throw new Error(\"negative radius\");\n    if (this._x1 === null) this._ += `M${x0},${y0}`;\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) this._ += \"L\" + x0 + \",\" + y0;\n    if (!r) return;\n    this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n  }\n  rect(x, y, w, h) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n  }\n  value() {\n    return this._ || null;\n  }\n}\n","export default class Polygon {\n  constructor() {\n    this._ = [];\n  }\n  moveTo(x, y) {\n    this._.push([x, y]);\n  }\n  closePath() {\n    this._.push(this._[0].slice());\n  }\n  lineTo(x, y) {\n    this._.push([x, y]);\n  }\n  value() {\n    return this._.length ? this._ : null;\n  }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n  constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n    if (!((xmax = +xmax) >= (xmin = +xmin)) || !((ymax = +ymax) >= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n    this.delaunay = delaunay;\n    this._circumcenters = new Float64Array(delaunay.points.length * 2);\n    this.vectors = new Float64Array(delaunay.points.length * 2);\n    this.xmax = xmax, this.xmin = xmin;\n    this.ymax = ymax, this.ymin = ymin;\n    this._init();\n  }\n  update() {\n    this.delaunay.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const {delaunay: {points, hull, triangles}, vectors} = this;\n\n    // Compute circumcenters.\n    const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n    for (let i = 0, j = 0, n = triangles.length, x, y; i < n; i += 3, j += 2) {\n      const t1 = triangles[i] * 2;\n      const t2 = triangles[i + 1] * 2;\n      const t3 = triangles[i + 2] * 2;\n      const x1 = points[t1];\n      const y1 = points[t1 + 1];\n      const x2 = points[t2];\n      const y2 = points[t2 + 1];\n      const x3 = points[t3];\n      const y3 = points[t3 + 1];\n\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const ex = x3 - x1;\n      const ey = y3 - y1;\n      const bl = dx * dx + dy * dy;\n      const cl = ex * ex + ey * ey;\n      const ab = (dx * ey - dy * ex) * 2;\n\n      if (!ab) {\n        // degenerate case (collinear diagram)\n        x = (x1 + x3) / 2 - 1e8 * ey;\n        y = (y1 + y3) / 2 + 1e8 * ex;\n      }\n      else if (Math.abs(ab) < 1e-8) {\n        // almost equal points (degenerate triangle)\n        x = (x1 + x3) / 2;\n        y = (y1 + y3) / 2;\n      } else {\n        const d = 1 / ab;\n        x = x1 + (ey * bl - dy * cl) * d;\n        y = y1 + (dx * cl - ex * bl) * d;\n      }\n      circumcenters[j] = x;\n      circumcenters[j + 1] = y;\n    }\n\n    // Compute exterior cell rays.\n    let h = hull[hull.length - 1];\n    let p0, p1 = h * 4;\n    let x0, x1 = points[2 * h];\n    let y0, y1 = points[2 * h + 1];\n    vectors.fill(0);\n    for (let i = 0; i < hull.length; ++i) {\n      h = hull[i];\n      p0 = p1, x0 = x1, y0 = y1;\n      p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n      vectors[p0 + 2] = vectors[p1] = y0 - y1;\n      vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n    }\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n    if (hull.length <= 1) return null;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = Math.floor(i / 3) * 2;\n      const tj = Math.floor(j / 3) * 2;\n      const xi = circumcenters[ti];\n      const yi = circumcenters[ti + 1];\n      const xj = circumcenters[tj];\n      const yj = circumcenters[tj + 1];\n      this._renderSegment(xi, yi, xj, yj, context);\n    }\n    let h0, h1 = hull[hull.length - 1];\n    for (let i = 0; i < hull.length; ++i) {\n      h0 = h1, h1 = hull[i];\n      const t = Math.floor(inedges[h1] / 3) * 2;\n      const x = circumcenters[t];\n      const y = circumcenters[t + 1];\n      const v = h0 * 4;\n      const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n      if (p) this._renderSegment(x, y, p[0], p[1], context);\n    }\n    return buffer && buffer.value();\n  }\n  renderBounds(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n    return buffer && buffer.value();\n  }\n  renderCell(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const points = this._clip(i);\n    if (points === null || !points.length) return;\n    context.moveTo(points[0], points[1]);\n    let n = points.length;\n    while (points[0] === points[n-2] && points[1] === points[n-1] && n > 1) n -= 2;\n    for (let i = 2; i < n; i += 2) {\n      if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n        context.lineTo(points[i], points[i + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *cellPolygons() {\n    const {delaunay: {points}} = this;\n    for (let i = 0, n = points.length / 2; i < n; ++i) {\n      const cell = this.cellPolygon(i);\n      if (cell) cell.index = i, yield cell;\n    }\n  }\n  cellPolygon(i) {\n    const polygon = new Polygon;\n    this.renderCell(i, polygon);\n    return polygon.value();\n  }\n  _renderSegment(x0, y0, x1, y1, context) {\n    let S;\n    const c0 = this._regioncode(x0, y0);\n    const c1 = this._regioncode(x1, y1);\n    if (c0 === 0 && c1 === 0) {\n      context.moveTo(x0, y0);\n      context.lineTo(x1, y1);\n    } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n      context.moveTo(S[0], S[1]);\n      context.lineTo(S[2], S[3]);\n    }\n  }\n  contains(i, x, y) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n    return this.delaunay._step(i, x, y) === i;\n  }\n  *neighbors(i) {\n    const ci = this._clip(i);\n    if (ci) for (const j of this.delaunay.neighbors(i)) {\n      const cj = this._clip(j);\n      // find the common edge\n      if (cj) loop: for (let ai = 0, li = ci.length; ai < li; ai += 2) {\n        for (let aj = 0, lj = cj.length; aj < lj; aj += 2) {\n          if (ci[ai] == cj[aj]\n          && ci[ai + 1] == cj[aj + 1]\n          && ci[(ai + 2) % li] == cj[(aj + lj - 2) % lj]\n          && ci[(ai + 3) % li] == cj[(aj + lj - 1) % lj]\n          ) {\n            yield j;\n            break loop;\n          }\n        }\n      }\n    }\n  }\n  _cell(i) {\n    const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n    const e0 = inedges[i];\n    if (e0 === -1) return null; // coincident point\n    const points = [];\n    let e = e0;\n    do {\n      const t = Math.floor(e / 3);\n      points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n    } while (e !== e0 && e !== -1);\n    return points;\n  }\n  _clip(i) {\n    // degenerate case (1 valid point: return the box)\n    if (i === 0 && this.delaunay.hull.length === 1) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    const points = this._cell(i);\n    if (points === null) return null;\n    const {vectors: V} = this;\n    const v = i * 4;\n    return V[v] || V[v + 1]\n        ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n        : this._clipFinite(i, points);\n  }\n  _clipFinite(i, points) {\n    const n = points.length;\n    let P = null;\n    let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n    let c0, c1 = this._regioncode(x1, y1);\n    let e0, e1;\n    for (let j = 0; j < n; j += 2) {\n      x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n      c0 = c1, c1 = this._regioncode(x1, y1);\n      if (c0 === 0 && c1 === 0) {\n        e0 = e1, e1 = 0;\n        if (P) P.push(x1, y1);\n        else P = [x1, y1];\n      } else {\n        let S, sx0, sy0, sx1, sy1;\n        if (c0 === 0) {\n          if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n          [sx0, sy0, sx1, sy1] = S;\n        } else {\n          if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n          [sx1, sy1, sx0, sy0] = S;\n          e0 = e1, e1 = this._edgecode(sx0, sy0);\n          if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n          if (P) P.push(sx0, sy0);\n          else P = [sx0, sy0];\n        }\n        e0 = e1, e1 = this._edgecode(sx1, sy1);\n        if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n        if (P) P.push(sx1, sy1);\n        else P = [sx1, sy1];\n      }\n    }\n    if (P) {\n      e0 = e1, e1 = this._edgecode(P[0], P[1]);\n      if (e0 && e1) this._edge(i, e0, e1, P, P.length);\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    return P;\n  }\n  _clipSegment(x0, y0, x1, y1, c0, c1) {\n    while (true) {\n      if (c0 === 0 && c1 === 0) return [x0, y0, x1, y1];\n      if (c0 & c1) return null;\n      let x, y, c = c0 || c1;\n      if (c & 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n      else if (c & 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n      else if (c & 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n      else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n      if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n      else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n    }\n  }\n  _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n    let P = Array.from(points), p;\n    if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n    if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n    if (P = this._clipFinite(i, P)) {\n      for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j < n; j += 2) {\n        c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n        if (c0 && c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n      }\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n    }\n    return P;\n  }\n  _edge(i, e0, e1, P, j) {\n    while (e0 !== e1) {\n      let x, y;\n      switch (e0) {\n        case 0b0101: e0 = 0b0100; continue; // top-left\n        case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n        case 0b0110: e0 = 0b0010; continue; // top-right\n        case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n        case 0b1010: e0 = 0b1000; continue; // bottom-right\n        case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n        case 0b1001: e0 = 0b0001; continue; // bottom-left\n        case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n      }\n      if ((P[j] !== x || P[j + 1] !== y) && this.contains(i, x, y)) {\n        P.splice(j, 0, x, y), j += 2;\n      }\n    }\n    if (P.length > 4) {\n      for (let i = 0; i < P.length; i+= 2) {\n        const j = (i + 2) % P.length, k = (i + 4) % P.length;\n        if (P[i] === P[j] && P[j] === P[k]\n        || P[i + 1] === P[j + 1] && P[j + 1] === P[k + 1])\n          P.splice(j, 2), i -= 2;\n      }\n    }\n    return j;\n  }\n  _project(x0, y0, vx, vy) {\n    let t = Infinity, c, x, y;\n    if (vy < 0) { // top\n      if (y0 <= this.ymin) return null;\n      if ((c = (this.ymin - y0) / vy) < t) y = this.ymin, x = x0 + (t = c) * vx;\n    } else if (vy > 0) { // bottom\n      if (y0 >= this.ymax) return null;\n      if ((c = (this.ymax - y0) / vy) < t) y = this.ymax, x = x0 + (t = c) * vx;\n    }\n    if (vx > 0) { // right\n      if (x0 >= this.xmax) return null;\n      if ((c = (this.xmax - x0) / vx) < t) x = this.xmax, y = y0 + (t = c) * vy;\n    } else if (vx < 0) { // left\n      if (x0 <= this.xmin) return null;\n      if ((c = (this.xmin - x0) / vx) < t) x = this.xmin, y = y0 + (t = c) * vy;\n    }\n    return [x, y];\n  }\n  _edgecode(x, y) {\n    return (x === this.xmin ? 0b0001\n        : x === this.xmax ? 0b0010 : 0b0000)\n        | (y === this.ymin ? 0b0100\n        : y === this.ymax ? 0b1000 : 0b0000);\n  }\n  _regioncode(x, y) {\n    return (x < this.xmin ? 0b0001\n        : x > this.xmax ? 0b0010 : 0b0000)\n        | (y < this.ymin ? 0b0100\n        : y > this.ymax ? 0b1000 : 0b0000);\n  }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n  const {triangles, coords} = d;\n  for (let i = 0; i < triangles.length; i += 3) {\n    const a = 2 * triangles[i],\n          b = 2 * triangles[i + 1],\n          c = 2 * triangles[i + 2],\n          cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n                - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n    if (cross > 1e-10) return false;\n  }\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n  static from(points, fx = pointX, fy = pointY, that) {\n    return new Delaunay(\"length\" in points\n        ? flatArray(points, fx, fy, that)\n        : Float64Array.from(flatIterable(points, fx, fy, that)));\n  }\n  constructor(points) {\n    this._delaunator = new Delaunator(points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = this._delaunator.coords;\n    this._init();\n  }\n  update() {\n    this._delaunator.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const d = this._delaunator, points = this.points;\n\n    // check for collinear\n    if (d.hull && d.hull.length > 2 && collinear(d)) {\n      this.collinear = Int32Array.from({length: points.length/2}, (_,i) => i)\n        .sort((i, j) => points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n      const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n        bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n        r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n      for (let i = 0, n = points.length / 2; i < n; ++i) {\n        const p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n      this._delaunator = new Delaunator(points);\n    } else {\n      delete this.collinear;\n    }\n\n    const halfedges = this.halfedges = this._delaunator.halfedges;\n    const hull = this.hull = this._delaunator.hull;\n    const triangles = this.triangles = this._delaunator.triangles;\n    const inedges = this.inedges.fill(-1);\n    const hullIndex = this._hullIndex.fill(-1);\n\n    // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n    for (let e = 0, n = halfedges.length; e < n; ++e) {\n      const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n      if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n    }\n    for (let i = 0, n = hull.length; i < n; ++i) {\n      hullIndex[hull[i]] = i;\n    }\n\n    // degenerate case: 1 or 2 (distinct) points\n    if (hull.length <= 2 && hull.length > 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      this.triangles[1] = hull[1];\n      this.triangles[2] = hull[1];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) inedges[hull[1]] = 0;\n    }\n  }\n  voronoi(bounds) {\n    return new Voronoi(this, bounds);\n  }\n  *neighbors(i) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n    // degenerate case with several collinear points\n    if (collinear) {\n      const l = collinear.indexOf(i);\n      if (l > 0) yield collinear[l - 1];\n      if (l < collinear.length - 1) yield collinear[l + 1];\n      return;\n    }\n\n    const e0 = inedges[i];\n    if (e0 === -1) return; // coincident point\n    let e = e0, p0 = -1;\n    do {\n      yield p0 = triangles[e];\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) return; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        const p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) yield p;\n        return;\n      }\n    } while (e !== e0);\n  }\n  find(x, y, i = 0) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    const i0 = i;\n    let c;\n    while ((c = this._step(i, x, y)) >= 0 && c !== i && c !== i0) i = c;\n    return c;\n  }\n  _step(i, x, y) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length >> 1);\n    let c = i;\n    let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n    const e0 = inedges[i];\n    let e = e0;\n    do {\n      let t = triangles[e];\n      const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n      if (dt < dc) dc = dt, c = t;\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        e = hull[(_hullIndex[i] + 1) % hull.length];\n        if (e !== t) {\n          if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) < dc) return e;\n        }\n        break;\n      }\n    } while (e !== e0);\n    return c;\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, halfedges, triangles} = this;\n    for (let i = 0, n = halfedges.length; i < n; ++i) {\n      const j = halfedges[i];\n      if (j < i) continue;\n      const ti = triangles[i] * 2;\n      const tj = triangles[j] * 2;\n      context.moveTo(points[ti], points[ti + 1]);\n      context.lineTo(points[tj], points[tj + 1]);\n    }\n    this.renderHull(context);\n    return buffer && buffer.value();\n  }\n  renderPoints(context, r = 2) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points} = this;\n    for (let i = 0, n = points.length; i < n; i += 2) {\n      const x = points[i], y = points[i + 1];\n      context.moveTo(x + r, y);\n      context.arc(x, y, r, 0, tau);\n    }\n    return buffer && buffer.value();\n  }\n  renderHull(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {hull, points} = this;\n    const h = hull[0] * 2, n = hull.length;\n    context.moveTo(points[h], points[h + 1]);\n    for (let i = 1; i < n; ++i) {\n      const h = 2 * hull[i];\n      context.lineTo(points[h], points[h + 1]);\n    }\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  hullPolygon() {\n    const polygon = new Polygon;\n    this.renderHull(polygon);\n    return polygon.value();\n  }\n  renderTriangle(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, triangles} = this;\n    const t0 = triangles[i *= 3] * 2;\n    const t1 = triangles[i + 1] * 2;\n    const t2 = triangles[i + 2] * 2;\n    context.moveTo(points[t0], points[t0 + 1]);\n    context.lineTo(points[t1], points[t1 + 1]);\n    context.lineTo(points[t2], points[t2 + 1]);\n    context.closePath();\n    return buffer && buffer.value();\n  }\n  *trianglePolygons() {\n    const {triangles} = this;\n    for (let i = 0, n = triangles.length / 3; i < n; ++i) {\n      yield this.trianglePolygon(i);\n    }\n  }\n  trianglePolygon(i) {\n    const polygon = new Polygon;\n    this.renderTriangle(i, polygon);\n    return polygon.value();\n  }\n}\n\nfunction flatArray(points, fx, fy, that) {\n  const n = points.length;\n  const array = new Float64Array(n * 2);\n  for (let i = 0; i < n; ++i) {\n    const p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n  return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n  let i = 0;\n  for (const p of points) {\n    yield fx.call(that, p, i, points);\n    yield fy.call(that, p, i, points);\n    ++i;\n  }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n  let state = (0 <= seed && seed < 1 ? seed / eps : Math.abs(seed)) | 0;\n  return () => (state = mul * state + inc | 0, eps * (state >>> 0));\n}\n","import { randomLcg } from 'd3-random'; // returns a seeded random number generator\n\nexport default function getSeededRandom(\n/** Seed in the interval [0, 1). */\nseed) {\n  return randomLcg(seed);\n}","import getSeededRandom from './getSeededRandom';\nexport default function genDateValue(length,\n/** Optional random seed in the interval [0, 1). */\nseed,\n/** Optional start time in ms UTC. */\nstartTimeMs) {\n  var random = seed == null ? Math.random : getSeededRandom(seed);\n  var startDateMs = startTimeMs == null ? Date.now() : new Date(startTimeMs).valueOf();\n  return new Array(length).fill(1).map(function (_, idx) {\n    return {\n      date: new Date(startDateMs - idx * 3600000),\n      // eslint-disable-next-line no-bitwise\n      value: random() * 3000 | 0\n    };\n  });\n}","import { scaleThreshold } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateThresholdScale = scaleOperator('domain', 'range', 'reverse');\nexport default function createThresholdScale(config) {\n  return updateThresholdScale(scaleThreshold(), config);\n}","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null && x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nexport function loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = format(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(nice(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, log()).base(scale.base());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import { scaleLog } from 'd3-scale';\nimport scaleOperator from '../operators/scaleOperator';\nexport var updateLogScale = scaleOperator('domain', 'range', 'reverse', 'base', 'clamp', 'interpolate', 'nice', 'round');\nexport default function createLogScale(config) {\n  return updateLogScale(scaleLog(), config);\n}","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n    if (r0 * step < start) ++r0;\n    if (r1 * step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) * step;\n  } else {\n    step = -step;\n    let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n    if (r0 / step < start) ++r0;\n    if (r1 / step > stop) --r1;\n    ticks = new Array(n = r1 - r0 + 1);\n    while (++i < n) ticks[i] = (r0 + i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n  let delta = f;\n  let compare = f;\n\n  if (f.length === 1) {\n    delta = (d, x) => f(d) - x;\n    compare = ascendingComparator(f);\n  }\n\n  function left(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) < 0) lo = mid + 1;\n      else hi = mid;\n    }\n    return lo;\n  }\n\n  function right(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    while (lo < hi) {\n      const mid = (lo + hi) >>> 1;\n      if (compare(a[mid], x) > 0) hi = mid;\n      else lo = mid + 1;\n    }\n    return lo;\n  }\n\n  function center(a, x, lo, hi) {\n    if (lo == null) lo = 0;\n    if (hi == null) hi = a.length;\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n  return (d, x) => ascending(f(d), x);\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n"],"sourceRoot":""}