{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/d3-geo/src/math.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack:///./node_modules/stylis/dist/stylis.mjs","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack:///./node_modules/@emotion/react/node_modules/@emotion/utils/dist/emotion-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/react/node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-element-4fbd89c5.browser.esm.js","webpack:///./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/react/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-array/src/cross.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-array/src/array.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/threshold/sturges.js","webpack:///./node_modules/d3-array/src/quantile.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-array/src/merge.js","webpack:///./node_modules/d3-geo/src/cartesian.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/d3-geo/src/noop.js","webpack:///./node_modules/d3-geo/src/projection/resample.js","webpack:///./node_modules/d3-geo/src/projection/index.js","webpack:///./node_modules/d3-selection/src/create.js","webpack:///./node_modules/d3-selection/src/local.js","webpack:///./node_modules/d3-selection/src/selectAll.js","webpack:///./node_modules/d3-selection/src/touches.js","webpack:///./node_modules/d3-geo/src/stream.js","webpack:///./node_modules/@financial-times/g-components/src/shared/proptypes.js","webpack:///./node_modules/d3-geo/src/projection/fit.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/d3-geo/src/adder.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/utils.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/is-whitespace-character/index.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/@financial-times/g-components/src/grid/index.js","webpack:///./node_modules/react-simple-maps/dist/index.umd.js","webpack:///./node_modules/@financial-times/g-components/src/article-layout/index.js","webpack:///./node_modules/@financial-times/g-components/src/shared/helpers.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/d3-geo/src/transform.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-chord/src/math.js","webpack:///./node_modules/d3-chord/src/array.js","webpack:///./node_modules/d3-chord/src/chord.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-collection/src/map.js","webpack:///./node_modules/d3-collection/src/set.js","webpack:///./node_modules/d3-contour/src/array.js","webpack:///./node_modules/d3-quadtree/src/add.js","webpack:///./node_modules/d3-quadtree/src/cover.js","webpack:///./node_modules/d3-quadtree/src/quad.js","webpack:///./node_modules/d3-quadtree/src/x.js","webpack:///./node_modules/d3-quadtree/src/y.js","webpack:///./node_modules/d3-quadtree/src/quadtree.js","webpack:///./node_modules/d3-quadtree/src/data.js","webpack:///./node_modules/d3-quadtree/src/extent.js","webpack:///./node_modules/d3-quadtree/src/find.js","webpack:///./node_modules/d3-quadtree/src/remove.js","webpack:///./node_modules/d3-quadtree/src/root.js","webpack:///./node_modules/d3-quadtree/src/size.js","webpack:///./node_modules/d3-quadtree/src/visit.js","webpack:///./node_modules/d3-quadtree/src/visitAfter.js","webpack:///./node_modules/d3-force/src/simulation.js","webpack:///./node_modules/d3-random/src/defaultSource.js","webpack:///./node_modules/d3-random/src/normal.js","webpack:///./node_modules/d3-random/src/uniform.js","webpack:///./node_modules/d3-random/src/irwinHall.js","webpack:///./node_modules/d3-random/src/logNormal.js","webpack:///./node_modules/d3-random/src/bates.js","webpack:///./node_modules/d3-random/src/exponential.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/array.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-scale/src/threshold.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./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/d3-scale/src/time.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time-format/src/isoFormat.js","webpack:///./node_modules/d3-time-format/src/isoParse.js","webpack:///./node_modules/d3-voronoi/src/RedBlackTree.js","webpack:///./node_modules/d3-voronoi/src/Edge.js","webpack:///./node_modules/d3-voronoi/src/Cell.js","webpack:///./node_modules/d3-voronoi/src/Circle.js","webpack:///./node_modules/d3-voronoi/src/Beach.js","webpack:///./node_modules/d3-voronoi/src/Diagram.js","webpack:///./node_modules/d3-geo/src/rotation.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/point.js","webpack:///./node_modules/d3-geo/src/clip/rectangle.js","webpack:///./node_modules/d3-geo/src/clip/line.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-geo/src/identity.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/react-markdown/lib/react-markdown.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/settings.js","webpack:///./node_modules/trim/index.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/sourceEvent.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/d3-geo/src/pointEqual.js","webpack:///./node_modules/d3-geo/src/path/bounds.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/config.js","webpack:///./node_modules/d3-geo/src/clip/antimeridian.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/d3-geo/src/compose.js","webpack:///./node_modules/@financial-times/g-components/src/shared/hooks.js","webpack:///./node_modules/is-decimal/index.js","webpack:///./node_modules/unist-util-visit/index.js","webpack:///./node_modules/d3-geo/src/area.js","webpack:///./node_modules/d3-geo/src/bounds.js","webpack:///./node_modules/d3-geo/src/centroid.js","webpack:///./node_modules/d3-geo/src/length.js","webpack:///./node_modules/d3-geo/src/clip/extent.js","webpack:///./node_modules/d3-geo/src/distance.js","webpack:///./node_modules/d3-geo/src/contains.js","webpack:///./node_modules/d3-geo/src/graticule.js","webpack:///./node_modules/d3-geo/src/interpolate.js","webpack:///./node_modules/d3-geo/src/path/area.js","webpack:///./node_modules/d3-geo/src/path/centroid.js","webpack:///./node_modules/d3-geo/src/path/context.js","webpack:///./node_modules/d3-geo/src/path/measure.js","webpack:///./node_modules/d3-geo/src/path/string.js","webpack:///./node_modules/d3-geo/src/path/index.js","webpack:///./node_modules/d3-geo/src/projection/conic.js","webpack:///./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/albers.js","webpack:///./node_modules/d3-geo/src/projection/albersUsa.js","webpack:///./node_modules/d3-geo/src/projection/azimuthal.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack:///./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/mercator.js","webpack:///./node_modules/d3-geo/src/projection/conicConformal.js","webpack:///./node_modules/d3-geo/src/projection/equirectangular.js","webpack:///./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack:///./node_modules/d3-geo/src/projection/equalEarth.js","webpack:///./node_modules/d3-geo/src/projection/gnomonic.js","webpack:///./node_modules/d3-geo/src/projection/identity.js","webpack:///./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack:///./node_modules/d3-geo/src/projection/orthographic.js","webpack:///./node_modules/d3-geo/src/projection/stereographic.js","webpack:///./node_modules/d3-geo/src/projection/transverseMercator.js","webpack:///./node_modules/d3-geo/src/clip/circle.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-geo/src/constant.js","webpack:///./node_modules/d3-geo/src/circle.js","webpack:///./node_modules/@financial-times/o-grid/browser.js","webpack:///./node_modules/@financial-times/g-components/src/share/index.js","webpack:///./node_modules/d3-geo/src/clip/index.js","webpack:///./node_modules/d3-geo/src/clip/buffer.js","webpack:///./node_modules/d3-geo/src/polygonContains.js","webpack:///./node_modules/d3-geo/src/clip/rejoin.js","webpack:///./app/components/basic-card/index.js","webpack:///./node_modules/@financial-times/o-tracking/browser.js","webpack:///./node_modules/@financial-times/o-toggle/browser.js","webpack:///./node_modules/@financial-times/o-utils/browser.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/store.js","webpack:///./node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/@financial-times/o-viewport/browser.js","webpack:///./node_modules/parse-entities/index.js","webpack:///./node_modules/repeat-string/index.js","webpack:///./node_modules/trim-trailing-lines/index.js","webpack:///./node_modules/remark-parse/lib/util/interrupt.js","webpack:///./node_modules/remark-parse/lib/util/normalize.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/constant.js","webpack:///./node_modules/d3-zoom/src/event.js","webpack:///./node_modules/d3-zoom/src/transform.js","webpack:///./node_modules/d3-zoom/src/noevent.js","webpack:///./node_modules/d3-zoom/src/zoom.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.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/topojson-client/src/identity.js","webpack:///./node_modules/topojson-client/src/transform.js","webpack:///./node_modules/topojson-client/src/bbox.js","webpack:///./node_modules/topojson-client/src/feature.js","webpack:///./node_modules/topojson-client/src/reverse.js","webpack:///./node_modules/topojson-client/src/stitch.js","webpack:///./node_modules/topojson-client/src/mesh.js","webpack:///./node_modules/topojson-client/src/merge.js","webpack:///./node_modules/topojson-client/src/bisect.js","webpack:///./node_modules/topojson-client/src/neighbors.js","webpack:///./node_modules/topojson-client/src/untransform.js","webpack:///./node_modules/topojson-client/src/quantize.js","webpack:///./node_modules/react-dom/index.js","webpack:///./app/app.js","webpack:///./app/components/sticky-header/hooks.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/user.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/session.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/send.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/queue.js","webpack:///./node_modules/@financial-times/o-tracking/dist/libs/get-trace.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/targeting.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/is-alphabetical/index.js","webpack:///./node_modules/remark-parse/lib/defaults.js","webpack:///./node_modules/remark-parse/lib/util/get-indentation.js","webpack:///./node_modules/remark-parse/lib/util/html.js","webpack:///./node_modules/remark-parse/lib/locate/tag.js","webpack:///./node_modules/remark-parse/lib/locate/link.js","webpack:///./node_modules/d3-selection/src/mouse.js","webpack:///./node_modules/d3-selection/src/touch.js","webpack:///./node_modules/@financial-times/g-components/src/header/index.js","webpack:///./node_modules/@financial-times/o-header/browser.js","webpack:///./node_modules/@financial-times/g-components/src/analytics/index.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/browser.js","webpack:///./node_modules/@financial-times/g-components/src/footer/index.js","webpack:///./node_modules/@financial-times/o-footer/browser.js","webpack:///./node_modules/@financial-times/o-ads/browser.js","webpack:///./node_modules/@financial-times/o-share/browser.js","webpack:///./node_modules/@financial-times/g-components/src/epilogue/index.js","webpack:///./node_modules/@financial-times/g-components/src/big-topper/index.js","webpack:///./node_modules/@financial-times/g-components/src/bylines/index.js","webpack:///./node_modules/@financial-times/o-date/browser.js","webpack:///./node_modules/papaparse/papaparse.min.js","webpack:///./node_modules/@financial-times/g-components/src/loading/index.js","webpack:///./app/util/responsive-values.js","webpack:///./app/components/map/index.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./app/components/map/choropleth-layer.js","webpack:///./app/components/playback-controls/index.js","webpack:///./node_modules/react-rangeslider/lib/index.js","webpack:///./app/components/chart-head/index.js","webpack:///./app/components/chart-footer/index.js","webpack:///./app/components/map-legend/index.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@financial-times/g-components/src/card/index.js","webpack:///./app/components/list-card/index.js","webpack:///./app/components/breakpoint-container/index.js","webpack:///./app/components/navigation-header/index.js","webpack:///./app/components/sticky-header/index.js","webpack:///./app/components/flourish-embed/index.js","webpack:///./app/copy/intro.md","webpack:///./app/copy/latest-changes.md","webpack:///./app/copy/main-text.md","webpack:///./app/copy/how-it-works.md","webpack:///./app/copy/credits.md","webpack:///./node_modules/react-hot-loader/root.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/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/regenerator-runtime/runtime.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/@financial-times/o-header/dist/js/header.js","webpack:///./node_modules/@financial-times/o-header/dist/js/search.js","webpack:///./node_modules/@financial-times/o-toggle/dist/js/toggle.js","webpack:///./node_modules/@financial-times/o-toggle/dist/js/target.js","webpack:///./node_modules/@financial-times/o-header/dist/js/mega.js","webpack:///./node_modules/@financial-times/o-header/dist/js/drawer.js","webpack:///./node_modules/@financial-times/o-header/dist/js/subnav.js","webpack:///./node_modules/@financial-times/o-header/dist/js/sticky.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/@financial-times/o-tracking/dist/libs/browser-cuid.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/index.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/xhr.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/send-beacon.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/core/transports/image.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/custom.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/page-view.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/click.js","webpack:///./node_modules/@financial-times/o-tracking/dist/javascript/events/component-view.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/comments.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/stream.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/events.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/display-name.js","webpack:///./node_modules/@financial-times/o-overlay/browser.js","webpack:///./node_modules/@financial-times/o-overlay/dist/js/overlay.js","webpack:///./node_modules/@financial-times/o-viewport/dist/utils.js","webpack:///./node_modules/@financial-times/o-layers/browser.js","webpack:///./node_modules/@financial-times/o-overlay/dist/js/utils.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/auth.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/utils/purge-jwt-cache.js","webpack:///./node_modules/@financial-times/o-comments/dist/js/count.js","webpack:///./node_modules/@financial-times/o-footer/dist/js/footer.js","webpack:///./node_modules/@financial-times/o-footer/dist/js/layout.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/events.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/metrics.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/messenger.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/responsive.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/log.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/version.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/slots.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/slot.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/ad-servers/gpt.js","webpack:///./node_modules/@financial-times/o-ads/dist/js/utils/url.js","webpack:///./node_modules/@financial-times/o-share/dist/js/share.js","webpack:///./node_modules/@financial-times/o-date/dist/js/date.js","webpack:///./node_modules/@financial-times/ft-date-format/index.js","webpack:///./node_modules/unified/index.js","webpack:///./node_modules/extend/index.js","webpack:///./node_modules/bail/index.js","webpack:///./node_modules/vfile/index.js","webpack:///./node_modules/vfile-message/index.js","webpack:///./node_modules/unist-util-stringify-position/index.js","webpack:///./node_modules/vfile/core.js","webpack:///./node_modules/replace-ext/index.js","webpack:///./node_modules/vfile/node_modules/is-buffer/index.js","webpack:///./node_modules/trough/index.js","webpack:///./node_modules/trough/wrap.js","webpack:///./node_modules/x-is-string/index.js","webpack:///./node_modules/is-plain-obj/index.js","webpack:///./node_modules/remark-parse/index.js","webpack:///./node_modules/unherit/index.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/remark-parse/lib/parser.js","webpack:///./node_modules/state-toggle/index.js","webpack:///./node_modules/vfile-location/index.js","webpack:///./node_modules/remark-parse/lib/unescape.js","webpack:///./node_modules/remark-parse/lib/decode.js","webpack:///./node_modules/is-hexadecimal/index.js","webpack:///./node_modules/is-alphanumerical/index.js","webpack:///./node_modules/parse-entities/decode-entity.browser.js","webpack:///./node_modules/remark-parse/lib/tokenizer.js","webpack:///./node_modules/remark-parse/lib/set-options.js","webpack:///./node_modules/markdown-escapes/index.js","webpack:///./node_modules/remark-parse/lib/parse.js","webpack:///./node_modules/unist-util-remove-position/index.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/remark-parse/lib/tokenize/newline.js","webpack:///./node_modules/remark-parse/lib/tokenize/code-indented.js","webpack:///./node_modules/remark-parse/lib/tokenize/code-fenced.js","webpack:///./node_modules/remark-parse/lib/tokenize/blockquote.js","webpack:///./node_modules/remark-parse/lib/tokenize/heading-atx.js","webpack:///./node_modules/remark-parse/lib/tokenize/thematic-break.js","webpack:///./node_modules/remark-parse/lib/tokenize/list.js","webpack:///./node_modules/remark-parse/lib/util/remove-indentation.js","webpack:///./node_modules/remark-parse/lib/tokenize/heading-setext.js","webpack:///./node_modules/remark-parse/lib/tokenize/html-block.js","webpack:///./node_modules/remark-parse/lib/tokenize/footnote-definition.js","webpack:///./node_modules/collapse-white-space/index.js","webpack:///./node_modules/remark-parse/lib/tokenize/definition.js","webpack:///./node_modules/remark-parse/lib/tokenize/table.js","webpack:///./node_modules/remark-parse/lib/tokenize/paragraph.js","webpack:///./node_modules/remark-parse/lib/tokenize/escape.js","webpack:///./node_modules/remark-parse/lib/locate/escape.js","webpack:///./node_modules/remark-parse/lib/tokenize/auto-link.js","webpack:///./node_modules/remark-parse/lib/tokenize/url.js","webpack:///./node_modules/remark-parse/lib/locate/url.js","webpack:///./node_modules/remark-parse/lib/tokenize/html-inline.js","webpack:///./node_modules/remark-parse/lib/tokenize/link.js","webpack:///./node_modules/remark-parse/lib/tokenize/reference.js","webpack:///./node_modules/remark-parse/lib/tokenize/strong.js","webpack:///./node_modules/remark-parse/lib/locate/strong.js","webpack:///./node_modules/remark-parse/lib/tokenize/emphasis.js","webpack:///./node_modules/is-word-character/index.js","webpack:///./node_modules/remark-parse/lib/locate/emphasis.js","webpack:///./node_modules/remark-parse/lib/tokenize/delete.js","webpack:///./node_modules/remark-parse/lib/locate/delete.js","webpack:///./node_modules/remark-parse/lib/tokenize/code-inline.js","webpack:///./node_modules/remark-parse/lib/locate/code-inline.js","webpack:///./node_modules/remark-parse/lib/tokenize/break.js","webpack:///./node_modules/remark-parse/lib/locate/break.js","webpack:///./node_modules/remark-parse/lib/tokenize/text.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/react-markdown/lib/plugins/disallow-node.js","webpack:///./node_modules/react-markdown/lib/ast-to-react.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/uriTransformer.js","webpack:///./node_modules/react-markdown/lib/renderers.js","webpack:///./node_modules/react-rangeslider/lib/Rangeslider.js","webpack:///./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack:///./node_modules/react-rangeslider/lib/utils.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/d3-geo-projection/src/math.js","webpack:///./node_modules/d3-geo-projection/src/robinson.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-drag/src/noevent.js","webpack:///./node_modules/d3-drag/src/nodrag.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","exp","epsilon","epsilon2","pi","Math","PI","halfPi","quarterPi","tau","degrees","radians","abs","atan","atan2","cos","ceil","log","floor","pow","sin","sign","x","sqrt","tan","acos","asin","haversin","StyleSheet","_this","_insertTag","tag","before","tags","prepend","container","firstChild","nextSibling","insertBefore","isSpeedy","speedy","ctr","nonce","_proto","hydrate","nodes","insert","rule","setAttribute","createTextNode","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","flush","parentNode","removeChild","k","String","fromCharCode","g","trim","y","replace","z","charCodeAt","C","A","M","O","S","q","B","D","E","F","G","H","root","props","line","column","return","I","K","L","N","P","Q","R","T","U","Y","W","Z","_","ee","re","u","f","v","w","$","ce","ne","ae","te","se","ue","fe","cache","arg","points","parsed","index","character","fixedElements","WeakMap","compat","element","isImplicitRule","rules","parentRules","removeLabel","defaultStylisPlugins","exec","ssrStyles","querySelectorAll","Array","node","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","getAttribute","split","omnipresentPlugins","currentSheet","finalizingPlugins","serializer","selector","serialized","shouldCache","styles","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","insertStyles","isStringTag","current","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","styleName","toLowerCase","match","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","obj","string","isArray","_key","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","args","stringMode","strings","raw","lastIndex","identifierName","EmotionCacheContext","HTMLElement","Provider","func","ref","ThemeContext","typePropName","createEmotionProps","newProps","Emotion","cssProp","css","arguments","argsLength","createElementArgArray","webpackPolyfill","deprecate","paths","NaN","compare","ascending","left","lo","hi","mid","right","ascendingBisect","bisector","bisectRight","bisect","min","max","values","valueof","start","stop","step","range","e10","e5","e2","reverse","ticks","count","tickIncrement","isFinite","power","LN10","tickStep","step0","step1","LN2","number","i0","value0","merged","array","arrays","spherical","cartesian","lambda","phi","cosPhi","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","originalModule","noop","cosMinDistance","delta2","project","resampleLineTo","x0","y0","lambda0","a0","b0","c0","x1","y1","lambda1","a1","b1","c1","depth","stream","dx","dy","d2","phi2","lambda2","x2","y2","dx2","dy2","dz","point","lambda00","x00","y00","a00","b00","c00","resampleStream","lineStart","lineEnd","polygonStart","ringStart","polygonEnd","linePoint","ringPoint","ringEnd","resampleNone","transformRadians","scaleTranslate","sx","sy","transform","invert","scaleTranslateRotate","alpha","cosAlpha","sinAlpha","ai","bi","ci","fi","projectionMutator","projectAt","rotate","projectResample","projectTransform","projectRotateTransform","cacheStream","deltaLambda","deltaPhi","deltaGamma","theta","preclip","postclip","identity","projection","recenter","center","compose","resample","reset","transformRotate","clipAngle","clipExtent","scale","translate","angle","reflectX","reflectY","precision","fitExtent","extent","fit","fitSize","size","fitWidth","width","fitHeight","height","creator","documentElement","nextId","local","Local","constructor","remove","touches","sourceEvent","streamGeometry","geometry","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","coordinates","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","StringBoolPropType","PropTypes","oneOfType","bool","flagsPropType","shape","prod","isRequired","errorReporting","analytics","googleAnalytics","ads","mainImage","summary","bylines","onwardjourney","shareButtons","header","footer","comments","dark","mainImagePropType","uuid","url","trackingPropType","micrositeName","product","topicPropType","dataMetaPropType","oneOf","description","sameAs","keywords","arrayOf","contactPoint","contactType","telephone","email","includedInDataCatalog","distribution","encodingFormat","contentUrl","temporalCoverage","spatialCoverage","geo","box","bylinesPropType","location","fitBounds","clip","hasOwn","classes","argType","inner","default","Adder","add","temp","valueOf","adder","bv","av","isUndefined","is","merge","encode","decode","addEvent","broadcast","onPage","triggerPage","getValueFromCookie","getValueFromUrl","getValueFromJsVariable","sanitise","assignIfUndefined","whitelistProps","_browserCuid","_settings","_interopRequireDefault","require","page_callbacks","variable","target","copy","encodeURIComponent","escape","decodeURIComponent","unescape","event","listener","addEventListener","attachEvent","namespace","eventType","detail","dispatchEvent","CustomEvent","bubbles","matcher","cookie","RegExp","$1","href","namespaces","test","reduce","acc","propName","assign","subject","prop","_default","guid","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arr","fromCode","charAt","GridRow","GridChild","GridContainer","iterator","done","TypeError","geoPath","createContext","projectionConfig","parallels","useMemo","useCallback","path","propTypes","viewBox","feature","objects","geography","parseGeographies","useContext","useState","useEffect","fetch","ok","statusText","json","catch","geographies","rsmKey","svgPath","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onFocus","onBlur","style","tabIndex","memo","fill","stroke","geoGraticule","filterZoomEvent","onMoveStart","onMoveEnd","onMove","translateExtent","scaleExtent","useRef","select","filter","ctrlKey","button","on","dragging","zoomIdentity","mapRef","position","transformString","minZoom","maxZoom","Fragment","pointerEvents","from","to","connectorProps","curve","Annotation","ComposableMap","Geographies","Geography","Graticule","Line","Marker","ZoomableGroup","useGeographies","useZoomPan","Context","ArticleLayout","flags","breakpoint","useLayoutChangeEvents","useAds","displayName","exact","gptSite","gptZone","targeting","defaultProps","plain","stripListLeaders","removeMarkdown","gfm","encodedJSON","_data","stringify","spoorTrackingPixel","jsonString","ieVersion","documentMode","img","data-o-component","imageUUID","getMainImage","makeCancelable","hasCanceled","val","isCanceled","cancel","registerLayoutChangeEvents","layouts","getGridBreakpoints","breakpoints","Map","entries","decr1","Number","setupQuery","query","handleMQChange","mql","matches","matchMedia","addListener","unregisterLayoutChangeEvents","listeners","removeQuery","find","removeListener","isNode","Node","nodeType","nodeName","isElement","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","querySelector","bindIndex","group","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","space","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","names","classedRemove","classedTrue","classedFalse","classedFunction","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","lower","previousSibling","constantNull","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","params","createEvent","initEvent","cancelable","dispatchConstant","dispatchFunction","Selection","groups","_groups","_parents","subgroups","subnode","subgroup","selectAll","selectorAll","each","enterGroup","updateGroup","previous","i1","_enter","_exit","sparse","onenter","append","onupdate","onexit","groups0","groups1","selection","m0","m1","merges","group0","group1","compareDocumentPosition","sort","compareNode","sortgroups","sortgroup","empty","attr","getAttributeNS","classed","text","html","deep","dispatch","extend","inSample","getVersion","buildObjectFromArray","iframeToSlotName","getTimestamp","getQueryParamByName","getQueryString","getLocation","parseAttributeName","dehyphenise","getReferrer","attach","hash","isNonEmptyString","isPlainObject","isWindow","isObject","isStorage","isFunction","isString","_events","_metrics","_messenger","_responsive","_interopRequireWildcard","_log","_version","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","hop","getCurrent","end","isOn","info","table","attributeTable","Boolean","tagName","delimiter","pairing","pair","hashObj","scriptUrl","async","errorcb","autoRemove","getElementsByTagName","hasRun","processCallback","parentElement","onload","onerror","referrer","hyphen","letter","toUpperCase","attribute","search","substring","results","now","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","iframeWindow","slotName","iframes","contentWindow","targetObject","prev","metricsSampleThreshold","random","sampleSize","off","once","messenger","responsive","setupMetrics","clearPerfMarks","markPageChange","perfMark","buildPerfmarkSuffix","source","transformer","methods","TransformStream","delay","restart","elapsed","time","emptyOn","emptyTween","schedules","__transition","self","tween","state","timer","tick","duration","ease","timing","init","schedule","cssNode","cssRoot","cssView","svgNode","translateX","translateY","skewX","scaleX","scaleY","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","defaultView","getComputedStyle","getPropertyValue","decompose","interpolateTransformSvg","createElementNS","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","color","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","t0","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","every","styleRemove","removeProperty","styleInterpolate","priority","setProperty","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","inherit","id0","id1","styleNull","styleFunction","listener0","styleMaybeRemove","styleConstant","that","interrupt","defaultTiming","number1","number2","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","arc","ccw","cw","da","rect","clear","Set","proto","tree","isNaN","xm","ym","xp","yp","bottom","_root","leaf","_x","_y","quadtree","Quadtree","addAll","leaf_copy","treeProto","cover","xz","yz","Infinity","visit","x3","y3","quads","radius","retainer","removeAll","visitAfter","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","normal","sourceRandomLogNormal","randomIrwinHall","sum","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","sourceRandomExponential","initRange","domain","formatSpecifier","specifier","FormatSpecifier","align","symbol","zero","comma","formatDecimalParts","toExponential","coefficient","prefixExponent","exponent","toFixed","round","toLocaleString","toPrecision","formatRounded","prefixes","locale","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","prefix","suffix","formatType","maybeSuffix","format","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","formatPrefix","unknown","invertExtent","newInterval","floori","offseti","field","interval","date","d0","d1","offset","setTime","setMonth","setHours","setFullYear","setDate","weekday","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","getMilliseconds","getUTCSeconds","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","utcDate","UTC","newDate","timeFormat","timeParse","utcFormat","utcParse","pads","numberRe","percentRe","requoteRe","pad","requote","formatRe","formatLookup","parseWeekdayNumberSunday","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","V","parseWeekNumberMonday","parseFullYear","parseYear","parseZone","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","day","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","definition","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","newParse","week","X","formatLocale","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","toISOString","RedBlackTree","RedBlackNode","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","red","createEdge","v0","v1","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","t1","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","ha","hc","circle","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","clipCells","edges","polygons","polygon","triangles","s0","e1","s1","links","_found","vx","vy","v2","rotationIdentity","rotateRadians","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","creatorInherit","uri","creatorFixed","svg","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","clientLeft","top","clientTop","clipRectangle","visible","direction","corner","comparePoint","compareIntersection","ca","segments","ring","x__","y__","v__","x_","y_","v_","first","clean","activeStream","bufferStream","clipStream","rejoin","startInside","winding","polygonInside","cleanInside","xhtml","xlink","xml","xmlns","filterEvents","mouseenter","mouseleave","filterContextListener","contextListener","related","relatedTarget","event1","event0","parseTypenames","typenames","onRemove","typename","__on","removeEventListener","capture","onAdd","wrap","customEvent","xtend","unified","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","getDefinitions","uriTransformer","defaultRenderers","allTypes","ReactMarkdown","allowedTypes","disallowedTypes","renderers","rawAst","plugins","applyParserPlugin","renderProps","definitions","ast","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","escapeHtml","skipHtml","astPlugins","determineAstPlugins","plugin","parser","use","arr2","_toConsumableArray","sourcePos","rawSourcePos","transformLinkUri","linkTarget","transformImageUri","types","destroy","settings","setValue","getValue","none","writable","boundsStream","bounds","setRootID","getRootID","track","rootID","_send","_user","_session","_utils","config","session","context","root_id","user","passport_id","ft_session","ft_session_s","device","spoor_session","spoor_session_is_new","isNew","spoor_id","userID","settingsConfig","addAndRun","_index","defaults","MediumRectangle","sizes","Rectangle","WideSkyscraper","Leaderboard","SuperLeaderboard","HalfPage","Billboard","Portrait","AdhesionBanner","MicroBar","Button2","Responsive","extra","large","medium","small","refresh","inview","displayLabelWithBorders","fetchDeclaritiveConfig","fetchCanonicalURL","canonical","canonicalTag","Config","store","access","phi0","sign0","phi1","sign1","delta","cosPhi0","cosPhi1","sinLambda0Lambda1","clipAntimeridianIntersect","_extends","asyncGeneratorStep","gen","_throw","usePortal","rootRef","rootEl","parentEl","body","firstElementChild","childNodes","enabled","OAds","gpt","network","zone","lazyLoad","initialised","slots","initSlot","global","STORYBOOK_ENV","setBreakpoint","listenersRef","useKeyboardShortcuts","shortcuts","handlers","keyCode","keyPress","code","visitParents","CONTINUE","SKIP","EXIT","visitor","phi00","sinPhi0","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","dLambda","sdLambda","adLambda","sinPhi","p0","ranges","deltaSum","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","equatorial","inflection","phii","lambdai","antimeridian","rangeCompare","rangeContains","W0","W1","Z0","Z1","X2","Y2","Z2","z0","deltaMax","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cz","lengthSum","lengthStream","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","distance","ao","bo","ab","polygonContains","ringRadians","pointRadians","graticuleX","graticuleY","X1","X0","Y1","Y0","DX","DY","graticule","lines","outline","extentMajor","extentMinor","stepMajor","stepMinor","graticule10","cy0","sy0","cy1","sy1","kx0","ky0","kx1","ky1","area","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","PathString","_string","_circle","projectionStream","contextStream","measure","conicProjection","conicEqualAreaRaw","cylindricalEqualAreaRaw","r0","r0y","conicEqualArea","lower48Point","alaskaPoint","hawaiiPoint","lower48","albers","alaska","hawaii","pointStream","albersUsa","streams","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","equalEarthRaw","l2","l6","gnomonicRaw","sa","tx","ty","kx","ky","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","cr","smallRadius","notHemisphere","intersect","two","pa","pb","n1","n2","n2n2","n1n2","determinant","c2","n1xn2","uu","t2","polar","q1","point0","point2","point1","styleValue","circleStream","cosRadius","sinRadius","circleRadius","constant","getCurrentLayout","getCurrentGutter","enableLayoutChangeEvents","missingDataMessage","getGridProperties","properties","getGridFromDoc","gridProperties","layout","gutter","gridLayouts","Share","textTwitter","textFacebook","textLinkedIn","textWhatsApp","separated","OShare","services","link","classnames","rel","validSegment","segment","sink","clipLine","ringBuffer","ringSink","polygonStarted","pointRing","pointVisible","pointLine","ringSegments","shift","longitude","sinPhi1","absDelta","intersection","phiArc","Intersection","other","entry","isSubject","BasicCard","title","updateConfig","page","tracking","_custom","_pageView","_click","_core","_componentView","api_key","Tracking","version","developer","level","view","click","utils","_getDeclarativeConfigElement","_getDeclarativeConfig","cookieDomain","newConfig","noSend","user_id","setUser","setDomain","declarativeConfigString","declarativeOptions","configEl","innerText","configError","message","boundInit","boundPage","boundEvent","boundUpdateConfig","initialise","_toggle","constructAll","debounce","wait","later","clearTimeout","setTimeout","throttle","Store","loadStore","keyPrefix","undefinedName","storage","expires","storageKey","nameOverride","test_key","localStorage","setItem","getItem","removeItem","_type","load","save","cookieLoad","cookies","cookieSave","expiry","getTime","toGMTString","cookieRemove","read","write","Delegate","listenerMap","handle","_removedListeners","matchesTag","matchesRoot","rootElement","matchesId","captureForType","handler","useCapture","matcherParam","Element","listenerList","singleEventType","correspondingUseElement","eventPhase","currentTarget","ret","toFire","hasAttribute","HTMLDocument","fire","preventDefault","intervals","resize","orientation","visibility","scroll","setThrottleInterval","listenToResize","ev","viewport","getSize","originalEvent","listenToOrientation","getOrientation","listenToVisibility","hidden","getVisibility","listenToScroll","scrollPos","getScrollPosition","scrollHeight","scrollLeft","scrollTop","scrollWidth","listenTo","stopListeningTo","debug","legacy","invalid","hexadecimal","alphanumerical","decodeEntity","option","indent","entityCharacters","namedEntity","terminated","characters","reference","following","warning","reason","output","entity","begin","diff","additional","nonTerminated","handleText","handleReference","handleWarning","textContext","referenceContext","warningContext","pos","messages","hexa","tests","own","parseInt","bases","disallowed","Function","res","num","substr","interruptors","tokenizers","ctx","interruptor","ignore","bools","collapseWhiteSpace","rho","SQRT2","cosh","ux0","uy0","w0","ux1","uy1","w1","r1","coshr0","sinh","ZoomEvent","Transform","applyX","applyY","invertX","invertY","rescaleX","rescaleY","__zoom","nopropagation","stopImmediatePropagation","defaultFilter","defaultExtent","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultTouchable","navigator","maxTouchPoints","defaultConstrain","dx0","dx1","dy0","dy1","touchstarting","touchending","constrain","wheelDelta","touchable","clickDistance2","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","gesture","__zooming","Gesture","taps","mouse","wheel","noevent","wheelidled","mousemoved","mouseupped","moved","k1","shiftKey","started","changedTouches","touch","identifier","touch0","touch1","l0","l1","dp","dl","collection","scaleBy","scaleTo","k0","translateBy","translateTo","emit","clickDistance","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","colspan","data-o-grid-colspan","xl","XL","compact","bleed","snappy","input","topology","bboxPoint","bboxGeometry","arcs","bbox","transformPoint","stitchedArcs","fragmentByStart","fragmentByEnd","fragments","emptyIndex","ends","fg","gf","meshArcs","extractArcs","stitch","geom","geomsByArc","extract0","extract1","extract2","extract3","geoms","mergeArcs","polygonsByArc","extract","planarRingArea","neighbors","ki","indexesByArc","geometryType","indexes","ij","ik","untransform","inputs","outputs","quantizePoint","quantizeGeometry","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","App","isPrerendering","userAgent","setContext","mainRef","lockdownData","dataAsOf","setData","dataBranch","Papa","dynamicTyping","skipEmptyLines","stringencyData","dateKeys","accumulator","countrycode","stringencylatest","StringencyIndex","stringency","iso3","startDate","countries","last_updated","buildTime","containerRef","navigationConfig","currentPage","role","itemScope","itemType","byline","dateFirst","publishedDate","itemProp","copyIntro","copyLatestChanges","responsiveValues","mapHeight","mapWidth","copyMainText","alt","copyHowItWorks","copyCredits","isBrowser","useWindow","scrollX","scrollY","useScrollPosition","effect","deps","throttleTimeout","callBack","currPos","prevPos","useLayoutEffect","handleScroll","basis","v3","t3","linear","gamma","nogamma","exponential","rgb","rgbGamma","rgbSpline","spline","colors","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","test3","shouldUseNative","symbols","arrayLikeToArray","minLen","_store","defaultUserConfig","hostname","getSession","defaultSessionConfig","setSession","getDomain","run","_queue","_transports","isIe11","MSInputMethodContext","should_use_sendBeacon","sendBeacon","useSendBeacon","sendRequest","queueTime","offlineLag","transport","user_callback","core_system","system","stringifiedData","complete","image_method","category","action","all_events","all","counts","label","queue_length","nextRequest","server","Queue","items","last","doAdd","created_at","invalidArg","elementPropertiesToCollect","getSiblingsAndPosition","el","originalEl","siblings","findIndex","getAllElementProperties","returnObject","getDomPathProps","attrs","getContextProps","isOriginalEl","customProps","getTrace","trace","customContext","attributes","domPathProps","contextProps","_config","parameters","Targeting","socialReferrer","getSocialReferrer","timestamp","socialFlow","OADS_VERSION","sf","socialflow","codedValue","lookup","google","socref","searchTerm","qs","queryText","searchField","kw","ts","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","env","argv","versions","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","normalizeArray","parts","allowAboveRoot","up","xs","resolvedPath","resolvedAbsolute","normalize","isAbsolute","trailingSlash","relative","fromParts","toParts","samePartsLength","outputParts","sep","dirname","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","commonmark","footnotes","pedantic","blocks","stops","openTag","closeTag","openCloseTag","fromIndex","image","Header","headerClasses","OHeader","data-o-header--no-js","_header","Analytics","cutsTheMustard","pageData","content","asset_type","contentId","microsite_name","OTracking","is_live","apiKey","dangerouslySetInnerHTML","__html","md","listUnicodeChar","useImgAltText","Ad","background","reserve","showAdsLabel","defaultFormat","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","relatedContent","sections","setSections","sectionP","rows","limit","section","data-g-component","Comments","linkPageUrl","OComments","articleUrl","articleId","_comments","Footer","OFooter","data-o-footer--no-js","aria-label","data-trackable","aria-controls","data-o-tracking-do-not-track","_footer","_slots","_gpt","_targeting","Ads","addDOMEventListener","oAds","configOptions","nonPersonalized","disableConsentCookie","consents","behavioral","getConsents","programmatic","initLibrary","updateTargeting","updatePageTargeting","isInitialised","removeDOMEventListener","initAll","consentCookie","_share","Epilogue","year","BigTopper","topic","headline","relatedArticle","socialHeadline","twitterHeadline","facebookHeadline","tweetText","share","credit","suppressHydrationWarning","NamesElement","namesList","separator","author","DateElement","forwardRef","Intl","DateTimeFormat","month","formatToParts","dateFormatted","Bylines","dateElRef","oDateRef","ODate","_date","postMessage","dynamicTypingFunction","worker","WORKERS_SUPPORTED","SCRIPT_PATH","Worker","onmessage","userStep","userChunk","chunk","userComplete","userError","workerId","NODE_STREAM_INPUT","download","readable","File","unparse","BAD_DELIMITERS","quotes","newline","quoteChar","fields","meta","RECORD_SEP","UNIT_SEP","BYTE_ORDER_MARK","LocalChunkSize","RemoteChunkSize","DefaultDelimiter","Parser","ParserHandle","NetworkStreamer","FileStreamer","StringStreamer","ReadableStreamStreamer","jQuery","FileReader","files","file","inputElem","instanceConfig","_handle","_finished","_completed","_input","_baseIndex","_partialLine","_rowCount","_start","_nextChunk","isFirstChunk","_completeResults","errors","chunkSize","streamer","parseChunk","beforeFirstChunk","paused","aborted","preview","WORKER_ID","finished","_sendError","_readChunk","_chunkLoaded","withCredentials","_chunkError","downloadRequestHeaders","setRequestHeader","getResponseHeader","lastIndexOf","webkitSlice","mozSlice","FileReaderSync","readAsText","encoding","pause","resume","_streamData","_streamEnd","_streamError","_checkIsFinished","_streamCleanUp","abort","trimHeaders","parseFloat","row","successful","bestDelimiter","getCharIndex","fastMode","escapeChar","linebreak","truncated","terminate","Loading","theme","colorScale","scaleThreshold","formatTime","playing","setPlaying","dateIndex","setDateIndex","worldGeojson","setWorldGeojson","geoRobinson","handleSliderChange","handlePlayClick","isoParse","worldTopojson","geojson","topojson","playForward","setInterval","clearInterval","onChange","onClick","subtitle","minHeight","disputedPolygons","worldBoundaries","disputedBoundaries","strokeLinecap","strokeLinejoin","taskHead","taskTail","frame","clockLast","clockNow","clockSkew","clock","performance","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","wake","timerFlush","sleep","nap","poke","reA","reB","am","bm","bs","one","ChoroplethLayer","geographiesCallback","ISO_A3","geographyPath","PlaybackControls","icon","parseTime","buttonClassname","includes","maxWidth","tooltip","_Rangeslider","_Rangeslider2","ChartHead","ChartFooter","MapLegend","colourScale","setup","legendPosition","legendLabelFontSize","legendTitleFontSize","legendTitleTickHeight","legendBlockWidth","legendBlockHeight","svgRef","d3","legend","legendGroups","arrayWithoutHoles","iterableToArray","nonIterableSpread","Card","ListCard","paragraph","BreakpointContainer","NavigationHeaderMobileDropdownButton","isOpen","buttonRef","currentText","NavigationHeaderMobileDropdown","openLinksInNewWindow","closeDropdown","dropdownRef","handleClick","aria-current","NavigationHeader","setIsOpen","StickyHeader","isSticky","setSticky","stickyShadow","setStickyShadow","stickyTop","stickyHeight","containerBottom","Consumer","breakpointHeight","wrapperClasses","getEmbedUrl","flourishUrl","FlourishEmbed","origin","eventData","scrolling","frameBorder","sandbox","React","AppContainer","warnAboutHMRDisabled","Children","only","shouldWrapWithAppContainer","areComponentsEqual","setConfig","cold","configureComponent","for","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","setState","forceUpdate","isPureReactComponent","J","__self","__source","$$typeof","_owner","aa","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","toArray","Component","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","createFactory","createRef","isValidElement","lazy","_ctor","_status","_result","useDebugValue","useImperativeHandle","useReducer","getElementById","hasChildNodes","onError","ea","fa","ia","ja","la","ma","na","oa","ka","qa","ra","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","wa","dependencies","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","Ya","Za","$a","bb","db","eb","gb","ib","jb","kb","lb","mb","nb","qb","_debugOwner","_debugSource","fileName","lineNumber","rb","sb","_valueTracker","stopTracking","tb","checked","zb","defaultChecked","defaultValue","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","activeElement","Gb","Fb","Hb","selected","defaultSelected","disabled","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","Rb","lastChild","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","Xb","Yb","Zb","$b","ac","bc","alternate","effectTag","ec","memoizedState","dehydrated","fc","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","delete","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","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","gridArea","lineClamp","kd","ld","nd","menuitem","base","br","col","embed","hr","keygen","param","wbr","od","pd","qd","rd","sd","td","ud","vd","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","be","Interface","isDefaultPrevented","defaultPrevented","returnValue","eventPool","destructor","de","getPooled","stopPropagation","cancelBubble","persist","timeStamp","isTrusted","ge","he","ie","je","ke","le","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","ve","which","altKey","metaKey","char","we","datetime","password","tel","xe","ye","change","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","pageX","pageY","buttons","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","ef","ff","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","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","repeat","dataTransfer","tf","targetTouches","uf","vf","deltaX","wheelDeltaX","wheelDeltaY","deltaZ","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","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","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","observedBits","responders","tg","ug","updateQueue","baseState","baseQueue","shared","pending","effects","vg","wg","suspenseConfig","payload","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","shouldComponentUpdate","Lg","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","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","hh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","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","di","ei","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","pendingContext","ni","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","li","isBackwards","rendering","renderingStartTime","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","onclick","ti","ui","vi","wi","xi","yi","zi","Ai","stack","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","focus","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","instance","_reactRootContainer","Ri","Si","Ti","display","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","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","createRange","setStart","removeAllRanges","addRange","setEnd","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","hk","jk","kk","unmount","form","Lj","lk","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","port2","port1","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","_arr","_n","_d","_e","_s","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","componentName","propFullName","secret","getShim","ReactPropTypes","any","instanceOf","objectOf","checkPropTypes","_search","_mega","_drawer","_subnav","_sticky","headerEl","_oToggle","controls","opening","_target","handleSpaceKeydown","toggle","Toggle","toggleEl","_targets","targetEl","Target","addToggle","close","stateName","removeToggle","toggles","togglePosition","show","hide","expanded","addEvents","menu","animate","menus","handleCloseEvents","scope","allFocusable","handleKeydown","handleMouseenter","handleMouseleave","innerWidth","offsetWidth","handleFocus","handleTab","firstEl","lastEl","removeEvents","addDrawerToggles","drawerEl","handleClose","openingControl","toggleCallback","toggleTabbing","firstFocusable","control","drawerToggle","addSubmenuToggles","submenus","submenu","isEnabled","oUtils","subnav","wrapper","wrapperWidth","scrollable","currentSelection","currentSelectionEnd","scrollTo","checkCurrentPosition","remaining","_oUtils","viewportOffset","lastScrollDepth","lastAnimationFrame","lastStickyState","debouncedScrollEnd","scrollStart","handleFrame","scrollDepth","pageYOffset","isActive","isScrollingDown","startLoop","innerHeight","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","api","discreteValues","randomBlock","safeCounter","fingerprint","slug","counter","print","globalCount","mimeTypes","_xhr","_sendBeacon","_image","mock","xhr","resolver","rejecter","Image","defaultEventConfig","trackingEvent","origamiElement","getOrigamiEventTarget","component_name","component_id","getComponentId","_getElementPath","siblingIndex","srcParent","_generateHash","reduceRight","builder","defaultPageConfig","URL","internalQueue","_ftdomdelegate","_getTrace","eventPropertiesToCollect","firstDomPathToken","domPathTokens","oTrackingSkipQueueAttr","skipQueue","source_id","getEventProperties","handleClickEvent","clickEvent","clickElement","runQueue","nextLink","elementsToTrack","TRACKING_ATTRIBUTES","decorateEventData","viewedEl","opts","getContextData","dataBeforeWhitelist","IntersectionObserver","observer","threshold","observe","changes","isIntersecting","intersectionRatio","unobserve","_stream","_count","getDataAttributes","isCount","renderCount","fetchCount","dataset","shortKey","m2","events","auth","_purgeJwtCache","Stream","streamEl","eventSeenTimes","useStagingEnvironment","renderAndAuthenticate","renderComments","authenticateUser","login","validation","authenticationToken","renderSignedInMessage","fetchOptions","fetchJsonWebToken","response","token","userHasValidSession","scriptElement","rootUrl","Coral","createStreamEmbed","storyURL","storyID","rootURL","autoRender","onAny","publishEvent","stagingWarning","Event","purgeCacheAfterCompletion","overlay","prompt","onOverlayReady","displayNameForm","promptValidation","onOverlayClosed","_ref","success","displayNamePrompt","mappedEvent","coralEventMap","oComments","oCommentsEventOptions","oCommentsEvent","oTracking","disableOTracking","oTrackingEventOptions","coral","isWithheld","oTrackingEvent","editButtonId","signedInMessage","oldSignedInMessage","_oOverlay","isUnique","available","findInvalidCharacters","matchingCharacters","uniqueMatchingCharacters","class","heading","invalidCharacters","apiError","errorMessage","_overlay","_oViewport","_oLayers","overlays","checkOptions","trigger","modal","layer","shaded","getOptionsFromTrigger","optionsFromKey","triggerClickHandler","isVisible","offsetHeight","focusTrap","overlayFocusableElements","elementVisible","elementLabelVisible","labels","some","elementIsUncheckedRadio","lastElement","Overlay","noOptError","getLayerContext","parentnode","delegates","doc","fullscreen","originalOverflow","overflow","history","pushState","popstateHandler","loadContent","copyContentFromUrl","copyContentFromElement","wrapperEl","zindex","headingId","preventclosing","nofocus","visuallyhidetitle","_button","shadow","closeHandler","nested","resizeListenerHandler","resizeListener","closeOnEscapePressHandler","closeOnEscapePress","closeOnNewLayerHandler","closeOnNewLayer","customclose","closeOnExternalClickHandler","closeOnExternalClick","getWidth","getHeight","realign","overlay_id","_trapFocus","back","respondToWindow","dimension","_align","capitalise","borderHeight","borderWidth","triggers","overlaysArray","_debug","Utils","ignoreScrollbars","pageXOffset","screen","closest","unCapitalise","outerHTML","dashIndex","subKey","getOffsetRect","eClientRect","docElem","searchParams","credentials","purgeJwtCache","Count","countEl","countLabel","getCountLabel","useStaging","commentCount","_layout","COLLAPSIBLE_BREAKPOINTS","footerEl","shouldCollapse","_toggles","toggleEls","_oGrid","lastBreakpoint","LUX","msPerformance","webkitPerformance","mozPerformance","clearMarks","eventDetailsObj","creativeId","eventName","getMarksForEvents","markNames","getEntriesByName","marks","mName","pMarks","markName","mNameNoSuffix","pMarks2","metricsDefinitions","groupsToClear","getEntriesByType","relevantGroupsMarks","spoorAction","eventsToClear","getNavigationPerfMarks","desiredMarks","navMarksArray","navMarks","disableSampling","eDef","sendMetricsOnEvent","eMarkMap","listenOnInitialised","sendMetrics","eventDetails","navigation","eventPayload","timings","creative","isEmpty","post","getNearestBreakpoint","winner","dims","breakpointDims","setCurrent","brps","argsIndex","groupCollapsed","groupEnd","_slot","screensize","Slots","invokeMethodOnSlots","slot","findFormatBySize","onBreakpointChange","isCurrentlyResponsive","stillWantsResponsive","collapse","uncollapse","submitImpression","initLazyLoading","initRefresh","refreshCount","initRendered","setFormatLoaded","maximise","initResponsive","initPostMessage","slotClass","addClass","flushLazyLoading","lazyLoadingObservers","slotConfig","lazyLoadingConfig","lazyLoadingObserver","viewportMargin","rootMargin","intersectionRect","unitName","lineItemId","VALID_SIZE_STRINGS","VALID_COLLAPSE_MODES","attributeParsers","_sizes","regex","mapping","responsiveSizes","screenName","responsiveFormats","lazyLoadThreshold","collapseEmpty","convertLazyLoadBooleanToObject","onChangeBreakpoint","hasValidSize","Slot","cfg","outer","addContainer","setName","defer","outOfPage","companion","outerEl","parseAttributeConfig","lazyLoadObserver","initLazyLoad","centerContainer","labelContainer","getAttributes","clearSlot","destroySlot","submitGptImpression","details","insertAdjacentHTML","DEFAULT_LAZY_LOAD","_url","fetchMarginPercent","renderMarginPercent","mobileScaling","gptConfig","loadGPT","onReady","slotMethods","onRender","onRefresh","onResize","googletag","cmd","pubads","onRenderEnded","enableCompanions","setRenderingMode","setPageTargeting","setPageCollapseEmpty","enableLazyLoad","stripUrlParams","filters","SEARCH_PARAMS","enableServices","setTargeting","setRequestNonPersonalizedAds","lazyLoadConf","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","sizeMapping","addSize","build","destroySlots","addService","setCollapseEmptyDiv","impressionURL","trackingUrlElement","oAdsImpressionUrl","updateCorrelator","clearPageTargeting","override","hasGPTLoaded","apiReady","conf","filterNestedParams","nestedParams","keysToStrip","childParams","URLSearchParams","socialUrls","twitter","facebook","linkedin","pinterest","whatsapp","descriptiveLinkText","oShare","openWindows","dispatchCustomEvent","actionEl","shareLocation","oShareLocation","opener","shareSocial","generateSocialUrl","socialNetwork","templateUrl","titleExtra","relatedTwitterAccounts","protocol","host","pathname","ulElement","liElement","spanElement","aElement","templateLinkText","rootDelegate","rootDomDelegate","_ftDateFormat","updateEventName","ftDateFormatWarning","methodName","toDate","printers","printer","_renderDateFor","dateString","labelString","asTodayOrYesterdayOrNothing","timeAgo","inSeconds","hour","abbreviated","timeAgoNoSeconds","ftTime","dateEls","getSecondsBetween","isNearFuture","isFarFuture","isToday","isYesterday","compiledTemplates","formatReplacementsMap","MMMM","MMM","MM","yyyy","yy","EEEE","EEE","do","mm","HH","minute","compile","funcString","replacer","ftDateFormat","dateFormat","tpl","dateObj","otherTime","within24Hours","sameDayOfWeek","within48Hours","consecutiveDaysOfTheWeek","bail","vfile","trough","attachers","transformers","frozen","freezeIndex","processor","assertUnfrozen","freeze","addPlugin","addList","addPreset","assertParser","newable","Compiler","assertCompiler","assertNode","runSync","assertDone","processSync","destination","executor","pipeline","contents","asyncName","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","newValue","getProperty","copyIsArray","VMessage","VFile","filePath","fatal","fail","VMessagePrototype","parseOrigin","ruleId","buffer","assertPart","part","assertNonEmpty","assertPath","stem","npath","nFileName","isBuffer","readFloatLE","isSlowBuffer","_isBuffer","fns","middleware","invoked","unherit","inherits","Super","From","superCtor","super_","TempCtor","vfileLocation","tokenizer","setOptions","inList","inBlock","inLink","atStart","toOffset","exitStart","enterList","enterLink","enterBlock","interruptParagraph","interruptList","interruptBlockquote","blockTokenizers","indentedCode","fencedCode","blockquote","atxHeading","thematicBreak","setextHeading","footnote","inlineTokenizers","autoLink","strong","emphasis","deletion","break","blockMethods","inlineMethods","tokenizeBlock","tokenizeInline","tokenizeFactory","offsetToPositionFactory","indices","positionToOffsetFactory","toPosition","entities","decoder","offsets","alphabetical","matched","valueLength","tokens","eat","updatePosition","onlyAtStart","notInList","notInBlock","notInLink","eof","subvalue","Position","indentation","getOffset","combined","validateEat","MERGEABLE_NODES","mergeable","escapes","removePosition","EXPRESSION_LINE_BREAKS","hard","soft","force","convert","subresult","toResult","typeFactory","anyFactory","matchesFactory","checks","convertAll","whitespace","silent","blankQueue","subvalueQueue","contentQueue","CODE_INDENT","lang","fenceCount","flag","exdentedContent","closing","exdentedClosing","rest","nextIndex","startIndex","prefixed","currentLine","indents","markerCount","getIndent","removeIndent","markers","ordered","currentMarker","prevEmpty","allLines","emptyLines","enterTop","exitBlockquote","isLoose","indented","interuptors","LIST_ORDERED_COMMONMARK_MARKERS","LIST_ORDERED_MARKERS","LIST_UNORDERED_MARKERS","TAB_SIZE","trail","loose","listItem","EXPRESSION_LOOSE_LIST_ITEM","EXPRESSION_TASK_ITEM","EXPRESSION_BULLET","EXPRESSION_PEDANTIC_BULLET","EXPRESSION_INITIAL_INDENT","task","pedanticListItem","normalListItem","$0","bullet","trimmedLines","$2","$3","$4","maximum","minIndent","SETEXT_MARKERS","sequence","sequences","footnoteDefinition","EXPRESSION_INITIAL_TAB","subqueue","C_BRACKET_OPEN","beforeURL","beforeTitle","isEnclosedURLCharacter","isUnclosedURLCharacter","alignments","alignment","hasDash","preamble","lineCount","lineIndex","pipeIndex","trimTrailingLines","locate","locator","MAILTO_LENGTH","hasAtCharacter","PROTOCOLS","PROTOCOLS_LENGTH","parenCount","nextCharacter","inlineHTML","EXPRESSION_HTML_LINK_OPEN","EXPRESSION_HTML_LINK_CLOSE","LINK_MARKERS","COMMONMARK_LINK_MARKERS","hasMarker","isImage","bracketed","intro","referenceType","asterisk","underscore","word","strikethrough","preceding","inlineCode","openingCount","found","tickQueue","hardBreak","visitWithParents","listNode","selfClosingRe","simpleTagRe","currentParent","selfClosing","getSelfClosing","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","toIndex","virtual","untangle","disallow","renderer","isReactFragment","nodeProps","getNodeProps","resolveChildren","childNode","isTagRenderer","sourcePosition","includeNodeIndex","parentChildCount","assignDefined","tight","unwrapParagraphs","language","inline","columnAlignment","isHeader","isBlock","defs","protocols","colon","SimpleRenderer","getCoreProps","linkReference","imageReference","tableHead","tableBody","tableRow","tableCell","textAlign","coreProps","checkbox","readOnly","virtualHtml","_createClass","defineProperties","Constructor","protoProps","staticProps","_classnames2","_react","_react2","_propTypes2","_resizeObserverPolyfill2","_defineProperty","constants","horizontal","reverseDirection","vertical","Slider","_Component","_classCallCheck","ReferenceError","_possibleConstructorReturn","handleFormat","handleUpdate","slider","capitalize","sliderPos","handlePos","grab","handleStart","onChangeStart","handleDrag","handleEnd","_e$target","onChangeComplete","handleKeyDown","_this$props","sliderValue","getPositionFromValue","_this$props2","percentage","getValueFromPosition","_this$props3","clamp","_this$props4","coordinateStyle","directionStyle","clientCoordinateStyle","_this$state","renderLabels","sl","subClass","superClass","_inherits","_this2","_props","handleLabel","coords","fillStyle","handleStyle","showTooltip","labelItems","labelKeys","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","labelPosition","labelStyle","onTouchStart","onTouchEnd","onTouchMove","onKeyDown","st","MapShim","getIndex","class_1","__entries__","_a","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","disconnect","_b","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","getBBox","getContentRect","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","ResizeObserver","SQRT1_2","robinsonRaw","Dispatch","factory","Color","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","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","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","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","hsl2rgb","channels","displayable","formatHsl","brighter","darker","__noselect","MozUserSelect","yesdrag","noclick"],"mappings":"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","file":"main.47e006a5.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 = \"47e006a524fd84f5886e\";\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(174)(__webpack_require__.s = 174);\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\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\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\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  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        before = _this.prepend ? _this.container.firstChild : _this.before;\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.prepend = options.prepend;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      this._insertTag(createStyleElement(this));\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (process.env.NODE_ENV !== 'production') {\n      var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n      if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n        // this would only cause problem in speedy mode\n        // but we don't want enabling speedy to affect the observable behavior\n        // so we report this error at all times\n        console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n      }\n      this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n    }\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-ms-input-placeholder|-moz-read-write|-moz-read-only){/.test(rule)) {\n          console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n\n    if (process.env.NODE_ENV !== 'production') {\n      this._alreadyInsertedOrderInsensitiveRule = false;\n    }\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","var e=\"-ms-\";var r=\"-moz-\";var a=\"-webkit-\";var c=\"comm\";var n=\"rule\";var t=\"decl\";var s=\"@page\";var u=\"@media\";var i=\"@import\";var f=\"@charset\";var o=\"@viewport\";var l=\"@supports\";var v=\"@document\";var h=\"@namespace\";var p=\"@keyframes\";var w=\"@font-face\";var b=\"@counter-style\";var $=\"@font-feature-values\";var k=Math.abs;var d=String.fromCharCode;function m(e,r){return(((r<<2^z(e,0))<<2^z(e,1))<<2^z(e,2))<<2^z(e,3)}function g(e){return e.trim()}function x(e,r){return(e=r.exec(e))?e[0]:e}function y(e,r,a){return e.replace(r,a)}function j(e,r){return e.indexOf(r)}function z(e,r){return e.charCodeAt(r)|0}function C(e,r,a){return e.slice(r,a)}function A(e){return e.length}function M(e){return e.length}function O(e,r){return r.push(e),e}function S(e,r){return e.map(r).join(\"\")}var q=1;var B=1;var D=0;var E=0;var F=0;var G=\"\";function H(e,r,a,c,n,t,s){return{value:e,root:r,parent:a,type:c,props:n,children:t,line:q,column:B,length:s,return:\"\"}}function I(e,r,a){return H(e,r.root,r.parent,a,r.props,r.children,0)}function J(){return F}function K(){F=E<D?z(G,E++):0;if(B++,F===10)B=1,q++;return F}function L(){return z(G,E)}function N(){return E}function P(e,r){return C(G,e,r)}function Q(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function R(e){return q=B=1,D=A(G=e),E=0,[]}function T(e){return G=\"\",e}function U(e){return g(P(E-1,Y(e===91?e+2:e===40?e+1:e)))}function V(e){return T(X(R(e)))}function W(e){while(F=L())if(F<33)K();else break;return Q(e)>2||Q(F)>3?\"\":\" \"}function X(e){while(K())switch(Q(F)){case 0:O(_(E-1),e);break;case 2:O(U(F),e);break;default:O(d(F),e)}return e}function Y(e){while(K())switch(F){case e:return E;case 34:case 39:return Y(e===34||e===39?e:F);case 40:if(e===41)Y(e);break;case 92:K();break}return E}function Z(e,r){while(K())if(e+F===47+10)break;else if(e+F===42+42&&L()===47)break;return\"/*\"+P(r,E-1)+\"*\"+d(e===47?e:K())}function _(e){while(!Q(L()))K();return P(e,E)}function ee(e){return T(re(\"\",null,null,null,[\"\"],e=R(e),0,[0],e))}function re(e,r,a,c,n,t,s,u,i){var f=0;var o=0;var l=s;var v=0;var h=0;var p=0;var w=1;var b=1;var $=1;var k=0;var m=\"\";var g=n;var x=t;var j=c;var z=m;while(b)switch(p=k,k=K()){case 34:case 39:case 91:case 40:z+=U(k);break;case 9:case 10:case 13:case 32:z+=W(p);break;case 47:switch(L()){case 42:case 47:O(ce(Z(K(),N()),r,a),i);break;default:z+=\"/\"}break;case 123*w:u[f++]=A(z)*$;case 125*w:case 59:case 0:switch(k){case 0:case 125:b=0;case 59+o:if(h>0)O(h>32?ne(z+\";\",c,a,l-1):ne(y(z,\" \",\"\")+\";\",c,a,l-2),i);break;case 59:z+=\";\";default:O(j=ae(z,r,a,f,o,n,u,m,g=[],x=[],l),t);if(k===123)if(o===0)re(z,r,j,j,g,t,l,u,x);else switch(v){case 100:case 109:case 115:re(e,j,j,c&&O(ae(e,j,j,0,0,n,u,m,n,g=[],l),x),n,x,l,u,c?g:x);break;default:re(z,j,j,j,[\"\"],x,l,u,x)}}f=o=h=0,w=$=1,m=z=\"\",l=s;break;case 58:l=1+A(z),h=p;default:switch(z+=d(k),k*w){case 38:$=o>0?1:(z+=\"\\f\",-1);break;case 44:u[f++]=(A(z)-1)*$,$=1;break;case 64:if(L()===45)z+=U(K());v=L(),o=A(m=z+=_(N())),k++;break;case 45:if(p===45&&A(z)==2)w=0}}return t}function ae(e,r,a,c,t,s,u,i,f,o,l){var v=t-1;var h=t===0?s:[\"\"];var p=M(h);for(var w=0,b=0,$=0;w<c;++w)for(var d=0,m=C(e,v+1,v=k(b=u[w])),x=e;d<p;++d)if(x=g(b>0?h[d]+\" \"+m:y(m,/&\\f/g,h[d])))f[$++]=x;return H(e,r,a,t===0?n:i,f,o,l)}function ce(e,r,a){return H(e,r,a,c,d(J()),C(e,2,-2),0)}function ne(e,r,a,c){return H(e,r,a,t,C(e,0,c),C(e,c+1,-1),c)}function te(c,n){switch(m(c,n)){case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return a+c+c;case 5349:case 4246:case 4810:case 6968:case 2756:return a+c+r+c+e+c+c;case 6828:case 4268:return a+c+e+c+c;case 6165:return a+c+e+\"flex-\"+c+c;case 5187:return a+c+y(c,/(\\w+).+(:[^]+)/,a+\"box-$1$2\"+e+\"flex-$1$2\")+c;case 5443:return a+c+e+\"flex-item-\"+y(c,/flex-|-self/,\"\")+c;case 4675:return a+c+e+\"flex-line-pack\"+y(c,/align-content|flex-|-self/,\"\")+c;case 5548:return a+c+e+y(c,\"shrink\",\"negative\")+c;case 5292:return a+c+e+y(c,\"basis\",\"preferred-size\")+c;case 6060:return a+\"box-\"+y(c,\"-grow\",\"\")+a+c+e+y(c,\"grow\",\"positive\")+c;case 4554:return a+y(c,/([^-])(transform)/g,\"$1\"+a+\"$2\")+c;case 6187:return y(y(y(c,/(zoom-|grab)/,a+\"$1\"),/(image-set)/,a+\"$1\"),c,\"\")+c;case 5495:case 3959:return y(c,/(image-set\\([^]*)/,a+\"$1\"+\"$`$1\");case 4968:return y(y(c,/(.+:)(flex-)?(.*)/,a+\"box-pack:$3\"+e+\"flex-pack:$3\"),/s.+-b[^;]+/,\"justify\")+a+c+c;case 4095:case 3583:case 4068:case 2532:return y(c,/(.+)-inline(.+)/,a+\"$1$2\")+c;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(A(c)-1-n>6)switch(z(c,n+1)){case 102:n=z(c,n+3);case 109:return y(c,/(.+:)(.+)-([^]+)/,\"$1\"+a+\"$2-$3\"+\"$1\"+r+(n==108?\"$3\":\"$2-$3\"))+c;case 115:return~j(c,\"stretch\")?te(y(c,\"stretch\",\"fill-available\"),n)+c:c}break;case 4949:if(z(c,n+1)!==115)break;case 6444:switch(z(c,A(c)-3-(~j(c,\"!important\")&&10))){case 107:case 111:return y(c,c,a+c)+c;case 101:return y(c,/(.+:)([^;!]+)(;|!.+)?/,\"$1\"+a+(z(c,14)===45?\"inline-\":\"\")+\"box$3\"+\"$1\"+a+\"$2$3\"+\"$1\"+e+\"$2box$3\")+c}break;case 5936:switch(z(c,n+11)){case 114:return a+c+e+y(c,/[svh]\\w+-[tblr]{2}/,\"tb\")+c;case 108:return a+c+e+y(c,/[svh]\\w+-[tblr]{2}/,\"tb-rl\")+c;case 45:return a+c+e+y(c,/[svh]\\w+-[tblr]{2}/,\"lr\")+c}return a+c+e+c+c}return c}function se(e,r){var a=\"\";var c=M(e);for(var n=0;n<c;n++)a+=r(e[n],n,e,r)||\"\";return a}function ue(e,r,a,s){switch(e.type){case i:case t:return e.return=e.return||e.value;case c:return\"\";case n:e.value=e.props.join(\",\")}return A(a=se(e.children,s))?e.return=e.value+\"{\"+a+\"}\":\"\"}function ie(e){var r=M(e);return function(a,c,n,t){var s=\"\";for(var u=0;u<r;u++)s+=e[u](a,c,n,t)||\"\";return s}}function fe(e){return function(r){if(!r.root)if(r=r.return)e(r)}}function oe(c,s,u,i){if(!c.return)switch(c.type){case t:c.return=te(c.value,c.length);break;case p:return se([I(y(c.value,\"@\",\"@\"+a),c,\"\")],i);case n:if(c.length)return S(c.props,(function(n){switch(x(n,/(::plac\\w+|:read-\\w+)/)){case\":read-only\":case\":read-write\":return se([I(y(n,/:(read-\\w+)/,\":\"+r+\"$1\"),c,\"\")],i);case\"::placeholder\":return se([I(y(n,/:(plac\\w+)/,\":\"+a+\"input-$1\"),c,\"\"),I(y(n,/:(plac\\w+)/,\":\"+r+\"$1\"),c,\"\"),I(y(n,/:(plac\\w+)/,e+\"input-$1\"),c,\"\")],i)}return\"\"}))}}function le(e){switch(e.type){case n:e.props=e.props.map((function(r){return S(V(r),(function(r,a,c){switch(z(r,0)){case 12:return C(r,1,A(r));case 0:case 40:case 43:case 62:case 126:return r;case 58:if(c[a+1]===\"global\")c[a+1]=\"\",c[a+2]=\"\\f\"+C(c[a+2],a=1,-1);case 32:return a===1?\"\":r;default:switch(a){case 0:e=r;return M(c)>1?\"\":r;case a=M(c)-1:case 2:return a===2?r+e+e:r+e;default:return r}}}))}))}}export{f as CHARSET,c as COMMENT,b as COUNTER_STYLE,t as DECLARATION,v as DOCUMENT,w as FONT_FACE,$ as FONT_FEATURE_VALUES,i as IMPORT,p as KEYFRAMES,u as MEDIA,r as MOZ,e as MS,h as NAMESPACE,s as PAGE,n as RULESET,l as SUPPORTS,o as VIEWPORT,a as WEBKIT,k as abs,R as alloc,O as append,N as caret,J as char,F as character,G as characters,z as charat,B as column,S as combine,ce as comment,Z as commenter,ee as compile,I as copy,T as dealloc,ne as declaration,U as delimit,Y as delimiter,d as from,m as hash,_ as identifier,j as indexof,D as length,q as line,x as match,ie as middleware,le as namespace,K as next,H as node,re as parse,L as peek,E as position,te as prefix,oe as prefixer,y as replace,ae as ruleset,fe as rulesheet,se as serialize,M as sizeof,P as slice,ue as stringify,A as strlen,C as substr,Q as token,V as tokenize,X as tokenizer,g as trim,W as whitespace};\n//# sourceMappingURL=stylis.mjs.map\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 { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, identifier, position, stringify, COMMENT, rulesheet, middleware, prefixer, serialize, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar last = function last(arr) {\n  return arr.length ? arr[arr.length - 1] : null;\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifier(position - 1);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // .length indicates if this rule contains pseudo or not\n  !element.length) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n  return !!element && element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n  return function (element, index, children) {\n    if (element.type !== 'rule') return;\n    var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n    if (unsafePseudoClasses && cache.compat !== true) {\n      var prevElement = index > 0 ? children[index - 1] : null;\n\n      if (prevElement && isIgnoringComment(last(prevElement.children))) {\n        return;\n      }\n\n      unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n        console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n      });\n    }\n  };\n};\n\nvar isImportRule = function isImportRule(element) {\n  return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n  for (var i = index - 1; i >= 0; i--) {\n    if (!isImportRule(children[i])) {\n      return true;\n    }\n  }\n\n  return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n  element.type = '';\n  element.value = '';\n  element[\"return\"] = '';\n  element.children = '';\n  element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n  if (!isImportRule(element)) {\n    return;\n  }\n\n  if (element.parent) {\n    console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n    nullifyElement(element);\n  } else if (isPrependedWithRegularRules(index, children)) {\n    console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n    nullifyElement(element);\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n  var key = options.key;\n\n  if (process.env.NODE_ENV !== 'production' && !key) {\n    throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n  }\n\n  if ( key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to\n\n    Array.prototype.forEach.call(ssrStyles, function (node) {\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call(document.querySelectorAll(\"style[data-emotion]\"), function (node) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      if (attrib[0] !== key) {\n        return;\n      } // $FlowFixMe\n\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  if (process.env.NODE_ENV !== 'production') {\n    omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n      get compat() {\n        return cache.compat;\n      }\n\n    }), incorrectImportAlarm);\n  }\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n      if (!element.root) {\n        if (element[\"return\"]) {\n          currentSheet.insert(element[\"return\"]);\n        } else if (element.value && element.type !== COMMENT) {\n          // insert empty rule in non-production environments\n          // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n          currentSheet.insert(element.value + \"{}\");\n        }\n      }\n    } : rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      currentSheet = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        currentSheet = {\n          insert: function insert(rule) {\n            sheet.insert(rule + serialized.map);\n          }\n        };\n      }\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\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.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(serialized === current ? \".\" + 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","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(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        throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n  return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with @emotion/babel-plugin.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i]);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","import { createContext, forwardRef, useContext, createElement } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\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' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\nvar useTheme = function useTheme() {\n  return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, {}, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = useContext(ThemeContext);\n    return /*#__PURE__*/createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\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/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type;\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-z0-9$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z0-9$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  return newProps;\n};\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var 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, undefined, typeof cssProp === 'function' || Array.isArray(cssProp) ? useContext(ThemeContext) : undefined);\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\n  return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, useLayoutEffect } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-4fbd89c5.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-4fbd89c5.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../isolated-hoist-non-react-statics-do-not-use-this-in-your-code/dist/emotion-react-isolated-hoist-non-react-statics-do-not-use-this-in-your-code.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.1.4\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.cjs.js\": \"./dist/emotion-react.browser.cjs.js\",\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"isolated-hoist-non-react-statics-do-not-use-this-in-your-code\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"mitchellhamilton <mitchell@mitchellhamilton.me>\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.7.2\",\n\t\t\"@emotion/cache\": \"^11.1.3\",\n\t\t\"@emotion/serialize\": \"^1.0.0\",\n\t\t\"@emotion/sheet\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.0.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.2.5\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\t\"@babel/core\": \"^7.0.0\",\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@babel/core\": {\n\t\t\toptional: true\n\t\t},\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@babel/core\": \"^7.7.2\",\n\t\t\"@emotion/css\": \"11.1.3\",\n\t\t\"@emotion/css-prettifier\": \"1.0.0\",\n\t\t\"@emotion/server\": \"11.0.0\",\n\t\t\"@emotion/styled\": \"11.0.0\",\n\t\t\"@types/react\": \"^16.9.11\",\n\t\tdtslint: \"^0.3.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/master/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./isolated-hoist-non-react-statics-do-not-use-this-in-your-code.js\"\n\t\t],\n\t\tumdName: \"emotionReact\"\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return 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; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n  var serialized = serializeStyles([styles], undefined, typeof styles === 'function' || Array.isArray(styles) ? useContext(ThemeContext) : undefined);\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = useRef();\n  useLayoutEffect(function () {\n    var key = cache.key + \"-global\";\n    var sheet = new StyleSheet({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = sheet;\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useLayoutEffect(function () {\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    var sheet = sheetRef.current;\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\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, cache.registered);\n\n    {\n      insertStyles(cache, serialized, false);\n    }\n\n    return cache.key + \"-\" + serialized.name;\n  };\n\n  var cx = function cx() {\n    if (hasRendered && process.env.NODE_ENV !== 'production') {\n      throw new Error('cx can only be used during render');\n    }\n\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return merge(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n\n  return ele;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727 for some reason Jest evaluates modules twice if some consuming module gets mocked with jest.mock\n\n  var isJest = typeof jest !== 'undefined';\n\n  if (isBrowser && !isJest) {\n    var globalContext = isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","/**\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","'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(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","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var 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}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","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    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - 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","export default function(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n","export default function(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\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","export default function noop() {}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n  return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node && delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n  if (touches == null) touches = sourceEvent().touches;\n\n  for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n    points[i] = point(node, touches[i]);\n  }\n\n  return points;\n}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\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","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n","/*!\n  Copyright (c) 2017 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) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.log = log;\nexports.isUndefined = exports.is = is;\nexports.merge = merge;\nexports.encode = encode;\nexports.decode = decode;\nexports.addEvent = addEvent;\nexports.broadcast = broadcast;\nexports.onPage = onPage;\nexports.triggerPage = triggerPage;\nexports.getValueFromCookie = getValueFromCookie;\nexports.getValueFromUrl = getValueFromUrl;\nexports.getValueFromJsVariable = getValueFromJsVariable;\nexports.sanitise = sanitise;\nexports.assignIfUndefined = assignIfUndefined;\nexports.whitelistProps = whitelistProps;\nObject.defineProperty(exports, \"guid\", {\n  enumerable: true,\n  get: function get() {\n    return _browserCuid.default;\n  }\n});\nexports.default = void 0;\n\nvar _settings = _interopRequireDefault(require(\"./core/settings\"));\n\nvar _browserCuid = _interopRequireDefault(require(\"../libs/browser-cuid\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Shared 'internal' scope.\n * @private\n */\n\n/**\n * CUID Generator\n */\n\n/**\n * Record of callbacks to call when a page is tracked.\n */\nvar page_callbacks = [];\n/**\n * Log messages to the browser console. Requires 'log' to be set on init.\n *\n * @param {*} List of objects to log\n * @return {undefined}\n */\n\nfunction log() {\n  if (_settings.default.get('developer') && window.console) {\n    for (var i = 0; i < arguments.length; i++) {\n      window.console.log(arguments[i]);\n    }\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 * @return {boolean} - The answer for if the variable is of type.\n */\n\n\nfunction is(variable, type) {\n  if (!type) {\n    type = 'undefined';\n  }\n\n  return typeof variable === type;\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 * @return {Object} The merged object.\n */\n\n\nfunction merge(target, options) {\n  if (!options) {\n    options = target;\n    target = {};\n  }\n\n  var name;\n  var src;\n  var copy;\n  /* jshint -W089 */\n\n  /* eslint guard-for-in: 0 */\n\n  for (name in options) {\n    src = target[name];\n    copy = options[name]; // Prevent never-ending loop\n\n    if (target === copy) {\n      continue;\n    } // Gets rid of missing values too\n\n\n    if (typeof copy !== 'undefined' && copy !== null) {\n      target[name] = src === Object(src) && !is(src, 'function') ? merge(src, copy) : copy;\n    }\n  }\n  /* jshint +W089 */\n\n  /* jslint forin:true */\n\n\n  return target;\n}\n/**\n * URL encode a string.\n * @param {string} str - The string to be encoded.\n *\n * @return {string} The encoded string.\n */\n\n\nfunction encode(str) {\n  if (window.encodeURIComponent) {\n    return window.encodeURIComponent(str);\n  } else {\n    return window.escape(str);\n  }\n}\n/**\n * URL decode a string.\n * @param {string} str - The string to be decoded.\n *\n * @return {string} The decoded string.\n */\n\n\nfunction decode(str) {\n  if (window.decodeURIComponent) {\n    return window.decodeURIComponent(str);\n  } else {\n    return window.unescape(str);\n  }\n}\n/*\n * Utility to add event listeners.\n *\n * @param {Element} element\n * @param {string} event\n * @param {Function} listener\n */\n\n\nfunction addEvent(element, event, listener) {\n  if (element.addEventListener) {\n    element.addEventListener(event, listener, false);\n  } else {\n    element.attachEvent('on' + event, listener);\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 */\n\n\nfunction broadcast(namespace, eventType, detail) {\n  detail = detail || {};\n\n  try {\n    window.dispatchEvent(new CustomEvent(namespace + '.' + eventType, {\n      detail: detail,\n      bubbles: true\n    }));\n  } catch (error) {}\n}\n/**\n * Listen for page tracking requests.\n *\n * @param {Function} cb - The callback to be called whenever a page is tracked.\n * @return {undefined}\n */\n\n\nfunction onPage(cb) {\n  if (is(cb, 'function')) {\n    page_callbacks.push(cb);\n  }\n}\n/**\n * Trigger the 'page' listeners.\n * @return {undefined}\n */\n\n\nfunction triggerPage() {\n  for (var i = 0; i < page_callbacks.length; i++) {\n    page_callbacks[i]();\n  }\n}\n/**\n * Get a value from document.cookie matching the first match of the regexp you supply\n * @param {RegExp} matcher - The Regex to match with\n * @return {String} - The vale from the cookie\n */\n\n\nfunction getValueFromCookie(matcher) {\n  return document.cookie.match(matcher) && RegExp.$1 !== '' && RegExp.$1 !== 'null' ? RegExp.$1 : null;\n}\n/**\n * Get a value from the url, used for uuid or querystring parameters\n * @param {RegExp} matcher - The Regex to match with\n * @return {String} - The value from the URL\n */\n\n\nfunction getValueFromUrl(matcher) {\n  return document.location.href.match(matcher) && RegExp.$1 !== '' ? RegExp.$1 : null;\n}\n/**\n * Get a value from a specified JavaScript variable.\n * @param {String} str - The name of variable, in dot syntax.\n * @return {String} The value from the JS variable.\n */\n\n\nfunction getValueFromJsVariable(str) {\n  if (typeof str !== 'string') {\n    return null;\n  }\n\n  var i;\n  var namespaces = str.split('.');\n  var test = window;\n\n  for (i = 0; i < namespaces.length; i = i + 1) {\n    if (typeof test[namespaces[i]] === 'undefined') {\n      return null;\n    }\n\n    test = test[namespaces[i]];\n  }\n\n  return test !== '' ? test : null;\n}\n/**\n * Whitelist props\n * @param {Object} props - An object whose props need to be whitelisted\n * @param {Array} list - A list for whitelisting\n * @return\n */\n\n\nfunction whitelistProps(props, list) {\n  return list.reduce((acc, propName) => Object.assign({}, acc, props[propName] ? {\n    [propName]: props[propName]\n  } : undefined), {});\n}\n/**\n * Trim strings\n * @param {String} str - The string to trim.\n * @return {String} The trimmed string.\n */\n\n\nfunction sanitise(str) {\n  return typeof str === 'string' ? str.trim() : str;\n}\n/**\n * Assign the subject value if the target properties are undefined\n * @param {Object} subject - assign the value\n * @param {Object} target - be assigned the value\n * @return\n */\n\n\nfunction assignIfUndefined(subject, target) {\n  for (var prop in subject) {\n    if (!target[prop]) {\n      target[prop] = subject[prop];\n    } else {\n      console.warn(\"You can't set a custom property called \".concat(prop));\n    }\n  }\n}\n/**\n * Utilities.\n * @alias utils\n */\n\n\nvar _default = {\n  log,\n  is,\n  isUndefined: is,\n  merge,\n  encode,\n  decode,\n  guid: _browserCuid.default,\n  addEvent,\n  broadcast,\n  onPage,\n  triggerPage,\n  getValueFromCookie,\n  getValueFromUrl,\n  getValueFromJsVariable,\n  sanitise,\n  assignIfUndefined,\n  whitelistProps\n};\nexports.default = _default;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","'use strict'\n\nmodule.exports = whitespace\n\nvar fromCode = String.fromCharCode\nvar re = /\\s/\n\n// Check if the given character code, or the character code at the first\n// character, is a whitespace character.\nfunction whitespace(character) {\n  return re.test(\n    typeof character === 'number' ? fromCode(character) : character.charAt(0)\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","/**\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","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"d3-geo\"),require(\"topojson-client\"),require(\"d3-zoom\"),require(\"d3-selection\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"d3-geo\",\"topojson-client\",\"d3-zoom\",\"d3-selection\"],t):t((e=e||self).reactSimpleMaps=e.reactSimpleMaps||{},e.React,e.PropTypes,e.d3,e.topojson,e.d3,e.d3)}(this,function(e,t,o,n,r,a,s){\"use strict\";var i=\"default\"in t?t.default:t;o=o&&o.hasOwnProperty(\"default\")?o.default:o;var c=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},u=function(e,t){var o={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(o[n]=e[n]);return o},l=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var o=[],n=!0,r=!1,a=void 0;try{for(var s,i=e[Symbol.iterator]();!(n=(s=i.next()).done)&&(o.push(s.value),!t||o.length!==t);n=!0);}catch(e){r=!0,a=e}finally{try{!n&&i.return&&i.return()}finally{if(r)throw a}}return o}(e,t);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")},f=n.geoPath,p=u(n,[\"geoPath\"]),d=t.createContext(),m=function(e){var o=e.width,n=e.height,r=e.projection,a=e.projectionConfig,s=u(e,[\"width\",\"height\",\"projection\",\"projectionConfig\"]),m=a.center||[],v=l(m,2),h=v[0],g=v[1],y=a.rotate||[],M=l(y,3),E=M[0],j=M[1],x=M[2],k=a.parallels||[],b=l(k,2),N=b[0],w=b[1],C=a.scale||null,S=t.useMemo(function(){return function(e){var t=e.projectionConfig,o=void 0===t?{}:t,n=e.projection,r=void 0===n?\"geoEqualEarth\":n,a=e.width,s=void 0===a?800:a,i=e.height,c=void 0===i?600:i;if(\"function\"==typeof r)return r;var u=p[r]().translate([s/2,c/2]);return[u.center?\"center\":null,u.rotate?\"rotate\":null,u.scale?\"scale\":null,u.parallels?\"parallels\":null].forEach(function(e){e&&(u=u[e](o[e]||u[e]()))}),u}({projectionConfig:{center:h||0===h||g||0===g?[h,g]:null,rotate:E||0===E||j||0===j?[E,j,x]:null,parallels:N||0===N||w||0===w?[N,w]:null,scale:C},projection:r,width:o,height:n})},[o,n,r,h,g,E,j,x,N,w,C]),T=t.useCallback(S,[S]),O=t.useMemo(function(){return{width:o,height:n,projection:T,path:f().projection(T)}},[o,n,T]);return i.createElement(d.Provider,c({value:O},s))};m.propTypes={width:o.number,height:o.number,projection:o.oneOfType([o.string,o.func]),projectionConfig:o.object};var v=function(e){var t=e.width,o=void 0===t?800:t,n=e.height,r=void 0===n?600:n,a=e.projection,s=void 0===a?\"geoEqualEarth\":a,l=e.projectionConfig,f=void 0===l?{}:l,p=e.className,d=void 0===p?\"\":p,v=u(e,[\"width\",\"height\",\"projection\",\"projectionConfig\",\"className\"]);return i.createElement(m,{width:o,height:r,projection:s,projectionConfig:f},i.createElement(\"svg\",c({viewBox:\"0 0 \"+o+\" \"+r,className:\"rsm-svg \"+d},v)))};function h(e,t,o){var n=(e*o.k-e)/2,r=(t*o.k-t)/2;return[e/2-(n+o.x)/o.k,t/2-(r+o.y)/o.k]}function g(e,t){if(Array.isArray(e))return t?t(e):e;var o=r.feature(e,e.objects[Object.keys(e.objects)[0]]).features;return t?t(o):o}function y(e){var o=e.geography,n=e.parseGeographies,r=t.useContext(d).path,a=t.useState(),s=l(a,2),i=s[0],u=s[1];return t.useEffect(function(){var e;\"undefined\"!=typeof window&&(\"string\"==typeof o?(e=o,fetch(e).then(function(e){if(!e.ok)throw Error(e.statusText);return e.json()}).catch(function(e){console.log(\"There was a problem when fetching the data: \",e)})).then(function(e){e&&u(g(e,n))}):u(g(o,n)))},[o,n]),{geographies:t.useMemo(function(){return function(e,t){return e?e.map(function(e,o){return c({},e,{rsmKey:\"geo-\"+o,svgPath:t(e)})}):[]}(i,r)},[i,r])}}v.propTypes={width:o.number,height:o.number,projection:o.oneOfType([o.string,o.func]),projectionConfig:o.object,className:o.string};var M=function(e){var o=e.geography,n=e.children,r=e.parseGeographies,a=e.className,s=void 0===a?\"\":a,l=u(e,[\"geography\",\"children\",\"parseGeographies\",\"className\"]),f=t.useContext(d),p=f.path,m=f.projection,v=y({geography:o,parseGeographies:r}).geographies;return i.createElement(\"g\",c({className:\"rsm-geographies \"+s},l),v&&v.length>0&&n({geographies:v,path:p,projection:m}))};M.propTypes={geography:o.oneOfType([o.string,o.object,o.array]),children:o.func,parseGeographies:o.func,className:o.string};var E=function(e){var o=e.geography,n=e.onMouseEnter,r=e.onMouseLeave,a=e.onMouseDown,s=e.onMouseUp,f=e.onFocus,p=e.onBlur,d=e.style,m=void 0===d?{}:d,v=e.className,h=void 0===v?\"\":v,g=u(e,[\"geography\",\"onMouseEnter\",\"onMouseLeave\",\"onMouseDown\",\"onMouseUp\",\"onFocus\",\"onBlur\",\"style\",\"className\"]),y=t.useState(!1),M=l(y,2),E=M[0],j=M[1],x=t.useState(!1),k=l(x,2),b=k[0],N=k[1];return i.createElement(\"path\",c({tabIndex:\"0\",className:\"rsm-geography \"+h,d:o.svgPath,onMouseEnter:function(e){N(!0),n&&n(e)},onMouseLeave:function(e){N(!1),E&&j(!1),r&&r(e)},onFocus:function(e){N(!0),f&&f(e)},onBlur:function(e){N(!1),E&&j(!1),p&&p(e)},onMouseDown:function(e){j(!0),a&&a(e)},onMouseUp:function(e){j(!1),s&&s(e)},style:m[E||b?E?\"pressed\":\"hover\":\"default\"]},g))};E.propTypes={geography:o.object,onMouseEnter:o.func,onMouseLeave:o.func,onMouseDown:o.func,onMouseUp:o.func,onFocus:o.func,onBlur:o.func,style:o.object,className:o.string};var j=t.memo(E),x=function(e){var o=e.fill,r=void 0===o?\"transparent\":o,a=e.stroke,s=void 0===a?\"currentcolor\":a,l=e.step,f=void 0===l?[10,10]:l,p=e.className,m=void 0===p?\"\":p,v=u(e,[\"fill\",\"stroke\",\"step\",\"className\"]),h=t.useContext(d).path;return i.createElement(\"path\",c({d:h(n.geoGraticule().step(f)()),fill:r,stroke:s,className:\"rsm-graticule \"+m},v))};x.propTypes={fill:o.string,stroke:o.string,step:o.array,className:o.string};var k=t.memo(x);function b(e){var o=e.center,n=e.filterZoomEvent,r=e.onMoveStart,i=e.onMoveEnd,c=e.onMove,u=e.translateExtent,f=void 0===u?[[-1/0,-1/0],[1/0,1/0]]:u,p=e.scaleExtent,m=void 0===p?[1,8]:p,v=e.zoom,g=void 0===v?1:v,y=t.useContext(d),M=y.width,E=y.height,j=y.projection,x=l(o,2),k=x[0],b=x[1],N=t.useState({x:0,y:0,k:1}),w=l(N,2),C=w[0],S=w[1],T=t.useRef({x:0,y:0,k:1}),O=t.useRef(),P=t.useRef(),z=t.useRef(!1),Z=l(f,2),G=Z[0],L=Z[1],B=l(G,2),F=B[0],q=B[1],D=l(L,2),U=D[0],W=D[1],A=l(m,2),R=A[0],I=A[1];return t.useEffect(function(){var e=s.select(O.current);var t=a.zoom().filter(function(){return n?n(s.event):!!s.event&&!s.event.ctrlKey&&!s.event.button}).scaleExtent([R,I]).translateExtent([[F,F],[U,W]]).on(\"start\",function(){r&&!z.current&&r({coordinates:j.invert(h(M,E,s.event.transform)),zoom:s.event.transform.k},s.event)}).on(\"zoom\",function(){if(!z.current){var e=s.event.transform,t=s.event.sourceEvent;S({x:e.x,y:e.y,k:e.k,dragging:t}),c&&c({x:e.x,y:e.y,k:e.k,dragging:t},s.event)}}).on(\"end\",function(){if(z.current)z.current=!1;else{var e=j.invert(h(M,E,s.event.transform)),t=l(e,2),o=t[0],n=t[1];T.current={x:o,y:n,k:s.event.transform.k},i&&i({coordinates:[o,n],zoom:s.event.transform.k},s.event)}});P.current=t,e.call(t)},[M,E,F,q,U,W,R,I,j,r,c,i,n]),t.useEffect(function(){if(k!==T.current.x||b!==T.current.y||g!==T.current.k){var e=j([k,b]),t=e[0]*g,o=e[1]*g,n=s.select(O.current);z.current=!0,n.call(P.current.transform,a.zoomIdentity.translate(M/2-t,E/2-o).scale(g)),S({x:M/2-t,y:E/2-o,k:g}),T.current={x:k,y:b,k:g}}},[k,b,g,M,E,j]),{mapRef:O,position:C,transformString:\"translate(\"+C.x+\" \"+C.y+\") scale(\"+C.k+\")\"}}var N=function(e){var o=e.center,n=void 0===o?[0,0]:o,r=e.zoom,a=void 0===r?1:r,s=e.minZoom,l=void 0===s?1:s,f=e.maxZoom,p=void 0===f?8:f,m=e.translateExtent,v=e.filterZoomEvent,h=e.onMoveStart,g=e.onMove,y=e.onMoveEnd,M=e.className,E=u(e,[\"center\",\"zoom\",\"minZoom\",\"maxZoom\",\"translateExtent\",\"filterZoomEvent\",\"onMoveStart\",\"onMove\",\"onMoveEnd\",\"className\"]),j=t.useContext(d),x=j.width,k=j.height,N=b({center:n,filterZoomEvent:v,onMoveStart:h,onMove:g,onMoveEnd:y,scaleExtent:[l,p],translateExtent:m,zoom:a}),w=N.mapRef,C=N.transformString;return i.createElement(\"g\",{ref:w},i.createElement(\"rect\",{width:x,height:k,fill:\"transparent\"}),i.createElement(\"g\",c({transform:C,className:\"rsm-zoomable-group \"+M},E)))};N.propTypes={center:o.array,zoom:o.number,minZoom:o.number,maxZoom:o.number,translateExtent:o.arrayOf(o.array),onMoveStart:o.func,onMove:o.func,onMoveEnd:o.func,className:o.string};var w=function(e){var o=e.id,n=void 0===o?\"rsm-sphere\":o,r=e.fill,a=void 0===r?\"transparent\":r,s=e.stroke,l=void 0===s?\"currentcolor\":s,f=e.strokeWidth,p=void 0===f?.5:f,m=e.className,v=void 0===m?\"\":m,h=u(e,[\"id\",\"fill\",\"stroke\",\"strokeWidth\",\"className\"]),g=t.useContext(d).path,y=t.useMemo(function(){return g({type:\"Sphere\"})},[g]);return i.createElement(t.Fragment,null,i.createElement(\"defs\",null,i.createElement(\"clipPath\",{id:n},i.createElement(\"path\",{d:y}))),i.createElement(\"path\",c({d:y,fill:a,stroke:l,strokeWidth:p,style:{pointerEvents:\"none\"},className:\"rsm-sphere \"+v},h)))};w.propTypes={id:o.string,fill:o.string,stroke:o.string,strokeWidth:o.number,className:o.string};var C=t.memo(w),S=function(e){var o=e.coordinates,n=e.children,r=e.onMouseEnter,a=e.onMouseLeave,s=e.onMouseDown,f=e.onMouseUp,p=e.onFocus,m=e.onBlur,v=e.style,h=void 0===v?{}:v,g=e.className,y=void 0===g?\"\":g,M=u(e,[\"coordinates\",\"children\",\"onMouseEnter\",\"onMouseLeave\",\"onMouseDown\",\"onMouseUp\",\"onFocus\",\"onBlur\",\"style\",\"className\"]),E=t.useContext(d).projection,j=t.useState(!1),x=l(j,2),k=x[0],b=x[1],N=t.useState(!1),w=l(N,2),C=w[0],S=w[1],T=E(o),O=l(T,2),P=O[0],z=O[1];return i.createElement(\"g\",c({transform:\"translate(\"+P+\", \"+z+\")\",className:\"rsm-marker \"+y,onMouseEnter:function(e){S(!0),r&&r(e)},onMouseLeave:function(e){S(!1),k&&b(!1),a&&a(e)},onFocus:function(e){S(!0),p&&p(e)},onBlur:function(e){S(!1),k&&b(!1),m&&m(e)},onMouseDown:function(e){b(!0),s&&s(e)},onMouseUp:function(e){b(!1),f&&f(e)},style:h[k||C?k?\"pressed\":\"hover\":\"default\"]},M),n)};S.propTypes={coordinates:o.array,children:o.oneOfType([o.node,o.arrayOf(o.node)]),onMouseEnter:o.func,onMouseLeave:o.func,onMouseDown:o.func,onMouseUp:o.func,onFocus:o.func,onBlur:o.func,style:o.object,className:o.string};var T=function(e){var o=e.from,n=void 0===o?[0,0]:o,r=e.to,a=void 0===r?[0,0]:r,s=e.coordinates,l=e.stroke,f=void 0===l?\"currentcolor\":l,p=e.strokeWidth,m=void 0===p?3:p,v=e.fill,h=void 0===v?\"transparent\":v,g=e.className,y=void 0===g?\"\":g,M=u(e,[\"from\",\"to\",\"coordinates\",\"stroke\",\"strokeWidth\",\"fill\",\"className\"]),E=t.useContext(d).path,j={type:\"LineString\",coordinates:s||[n,a]};return i.createElement(\"path\",c({d:E(j),className:\"rsm-line \"+y,stroke:f,strokeWidth:m,fill:h},M))};T.propTypes={from:o.array,to:o.array,coordinates:o.array,stroke:o.string,strokeWidth:o.number,fill:o.string,className:o.string};var O=function(e){var o=e.subject,n=e.children,r=e.connectorProps,a=e.dx,s=void 0===a?30:a,f=e.dy,p=void 0===f?30:f,m=e.curve,v=void 0===m?0:m,h=e.className,g=void 0===h?\"\":h,y=u(e,[\"subject\",\"children\",\"connectorProps\",\"dx\",\"dy\",\"curve\",\"className\"]),M=(0,t.useContext(d).projection)(o),E=l(M,2),j=E[0],x=E[1],k=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:30,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.5,n=Array.isArray(o)?o:[o,o];return\"M0,0 Q\"+(-e/2-e/2*n[0])+\",\"+(-t/2+t/2*n[1])+\" \"+-e+\",\"+-t}(s,p,v);return i.createElement(\"g\",c({transform:\"translate(\"+(j+s)+\", \"+(x+p)+\")\",className:\"rsm-annotation \"+g},y),i.createElement(\"path\",c({d:k,fill:\"transparent\",stroke:\"#000\"},r)),n)};O.propTypes={subject:o.array,children:o.oneOfType([o.node,o.arrayOf(o.node)]),dx:o.number,dy:o.number,curve:o.number,connectorProps:o.object,className:o.string},e.Annotation=O,e.ComposableMap=v,e.Geographies=M,e.Geography=j,e.Graticule=k,e.Line=T,e.Marker=S,e.Sphere=C,e.ZoomableGroup=N,e.useGeographies=y,e.useZoomPan=b,Object.defineProperty(e,\"__esModule\",{value:!0})});\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","/**\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","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nexport default function(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  var size = 0;\n  this.each(function() { ++size; });\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.extend = extend;\nexports.inSample = inSample;\nexports.default = exports.getVersion = exports.cookie = exports.buildObjectFromArray = exports.iframeToSlotName = exports.getTimestamp = exports.getQueryParamByName = exports.getQueryString = exports.getLocation = exports.parseAttributeName = exports.dehyphenise = exports.getReferrer = exports.attach = exports.hash = exports.isElement = exports.isNonEmptyString = exports.isPlainObject = exports.isWindow = exports.isObject = exports.isStorage = exports.isFunction = exports.isString = exports.isArray = void 0;\n\nvar _events = require(\"./events.js\");\n\nvar _metrics = require(\"./metrics.js\");\n\nvar _messenger = _interopRequireDefault(require(\"./messenger.js\"));\n\nvar _responsive = _interopRequireWildcard(require(\"./responsive.js\"));\n\nvar _log = _interopRequireWildcard(require(\"./log.js\"));\n\nvar _version = _interopRequireDefault(require(\"../version.js\"));\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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Utility methods for the advertising library.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\nvar hop = Object.prototype.hasOwnProperty;\n_responsive.default.getCurrent = _responsive.getCurrent;\n_log.default.start = _log.start;\n_log.default.end = _log.end;\n_log.default.isOn = _log.isOn;\n_log.default.info = _log.info;\n_log.default.warn = _log.warn;\n_log.default.error = _log.error;\n_log.default.table = _log.table;\n_log.default.attributeTable = _log.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  var 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\nvar isArray = function isArray(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\n\nexports.isArray = isArray;\n\nvar isString = function isString(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\n\nexports.isString = isString;\n\nvar isFunction = function isFunction(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\n\nexports.isFunction = isFunction;\n\nvar isStorage = function isStorage(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\n\nexports.isStorage = isStorage;\n\nvar isObject = function isObject(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\n\nexports.isObject = isObject;\n\nvar isWindow = function isWindow(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\n\nexports.isWindow = isWindow;\n\nvar isPlainObject = function isPlainObject(obj) {\n  var 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  var 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\n\nexports.isPlainObject = isPlainObject;\n\nvar isNonEmptyString = function isNonEmptyString(str) {\n  return isString(str) && Boolean(str.length);\n};\n\nexports.isNonEmptyString = isNonEmptyString;\n\nvar isElement = function isElement(element) {\n  return element && element.nodeType === 1 && element.tagName || false;\n};\n\nexports.isElement = isElement;\n\nfunction extend() {\n  /* jshint forin: false */\n\n  /* when doing a deep copy we want to copy prototype properties */\n  var options;\n  var src;\n  var copy;\n  var copyIsArray;\n  var clone;\n  var target = arguments[0] || {};\n  var length = arguments.length;\n  var deep = false;\n  var 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 (var 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\n\nvar hash = function hash(str, delimiter, pairing) {\n  var pair;\n  var value;\n  var hashObj = {};\n\n  if (str && str.split) {\n    str = str.split(delimiter);\n\n    for (var 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\n\nexports.hash = hash;\n\nvar attach = function attach(scriptUrl, async, callback, errorcb, autoRemove) {\n  var tag = document.createElement('script');\n  var node = document.getElementsByTagName('script')[0];\n  var 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\n\nexports.attach = attach;\n\nvar getReferrer = function getReferrer() {\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\n\nexports.getReferrer = getReferrer;\n\nvar dehyphenise = function dehyphenise(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\n\nexports.dehyphenise = dehyphenise;\n\nvar parseAttributeName = function parseAttributeName(attribute) {\n  var 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\n\nexports.parseAttributeName = parseAttributeName;\n\nvar getLocation = function getLocation() {\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\n\nexports.getLocation = getLocation;\n\nvar getQueryString = function getQueryString() {\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\n\nexports.getQueryString = getQueryString;\n\nvar getQueryParamByName = function getQueryParamByName(name, url) {\n  url = url || window.location.href;\n  name = name.replace(/[[\\]]/g, '\\\\$&');\n  var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');\n  var 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\n\nexports.getQueryParamByName = getQueryParamByName;\n\nvar getTimestamp = function getTimestamp() {\n  var now = new Date();\n  return [now.getFullYear(), \"0\".concat(now.getMonth() + 1).slice(-2), \"0\".concat(now.getDate()).slice(-2), \"0\".concat(now.getHours()).slice(-2), \"0\".concat(now.getMinutes()).slice(-2), \"0\".concat(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\n\nexports.getTimestamp = getTimestamp;\n\nvar iframeToSlotName = function iframeToSlotName(iframeWindow) {\n  // capture all iframes in the page in a live node list\n  var iframes = document.getElementsByTagName('iframe');\n  var slotName;\n  var node;\n  var 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};\n\nexports.iframeToSlotName = iframeToSlotName;\n\nvar buildObjectFromArray = function buildObjectFromArray(targetObject) {\n  return targetObject.reduce((prev, data) => {\n    prev[data.key] = data.value;\n    return prev;\n  }, {});\n};\n\nexports.buildObjectFromArray = buildObjectFromArray;\n\nvar cookie = function cookie(name) {\n  var val = document.cookie.match(\"(^|;)\\\\s*\".concat(name, \"\\\\s*=\\\\s*([^;]+)\"));\n  return val ? val.pop() : null;\n};\n\nexports.cookie = cookie;\n\nvar getVersion = () => _version.default || 'UNKNOWN';\n\nexports.getVersion = getVersion;\nvar metricsSampleThreshold = Math.random();\n\nfunction inSample(sampleSize) {\n  return typeof sampleSize === 'undefined' || sampleSize > metricsSampleThreshold;\n}\n\nvar _default = {\n  on: _events.on,\n  off: _events.off,\n  once: _events.once,\n  broadcast: _events.broadcast,\n  messenger: _messenger.default,\n  responsive: _responsive.default,\n  log: _log.default,\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: _metrics.setupMetrics,\n  clearPerfMarks: _metrics.clearPerfMarks,\n  markPageChange: _metrics.markPageChange,\n  inSample,\n  perfMark: _events.perfMark,\n  buildPerfmarkSuffix: _events.buildPerfmarkSuffix\n};\nexports.default = _default;","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","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(function(elapsed) {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n    cssRoot,\n    cssView,\n    svgNode;\n\nexport function parseCss(value) {\n  if (value === \"none\") return identity;\n  if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n  cssNode.style.transform = value;\n  value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n  cssRoot.removeChild(cssNode);\n  value = value.slice(7, -1).split(\",\");\n  return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      return defaultTiming.time = now(), defaultTiming;\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export var slice = Array.prototype.slice;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n  return function(target) {\n    return touch(target, event.touches, identifier);\n  };\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection) {\n    if (group.selection) {\n      group\n          .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n          .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start().brush().end();\n          });\n    }\n  };\n\n  brush.clear = function(group) {\n    brush.move(group, null);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function() {\n      if (this.starting) this.starting = false, this.emit(\"start\");\n      else this.emit(\"brush\");\n      return this;\n    },\n    brush: function() {\n      this.emit(\"brush\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function started() {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n        point0 = pointer(that),\n        point = point0,\n        emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      state.selection = selection = [\n        [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n        [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n      ];\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    nopropagation();\n    interrupt(that);\n    redraw.call(that);\n    emit.start();\n\n    function moved() {\n      var point1 = pointer(that);\n      if (shifting && !lockX && !lockY) {\n        if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n        else lockX = true;\n      }\n      point = point1;\n      moving = true;\n      noevent();\n      move();\n    }\n\n    function move() {\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n          else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n          if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n          else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n          if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush();\n      }\n    }\n\n    function ended() {\n      nopropagation();\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end();\n    }\n\n    function keydowned() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n\n    function keyupped() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move();\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n  }\n\n  function touchmoved() {\n    emitter(this, arguments).moved();\n  }\n\n  function touchended() {\n    emitter(this, arguments).ended();\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n  return function(a, b) {\n    return compare(\n      a.source.value + a.target.value,\n      b.source.value + b.target.value\n    );\n  };\n}\n\nexport default function() {\n  var padAngle = 0,\n      sortGroups = null,\n      sortSubgroups = null,\n      sortChords = null;\n\n  function chord(matrix) {\n    var n = matrix.length,\n        groupSums = [],\n        groupIndex = range(n),\n        subgroupIndex = [],\n        chords = [],\n        groups = chords.groups = new Array(n),\n        subgroups = new Array(n * n),\n        k,\n        x,\n        x0,\n        dx,\n        i,\n        j;\n\n    // Compute the sum.\n    k = 0, i = -1; while (++i < n) {\n      x = 0, j = -1; while (++j < n) {\n        x += matrix[i][j];\n      }\n      groupSums.push(x);\n      subgroupIndex.push(range(n));\n      k += x;\n    }\n\n    // Sort groups…\n    if (sortGroups) groupIndex.sort(function(a, b) {\n      return sortGroups(groupSums[a], groupSums[b]);\n    });\n\n    // Sort subgroups…\n    if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n      d.sort(function(a, b) {\n        return sortSubgroups(matrix[i][a], matrix[i][b]);\n      });\n    });\n\n    // Convert the sum to scaling factor for [0, 2pi].\n    // TODO Allow start and end angle to be specified?\n    // TODO Allow padding to be specified as percentage?\n    k = max(0, tau - padAngle * n) / k;\n    dx = k ? padAngle : tau / n;\n\n    // Compute the start and end angle for each group and subgroup.\n    // Note: Opera has a bug reordering object literal properties!\n    x = 0, i = -1; while (++i < n) {\n      x0 = x, j = -1; while (++j < n) {\n        var di = groupIndex[i],\n            dj = subgroupIndex[di][j],\n            v = matrix[di][dj],\n            a0 = x,\n            a1 = x += v * k;\n        subgroups[dj * n + di] = {\n          index: di,\n          subindex: dj,\n          startAngle: a0,\n          endAngle: a1,\n          value: v\n        };\n      }\n      groups[di] = {\n        index: di,\n        startAngle: x0,\n        endAngle: x,\n        value: groupSums[di]\n      };\n      x += dx;\n    }\n\n    // Generate chords for each (non-empty) subgroup-subgroup link.\n    i = -1; while (++i < n) {\n      j = i - 1; while (++j < n) {\n        var source = subgroups[j * n + i],\n            target = subgroups[i * n + j];\n        if (source.value || target.value) {\n          chords.push(source.value < target.value\n              ? {source: target, target: source}\n              : {source: source, target: target});\n        }\n      }\n    }\n\n    return sortChords ? chords.sort(sortChords) : chords;\n  }\n\n  chord.padAngle = function(_) {\n    return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n  };\n\n  chord.sortGroups = function(_) {\n    return arguments.length ? (sortGroups = _, chord) : sortGroups;\n  };\n\n  chord.sortSubgroups = function(_) {\n    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n  };\n\n  chord.sortChords = function(_) {\n    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n  };\n\n  return chord;\n}\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 var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n  constructor: Map,\n  has: function(key) {\n    return (prefix + key) in this;\n  },\n  get: function(key) {\n    return this[prefix + key];\n  },\n  set: function(key, value) {\n    this[prefix + key] = value;\n    return this;\n  },\n  remove: function(key) {\n    var property = prefix + key;\n    return property in this && delete this[property];\n  },\n  clear: function() {\n    for (var property in this) if (property[0] === prefix) delete this[property];\n  },\n  keys: function() {\n    var keys = [];\n    for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n    return keys;\n  },\n  values: function() {\n    var values = [];\n    for (var property in this) if (property[0] === prefix) values.push(this[property]);\n    return values;\n  },\n  entries: function() {\n    var entries = [];\n    for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n    return entries;\n  },\n  size: function() {\n    var size = 0;\n    for (var property in this) if (property[0] === prefix) ++size;\n    return size;\n  },\n  empty: function() {\n    for (var property in this) if (property[0] === prefix) return false;\n    return true;\n  },\n  each: function(f) {\n    for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n  }\n};\n\nfunction map(object, f) {\n  var map = new Map;\n\n  // Copy constructor.\n  if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n  // Index array by numeric index or specified key function.\n  else if (Array.isArray(object)) {\n    var i = -1,\n        n = object.length,\n        o;\n\n    if (f == null) while (++i < n) map.set(i, object[i]);\n    else while (++i < n) map.set(f(o = object[i], i, object), o);\n  }\n\n  // Convert object to map.\n  else if (object) for (var key in object) map.set(key, object[key]);\n\n  return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n  constructor: Set,\n  has: proto.has,\n  add: function(value) {\n    value += \"\";\n    this[prefix + value] = value;\n    return this;\n  },\n  remove: proto.remove,\n  clear: proto.clear,\n  values: proto.keys,\n  size: proto.size,\n  empty: proto.empty,\n  each: proto.each\n};\n\nfunction set(object, f) {\n  var set = new Set;\n\n  // Copy constructor.\n  if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n  // Otherwise, assume it’s an array.\n  else if (object) {\n    var i = -1, n = object.length;\n    if (f == null) while (++i < n) set.add(object[i]);\n    else while (++i < n) set.add(f(object[i], i, object));\n  }\n\n  return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(d) {\n  var x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\");\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.each(function (force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n","export default function() {\n  return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    return function() {\n      for (var sum = 0, i = 0; i < n; ++i) sum += source();\n      return sum;\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n  function randomLogNormal() {\n    var randomNormal = normal.source(source).apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n  function randomBates(n) {\n    var randomIrwinHall = irwinHall.source(source)(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log(1 - source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\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: this.interpolator(domain); break;\n    default: this.interpolator(interpolator).domain(domain); break;\n  }\n  return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\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","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 {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\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  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\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  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": formatDecimal,\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return 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","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\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 <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), 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","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\";\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 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","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","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, 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\";\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 {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 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 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\";\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\";\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","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n    durationMinute = durationSecond * 60,\n    durationHour = durationMinute * 60,\n    durationDay = durationHour * 24,\n    durationWeek = durationDay * 7,\n    durationMonth = durationDay * 30,\n    durationYear = durationDay * 365;\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(year, month, week, day, hour, minute, second, millisecond, format) {\n  var scale = continuous(identity, identity),\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  var 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 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  function tickInterval(interval, start, stop, step) {\n    if (interval == null) interval = 10;\n\n    // If a desired tick count is specified, pick a reasonable tick interval\n    // based on the extent of the domain and a rough estimate of tick size.\n    // Otherwise, assume interval is already a time interval and use it.\n    if (typeof interval === \"number\") {\n      var target = Math.abs(stop - start) / interval,\n          i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n      if (i === tickIntervals.length) {\n        step = tickStep(start / durationYear, stop / durationYear, interval);\n        interval = year;\n      } else if (i) {\n        i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n        step = i[1];\n        interval = i[0];\n      } else {\n        step = Math.max(tickStep(start, stop, interval), 1);\n        interval = millisecond;\n      }\n    }\n\n    return step == null ? interval : interval.every(step);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval, step) {\n    var d = domain(),\n        t0 = d[0],\n        t1 = d[d.length - 1],\n        r = t1 < t0,\n        t;\n    if (r) t = t0, t0 = t1, t1 = t;\n    t = tickInterval(interval, t0, t1, step);\n    t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n    return r ? t.reverse() : t;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval, step) {\n    var d = domain();\n    return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n        ? domain(nice(d, interval))\n        : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n  };\n\n  return scale;\n}\n\nexport default function() {\n  return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\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 {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 {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n","function RedBlackTree() {\n  this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n  node.U = // parent node\n  node.C = // color - true for red, false for black\n  node.L = // left node\n  node.R = // right node\n  node.P = // previous node\n  node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n  constructor: RedBlackTree,\n\n  insert: function(after, node) {\n    var parent, grandpa, uncle;\n\n    if (after) {\n      node.P = after;\n      node.N = after.N;\n      if (after.N) after.N.P = node;\n      after.N = node;\n      if (after.R) {\n        after = after.R;\n        while (after.L) after = after.L;\n        after.L = node;\n      } else {\n        after.R = node;\n      }\n      parent = after;\n    } else if (this._) {\n      after = RedBlackFirst(this._);\n      node.P = null;\n      node.N = after;\n      after.P = after.L = node;\n      parent = after;\n    } else {\n      node.P = node.N = null;\n      this._ = node;\n      parent = null;\n    }\n    node.L = node.R = null;\n    node.U = parent;\n    node.C = true;\n\n    after = node;\n    while (parent && parent.C) {\n      grandpa = parent.U;\n      if (parent === grandpa.L) {\n        uncle = grandpa.R;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.R) {\n            RedBlackRotateLeft(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateRight(this, grandpa);\n        }\n      } else {\n        uncle = grandpa.L;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.L) {\n            RedBlackRotateRight(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateLeft(this, grandpa);\n        }\n      }\n      parent = after.U;\n    }\n    this._.C = false;\n  },\n\n  remove: function(node) {\n    if (node.N) node.N.P = node.P;\n    if (node.P) node.P.N = node.N;\n    node.N = node.P = null;\n\n    var parent = node.U,\n        sibling,\n        left = node.L,\n        right = node.R,\n        next,\n        red;\n\n    if (!left) next = right;\n    else if (!right) next = left;\n    else next = RedBlackFirst(right);\n\n    if (parent) {\n      if (parent.L === node) parent.L = next;\n      else parent.R = next;\n    } else {\n      this._ = next;\n    }\n\n    if (left && right) {\n      red = next.C;\n      next.C = node.C;\n      next.L = left;\n      left.U = next;\n      if (next !== right) {\n        parent = next.U;\n        next.U = node.U;\n        node = next.R;\n        parent.L = node;\n        next.R = right;\n        right.U = next;\n      } else {\n        next.U = parent;\n        parent = next;\n        node = next.R;\n      }\n    } else {\n      red = node.C;\n      node = next;\n    }\n\n    if (node) node.U = parent;\n    if (red) return;\n    if (node && node.C) { node.C = false; return; }\n\n    do {\n      if (node === this._) break;\n      if (node === parent.L) {\n        sibling = parent.R;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateLeft(this, parent);\n          sibling = parent.R;\n        }\n        if ((sibling.L && sibling.L.C)\n            || (sibling.R && sibling.R.C)) {\n          if (!sibling.R || !sibling.R.C) {\n            sibling.L.C = false;\n            sibling.C = true;\n            RedBlackRotateRight(this, sibling);\n            sibling = parent.R;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.R.C = false;\n          RedBlackRotateLeft(this, parent);\n          node = this._;\n          break;\n        }\n      } else {\n        sibling = parent.L;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateRight(this, parent);\n          sibling = parent.L;\n        }\n        if ((sibling.L && sibling.L.C)\n          || (sibling.R && sibling.R.C)) {\n          if (!sibling.L || !sibling.L.C) {\n            sibling.R.C = false;\n            sibling.C = true;\n            RedBlackRotateLeft(this, sibling);\n            sibling = parent.L;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.L.C = false;\n          RedBlackRotateRight(this, parent);\n          node = this._;\n          break;\n        }\n      }\n      sibling.C = true;\n      node = parent;\n      parent = parent.U;\n    } while (!node.C);\n\n    if (node) node.C = false;\n  }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n  var p = node,\n      q = node.R,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.R = q.L;\n  if (p.R) p.R.U = p;\n  q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n  var p = node,\n      q = node.L,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.L = q.R;\n  if (p.L) p.L.U = p;\n  q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n  while (node.L) node = node.L;\n  return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n  var edge = [null, null],\n      index = edges.push(edge) - 1;\n  edge.left = left;\n  edge.right = right;\n  if (v0) setEdgeEnd(edge, left, right, v0);\n  if (v1) setEdgeEnd(edge, right, left, v1);\n  cells[left.index].halfedges.push(index);\n  cells[right.index].halfedges.push(index);\n  return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n  var edge = [v0, v1];\n  edge.left = left;\n  return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n  if (!edge[0] && !edge[1]) {\n    edge[0] = vertex;\n    edge.left = left;\n    edge.right = right;\n  } else if (edge.left === right) {\n    edge[1] = vertex;\n  } else {\n    edge[0] = vertex;\n  }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n  var a = edge[0],\n      b = edge[1],\n      ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n  return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n  var v1 = edge[1];\n  if (v1) return true;\n\n  var v0 = edge[0],\n      left = edge.left,\n      right = edge.right,\n      lx = left[0],\n      ly = left[1],\n      rx = right[0],\n      ry = right[1],\n      fx = (lx + rx) / 2,\n      fy = (ly + ry) / 2,\n      fm,\n      fb;\n\n  if (ry === ly) {\n    if (fx < x0 || fx >= x1) return;\n    if (lx > rx) {\n      if (!v0) v0 = [fx, y0];\n      else if (v0[1] >= y1) return;\n      v1 = [fx, y1];\n    } else {\n      if (!v0) v0 = [fx, y1];\n      else if (v0[1] < y0) return;\n      v1 = [fx, y0];\n    }\n  } else {\n    fm = (lx - rx) / (ry - ly);\n    fb = fy - fm * fx;\n    if (fm < -1 || fm > 1) {\n      if (lx > rx) {\n        if (!v0) v0 = [(y0 - fb) / fm, y0];\n        else if (v0[1] >= y1) return;\n        v1 = [(y1 - fb) / fm, y1];\n      } else {\n        if (!v0) v0 = [(y1 - fb) / fm, y1];\n        else if (v0[1] < y0) return;\n        v1 = [(y0 - fb) / fm, y0];\n      }\n    } else {\n      if (ly < ry) {\n        if (!v0) v0 = [x0, fm * x0 + fb];\n        else if (v0[0] >= x1) return;\n        v1 = [x1, fm * x1 + fb];\n      } else {\n        if (!v0) v0 = [x1, fm * x1 + fb];\n        else if (v0[0] < x0) return;\n        v1 = [x0, fm * x0 + fb];\n      }\n    }\n  }\n\n  edge[0] = v0;\n  edge[1] = v1;\n  return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n  var i = edges.length,\n      edge;\n\n  while (i--) {\n    if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n        || !clipEdge(edge, x0, y0, x1, y1)\n        || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n            || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n      delete edges[i];\n    }\n  }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n  return cells[site.index] = {\n    site: site,\n    halfedges: []\n  };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n  var site = cell.site,\n      va = edge.left,\n      vb = edge.right;\n  if (site === vb) vb = va, va = site;\n  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n  if (site === va) va = edge[1], vb = edge[0];\n  else va = edge[0], vb = edge[1];\n  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n  return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n  return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n  for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n    if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n      var index = new Array(m),\n          array = new Array(m);\n      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n      index.sort(function(i, j) { return array[j] - array[i]; });\n      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n      for (j = 0; j < m; ++j) halfedges[j] = array[j];\n    }\n  }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n  var nCells = cells.length,\n      iCell,\n      cell,\n      site,\n      iHalfedge,\n      halfedges,\n      nHalfedges,\n      start,\n      startX,\n      startY,\n      end,\n      endX,\n      endY,\n      cover = true;\n\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      site = cell.site;\n      halfedges = cell.halfedges;\n      iHalfedge = halfedges.length;\n\n      // Remove any dangling clipped edges.\n      while (iHalfedge--) {\n        if (!edges[halfedges[iHalfedge]]) {\n          halfedges.splice(iHalfedge, 1);\n        }\n      }\n\n      // Insert any border edges as necessary.\n      iHalfedge = 0, nHalfedges = halfedges.length;\n      while (iHalfedge < nHalfedges) {\n        end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n        start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n        if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n          halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n              Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n              : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n              : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n              : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n              : null)) - 1);\n          ++nHalfedges;\n        }\n      }\n\n      if (nHalfedges) cover = false;\n    }\n  }\n\n  // If there weren’t any edges, have the closest site cover the extent.\n  // It doesn’t matter which corner of the extent we measure!\n  if (cover) {\n    var dx, dy, d2, dc = Infinity;\n\n    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n      if (cell = cells[iCell]) {\n        site = cell.site;\n        dx = site[0] - x0;\n        dy = site[1] - y0;\n        d2 = dx * dx + dy * dy;\n        if (d2 < dc) dc = d2, cover = cell;\n      }\n    }\n\n    if (cover) {\n      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n      cover.halfedges.push(\n        edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n        edges.push(createBorderEdge(site, v01, v11)) - 1,\n        edges.push(createBorderEdge(site, v11, v10)) - 1,\n        edges.push(createBorderEdge(site, v10, v00)) - 1\n      );\n    }\n  }\n\n  // Lastly delete any cells with no edges; these were entirely clipped.\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      if (!cell.halfedges.length) {\n        delete cells[iCell];\n      }\n    }\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n  RedBlackNode(this);\n  this.x =\n  this.y =\n  this.arc =\n  this.site =\n  this.cy = null;\n}\n\nexport function attachCircle(arc) {\n  var lArc = arc.P,\n      rArc = arc.N;\n\n  if (!lArc || !rArc) return;\n\n  var lSite = lArc.site,\n      cSite = arc.site,\n      rSite = rArc.site;\n\n  if (lSite === rSite) return;\n\n  var bx = cSite[0],\n      by = cSite[1],\n      ax = lSite[0] - bx,\n      ay = lSite[1] - by,\n      cx = rSite[0] - bx,\n      cy = rSite[1] - by;\n\n  var d = 2 * (ax * cy - ay * cx);\n  if (d >= -epsilon2) return;\n\n  var ha = ax * ax + ay * ay,\n      hc = cx * cx + cy * cy,\n      x = (cy * ha - ay * hc) / d,\n      y = (ax * hc - cx * ha) / d;\n\n  var circle = circlePool.pop() || new Circle;\n  circle.arc = arc;\n  circle.site = cSite;\n  circle.x = x + bx;\n  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n  arc.circle = circle;\n\n  var before = null,\n      node = circles._;\n\n  while (node) {\n    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n      if (node.L) node = node.L;\n      else { before = node.P; break; }\n    } else {\n      if (node.R) node = node.R;\n      else { before = node; break; }\n    }\n  }\n\n  circles.insert(before, circle);\n  if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n  var circle = arc.circle;\n  if (circle) {\n    if (!circle.P) firstCircle = circle.N;\n    circles.remove(circle);\n    circlePool.push(circle);\n    RedBlackNode(circle);\n    arc.circle = null;\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n  RedBlackNode(this);\n  this.edge =\n  this.site =\n  this.circle = null;\n}\n\nfunction createBeach(site) {\n  var beach = beachPool.pop() || new Beach;\n  beach.site = site;\n  return beach;\n}\n\nfunction detachBeach(beach) {\n  detachCircle(beach);\n  beaches.remove(beach);\n  beachPool.push(beach);\n  RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n  var circle = beach.circle,\n      x = circle.x,\n      y = circle.cy,\n      vertex = [x, y],\n      previous = beach.P,\n      next = beach.N,\n      disappearing = [beach];\n\n  detachBeach(beach);\n\n  var lArc = previous;\n  while (lArc.circle\n      && Math.abs(x - lArc.circle.x) < epsilon\n      && Math.abs(y - lArc.circle.cy) < epsilon) {\n    previous = lArc.P;\n    disappearing.unshift(lArc);\n    detachBeach(lArc);\n    lArc = previous;\n  }\n\n  disappearing.unshift(lArc);\n  detachCircle(lArc);\n\n  var rArc = next;\n  while (rArc.circle\n      && Math.abs(x - rArc.circle.x) < epsilon\n      && Math.abs(y - rArc.circle.cy) < epsilon) {\n    next = rArc.N;\n    disappearing.push(rArc);\n    detachBeach(rArc);\n    rArc = next;\n  }\n\n  disappearing.push(rArc);\n  detachCircle(rArc);\n\n  var nArcs = disappearing.length,\n      iArc;\n  for (iArc = 1; iArc < nArcs; ++iArc) {\n    rArc = disappearing[iArc];\n    lArc = disappearing[iArc - 1];\n    setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n  }\n\n  lArc = disappearing[0];\n  rArc = disappearing[nArcs - 1];\n  rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n  var x = site[0],\n      directrix = site[1],\n      lArc,\n      rArc,\n      dxl,\n      dxr,\n      node = beaches._;\n\n  while (node) {\n    dxl = leftBreakPoint(node, directrix) - x;\n    if (dxl > epsilon) node = node.L; else {\n      dxr = x - rightBreakPoint(node, directrix);\n      if (dxr > epsilon) {\n        if (!node.R) {\n          lArc = node;\n          break;\n        }\n        node = node.R;\n      } else {\n        if (dxl > -epsilon) {\n          lArc = node.P;\n          rArc = node;\n        } else if (dxr > -epsilon) {\n          lArc = node;\n          rArc = node.N;\n        } else {\n          lArc = rArc = node;\n        }\n        break;\n      }\n    }\n  }\n\n  createCell(site);\n  var newArc = createBeach(site);\n  beaches.insert(lArc, newArc);\n\n  if (!lArc && !rArc) return;\n\n  if (lArc === rArc) {\n    detachCircle(lArc);\n    rArc = createBeach(lArc.site);\n    beaches.insert(newArc, rArc);\n    newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n    attachCircle(lArc);\n    attachCircle(rArc);\n    return;\n  }\n\n  if (!rArc) { // && lArc\n    newArc.edge = createEdge(lArc.site, newArc.site);\n    return;\n  }\n\n  // else lArc !== rArc\n  detachCircle(lArc);\n  detachCircle(rArc);\n\n  var lSite = lArc.site,\n      ax = lSite[0],\n      ay = lSite[1],\n      bx = site[0] - ax,\n      by = site[1] - ay,\n      rSite = rArc.site,\n      cx = rSite[0] - ax,\n      cy = rSite[1] - ay,\n      d = 2 * (bx * cy - by * cx),\n      hb = bx * bx + by * by,\n      hc = cx * cx + cy * cy,\n      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n  setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n  newArc.edge = createEdge(lSite, site, null, vertex);\n  rArc.edge = createEdge(site, rSite, null, vertex);\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n  var site = arc.site,\n      rfocx = site[0],\n      rfocy = site[1],\n      pby2 = rfocy - directrix;\n\n  if (!pby2) return rfocx;\n\n  var lArc = arc.P;\n  if (!lArc) return -Infinity;\n\n  site = lArc.site;\n  var lfocx = site[0],\n      lfocy = site[1],\n      plby2 = lfocy - directrix;\n\n  if (!plby2) return lfocx;\n\n  var hl = lfocx - rfocx,\n      aby2 = 1 / pby2 - 1 / plby2,\n      b = hl / plby2;\n\n  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n  return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n  var rArc = arc.N;\n  if (rArc) return leftBreakPoint(rArc, directrix);\n  var site = arc.site;\n  return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n  return b[1] - a[1]\n      || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n  var site = sites.sort(lexicographic).pop(),\n      x,\n      y,\n      circle;\n\n  edges = [];\n  cells = new Array(sites.length);\n  beaches = new RedBlackTree;\n  circles = new RedBlackTree;\n\n  while (true) {\n    circle = firstCircle;\n    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n      if (site[0] !== x || site[1] !== y) {\n        addBeach(site);\n        x = site[0], y = site[1];\n      }\n      site = sites.pop();\n    } else if (circle) {\n      removeBeach(circle.arc);\n    } else {\n      break;\n    }\n  }\n\n  sortCellHalfedges();\n\n  if (extent) {\n    var x0 = +extent[0][0],\n        y0 = +extent[0][1],\n        x1 = +extent[1][0],\n        y1 = +extent[1][1];\n    clipEdges(x0, y0, x1, y1);\n    clipCells(x0, y0, x1, y1);\n  }\n\n  this.edges = edges;\n  this.cells = cells;\n\n  beaches =\n  circles =\n  edges =\n  cells = null;\n}\n\nDiagram.prototype = {\n  constructor: Diagram,\n\n  polygons: function() {\n    var edges = this.edges;\n\n    return this.cells.map(function(cell) {\n      var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n      polygon.data = cell.site.data;\n      return polygon;\n    });\n  },\n\n  triangles: function() {\n    var triangles = [],\n        edges = this.edges;\n\n    this.cells.forEach(function(cell, i) {\n      if (!(m = (halfedges = cell.halfedges).length)) return;\n      var site = cell.site,\n          halfedges,\n          j = -1,\n          m,\n          s0,\n          e1 = edges[halfedges[m - 1]],\n          s1 = e1.left === site ? e1.right : e1.left;\n\n      while (++j < m) {\n        s0 = s1;\n        e1 = edges[halfedges[j]];\n        s1 = e1.left === site ? e1.right : e1.left;\n        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n          triangles.push([site.data, s0.data, s1.data]);\n        }\n      }\n    });\n\n    return triangles;\n  },\n\n  links: function() {\n    return this.edges.filter(function(edge) {\n      return edge.right;\n    }).map(function(edge) {\n      return {\n        source: edge.left.data,\n        target: edge.right.data\n      };\n    });\n  },\n\n  find: function(x, y, radius) {\n    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n    // Use the previously-found cell, or start with an arbitrary one.\n    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n    // Traverse the half-edges to find a closer cell, if any.\n    do {\n      cell = that.cells[i0 = i1], i1 = null;\n      cell.halfedges.forEach(function(e) {\n        var edge = that.edges[e], v = edge.left;\n        if ((v === cell.site || !v) && !(v = edge.right)) return;\n        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n        if (v2 < d2) d2 = v2, i1 = v.index;\n      });\n    } while (i1 !== null);\n\n    that._found = i0;\n\n    return radius == null || d2 <= radius * radius ? cell.site : null;\n  }\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","export default function(node, event) {\n  var svg = node.ownerSVGElement || node;\n\n  if (svg.createSVGPoint) {\n    var point = svg.createSVGPoint();\n    point.x = event.clientX, point.y = event.clientY;\n    point = point.matrixTransform(node.getScreenCTM().inverse());\n    return [point.x, point.y];\n  }\n\n  var rect = node.getBoundingClientRect();\n  return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","export default function(x) {\n  return x;\n}\n","module.exports = require(\"regenerator-runtime\");\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!(\"onmouseenter\" in element)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = event; // Events can be reentrant (e.g., focus).\n    event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      event = event0;\n    }\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, capture) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n  var event0 = event;\n  event1.sourceEvent = event;\n  event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    event = event0;\n  }\n}\n","'use strict';\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 xtend = require('xtend');\nvar unified = require('unified');\nvar parse = require('remark-parse');\nvar PropTypes = require('prop-types');\nvar addListMetadata = require('mdast-add-list-metadata');\nvar naiveHtml = require('./plugins/naive-html');\nvar disallowNode = require('./plugins/disallow-node');\nvar astToReact = require('./ast-to-react');\nvar wrapTableRows = require('./wrap-table-rows');\nvar getDefinitions = require('./get-definitions');\nvar uriTransformer = require('./uriTransformer');\nvar defaultRenderers = require('./renderers');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\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\n  var plugins = [parse].concat(props.plugins || []);\n  var parser = plugins.reduce(applyParserPlugin, unified());\n\n  var rawAst = parser.parse(src);\n  var renderProps = xtend(props, {\n    renderers: renderers,\n    definitions: getDefinitions(rawAst)\n  });\n\n  var astPlugins = determineAstPlugins(props);\n  var ast = astPlugins.reduce(function (node, plugin) {\n    return plugin(node, renderProps);\n  }, rawAst);\n\n  return astToReact(ast, renderProps);\n};\n\nfunction applyParserPlugin(parser, plugin) {\n  return Array.isArray(plugin) ? parser.use.apply(parser, _toConsumableArray(plugin)) : parser.use(plugin);\n}\n\nfunction determineAstPlugins(props) {\n  var plugins = [wrapTableRows, addListMetadata()];\n\n  var disallowedTypes = props.disallowedTypes;\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  if (disallowedTypes && disallowedTypes.length > 0) {\n    plugins.push(disallowNode.ofType(disallowedTypes, removalMethod));\n  }\n\n  if (props.allowNode) {\n    plugins.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n  }\n\n  var renderHtml = !props.escapeHtml && !props.skipHtml;\n  if (renderHtml) {\n    plugins.push(naiveHtml);\n  }\n\n  return props.astPlugins ? plugins.concat(props.astPlugins) : plugins;\n}\n\nReactMarkdown.defaultProps = {\n  renderers: {},\n  escapeHtml: true,\n  skipHtml: false,\n  sourcePos: false,\n  rawSourcePos: false,\n  transformLinkUri: uriTransformer,\n  astPlugins: [],\n  plugins: []\n};\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  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};\n\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\n\nmodule.exports = ReactMarkdown;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.destroy = destroy;\nexports.get = exports.set = exports.default = void 0;\nvar settings = {};\n/**\n * Very basic implementation of deep clone, and only supports simple POJO objects and\n * native arrays.\n * @param  {*} value Any value\n * @return {*}       Copy of value\n * @private\n */\n\nfunction clone(value) {\n  if (value === undefined) {\n    return value;\n  }\n\n  switch (Object.prototype.toString.call(value)) {\n    case '[object Object]':\n      return JSON.parse(JSON.stringify(value));\n\n    case '[object Array]':\n      return [].slice.call(value);\n\n    default:\n      return value;\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 * @return {undefined}\n */\n\n\nfunction setValue(key, value) {\n  settings[key] = clone(value);\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 * @return {*} - The setting.\n */\n\n\nfunction getValue(key) {\n  return clone(settings[key]);\n}\n/**\n * Deletes a value\n *\n * @param  {string} key - The key to delete\n * @return {undefined}\n */\n\n\nfunction destroy(key) {\n  delete settings[key];\n}\n\nvar set = setValue;\nexports.set = set;\nvar get = getValue;\nexports.get = get;\nvar _default = {\n  set,\n  get,\n  destroy\n};\nexports.default = _default;","\nexports = module.exports = trim;\n\nfunction trim(str){\n  return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n  return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n  return str.replace(/\\s*$/, '');\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n  var current = event, source;\n  while (source = current.sourceEvent) current = source;\n  return current;\n}\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;","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.setRootID = setRootID;\nexports.getRootID = getRootID;\nexports.track = track;\nexports.default = void 0;\n\nvar _send = _interopRequireDefault(require(\"./core/send\"));\n\nvar _user = _interopRequireDefault(require(\"./core/user\"));\n\nvar _session = _interopRequireDefault(require(\"./core/session\"));\n\nvar _settings = _interopRequireDefault(require(\"./core/settings\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rootID;\n/**\n * Generate and store a new rootID, used to mark a new root event that\n * subsequent events will be linked to.\n * @return {string|*} The rootID.\n */\n\nfunction setRootID() {\n  rootID = _utils.default.guid();\n  return rootID;\n}\n/**\n * Get the current rootID.\n * @return {string|*} The rootID.\n */\n\n\nfunction getRootID() {\n  if (!rootID) {\n    setRootID();\n  }\n\n  return rootID;\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 * @return {Object} request\n */\n\n\nfunction track(config, callback) {\n  if (_utils.default.isUndefined(callback)) {\n    callback = function callback() {};\n  }\n\n  var session = _session.default.session(); // Set up the base request object with some values which should always be sent.\n\n\n  var request = {\n    async: true,\n    callback: callback || function () {},\n    context: {\n      id: config.id || _utils.default.guid(),\n      // Use a supplied id or generate one for this request\n      root_id: getRootID()\n    },\n    user: {\n      passport_id: _utils.default.getValueFromCookie(/USERID=([0-9]+):/) || _utils.default.getValueFromCookie(/PID=([0-9]+)\\_/),\n      ft_session: _utils.default.getValueFromCookie(/FTSession=([^;]+)/),\n      ft_session_s: _utils.default.getValueFromCookie(/FTSession_s=([^;]+)/)\n    },\n    device: {\n      spoor_session: session.id,\n      spoor_session_is_new: session.isNew,\n      spoor_id: _user.default.userID()\n    }\n  }; // Override any context, user, and device values with object-wide settings\n\n  var settingsConfig = _settings.default.get('config') || {};\n\n  if (settingsConfig.context) {\n    _utils.default.merge(request.context, settingsConfig.context);\n  }\n\n  if (settingsConfig.user) {\n    _utils.default.merge(request.user, settingsConfig.user);\n  }\n\n  if (settingsConfig.device) {\n    _utils.default.merge(request.device, settingsConfig.device);\n  } // Update the base config with the parameter-supplied config\n\n\n  _utils.default.merge(request, config);\n\n  _utils.default.log('Core.Track', request); // Send it.\n\n\n  _send.default.addAndRun(request);\n\n  return request;\n}\n\nvar _default = {\n  setRootID,\n  getRootID,\n  track\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clear = exports.init = exports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n//TODO remove all ft.com specific stuff so we can remove this as a global\n// currently all FT specific stuff is wrapped in an if window.FT\n\n/**\n * @fileOverview\n * Third party library for use with google publisher tags.\n *\n * @author Robin Marr, robin.marr@ft.com\n */\n\n/**\n * The FT.ads.config object holds the confiuration properties for an FT.ads.gpt instance.\n * There are four tiers of configuration; cookie level config, default config (set within the constructor), metatag config and global (env) config.\n * Global config, (set in the page FT.env ojbect) takes priority over meta followed by default config with cookie config having the least priority.\n * The FT.ads.config() function acts as an accessor method for the config; allowing getting and setting of configuration values.\n * Calling config() with no parameters returns the entire configuration object.\n * Calling config passing a valid property key will envoke the 'getter' and return the value for that property key.\n * Calling config passing a valid property key and a value will envoke the setter and set the value of the key to the new value.\n * Calling config passing an object of keys and values will envoke a setter that extends the store with the object provided.\n * @name config\n * @memberof FT.ads\n * @function\n*/\n\n/**\n* Default configuration set in the constructor.\n*/\nvar defaults = {\n  formats: {\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  var results = {};\n  var scripts = Array.from(document.querySelectorAll('script[data-o-ads-config]'));\n  scripts.forEach(script => {\n    results = window.JSON ? _index.default.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  var canonical;\n  var 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  var result;\n\n  if (_index.default.isPlainObject(k)) {\n    _index.default.extend(true, this.store, k);\n\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 = _index.default.extend(true, {}, defaults, fetchCanonicalURL(), fetchDeclaritiveConfig());\n  return this.store;\n};\n\nvar config = new Config();\n\nvar _default = config.access.bind(config);\n\nexports.default = _default;\nvar init = config.init.bind(config);\nexports.init = init;\nvar clear = config.clear.bind(config);\nexports.clear = clear;","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\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  return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","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;","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","/**\n * @file\n * Sundry hooks that have multiple use-cases\n */\n\nimport { useRef, useEffect, useState } from 'react';\nimport OAds from '@financial-times/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","'use strict'\n\nmodule.exports = decimal\n\n// Check if the given character code, or the character code at the first\n// character, is decimal.\nfunction decimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return code >= 48 && code <= 57 /* 0-9 */\n}\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","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = sqrt(cx * cx + cy * cy + cz * cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  stream(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i < n; i++) {\n    bo = distance(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i > 0) {\n      ab = distance(coordinates[i], coordinates[i - 1]);\n      if (\n        ab > 0 &&\n        ao <= ab &&\n        bo <= ab &&\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n < 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n < 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n < 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = transformer({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getCurrentLayout = getCurrentLayout;\nexports.getCurrentGutter = getCurrentGutter;\nexports.getGridBreakpoints = getGridBreakpoints;\nexports.enableLayoutChangeEvents = enableLayoutChangeEvents;\nexports.default = void 0;\nvar missingDataMessage = 'Could not find layout information. ' + 'You may need to include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) ' + 'for more information.';\n/**\n * Grab grid properties\n * @return {Object} layout names and gutter widths\n */\n\nfunction getGridProperties() {\n  var properties = getGridFromDoc('after');\n\n  if (Object.keys(properties).length === 0) {\n    console.warn(missingDataMessage);\n  }\n\n  return properties;\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 * @return {Object} layout names and sizes\n */\n\n\nfunction getGridBreakpoints() {\n  var breakpoints = getGridFromDoc('before');\n\n  if (Object.keys(breakpoints).length === 0) {\n    console.warn(missingDataMessage);\n  }\n\n  return breakpoints;\n}\n/**\n * Grab grid properties surfaced in html:after and html:before's content\n * @param {String} position Whether to get all properties in :before, or current properties in :after\n * @return {Object} layout names and gutter widths\n */\n\n\nfunction getGridFromDoc(position) {\n  // Contained in a try/catch as it should not error if o-grid styles are not (deliberately or accidentally) loaded\n  // e.g. o-tracking will always try to read this property, but the page is not obliged to use o-grid for layout\n  try {\n    var gridProperties = window.getComputedStyle(document.documentElement, ':' + position).getPropertyValue('content'); // Firefox computes: \"{\\\"foo\\\": \\\"bar\\\"}\"\n    // We want readable JSON: {\"foo\": \"bar\"}\n\n    gridProperties = gridProperties.replace(/'/g, '').replace(/\\\\/g, '').replace(/^\"/, '').replace(/\"$/, '');\n    return JSON.parse(gridProperties);\n  } catch (e) {\n    return {};\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 * @return {String} Layout name\n */\n\n\nfunction getCurrentLayout() {\n  return getGridProperties().layout;\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 * @return {String} Gutter width in pixels\n */\n\n\nfunction getCurrentGutter() {\n  return getGridProperties().gutter;\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\n\nfunction enableLayoutChangeEvents() {\n  // Create a map containing all breakpoints exposed via html:before\n  var gridLayouts = getGridBreakpoints();\n\n  if (gridLayouts.hasOwnProperty('layouts')) {\n    var layouts = gridLayouts.layouts;\n    var breakpoints = new Map([...Object.keys(layouts).map(key => [key, layouts[key]]), ['default', '240px']]);\n\n    var decr1 = val => \"\".concat(Number(val.replace('px', '') - 1), \"px\");\n\n    var setupQuery = (query, size) => {\n      // matchMedia listener handler: Dispatch `o-grid.layoutChange` event if a match\n      var handleMQChange = mql => {\n        if (mql.matches) {\n          window.dispatchEvent(new CustomEvent('o-grid.layoutChange', {\n            detail: {\n              layout: size\n            }\n          }));\n        }\n      };\n\n      var mql = window.matchMedia(query);\n      mql.addListener(handleMQChange);\n      handleMQChange(mql);\n    }; // Generate media queries for each\n\n\n    breakpoints.forEach((width, size) => {\n      switch (size) {\n        case 'S':\n          setupQuery(\"(min-width: \".concat(width, \") and (max-width: \").concat(decr1(breakpoints.get('M')), \")\"), size);\n          break;\n\n        case 'M':\n          setupQuery(\"(min-width: \".concat(width, \") and (max-width: \").concat(decr1(breakpoints.get('L')), \")\"), size);\n          break;\n\n        case 'L':\n          setupQuery(\"(min-width: \".concat(width, \") and (max-width: \").concat(decr1(breakpoints.get('XL')), \")\"), size);\n          break;\n\n        case 'XL':\n          setupQuery(\"(min-width: \".concat(width, \")\"), size);\n          break;\n\n        case 'default':\n        default:\n          setupQuery(\"(max-width: \".concat(decr1(breakpoints.get('S')), \")\"), size);\n          break;\n      }\n    });\n  } else {\n    console.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  }\n}\n\nvar _default = {\n  getCurrentLayout,\n  getCurrentGutter,\n  getGridBreakpoints,\n  enableLayoutChangeEvents\n};\nexports.default = _default;","/**\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 clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n  if (abs(point[0]) <= pi)\n    return point[0];\n  else\n    return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","import 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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.updateConfig = exports.event = exports.page = exports.init = exports.link = exports.tracking = exports.default = void 0;\n\nvar _settings = _interopRequireDefault(require(\"./dist/javascript/core/settings\"));\n\nvar _user = _interopRequireDefault(require(\"./dist/javascript/core/user\"));\n\nvar _session = _interopRequireDefault(require(\"./dist/javascript/core/session\"));\n\nvar _send = _interopRequireDefault(require(\"./dist/javascript/core/send\"));\n\nvar _custom = _interopRequireDefault(require(\"./dist/javascript/events/custom\"));\n\nvar _pageView = _interopRequireDefault(require(\"./dist/javascript/events/page-view\"));\n\nvar _click = _interopRequireDefault(require(\"./dist/javascript/events/click\"));\n\nvar _utils = _interopRequireDefault(require(\"./dist/javascript/utils\"));\n\nvar _core = _interopRequireDefault(require(\"./dist/javascript/core\"));\n\nvar _componentView = _interopRequireDefault(require(\"./dist/javascript/events/component-view\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The version of the tracking module.\n * @type {string}\n */\nvar version = '2.0.0';\n/**\n * The source of this event.\n * @type {string}\n */\n\nvar source = 'o-tracking';\n/**\n * The API key.\n * @type {string}\n */\n\nvar api_key = 'qUb9maKfKbtpRsdp0p2J7uWxRPGJEP';\n/**\n * @class Tracking\n */\n\nfunction Tracking() {\n  this.version = version;\n  this.source = source;\n  this.api_key = api_key;\n  /**\n   * The initialised state of the object.\n   * @type {boolean}\n   */\n\n  this.initialised = false;\n}\n/**\n * Turn on/off developer mode. (Can also be activated on init.)\n * @param {boolean} level - Turn on or off, defaults to false if omitted.\n * @return {undefined}\n */\n\n\nTracking.prototype.developer = function (level) {\n  if (level) {\n    _settings.default.set('developer', true);\n  } else {\n    _settings.default.destroy('developer', null);\n\n    _settings.default.destroy('no_send', null);\n  }\n};\n/**\n * Clean up the tracking module.\n * @return {undefined}\n */\n\n\nTracking.prototype.destroy = function () {\n  this.developer(false);\n  this.initialised = false;\n\n  _settings.default.destroy('config');\n\n  _settings.default.destroy('page_sent');\n};\n/**\n * Overload toString method to show the version.\n * @return {string} The module's version.\n */\n\n\nTracking.prototype.toString = function () {\n  return 'oTracking version ' + version;\n};\n/**\n * Track a custom event.\n * @see {@link event}\n */\n\n\nTracking.prototype.event = _custom.default;\n/**\n * Make the page tracking request.\n * @see {@link page}\n */\n\nTracking.prototype.page = _pageView.default;\n/**\n* To initalise view events for components/elements.\n* @see {@link view#init}\n*/\n\nTracking.prototype.view = _componentView.default;\n/**\n * To initalise click events.\n * @see {@link click#init}\n */\n\nTracking.prototype.click = _click.default;\n/**\n * Previously, the click handler was initialised as \"link\".\n * @deprecated Use {@link Tracking#click} instead.\n */\n\nTracking.prototype.link = {\n  init: _ => Tracking.prototype.click.init('link')\n}; // eslint-disable-line no-unused-vars\n\n/**\n * Tracking utilities.\n * @see {@link utils}\n */\n\nTracking.prototype.utils = _utils.default;\n/**\n * Get the rootID.\n * @see {@link utils}\n */\n\nTracking.prototype.getRootID = _core.default.getRootID;\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.developer        - Optional, if `true`, logs certain actions.\n * @param {boolean} config.noSend           - Optional, if `true`, won't send events.\n * @param {string} config.configId          - Optional\n * @param {string} config.session           - Optional\n *\n * @return {Tracking} - Returns the tracking object\n */\n\nTracking.prototype.init = function (config) {\n  if (this.initialised) {\n    return this;\n  }\n\n  var hasDeclarativeConfig = Boolean(this._getDeclarativeConfigElement());\n  config = config || {};\n\n  if (hasDeclarativeConfig) {\n    config = this._getDeclarativeConfig(config);\n  } // If there's no config, there is no point initialising!\n  // http://stackoverflow.com/a/32108184\n\n\n  if (Object.keys(config).length === 0 && config.constructor === Object) {\n    return null;\n  }\n\n  _settings.default.set('version', this.version);\n\n  _settings.default.set('source', this.source);\n\n  _settings.default.set('api_key', this.api_key);\n\n  _settings.default.set('page_sent', false);\n\n  var cookieDomain = config ? config.cookieDomain : false; // Set up the user from stored - may later be updated by config\n\n  _user.default.init(false, cookieDomain);\n\n  this.updateConfig(config); // Session\n\n  _session.default.init(config.session); // Initialize the sending queue.\n\n\n  _send.default.init();\n\n  this.event.init();\n  this.page.init();\n  this.initialised = true;\n  return this;\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 * @return {void}\n */\n\n\nTracking.prototype.updateConfig = function (newConfig) {\n  var config = _settings.default.get('config') || {};\n  config = this.utils.merge(config, newConfig);\n\n  _settings.default.set('config', config); // Developer mode\n\n\n  if (config.developer) {\n    this.developer(config.developer);\n\n    if (config.noSend) {\n      _settings.default.set('no_send', true);\n    }\n  }\n\n  if (config.user && config.user.user_id) {\n    _user.default.setUser(config.user.user_id);\n  }\n\n  _send.default.setDomain();\n};\n/**\n * Checks if the <script type='application/json' data-o-tracking-config> element is in the DOM\n * @private\n * @return {HTMLElement} - Returns the <script> element if found\n */\n\n\nTracking.prototype._getDeclarativeConfigElement = function () {\n  return document.querySelector('script[data-o-tracking-config]');\n};\n/**\n * Initialises additional data using the <script type='application/json' data-o-tracking-config> element in the DOM.\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 * @return {Object} - The options modified to include the options gathered from the DOM\n */\n\n\nTracking.prototype._getDeclarativeConfig = function (options) {\n  var configEl = this._getDeclarativeConfigElement();\n\n  var declarativeConfigString;\n\n  if (configEl) {\n    declarativeConfigString = configEl.textContent || configEl.innerText || configEl.innerHTML;\n  } else {\n    return false;\n  }\n\n  var declarativeOptions;\n\n  try {\n    declarativeOptions = JSON.parse(declarativeConfigString);\n  } catch (e) {\n    var configError = new Error('Invalid JSON configuration syntax, check validity for o-tracking configuration: \"' + e.message + '\"');\n    this.utils.broadcast('oErrors', 'log', {\n      error: configError.message,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n    throw configError;\n  }\n\n  for (var property in declarativeOptions) {\n    if (declarativeOptions.hasOwnProperty(property)) {\n      options[property] = options[property] || declarativeOptions[property];\n    }\n  }\n\n  return options;\n};\n\nvar tracking = new Tracking();\nexports.tracking = tracking;\nvar link = tracking.link;\nexports.link = link;\nvar boundInit = tracking.init.bind(tracking);\nexports.init = boundInit;\nvar boundPage = tracking.page.bind(tracking);\nexports.page = boundPage;\nvar boundEvent = tracking.event.bind(tracking);\nexports.event = boundEvent;\nvar boundUpdateConfig = tracking.updateConfig.bind(tracking);\nexports.updateConfig = boundUpdateConfig;\n\nfunction initialise() {\n  tracking.init();\n  document.removeEventListener('o.DOMContentLoaded', initialise);\n} // Try and initialise on o.DOMContentLoaded. If it fails, defer to the\n// consumer of the library.\n\n\ndocument.addEventListener('o.DOMContentLoaded', initialise);\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 * @type {Tracking}\n */\n\nvar _default = tracking;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _toggle = _interopRequireDefault(require(\"./dist/js/toggle.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = () => {\n  _toggle.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _toggle.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.debounce = debounce;\nexports.throttle = throttle;\n\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  var timeout;\n  return function () {\n    var args = arguments;\n\n    var later = () => {\n      timeout = null;\n      func.apply(this, args);\n    };\n\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\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*/\n\n\nfunction throttle(func, wait) {\n  var timeout;\n  return function () {\n    if (timeout) {\n      return;\n    }\n\n    var args = arguments;\n\n    var later = () => {\n      timeout = null;\n      func.apply(this, args);\n    };\n\n    timeout = setTimeout(later, wait);\n  };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Store = exports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 */\nvar Store = function Store(name, config) {\n  /**\n   * Internal Storage key prefix.\n   */\n  var keyPrefix = 'o-tracking';\n  /**\n   * Temporary var containing data from a previously saved store.\n   * @property loadStore\n   */\n\n  var loadStore;\n\n  if (_utils.default.isUndefined(name)) {\n    var undefinedName = new Error('You must specify a name for the store.');\n\n    _utils.default.broadcast('oErrors', 'log', {\n      error: undefinedName.message,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n\n    throw undefinedName;\n  }\n\n  this.config = _utils.default.merge({\n    storage: 'best',\n    expires: 10 * 365 * 24 * 60 * 60 * 1000\n  }, config);\n  /**\n   * Store data.\n   */\n\n  this.data = null;\n  /**\n   * The key/name of this store.\n   */\n\n  this.storageKey = this.config.hasOwnProperty('nameOverride') ? this.config.nameOverride : [keyPrefix, name].join('_');\n  /**\n   * The storage method to use. Determines best storage method.\n   *\n   * @type {Object}\n   */\n\n  this.storage = function (config, window) {\n    var test_key = keyPrefix + '_InternalTest'; // If cookie has been manually specified, don't bother with local storage.\n\n    if (config.storage !== 'cookie') {\n      try {\n        if (window.localStorage) {\n          window.localStorage.setItem(test_key, 'TEST');\n\n          if (window.localStorage.getItem(test_key) === 'TEST') {\n            window.localStorage.removeItem(test_key);\n            return {\n              _type: 'localStorage',\n              load: function load(name) {\n                return window.localStorage.getItem(name);\n              },\n              save: function save(name, value) {\n                return window.localStorage.setItem(name, value);\n              },\n              remove: function remove(name) {\n                return window.localStorage.removeItem(name);\n              }\n            };\n          }\n        }\n      } catch (error) {\n        _utils.default.broadcast('oErrors', 'log', {\n          error: error.message,\n          info: {\n            module: 'o-tracking'\n          }\n        });\n      }\n    }\n\n    function cookieLoad(name) {\n      name = name + '=';\n      var cookies = window.document.cookie.split(';');\n      var i;\n      var cookie;\n\n      for (i = 0; i < cookies.length; i = i + 1) {\n        cookie = cookies[i].replace(/^\\s+|\\s+$/g, '');\n\n        if (cookie.indexOf(name) === 0) {\n          return _utils.default.decode(cookie.substring(name.length, cookie.length));\n        }\n      }\n\n      return null;\n    }\n\n    function cookieSave(name, value, expiry) {\n      var d;\n      var expires = '';\n      var cookie;\n\n      if (_utils.default.is(expiry, 'number')) {\n        d = new Date();\n        d.setTime(d.getTime() + expiry);\n        expires = 'expires=' + d.toGMTString() + ';';\n      }\n\n      cookie = _utils.default.encode(name) + '=' + _utils.default.encode(value) + ';' + expires + 'path=/;' + (config.domain ? 'domain=.' + config.domain + ';' : '');\n      window.document.cookie = cookie;\n    }\n\n    function cookieRemove(name) {\n      cookieSave(name, '', -1);\n    }\n\n    cookieSave(test_key, 'TEST');\n\n    if (cookieLoad(test_key) === 'TEST') {\n      cookieRemove(test_key);\n      return {\n        _type: 'cookie',\n        load: cookieLoad,\n        save: cookieSave,\n        remove: cookieRemove\n      };\n    }\n\n    return {\n      _type: 'none',\n      load: function load() {},\n      save: function save() {},\n      remove: function remove() {}\n    };\n  }(this.config, window); // Retrieve any previous store with the same name.\n\n\n  loadStore = this.storage.load(this.storageKey);\n\n  if (loadStore) {\n    try {\n      this.data = JSON.parse(loadStore);\n    } catch (error) {\n      _utils.default.broadcast('oErrors', 'log', {\n        error: error.message,\n        module: 'o-tracking'\n      });\n\n      this.data = loadStore;\n    }\n  }\n\n  return this;\n};\n/**\n * Get/Read the current data.\n *\n * @return {Object} Returns the data from the store.\n */\n\n\nexports.Store = Store;\n\nStore.prototype.read = function () {\n  return this.data;\n};\n/**\n * Write the supplied data to the store.\n *\n * @param {String} data - The data to write.\n * @return {Store} - The instance of the store\n */\n\n\nStore.prototype.write = function (data) {\n  // Set this.data, in-case we're on a file:// domain and can't set cookies.\n  this.data = data;\n  this.storage.save(this.storageKey, typeof this.data === 'string' ? this.data : JSON.stringify(this.data), this.config.expires);\n  return this;\n};\n/**\n * Delete the current data.\n * @return {Store} - The instance of the store\n */\n\n\nStore.prototype.destroy = function () {\n  this.data = null;\n  this.storage.remove(this.storageKey);\n  return this;\n};\n\nvar _default = Store;\nexports.default = _default;","\"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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"./dist/utils.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar throttle = _utils.default.throttle;\nvar debounce = _utils.default.debounce;\nvar listeners = {};\nvar intervals = {\n  resize: 100,\n  orientation: 100,\n  visibility: 100,\n  scroll: 100\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 * @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 */\n\nfunction setThrottleInterval(eventType, interval) {\n  if (typeof arguments[0] === 'number') {\n    setThrottleInterval('scroll', arguments[0]);\n    setThrottleInterval('resize', arguments[1]);\n    setThrottleInterval('orientation', arguments[2]);\n    setThrottleInterval('visibility', arguments[3]);\n  } else if (interval) {\n    intervals[eventType] = interval;\n  }\n}\n/**\n * @access private\n */\n\n\nfunction listenToResize() {\n  if (listeners.resize) {\n    return;\n  }\n\n  var eventType = 'resize';\n  var handler = debounce(function (ev) {\n    _utils.default.broadcast('resize', {\n      viewport: _utils.default.getSize(),\n      originalEvent: ev\n    });\n  }, intervals.resize);\n  window.addEventListener(eventType, handler);\n  listeners.resize = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * @access private\n */\n\n\nfunction listenToOrientation() {\n  if (listeners.orientation) {\n    return;\n  }\n\n  var eventType = 'orientationchange';\n  var handler = debounce(function (ev) {\n    _utils.default.broadcast('orientation', {\n      viewport: _utils.default.getSize(),\n      orientation: _utils.default.getOrientation(),\n      originalEvent: ev\n    });\n  }, intervals.orientation);\n  window.addEventListener(eventType, handler);\n  listeners.orientation = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * @access private\n */\n\n\nfunction listenToVisibility() {\n  if (listeners.visibility) {\n    return;\n  }\n\n  var eventType = 'visibilitychange';\n  var handler = debounce(function (ev) {\n    _utils.default.broadcast('visibility', {\n      hidden: _utils.default.getVisibility(),\n      originalEvent: ev\n    });\n  }, intervals.visibility);\n  window.addEventListener(eventType, handler);\n  listeners.visibility = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * @access private\n */\n\n\nfunction listenToScroll() {\n  if (listeners.scroll) {\n    return;\n  }\n\n  var eventType = 'scroll';\n  var handler = throttle(function (ev) {\n    var scrollPos = _utils.default.getScrollPosition();\n\n    _utils.default.broadcast('scroll', {\n      viewport: _utils.default.getSize(),\n      scrollHeight: scrollPos.height,\n      scrollLeft: scrollPos.left,\n      scrollTop: scrollPos.top,\n      scrollWidth: scrollPos.width,\n      originalEvent: ev\n    });\n  }, intervals.scroll);\n  window.addEventListener(eventType, handler);\n  listeners.scroll = {\n    eventType: eventType,\n    handler: handler\n  };\n}\n/**\n * Start listening for an event(s).\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 */\n\n\nfunction listenTo(eventType) {\n  if (eventType === 'resize' || eventType === 'all') {\n    listenToResize();\n  }\n\n  if (eventType === 'scroll' || eventType === 'all') {\n    listenToScroll();\n  }\n\n  if (eventType === 'orientation' || eventType === 'all') {\n    listenToOrientation();\n  }\n\n  if (eventType === 'visibility' || eventType === 'all') {\n    listenToVisibility();\n  }\n}\n/**\n * Stop listening for an event(s).\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 */\n\n\nfunction stopListeningTo(eventType) {\n  if (eventType === 'all') {\n    Object.keys(listeners).forEach(stopListeningTo);\n  } else if (listeners[eventType]) {\n    window.removeEventListener(listeners[eventType].eventType, listeners[eventType].handler);\n    delete listeners[eventType];\n  }\n}\n\nvar _default = {\n  debug: function debug() {\n    _utils.default.debug();\n  },\n  listenTo,\n  stopListeningTo,\n  setThrottleInterval,\n  getOrientation: _utils.default.getOrientation,\n  getSize: _utils.default.getSize,\n  getScrollPosition: _utils.default.getScrollPosition,\n  getVisibility: _utils.default.getVisibility\n};\nexports.default = _default;\nmodule.exports = exports.default;","'use strict'\n\nvar legacy = require('character-entities-legacy')\nvar invalid = require('character-reference-invalid')\nvar decimal = require('is-decimal')\nvar hexadecimal = require('is-hexadecimal')\nvar alphanumerical = require('is-alphanumerical')\nvar decodeEntity = require('./decode-entity')\n\nmodule.exports = parseEntities\n\nvar own = {}.hasOwnProperty\nvar fromCharCode = String.fromCharCode\nvar noop = Function.prototype\n\n// Default settings.\nvar defaults = {\n  warning: null,\n  reference: null,\n  text: null,\n  warningContext: null,\n  referenceContext: null,\n  textContext: null,\n  position: {},\n  additional: null,\n  attribute: false,\n  nonTerminated: true\n}\n\n// Characters.\nvar tab = 9 // '\\t'\nvar lineFeed = 10 // '\\n'\nvar formFeed = 12 //  '\\f'\nvar space = 32 // ' '\nvar ampersand = 38 //  '&'\nvar semicolon = 59 //  ';'\nvar lessThan = 60 //  '<'\nvar equalsTo = 61 //  '='\nvar numberSign = 35 //  '#'\nvar uppercaseX = 88 //  'X'\nvar lowercaseX = 120 //  'x'\nvar replacementCharacter = 65533 // '�'\n\n// Reference types.\nvar name = 'named'\nvar hexa = 'hexadecimal'\nvar deci = 'decimal'\n\n// Map of bases.\nvar bases = {}\n\nbases[hexa] = 16\nbases[deci] = 10\n\n// Map of types to tests.\n// Each type of character reference accepts different characters.\n// This test is used to detect whether a reference has ended (as the semicolon\n// is not strictly needed).\nvar tests = {}\n\ntests[name] = alphanumerical\ntests[deci] = decimal\ntests[hexa] = hexadecimal\n\n// Warning types.\nvar namedNotTerminated = 1\nvar numericNotTerminated = 2\nvar namedEmpty = 3\nvar numericEmpty = 4\nvar namedUnknown = 5\nvar numericDisallowed = 6\nvar numericProhibited = 7\n\n// Warning messages.\nvar messages = {}\n\nmessages[namedNotTerminated] =\n  'Named character references must be terminated by a semicolon'\nmessages[numericNotTerminated] =\n  'Numeric character references must be terminated by a semicolon'\nmessages[namedEmpty] = 'Named character references cannot be empty'\nmessages[numericEmpty] = 'Numeric character references cannot be empty'\nmessages[namedUnknown] = 'Named character references must be known'\nmessages[numericDisallowed] =\n  'Numeric character references cannot be disallowed'\nmessages[numericProhibited] =\n  'Numeric character references cannot be outside the permissible Unicode range'\n\n// Wrap to ensure clean parameters are given to `parse`.\nfunction parseEntities(value, options) {\n  var settings = {}\n  var option\n  var key\n\n  if (!options) {\n    options = {}\n  }\n\n  for (key in defaults) {\n    option = options[key]\n    settings[key] =\n      option === null || option === undefined ? defaults[key] : option\n  }\n\n  if (settings.position.indent || settings.position.start) {\n    settings.indent = settings.position.indent || []\n    settings.position = settings.position.start\n  }\n\n  return parse(value, settings)\n}\n\n// Parse entities.\n// eslint-disable-next-line complexity\nfunction parse(value, settings) {\n  var additional = settings.additional\n  var nonTerminated = settings.nonTerminated\n  var handleText = settings.text\n  var handleReference = settings.reference\n  var handleWarning = settings.warning\n  var textContext = settings.textContext\n  var referenceContext = settings.referenceContext\n  var warningContext = settings.warningContext\n  var pos = settings.position\n  var indent = settings.indent || []\n  var length = value.length\n  var index = 0\n  var lines = -1\n  var column = pos.column || 1\n  var line = pos.line || 1\n  var queue = ''\n  var result = []\n  var entityCharacters\n  var namedEntity\n  var terminated\n  var characters\n  var character\n  var reference\n  var following\n  var warning\n  var reason\n  var output\n  var entity\n  var begin\n  var start\n  var type\n  var test\n  var prev\n  var next\n  var diff\n  var end\n\n  if (typeof additional === 'string') {\n    additional = additional.charCodeAt(0)\n  }\n\n  // Cache the current point.\n  prev = now()\n\n  // Wrap `handleWarning`.\n  warning = handleWarning ? parseError : noop\n\n  // Ensure the algorithm walks over the first character and the end (inclusive).\n  index--\n  length++\n\n  while (++index < length) {\n    // If the previous character was a newline.\n    if (character === lineFeed) {\n      column = indent[lines] || 1\n    }\n\n    character = value.charCodeAt(index)\n\n    if (character === ampersand) {\n      following = value.charCodeAt(index + 1)\n\n      // The behaviour depends on the identity of the next character.\n      if (\n        following === tab ||\n        following === lineFeed ||\n        following === formFeed ||\n        following === space ||\n        following === ampersand ||\n        following === lessThan ||\n        following !== following ||\n        (additional && following === additional)\n      ) {\n        // Not a character reference.\n        // No characters are consumed, and nothing is returned.\n        // This is not an error, either.\n        queue += fromCharCode(character)\n        column++\n\n        continue\n      }\n\n      start = index + 1\n      begin = start\n      end = start\n\n      if (following === numberSign) {\n        // Numerical entity.\n        end = ++begin\n\n        // The behaviour further depends on the next character.\n        following = value.charCodeAt(end)\n\n        if (following === uppercaseX || following === lowercaseX) {\n          // ASCII hex digits.\n          type = hexa\n          end = ++begin\n        } else {\n          // ASCII digits.\n          type = deci\n        }\n      } else {\n        // Named entity.\n        type = name\n      }\n\n      entityCharacters = ''\n      entity = ''\n      characters = ''\n      test = tests[type]\n      end--\n\n      while (++end < length) {\n        following = value.charCodeAt(end)\n\n        if (!test(following)) {\n          break\n        }\n\n        characters += fromCharCode(following)\n\n        // Check if we can match a legacy named reference.\n        // If so, we cache that as the last viable named reference.\n        // This ensures we do not need to walk backwards later.\n        if (type === name && own.call(legacy, characters)) {\n          entityCharacters = characters\n          entity = legacy[characters]\n        }\n      }\n\n      terminated = value.charCodeAt(end) === semicolon\n\n      if (terminated) {\n        end++\n\n        namedEntity = type === name ? decodeEntity(characters) : false\n\n        if (namedEntity) {\n          entityCharacters = characters\n          entity = namedEntity\n        }\n      }\n\n      diff = 1 + end - start\n\n      if (!terminated && !nonTerminated) {\n        // Empty.\n      } else if (!characters) {\n        // An empty (possible) entity is valid, unless it’s numeric (thus an\n        // ampersand followed by an octothorp).\n        if (type !== name) {\n          warning(numericEmpty, diff)\n        }\n      } else if (type === name) {\n        // An ampersand followed by anything unknown, and not terminated, is\n        // invalid.\n        if (terminated && !entity) {\n          warning(namedUnknown, 1)\n        } else {\n          // If theres something after an entity name which is not known, cap\n          // the reference.\n          if (entityCharacters !== characters) {\n            end = begin + entityCharacters.length\n            diff = 1 + end - begin\n            terminated = false\n          }\n\n          // If the reference is not terminated, warn.\n          if (!terminated) {\n            reason = entityCharacters ? namedNotTerminated : namedEmpty\n\n            if (settings.attribute) {\n              following = value.charCodeAt(end)\n\n              if (following === equalsTo) {\n                warning(reason, diff)\n                entity = null\n              } else if (alphanumerical(following)) {\n                entity = null\n              } else {\n                warning(reason, diff)\n              }\n            } else {\n              warning(reason, diff)\n            }\n          }\n        }\n\n        reference = entity\n      } else {\n        if (!terminated) {\n          // All non-terminated numeric entities are not rendered, and trigger a\n          // warning.\n          warning(numericNotTerminated, diff)\n        }\n\n        // When terminated and number, parse as either hexadecimal or decimal.\n        reference = parseInt(characters, bases[type])\n\n        // Trigger a warning when the parsed number is prohibited, and replace\n        // with replacement character.\n        if (prohibited(reference)) {\n          warning(numericProhibited, diff)\n          reference = fromCharCode(replacementCharacter)\n        } else if (reference in invalid) {\n          // Trigger a warning when the parsed number is disallowed, and replace\n          // by an alternative.\n          warning(numericDisallowed, diff)\n          reference = invalid[reference]\n        } else {\n          // Parse the number.\n          output = ''\n\n          // Trigger a warning when the parsed number should not be used.\n          if (disallowed(reference)) {\n            warning(numericDisallowed, diff)\n          }\n\n          // Stringify the number.\n          if (reference > 0xffff) {\n            reference -= 0x10000\n            output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800)\n            reference = 0xdc00 | (reference & 0x3ff)\n          }\n\n          reference = output + fromCharCode(reference)\n        }\n      }\n\n      // Found it!\n      // First eat the queued characters as normal text, then eat an entity.\n      if (reference) {\n        flush()\n\n        prev = now()\n        index = end - 1\n        column += end - start + 1\n        result.push(reference)\n        next = now()\n        next.offset++\n\n        if (handleReference) {\n          handleReference.call(\n            referenceContext,\n            reference,\n            {start: prev, end: next},\n            value.slice(start - 1, end)\n          )\n        }\n\n        prev = next\n      } else {\n        // If we could not find a reference, queue the checked characters (as\n        // normal characters), and move the pointer to their end.\n        // This is possible because we can be certain neither newlines nor\n        // ampersands are included.\n        characters = value.slice(start - 1, end)\n        queue += characters\n        column += characters.length\n        index = end - 1\n      }\n    } else {\n      // Handle anything other than an ampersand, including newlines and EOF.\n      if (\n        character === 10 // Line feed\n      ) {\n        line++\n        lines++\n        column = 0\n      }\n\n      if (character === character) {\n        queue += fromCharCode(character)\n        column++\n      } else {\n        flush()\n      }\n    }\n  }\n\n  // Return the reduced nodes, and any possible warnings.\n  return result.join('')\n\n  // Get current position.\n  function now() {\n    return {\n      line: line,\n      column: column,\n      offset: index + (pos.offset || 0)\n    }\n  }\n\n  // “Throw” a parse-error: a warning.\n  function parseError(code, offset) {\n    var position = now()\n\n    position.column += offset\n    position.offset += offset\n\n    handleWarning.call(warningContext, messages[code], position, code)\n  }\n\n  // Flush `queue` (normal text).\n  // Macro invoked before each entity and at the end of `value`.\n  // Does nothing when `queue` is empty.\n  function flush() {\n    if (queue) {\n      result.push(queue)\n\n      if (handleText) {\n        handleText.call(textContext, queue, {start: prev, end: now()})\n      }\n\n      queue = ''\n    }\n  }\n}\n\n// Check if `character` is outside the permissible unicode range.\nfunction prohibited(code) {\n  return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff\n}\n\n// Check if `character` is disallowed.\nfunction disallowed(code) {\n  return (\n    (code >= 0x0001 && code <= 0x0008) ||\n    code === 0x000b ||\n    (code >= 0x000d && code <= 0x001f) ||\n    (code >= 0x007f && code <= 0x009f) ||\n    (code >= 0xfdd0 && code <= 0xfdef) ||\n    (code & 0xffff) === 0xffff ||\n    (code & 0xffff) === 0xfffe\n  )\n}\n","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n  if (typeof str !== 'string') {\n    throw new TypeError('expected a string');\n  }\n\n  // cover common, quick use cases\n  if (num === 1) return str;\n  if (num === 2) return str + str;\n\n  var max = str.length * num;\n  if (cache !== str || typeof cache === 'undefined') {\n    cache = str;\n    res = '';\n  } else if (res.length >= max) {\n    return res.substr(0, max);\n  }\n\n  while (max > res.length && num > 1) {\n    if (num & 1) {\n      res += str;\n    }\n\n    num >>= 1;\n    str += str;\n  }\n\n  res += str;\n  res = res.substr(0, max);\n  return res;\n}\n","'use strict'\n\nmodule.exports = trimTrailingLines\n\nvar line = '\\n'\n\n// Remove final newline characters from `value`.\nfunction trimTrailingLines(value) {\n  var val = String(value)\n  var index = val.length\n\n  while (val.charAt(--index) === line) {\n    // Empty\n  }\n\n  return val.slice(0, index + 1)\n}\n","'use strict';\n\nmodule.exports = interrupt;\n\nfunction interrupt(interruptors, tokenizers, ctx, params) {\n  var bools = ['pedantic', 'commonmark'];\n  var count = bools.length;\n  var length = interruptors.length;\n  var index = -1;\n  var interruptor;\n  var config;\n  var fn;\n  var offset;\n  var bool;\n  var ignore;\n\n  while (++index < length) {\n    interruptor = interruptors[index];\n    config = interruptor[1] || {};\n    fn = interruptor[0];\n    offset = -1;\n    ignore = false;\n\n    while (++offset < count) {\n      bool = bools[offset];\n\n      if (config[bool] !== undefined && config[bool] !== ctx.options[bool]) {\n        ignore = true;\n        break;\n      }\n    }\n\n    if (ignore) {\n      continue;\n    }\n\n    if (tokenizers[fn].apply(ctx, params)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","'use strict';\n\nvar collapseWhiteSpace = require('collapse-white-space');\n\nmodule.exports = normalize;\n\n/* Normalize an identifier.  Collapses multiple white space\n * characters into a single space, and removes casing. */\nfunction normalize(value) {\n  return collapseWhiteSpace(value).toLowerCase();\n}\n","var rho = Math.SQRT2,\n    rho2 = 2,\n    rho4 = 4,\n    epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n  var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n      ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n      dx = ux1 - ux0,\n      dy = uy1 - uy0,\n      d2 = dx * dx + dy * dy,\n      i,\n      S;\n\n  // Special case for u0 ≅ u1.\n  if (d2 < epsilon2) {\n    S = Math.log(w1 / w0) / rho;\n    i = function(t) {\n      return [\n        ux0 + t * dx,\n        uy0 + t * dy,\n        w0 * Math.exp(rho * t * S)\n      ];\n    }\n  }\n\n  // General case.\n  else {\n    var d1 = Math.sqrt(d2),\n        b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n        b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n        r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n        r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n    S = (r1 - r0) / rho;\n    i = function(t) {\n      var s = t * S,\n          coshr0 = cosh(r0),\n          u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n      return [\n        ux0 + u * dx,\n        uy0 + u * dy,\n        w0 * coshr0 / cosh(rho * s + r0)\n      ];\n    }\n  }\n\n  i.duration = S * 1000;\n\n  return i;\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function ZoomEvent(target, type, transform) {\n  this.target = target;\n  this.type = type;\n  this.transform = transform;\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled)\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n            .start()\n            .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n            .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p);\n  };\n\n  zoom.scaleTo = function(selection, k, p) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p);\n  };\n\n  zoom.translateBy = function(selection, x, y) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    });\n  };\n\n  zoom.translateTo = function(selection, x, y, p) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean && that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function wheeled() {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = mouse(this);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent();\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments, true),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = mouse(this),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation();\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved() {\n      noevent();\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped() {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent();\n      g.end();\n    }\n  }\n\n  function dblclicked() {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = mouse(this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n    noevent();\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n    else select(this).call(zoom.transform, t1);\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, arguments, event.changedTouches.length === n),\n        started, i, t, p;\n\n    nopropagation();\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved() {\n    if (!this.__zooming) return;\n    var g = gesture(this, arguments),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent();\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n    g.taps = 0;\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended() {\n    if (!this.__zooming) return;\n    var g = gesture(this, arguments),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation();\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        var p = select(this).on(\"dblclick.zoom\");\n        if (p) p.apply(this, arguments);\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  return zoom;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\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","export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2, n = input.length, output = new Array(n);\n    output[0] = (x0 += input[0]) * kx + dx;\n    output[1] = (y0 += input[1]) * ky + dy;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n","import transform from \"./transform.js\";\n\nexport default function(topology) {\n  var t = transform(topology.transform), key,\n      x0 = Infinity, y0 = x0, x1 = -x0, y1 = -x0;\n\n  function bboxPoint(p) {\n    p = t(p);\n    if (p[0] < x0) x0 = p[0];\n    if (p[0] > x1) x1 = p[0];\n    if (p[1] < y0) y0 = p[1];\n    if (p[1] > y1) y1 = p[1];\n  }\n\n  function bboxGeometry(o) {\n    switch (o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(bboxGeometry); break;\n      case \"Point\": bboxPoint(o.coordinates); break;\n      case \"MultiPoint\": o.coordinates.forEach(bboxPoint); break;\n    }\n  }\n\n  topology.arcs.forEach(function(arc) {\n    var i = -1, n = arc.length, p;\n    while (++i < n) {\n      p = t(arc[i], i);\n      if (p[0] < x0) x0 = p[0];\n      if (p[0] > x1) x1 = p[0];\n      if (p[1] < y0) y0 = p[1];\n      if (p[1] > y1) y1 = p[1];\n    }\n  });\n\n  for (key in topology.objects) {\n    bboxGeometry(topology.objects[key]);\n  }\n\n  return [x0, y0, x1, y1];\n}\n","import reverse from \"./reverse.js\";\nimport transform from \"./transform.js\";\n\nexport default function(topology, o) {\n  if (typeof o === \"string\") o = topology.objects[o];\n  return o.type === \"GeometryCollection\"\n      ? {type: \"FeatureCollection\", features: o.geometries.map(function(o) { return feature(topology, o); })}\n      : feature(topology, o);\n}\n\nfunction feature(topology, o) {\n  var id = o.id,\n      bbox = o.bbox,\n      properties = o.properties == null ? {} : o.properties,\n      geometry = object(topology, o);\n  return id == null && bbox == null ? {type: \"Feature\", properties: properties, geometry: geometry}\n      : bbox == null ? {type: \"Feature\", id: id, properties: properties, geometry: geometry}\n      : {type: \"Feature\", id: id, bbox: bbox, properties: properties, geometry: geometry};\n}\n\nexport function object(topology, o) {\n  var transformPoint = transform(topology.transform),\n      arcs = topology.arcs;\n\n  function arc(i, points) {\n    if (points.length) points.pop();\n    for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length; k < n; ++k) {\n      points.push(transformPoint(a[k], k));\n    }\n    if (i < 0) reverse(points, n);\n  }\n\n  function point(p) {\n    return transformPoint(p);\n  }\n\n  function line(arcs) {\n    var points = [];\n    for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points);\n    if (points.length < 2) points.push(points[0]); // This should never happen per the specification.\n    return points;\n  }\n\n  function ring(arcs) {\n    var points = line(arcs);\n    while (points.length < 4) points.push(points[0]); // This may happen if an arc has only two points.\n    return points;\n  }\n\n  function polygon(arcs) {\n    return arcs.map(ring);\n  }\n\n  function geometry(o) {\n    var type = o.type, coordinates;\n    switch (type) {\n      case \"GeometryCollection\": return {type: type, geometries: o.geometries.map(geometry)};\n      case \"Point\": coordinates = point(o.coordinates); break;\n      case \"MultiPoint\": coordinates = o.coordinates.map(point); break;\n      case \"LineString\": coordinates = line(o.arcs); break;\n      case \"MultiLineString\": coordinates = o.arcs.map(line); break;\n      case \"Polygon\": coordinates = polygon(o.arcs); break;\n      case \"MultiPolygon\": coordinates = o.arcs.map(polygon); break;\n      default: return null;\n    }\n    return {type: type, coordinates: coordinates};\n  }\n\n  return geometry(o);\n}\n","export default function(array, n) {\n  var t, j = array.length, i = j - n;\n  while (i < --j) t = array[i], array[i++] = array[j], array[j] = t;\n}\n","export default function(topology, arcs) {\n  var stitchedArcs = {},\n      fragmentByStart = {},\n      fragmentByEnd = {},\n      fragments = [],\n      emptyIndex = -1;\n\n  // Stitch empty arcs first, since they may be subsumed by other arcs.\n  arcs.forEach(function(i, j) {\n    var arc = topology.arcs[i < 0 ? ~i : i], t;\n    if (arc.length < 3 && !arc[1][0] && !arc[1][1]) {\n      t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t;\n    }\n  });\n\n  arcs.forEach(function(i) {\n    var e = ends(i),\n        start = e[0],\n        end = e[1],\n        f, g;\n\n    if (f = fragmentByEnd[start]) {\n      delete fragmentByEnd[f.end];\n      f.push(i);\n      f.end = end;\n      if (g = fragmentByStart[end]) {\n        delete fragmentByStart[g.start];\n        var fg = g === f ? f : f.concat(g);\n        fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else if (f = fragmentByStart[end]) {\n      delete fragmentByStart[f.start];\n      f.unshift(i);\n      f.start = start;\n      if (g = fragmentByEnd[start]) {\n        delete fragmentByEnd[g.end];\n        var gf = g === f ? f : g.concat(f);\n        fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf;\n      } else {\n        fragmentByStart[f.start] = fragmentByEnd[f.end] = f;\n      }\n    } else {\n      f = [i];\n      fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f;\n    }\n  });\n\n  function ends(i) {\n    var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1;\n    if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; });\n    else p1 = arc[arc.length - 1];\n    return i < 0 ? [p1, p0] : [p0, p1];\n  }\n\n  function flush(fragmentByEnd, fragmentByStart) {\n    for (var k in fragmentByEnd) {\n      var f = fragmentByEnd[k];\n      delete fragmentByStart[f.start];\n      delete f.start;\n      delete f.end;\n      f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; });\n      fragments.push(f);\n    }\n  }\n\n  flush(fragmentByEnd, fragmentByStart);\n  flush(fragmentByStart, fragmentByEnd);\n  arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); });\n\n  return fragments;\n}\n","import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nexport default function(topology) {\n  return object(topology, meshArcs.apply(this, arguments));\n}\n\nexport function meshArcs(topology, object, filter) {\n  var arcs, i, n;\n  if (arguments.length > 1) arcs = extractArcs(topology, object, filter);\n  else for (i = 0, arcs = new Array(n = topology.arcs.length); i < n; ++i) arcs[i] = i;\n  return {type: \"MultiLineString\", arcs: stitch(topology, arcs)};\n}\n\nfunction extractArcs(topology, object, filter) {\n  var arcs = [],\n      geomsByArc = [],\n      geom;\n\n  function extract0(i) {\n    var j = i < 0 ? ~i : i;\n    (geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom});\n  }\n\n  function extract1(arcs) {\n    arcs.forEach(extract0);\n  }\n\n  function extract2(arcs) {\n    arcs.forEach(extract1);\n  }\n\n  function extract3(arcs) {\n    arcs.forEach(extract2);\n  }\n\n  function geometry(o) {\n    switch (geom = o, o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n      case \"LineString\": extract1(o.arcs); break;\n      case \"MultiLineString\": case \"Polygon\": extract2(o.arcs); break;\n      case \"MultiPolygon\": extract3(o.arcs); break;\n    }\n  }\n\n  geometry(object);\n\n  geomsByArc.forEach(filter == null\n      ? function(geoms) { arcs.push(geoms[0].i); }\n      : function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); });\n\n  return arcs;\n}\n","import {object} from \"./feature.js\";\nimport stitch from \"./stitch.js\";\n\nfunction planarRingArea(ring) {\n  var i = -1, n = ring.length, a, b = ring[n - 1], area = 0;\n  while (++i < n) a = b, b = ring[i], area += a[0] * b[1] - a[1] * b[0];\n  return Math.abs(area); // Note: doubled area!\n}\n\nexport default function(topology) {\n  return object(topology, mergeArcs.apply(this, arguments));\n}\n\nexport function mergeArcs(topology, objects) {\n  var polygonsByArc = {},\n      polygons = [],\n      groups = [];\n\n  objects.forEach(geometry);\n\n  function geometry(o) {\n    switch (o.type) {\n      case \"GeometryCollection\": o.geometries.forEach(geometry); break;\n      case \"Polygon\": extract(o.arcs); break;\n      case \"MultiPolygon\": o.arcs.forEach(extract); break;\n    }\n  }\n\n  function extract(polygon) {\n    polygon.forEach(function(ring) {\n      ring.forEach(function(arc) {\n        (polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon);\n      });\n    });\n    polygons.push(polygon);\n  }\n\n  function area(ring) {\n    return planarRingArea(object(topology, {type: \"Polygon\", arcs: [ring]}).coordinates[0]);\n  }\n\n  polygons.forEach(function(polygon) {\n    if (!polygon._) {\n      var group = [],\n          neighbors = [polygon];\n      polygon._ = 1;\n      groups.push(group);\n      while (polygon = neighbors.pop()) {\n        group.push(polygon);\n        polygon.forEach(function(ring) {\n          ring.forEach(function(arc) {\n            polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) {\n              if (!polygon._) {\n                polygon._ = 1;\n                neighbors.push(polygon);\n              }\n            });\n          });\n        });\n      }\n    }\n  });\n\n  polygons.forEach(function(polygon) {\n    delete polygon._;\n  });\n\n  return {\n    type: \"MultiPolygon\",\n    arcs: groups.map(function(polygons) {\n      var arcs = [], n;\n\n      // Extract the exterior (unique) arcs.\n      polygons.forEach(function(polygon) {\n        polygon.forEach(function(ring) {\n          ring.forEach(function(arc) {\n            if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) {\n              arcs.push(arc);\n            }\n          });\n        });\n      });\n\n      // Stitch the arcs into one or more rings.\n      arcs = stitch(topology, arcs);\n\n      // If more than one ring is returned,\n      // at most one of these rings can be the exterior;\n      // choose the one with the greatest absolute area.\n      if ((n = arcs.length) > 1) {\n        for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) {\n          if ((ki = area(arcs[i])) > k) {\n            t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki;\n          }\n        }\n      }\n\n      return arcs;\n    }).filter(function(arcs) {\n      return arcs.length > 0;\n    })\n  };\n}\n","export default function(a, x) {\n  var lo = 0, hi = a.length;\n  while (lo < hi) {\n    var mid = lo + hi >>> 1;\n    if (a[mid] < x) lo = mid + 1;\n    else hi = mid;\n  }\n  return lo;\n}\n","import bisect from \"./bisect.js\";\n\nexport default function(objects) {\n  var indexesByArc = {}, // arc index -> array of object indexes\n      neighbors = objects.map(function() { return []; });\n\n  function line(arcs, i) {\n    arcs.forEach(function(a) {\n      if (a < 0) a = ~a;\n      var o = indexesByArc[a];\n      if (o) o.push(i);\n      else indexesByArc[a] = [i];\n    });\n  }\n\n  function polygon(arcs, i) {\n    arcs.forEach(function(arc) { line(arc, i); });\n  }\n\n  function geometry(o, i) {\n    if (o.type === \"GeometryCollection\") o.geometries.forEach(function(o) { geometry(o, i); });\n    else if (o.type in geometryType) geometryType[o.type](o.arcs, i);\n  }\n\n  var geometryType = {\n    LineString: line,\n    MultiLineString: polygon,\n    Polygon: polygon,\n    MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); }\n  };\n\n  objects.forEach(geometry);\n\n  for (var i in indexesByArc) {\n    for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) {\n      for (var k = j + 1; k < m; ++k) {\n        var ij = indexes[j], ik = indexes[k], n;\n        if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik);\n        if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij);\n      }\n    }\n  }\n\n  return neighbors;\n}\n","import identity from \"./identity.js\";\n\nexport default function(transform) {\n  if (transform == null) return identity;\n  var x0,\n      y0,\n      kx = transform.scale[0],\n      ky = transform.scale[1],\n      dx = transform.translate[0],\n      dy = transform.translate[1];\n  return function(input, i) {\n    if (!i) x0 = y0 = 0;\n    var j = 2,\n        n = input.length,\n        output = new Array(n),\n        x1 = Math.round((input[0] - dx) / kx),\n        y1 = Math.round((input[1] - dy) / ky);\n    output[0] = x1 - x0, x0 = x1;\n    output[1] = y1 - y0, y0 = y1;\n    while (j < n) output[j] = input[j], ++j;\n    return output;\n  };\n}\n","import bbox from \"./bbox.js\";\nimport untransform from \"./untransform.js\";\n\nexport default function(topology, transform) {\n  if (topology.transform) throw new Error(\"already quantized\");\n\n  if (!transform || !transform.scale) {\n    if (!((n = Math.floor(transform)) >= 2)) throw new Error(\"n must be ≥2\");\n    box = topology.bbox || bbox(topology);\n    var x0 = box[0], y0 = box[1], x1 = box[2], y1 = box[3], n;\n    transform = {scale: [x1 - x0 ? (x1 - x0) / (n - 1) : 1, y1 - y0 ? (y1 - y0) / (n - 1) : 1], translate: [x0, y0]};\n  } else {\n    box = topology.bbox;\n  }\n\n  var t = untransform(transform), box, key, inputs = topology.objects, outputs = {};\n\n  function quantizePoint(point) {\n    return t(point);\n  }\n\n  function quantizeGeometry(input) {\n    var output;\n    switch (input.type) {\n      case \"GeometryCollection\": output = {type: \"GeometryCollection\", geometries: input.geometries.map(quantizeGeometry)}; break;\n      case \"Point\": output = {type: \"Point\", coordinates: quantizePoint(input.coordinates)}; break;\n      case \"MultiPoint\": output = {type: \"MultiPoint\", coordinates: input.coordinates.map(quantizePoint)}; break;\n      default: return input;\n    }\n    if (input.id != null) output.id = input.id;\n    if (input.bbox != null) output.bbox = input.bbox;\n    if (input.properties != null) output.properties = input.properties;\n    return output;\n  }\n\n  function quantizeArc(input) {\n    var i = 0, j = 1, n = input.length, p, output = new Array(n); // pessimistic\n    output[0] = t(input[0], 0);\n    while (++i < n) if ((p = t(input[i], i))[0] || p[1]) output[j++] = p; // non-coincident points\n    if (j === 1) output[j++] = [0, 0]; // an arc must have at least two points\n    output.length = j;\n    return output;\n  }\n\n  for (key in inputs) outputs[key] = quantizeGeometry(inputs[key]);\n\n  return {\n    type: \"Topology\",\n    bbox: box,\n    transform: transform,\n    objects: outputs,\n    arcs: topology.arcs.map(quantizeArc)\n  };\n}\n","'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n","import React, { useEffect, useState, useRef } from 'react';\nimport { hot } from 'react-hot-loader/root';\nimport Layout from '@financial-times/g-components/article-layout';\nimport Share from '@financial-times/g-components/share';\nimport { GridChild, GridRow, GridContainer } from '@financial-times/g-components/grid';\nimport Epilogue from '@financial-times/g-components/epilogue';\nimport BigTopper from '@financial-times/g-components/big-topper';\nimport ReactMarkdown from 'react-markdown';\nimport Papa from 'papaparse';\nimport Loading from '@financial-times/g-components/loading';\nimport responsiveValues from './util/responsive-values';\nimport Map from './components/map';\nimport BasicCard from './components/basic-card';\nimport ListCard from './components/list-card';\nimport BreakpointContainer from './components/breakpoint-container';\nimport NavigationHeader from './components/navigation-header';\nimport StickyHeader from './components/sticky-header';\nimport FlourishEmbed from './components/flourish-embed';\nimport copyIntro from './copy/intro.md';\nimport copyLatestChanges from './copy/latest-changes.md';\nimport copyMainText from './copy/main-text.md';\nimport copyHowItWorks from './copy/how-it-works.md';\nimport copyCredits from './copy/credits.md';\n\nconst App = () => {\n  const isPrerendering = navigator.userAgent === 'ReactSnap';\n  const [context, setContext] = useState(null);\n  const mainRef = useRef();\n\n  const [data, setData] = useState({\n    lockdownData: [],\n    dataAsOf,\n  });\n  const { lockdownData, dataAsOf } = data;\n\n  // Asynchronous effects should update state as per below\n  useEffect(() => {\n    if (context) {\n      // N.b., do async in an async IIFE, don't make the useEffect callback async\n      (async () => {\n        const { data: stringencyData } = 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          }/stringency_index_filtered.csv`\n        )\n          .then(d => d.text())\n          .then(d => Papa.parse(d, { header: true, dynamicTyping: true, skipEmptyLines: true }));\n\n        // Transform stringency index data to object with dates as keys\n        const dateKeys = stringencyData.reduce((accumulator, current) => {\n          const { date, code: countrycode, StringencyIndex: stringencylatest } = current;\n\n          if (!countrycode) return accumulator;\n\n          const stringency = stringencylatest;\n\n          if (!accumulator[date]) {\n            accumulator[date] = [];\n          }\n\n          accumulator[date].push({\n            iso3: countrycode.toLowerCase(),\n            stringency: parseInt(stringency, 10),\n          });\n\n          return accumulator;\n        }, {});\n\n        const startDate = new Date('2020-01-23');\n\n        // Create final array of objects\n        const data = Object.keys(dateKeys)\n          .filter(date => new Date(date) >= startDate)\n          .map(date => ({ date, countries: dateKeys[date] }));\n\n        // Get date of last Bertha sheet update for “data as of”\n        const dataAsOf = new Date(stringencyData[0].last_updated);\n\n        setData({\n          lockdownData: data,\n          dataAsOf,\n        });\n      })();\n    }\n  }, [context]);\n\n  useEffect(() => {\n    (async () => {\n      setContext({\n        ...(await (await fetch('./context.json')).json()),\n        buildTime: window.BUILD_TIME,\n      });\n    })();\n  }, []);\n\n  return context ? (\n    <Layout {...context}>\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-lockdowns/\"\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                <BigTopper\n                  {...context}\n                  byline={{ prefix: 'Updated', dateFirst: true }}\n                  // Set published date to last data update\n                  publishedDate={dataAsOf || context.buildTime}\n                />\n              </GridChild>\n            </GridRow>\n          </GridContainer>\n          <div className=\"article-body o-editorial-typography-body\" itemProp=\"articleBody\">\n            <GridContainer>\n              <GridRow>\n                <div data-o-grid-colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <ReactMarkdown source={copyIntro} />\n\n                  <ListCard title=\"Latest changes\" source={copyLatestChanges} />\n                </div>\n              </GridRow>\n\n              <GridRow>\n                <div data-o-grid-colspan=\"12 S11 Scenter M9 L12\">\n                  {!isPrerendering ? (\n                    <BreakpointContainer>\n                      {({ breakpoint }) => {\n                        const { mapHeight, mapWidth } = responsiveValues[breakpoint];\n\n                        return lockdownData.length > 0 ? (\n                          <Map\n                            height={mapHeight}\n                            width={mapWidth}\n                            data={lockdownData}\n                            dataAsOf={dataAsOf}\n                          />\n                        ) : (\n                          <div className=\"loading-container\" style={{ height: mapHeight }}>\n                            <Loading size=\"large\" />\n                          </div>\n                        );\n                      }}\n                    </BreakpointContainer>\n                  ) : null}\n                </div>\n              </GridRow>\n\n              <GridRow>\n                <div data-o-grid-colspan=\"12 S11 Scenter M9 L8 XL7\">\n                  <ReactMarkdown source={copyMainText} />\n\n                  <FlourishEmbed\n                    alt=\"Timeline of government responses\"\n                    url=\"https://public.flourish.studio/visualisation/7730043/\"\n                  />\n\n                  <BasicCard title=\"Stringency index: how it works\">\n                    <ReactMarkdown source={copyHowItWorks} />\n                  </BasicCard>\n\n                  <ReactMarkdown source={copyCredits} />\n\n                  <Share {...context} separated />\n                </div>\n              </GridRow>\n            </GridContainer>\n          </div>\n          <Epilogue />\n        </article>\n      </main>\n    </Layout>\n  ) : null;\n};\n\nexport default hot(App);\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","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 constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","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","/*\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 arrayLikeToArray = require(\"./arrayLikeToArray\");\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;","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;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.setUser = setUser;\nexports.userID = id;\nexports.destroy = destroy;\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar userID;\nvar store;\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 * @return {String} - The user ID if present, or a generated UID if not\n */\n\nfunction init(value, cookieDomain) {\n  var defaultUserConfig = {\n    storage: 'cookie',\n    name: 'spoor-id',\n    nameOverride: 'spoor-id',\n    value: null,\n    // Set the store cookie domain to .ft.com for ft.com and all its subdomains\n    domain: location.hostname.match(/^(?:.+\\.)?ft\\.com$/) ? 'ft.com' : null\n  };\n\n  if (cookieDomain) {\n    defaultUserConfig.domain = cookieDomain;\n  }\n\n  store = new _store.default(defaultUserConfig.name, defaultUserConfig);\n  var id = store.read();\n\n  if (!id) {\n    id = value;\n  }\n\n  return setUser(id); // Refresh cookies and update state\n}\n/**\n * setUser\n *\n * @param {String} id The userID to set.\n * @return {String} - The user ID if present, or a generated UID if not\n */\n\n\nfunction setUser(id) {\n  userID = id;\n\n  if (!userID) {\n    userID = _utils.default.guid();\n  }\n\n  store.write(userID); // Refreshes the cookie...\n\n  return userID;\n}\n/**\n * Delete the current user data.\n * @return {void}\n */\n\n\nfunction destroy() {\n  store.destroy();\n}\n\nfunction id() {\n  return userID;\n}\n\nvar _default = {\n  init,\n  setUser,\n  userID: id,\n  destroy\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.session = getSession;\nexports.init = init;\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar store;\nvar defaultSessionConfig = {\n  storage: 'best',\n  name: 'session',\n  expires: 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 * @return {undefined}\n */\n\nfunction setSession(session) {\n  var d = new Date();\n  d.setTime(d.getTime() + store.config.expires);\n  store.write({\n    value: session,\n    expiry: d.valueOf()\n  });\n}\n/**\n * Get the session from the store. Expiry and gen of a new session are handled here.\n *\n * @return {Object} the current session\n */\n\n\nfunction getSession() {\n  var s = store.read();\n  var session;\n  var isNew = false;\n\n  if (s) {\n    var d = new Date().valueOf();\n    var exp = parseInt(s.expiry, 10); // If current session is active.\n\n    if (exp >= d) {\n      session = s.value;\n    }\n  } // No active session, gen a new one.\n\n\n  if (!session) {\n    session = _utils.default.guid();\n    isNew = true;\n  } // Refreshes the cookie...\n\n\n  setSession(session);\n  return {\n    id: session,\n    isNew: isNew\n  };\n}\n/**\n * Init\n *\n * @param {String|Object} config The name used to store the session or configuration object.\n * @return {Session} - The session\n */\n\n\nfunction init(config) {\n  if (_utils.default.is(config, 'string')) {\n    config = {\n      name: config\n    };\n  }\n\n  if (_utils.default.isUndefined(config)) {\n    config = {};\n  }\n\n  var c = _utils.default.merge(defaultSessionConfig, config); // config.name is important here, means the user has specifically asked for a cookie name.\n\n\n  if (c.storage === 'cookie' && config.name) {\n    c.nameOverride = c.name;\n  }\n\n  store = new _store.default(c.name, c);\n  return getSession();\n}\n\nvar _default = {\n  init,\n  session: getSession\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.setDomain = setDomain;\nexports.getDomain = getDomain;\nexports.add = add;\nexports.run = run;\nexports.addAndRun = addAndRun;\nexports.default = void 0;\n\nvar _settings = _interopRequireDefault(require(\"./settings\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _queue = _interopRequireDefault(require(\"./queue\"));\n\nvar _transports = _interopRequireDefault(require(\"./transports\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar isIe11 = function isIe11() {\n  return Boolean(window.MSInputMethodContext) && Boolean(document.documentMode);\n};\n/**\n * Default collection server.\n */\n\n\nvar domain = 'https://spoor-api.ft.com/px.gif';\n/**\n * Queue queue.\n *\n * @type {Queue}\n */\n\nvar queue;\n/**\n * Consistent check to see if we should use sendBeacon or not.\n *\n * @return {boolean} Should we use sendBeacon?\n */\n\nfunction should_use_sendBeacon() {\n  return navigator.sendBeacon && Promise && (_settings.default.get('config') || {}).useSendBeacon;\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 * @return {undefined}\n */\n\n\nfunction sendRequest(request, callback) {\n  var queueTime = request.queueTime;\n  var offlineLag = new Date().getTime() - queueTime;\n  var transport = should_use_sendBeacon() ? _transports.default.get('sendBeacon')() : window.XMLHttpRequest && 'withCredentials' in new window.XMLHttpRequest() ? _transports.default.get('xhr')() : _transports.default.get('image')();\n  var user_callback = request.callback;\n  var core_system = _settings.default.get('config') && _settings.default.get('config').system || {};\n\n  var system = _utils.default.merge(core_system, {\n    api_key: _settings.default.get('api_key'),\n    // String - API key - Make sure the request is from a valid client (idea nicked from Keen.io) useful if a page gets copied onto a Russian website and creates noise\n    version: _settings.default.get('version'),\n    // Version of the tracking client e.g. '1.2'\n    source: _settings.default.get('source'),\n    // Source of the tracking client e.g. 'o-tracking'\n    transport: transport.name // The transport method used.\n\n  });\n\n  request = _utils.default.merge({\n    system: system\n  }, request); // Only bothered about offlineLag if it's longer than a second, but less than 12 months. (Especially as Date can be dodgy)\n\n  if (offlineLag > 1000 && offlineLag < 12 * 30 * 24 * 60 * 60 * 1000) {\n    request.time = request.time || {};\n    request.time.offset = offlineLag;\n  }\n\n  delete request.callback;\n  delete request.async;\n  delete request.type;\n  delete request.queueTime;\n\n  _utils.default.log('user_callback', user_callback);\n\n  _utils.default.log('PreSend', request);\n\n  var stringifiedData = JSON.stringify(request);\n  transport.complete(function (error) {\n    if (_utils.default.is(user_callback, 'function')) {\n      user_callback.call(request);\n\n      _utils.default.log('calling user_callback');\n    }\n\n    if (error) {\n      // If IE11 XHR error, try using image method\n      if (isIe11() && transport.name === 'xhr') {\n        var image_method = _transports.default.get('image')(); // Append image label to transport value so that we know it tried xhr first\n\n\n        request.system.transport = [request.system.transport, image_method.name].join('-');\n        image_method.send(url, JSON.stringify(request));\n        image_method.complete(function () {\n          if (callback) {\n            callback();\n          }\n        });\n      } else {\n        // Re-add to the queue if it failed.\n        // Re-apply queueTime here\n        request.queueTime = queueTime;\n        queue.add(request).save();\n\n        _utils.default.broadcast('oErrors', 'log', {\n          error: error.message,\n          info: {\n            module: 'o-tracking'\n          }\n        });\n      }\n    } else if (callback) {\n      callback();\n    }\n  });\n  var url = domain;\n\n  if (request && request.category && request.action) {\n    var type = \"type=\".concat(request.category, \":\").concat(request.action);\n    url = url.indexOf('?') > -1 ? \"\".concat(url, \"&\").concat(type) : \"\".concat(url, \"?\").concat(type);\n  } // Both developer and noSend flags have to be set to stop the request sending.\n\n\n  if (!(_settings.default.get('developer') && _settings.default.get('no_send'))) {\n    transport.send(url, stringifiedData);\n  }\n}\n/**\n * Adds a new request to the list of pending requests\n *\n * @param {Tracking} request The request to queue\n * @return {undefined}\n */\n\n\nfunction add(request) {\n  request.queueTime = new Date().getTime();\n\n  if (should_use_sendBeacon()) {\n    sendRequest(request);\n  } else {\n    queue.add(request).save();\n  }\n\n  _utils.default.log('AddedToQueue', queue);\n}\n/**\n * If there are any requests queued, attempts to send the next one\n * Otherwise, does nothing\n * @param {Function} callback - Optional callback\n * @return {undefined}\n */\n\n\nfunction run(callback) {\n  if (_utils.default.isUndefined(callback)) {\n    callback = function callback() {};\n  } // Investigate queue lengths bug\n  // https://jira.ft.com/browse/DTP-330\n\n\n  var all_events = queue.all();\n\n  if (all_events.length > 200) {\n    var counts = {};\n    all_events.forEach(function (event) {\n      var label = [event.category, event.action].join(':');\n\n      if (!counts.hasOwnProperty(label)) {\n        counts[label] = 0;\n      }\n\n      counts[label] += 1;\n    });\n    queue.replace([]);\n    queue.add({\n      category: 'o-tracking',\n      action: 'queue-bug',\n      context: {\n        url: document.url,\n        queue_length: all_events.length,\n        counts: counts,\n        storage: queue.storage.storage._type\n      }\n    });\n  }\n\n  var next = function next() {\n    run();\n    callback();\n  };\n\n  var nextRequest = queue.shift(); // Cancel if we've run out of requests.\n\n  if (!nextRequest) {\n    return callback();\n  } // Send this request, then try run again.\n\n\n  return sendRequest(nextRequest, next);\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 * @return {undefined}\n */\n\n\nfunction addAndRun(request) {\n  add(request);\n  run();\n}\n\nfunction setDomain() {\n  if (_settings.default.get('config') && _settings.default.get('config').server) {\n    domain = _settings.default.get('config').server;\n  }\n}\n/**\n * Init the queue and send any leftover events.\n * @return {undefined}\n */\n\n\nfunction init() {\n  queue = new _queue.default('requests');\n  setDomain(); // If any tracking calls are made whilst offline, try sending them the next time the device comes online\n\n  _utils.default.addEvent(window, 'online', function () {\n    run();\n  }); // On startup, try sending any requests queued from a previous session.\n\n\n  run();\n  return queue;\n}\n\nfunction getDomain() {\n  return domain;\n}\n\nvar _default = {\n  init,\n  setDomain,\n  getDomain,\n  add,\n  run,\n  addAndRun\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Queue = exports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _store = _interopRequireDefault(require(\"./store\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Class for handling a queue backed up by a store.\n * @class Queue\n *\n * @param {String} name - The name of the queue.\n * @return {Queue} - Returns the instance of the queue.\n */\nvar Queue = function Queue(name) {\n  if (_utils.default.isUndefined(name)) {\n    var undefinedName = new Error('You must specify a name for the queue.');\n\n    _utils.default.broadcast('oErrors', 'log', {\n      error: undefinedName.message,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n\n    throw undefinedName;\n  }\n  /**\n   * Queue data.\n   * @type {Array}\n   */\n\n\n  this.queue = [];\n  /**\n   * The storage method to use. Determines best storage method.\n   * @type {Object}\n   */\n\n  this.storage = new _store.default(name); // Retrieve any previous store with the same name.\n\n  if (this.storage.read()) {\n    this.queue = this.storage.read();\n  }\n\n  return this;\n};\n/**\n * Gets the contents of the store.\n *\n * @return {Array} The array of items.\n */\n\n\nexports.Queue = Queue;\n\nQueue.prototype.all = function () {\n  if (this.queue.length === 0) {\n    return [];\n  }\n\n  var items = [];\n\n  for (var i = 0; i < this.queue.length; i = i + 1) {\n    items.push(this.queue[i].item);\n  }\n\n  return items;\n};\n/**\n * Gets the first item in the store.\n *\n * @return {Object} Returns the item.\n */\n\n\nQueue.prototype.first = function () {\n  if (this.queue.length === 0) {\n    return null;\n  }\n\n  return this.queue[0].item;\n};\n/**\n * Gets the last item in the store.\n *\n * @return {Object} Returns the item.\n */\n\n\nQueue.prototype.last = function () {\n  if (this.queue.length === 0) {\n    return null;\n  }\n\n  return this.queue.slice(-1)[0].item;\n};\n/**\n * Add data to the store.\n *\n * @param {Object} item - An item or an array of items.\n *\n * @return {Queue} - Returns the instance of the queue.\n */\n\n\nQueue.prototype.add = function (item) {\n  // 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  var self = this;\n  var i;\n\n  function doAdd(item) {\n    self.queue.push({\n      created_at: new Date().valueOf(),\n      item: item\n    });\n  }\n\n  if (_utils.default.is(item, 'object') && item.constructor.toString().match(/array/i)) {\n    for (i = 0; i < item.length; i = i + 1) {\n      doAdd(item[i]);\n    }\n  } else {\n    doAdd(item);\n  }\n\n  return self;\n};\n/**\n * Overwrite the store with something completely new.\n *\n * @param {Array} items The new array of data.\n *\n * @return {Queue} - Returns the instance of the queue.\n */\n\n\nQueue.prototype.replace = function (items) {\n  if (_utils.default.is(items, 'object') && items.constructor.toString().match(/array/i)) {\n    this.queue = [];\n    this.add(items).save();\n    return this;\n  }\n\n  var invalidArg = new Error('Argument invalid, must be an array.');\n\n  _utils.default.broadcast('oErrors', 'log', {\n    error: invalidArg.message,\n    info: {\n      module: 'o-tracking'\n    }\n  });\n\n  throw invalidArg;\n};\n/**\n * Pop the first item from the queue.\n *\n * @return {Object} The item.\n */\n\n\nQueue.prototype.shift = function () {\n  if (this.queue.length === 0) {\n    return null;\n  }\n\n  var item = this.queue.shift().item;\n  this.save();\n  return item;\n};\n/**\n * Save the current store to localStorage so that old requests can still be sent after a page refresh.\n *\n * @return {Queue} - Returns the instance of the queue.\n */\n\n\nQueue.prototype.save = function () {\n  this.storage.write(this.queue);\n  return this;\n};\n\nvar _default = Queue;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../javascript/utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Trace the element and all of its parents, collecting properties as we go\nvar elementPropertiesToCollect = [\"nodeName\", \"className\", \"id\", \"href\", \"text\", \"role\"]; // 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).\n\nvar getSiblingsAndPosition = (el, originalEl, selector) => {\n  var siblings = Array.from(el.querySelectorAll(selector));\n  var position = siblings.findIndex(item => item === originalEl);\n\n  if (position === -1) {\n    return;\n  }\n\n  return {\n    siblings: siblings.length,\n    position\n  };\n}; // Get all (sanitised) properties of a given element.\n\n\nvar getAllElementProperties = el => {\n  return elementPropertiesToCollect.reduce((returnObject, property) => {\n    if (el[property]) {\n      returnObject[property] = _utils.default.sanitise(el[property]);\n    } else if (el.getAttribute(property)) {\n      returnObject[property] = _utils.default.sanitise(el.getAttribute(property));\n    } else if (el.hasAttribute(property)) {\n      returnObject[property] = el.hasAttribute(property);\n    }\n\n    return returnObject;\n  }, {});\n}; // Get some properties of a given element.\n\n\nvar getDomPathProps = (attrs, props) => {\n  // Collect any attribute that matches given strings.\n  attrs.filter(attribute => attribute.name.match(/^data-trackable|^data-o-|^aria-/i)).forEach(attribute => {\n    props[attribute.name] = attribute.value;\n  });\n  return props;\n}; // Get only the custom data-trackable-context-? properties of a given element\n\n\nvar getContextProps = (attrs, props, isOriginalEl) => {\n  var customProps = {}; // for the original element collect properties like className, nodeName\n\n  if (isOriginalEl) {\n    elementPropertiesToCollect.forEach(name => {\n      if (typeof props[name] !== 'undefined' && name !== 'id') {\n        customProps[name] = props[name];\n      }\n    });\n  } // Collect any attribute that matches given strings.\n\n\n  attrs.filter(attribute => attribute.name.match(/^data-trackable-context-/i)).forEach(attribute => {\n    customProps[attribute.name.replace('data-trackable-context-', '')] = attribute.value;\n  });\n  return customProps;\n};\n\nfunction getTrace(el) {\n  var rootEl = document;\n  var originalEl = el;\n  var selector = originalEl.getAttribute('data-trackable') ? \"[data-trackable=\\\"\".concat(originalEl.getAttribute('data-trackable'), \"\\\"]\") : originalEl.nodeName;\n  var trace = [];\n  var customContext = {};\n\n  while (el && el !== rootEl) {\n    var props = getAllElementProperties(el);\n    var attrs = Array.from(el.attributes);\n    var domPathProps = getDomPathProps(attrs, props); // If the element happens to have a data-trackable attribute, get the siblings\n    // and position of the element (relative to the current element).\n\n    if (domPathProps[\"data-trackable\"]) {\n      domPathProps = Object.assign(domPathProps, getSiblingsAndPosition(el, originalEl, selector));\n    }\n\n    trace.push(domPathProps);\n    var contextProps = getContextProps(attrs, props, el === originalEl);\n\n    _utils.default.assignIfUndefined(contextProps, customContext);\n\n    el = el.parentNode;\n  }\n\n  return {\n    trace,\n    customContext\n  };\n}\n\nvar _default = getTrace;\nexports.default = _default;\nmodule.exports = exports.default;","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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _config = _interopRequireDefault(require(\"./config.js\"));\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar parameters = {};\n\nfunction Targeting() {} //eslint-disable-line no-empty-function\n\n\nTargeting.prototype.get = function () {\n  var methods = {\n    socialReferrer: this.getSocialReferrer,\n    timestamp: this.timestamp,\n    responsive: this.responsive\n  };\n\n  _index.default.extend(parameters, this.socialFlow(), this.getVersion());\n\n  for (var item in methods) {\n    /* istanbul ignore else  */\n    if (methods.hasOwnProperty(item)) {\n      _index.default.extend(parameters, methods[item]());\n    }\n  }\n\n  return parameters;\n};\n\nTargeting.prototype.add = function (obj) {\n  /* istanbul ignore else  */\n  if (_index.default.isPlainObject(obj)) {\n    _index.default.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 ((0, _config.default)('passOAdsVersion')) {\n    return {\n      OADS_VERSION: _index.default.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  var sf = _index.default.getQueryParamByName('socialflow');\n\n  if (sf) {\n    return {\n      socialflow: sf\n    };\n  }\n};\n\nTargeting.prototype.getSocialReferrer = function () {\n  var codedValue;\n\n  var referrer = _index.default.getReferrer(); // TODO: add on.ft.com\n\n\n  var 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    var refererRegex = new RegExp(\"^http(|s)://(www.)*(\".concat(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  var qs = _index.default.hash(_index.default.getQueryString(), /&|;/, '=');\n\n  var 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: _index.default.getTimestamp()\n  };\n};\n\nTargeting.prototype.responsive = function () {\n  return (0, _config.default)('responsive') ? {\n    res: _index.default.responsive.getCurrent()\n  } : {};\n};\n\nTargeting.prototype.debug = function () {\n  var log = _index.default.log;\n  var 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 _default = new Targeting();\n\nexports.default = _default;\nmodule.exports = exports.default;","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  if (path.length === 0) return '.';\n  var code = path.charCodeAt(0);\n  var hasRoot = code === 47 /*/*/;\n  var end = -1;\n  var matchedSlash = true;\n  for (var i = path.length - 1; i >= 1; --i) {\n    code = path.charCodeAt(i);\n    if (code === 47 /*/*/) {\n        if (!matchedSlash) {\n          end = i;\n          break;\n        }\n      } else {\n      // We saw the first non-path separator\n      matchedSlash = false;\n    }\n  }\n\n  if (end === -1) return hasRoot ? '/' : '.';\n  if (hasRoot && end === 1) {\n    // return '//';\n    // Backwards-compat fix:\n    return '/';\n  }\n  return path.slice(0, end);\n};\n\nfunction basename(path) {\n  if (typeof path !== 'string') path = path + '';\n\n  var start = 0;\n  var end = -1;\n  var matchedSlash = true;\n  var i;\n\n  for (i = path.length - 1; i >= 0; --i) {\n    if (path.charCodeAt(i) === 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 (!matchedSlash) {\n          start = i + 1;\n          break;\n        }\n      } else if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // path component\n      matchedSlash = false;\n      end = i + 1;\n    }\n  }\n\n  if (end === -1) return '';\n  return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n  var f = basename(path);\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\nexports.extname = function (path) {\n  if (typeof path !== 'string') path = path + '';\n  var startDot = -1;\n  var startPart = 0;\n  var end = -1;\n  var matchedSlash = true;\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  for (var i = path.length - 1; i >= 0; --i) {\n    var code = path.charCodeAt(i);\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 (!matchedSlash) {\n          startPart = i + 1;\n          break;\n        }\n        continue;\n      }\n    if (end === -1) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension\n      matchedSlash = false;\n      end = i + 1;\n    }\n    if (code === 46 /*.*/) {\n        // If this is our first dot, mark it as the start of our extension\n        if (startDot === -1)\n          startDot = i;\n        else if (preDotState !== 1)\n          preDotState = 1;\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 (startDot === -1 || end === -1 ||\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    return '';\n  }\n  return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n","'use strict'\n\nmodule.exports = alphabetical\n\n// Check if the given character code, or the character code at the first\n// character, is alphabetical.\nfunction alphabetical(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 && code <= 122) /* a-z */ ||\n    (code >= 65 && code <= 90) /* A-Z */\n  )\n}\n","'use strict';\n\nmodule.exports = {\n  position: true,\n  gfm: true,\n  commonmark: false,\n  footnotes: false,\n  pedantic: false,\n  blocks: require('./block-elements.json')\n};\n","'use strict';\n\nmodule.exports = indentation;\n\n/* Map of characters, and their column length,\n * which can be used as indentation. */\nvar characters = {' ': 1, '\\t': 4};\n\n/* Gets indentation information for a line. */\nfunction indentation(value) {\n  var index = 0;\n  var indent = 0;\n  var character = value.charAt(index);\n  var stops = {};\n  var size;\n\n  while (character in characters) {\n    size = characters[character];\n\n    indent += size;\n\n    if (size > 1) {\n      indent = Math.floor(indent / size) * size;\n    }\n\n    stops[indent] = index;\n\n    character = value.charAt(++index);\n  }\n\n  return {indent: indent, stops: stops};\n}\n","'use strict';\n\nvar attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = '[^\"\\'=<>`\\\\u0000-\\\\u0020]+';\nvar singleQuoted = '\\'[^\\']*\\'';\nvar doubleQuoted = '\"[^\"]*\"';\nvar attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')';\nvar attribute = '(?:\\\\s+' + attributeName + '(?:\\\\s*=\\\\s*' + attributeValue + ')?)';\nvar openTag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar closeTag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\nvar processing = '<[?].*?[?]>';\nvar declaration = '<![A-Za-z]+\\\\s+[^>]*>';\nvar cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\n\nexports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')');\n\nexports.tag = new RegExp('^(?:' +\n  openTag + '|' +\n  closeTag + '|' +\n  comment + '|' +\n  processing + '|' +\n  declaration + '|' +\n  cdata +\n')');\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('<', fromIndex);\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var link = value.indexOf('[', fromIndex);\n  var image = value.indexOf('![', fromIndex);\n\n  if (image === -1) {\n    return link;\n  }\n\n  /* Link can never be `-1` if an image is found, so we don’t need\n   * to check for that :) */\n  return link < image ? link : image;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n  var event = sourceEvent();\n  if (event.changedTouches) event = event.changedTouches[0];\n  return point(node, event);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n  if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n  for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n    if ((touch = touches[i]).identifier === identifier) {\n      return point(node, touch);\n    }\n  }\n\n  return null;\n}\n","/**\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _header = _interopRequireDefault(require(\"./dist/js/header.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = () => {\n  _header.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _header.default;\nexports.default = _default;\nmodule.exports = exports.default;","/**\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.link.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","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      });\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _comments = _interopRequireDefault(require(\"./dist/js/comments.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _comments.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _comments.default;\nexports.default = _default;\nmodule.exports = exports.default;","/**\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                    View Site Tips\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com\"\n                    data-trackable=\"Help Centre\"\n                  >\n                    Help Centre\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/aboutus\"\n                    data-trackable=\"About Us\"\n                  >\n                    About Us\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/accessibility\"\n                    data-trackable=\"Accessibility\"\n                  >\n                    Accessibility\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                    myFT Tour\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                    Careers\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                    Terms &amp; Conditions\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/privacy/\"\n                    data-trackable=\"Privacy\"\n                  >\n                    Privacy\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                    Cookies\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                    Copyright\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                    Slavery Statement &amp; Policies\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--2\">\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://live.ft.com/\"\n                    data-trackable=\"FT Live\"\n                  >\n                    FT Live\n                  </a>\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                    Share News Tips Securely\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/products\"\n                    data-trackable=\"Individual Subscriptions\"\n                  >\n                    Individual Subscriptions\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                    Group Subscriptions\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                    Republishing\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                    Contracts &amp; Tenders\n                  </a>\n                </div>\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.exec-appointments.com/\"\n                    data-trackable=\"Executive Job Search\"\n                  >\n                    Executive Job Search\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                    Advertise with the FT\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                    Follow the FT on Twitter\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://transact.ft.com/en-gb/\"\n                    data-trackable=\"FT Transact\"\n                  >\n                    FT Transact\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                    Secondary Schools\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--2\">\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                    Portfolio\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                    Today's Newspaper (ePaper)\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                    Alerts Hub\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://rankings.ft.com/businessschoolrankings/global-mba-ranking-2019\"\n                    data-trackable=\"MBA Rankings\"\n                  >\n                    MBA Rankings\n                  </a>\n                </div>\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://kat.ft.com/\"\n                    data-trackable=\"Enterprise Tools\"\n                  >\n                    Enterprise Tools\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                    News feed\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/newsletters\"\n                    data-trackable=\"Newsletters\"\n                  >\n                    Newsletters\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                    Currency Converter\n                  </a>\n                </div>\n              </div>\n            </div>\n          </nav>\n          <div className=\"o-footer__external-link o-footer__matrix-title\">\n            <a\n              className=\"o-footer__more-from-ft o-footer__matrix-title\"\n              href=\"https://www.ft.com/more-from-ft-group\"\n            >\n              More from the FT Group\n            </a>\n          </div>\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _footer = _interopRequireDefault(require(\"./dist/js/footer.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = () => {\n  _footer.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _footer.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _config = _interopRequireWildcard(require(\"./dist/js/config.js\"));\n\nvar _slots = _interopRequireDefault(require(\"./dist/js/slots.js\"));\n\nvar _gpt = _interopRequireDefault(require(\"./dist/js/ad-servers/gpt.js\"));\n\nvar _targeting = _interopRequireDefault(require(\"./dist/js/targeting.js\"));\n\nvar _index = _interopRequireDefault(require(\"./dist/js/utils/index.js\"));\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\n/* eslint valid-jsdoc: 0 */\nfunction Ads() {\n  addDOMEventListener();\n\n  if (window && !window.oAds) {\n    window.oAds = this;\n  }\n}\n\n_config.default.init = _config.init;\n_config.default.clear = _config.clear; // bung all our modules on the protoype\n\nAds.prototype.config = _config.default;\nAds.prototype.slots = _slots.default;\nAds.prototype.gpt = _gpt.default;\nAds.prototype.targeting = _targeting.default;\nAds.prototype.utils = _index.default;\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  var 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  var 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: \".concat(this.utils.getVersion()));\n};\n\nAds.prototype.getVersion = function () {\n  return this.utils.getVersion();\n};\n\nvar initAll = function initAll() {\n  return ads.init().then(() => {\n    var 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  var re = /FTConsent=([^;]+)/;\n  var 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  var 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\nvar ads = new Ads();\nvar _default = ads;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _share = _interopRequireDefault(require(\"./dist/js/share.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _share.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _share.default;\nexports.default = _default;\nmodule.exports = exports.default;","/**\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 * Top of something important\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Share from '../share';\nimport Bylines from '../bylines';\nimport { getMainImage } from '../shared/helpers';\nimport {\n  mainImagePropType,\n  topicPropType,\n  bylinesPropType,\n  flagsPropType,\n} from '../shared/proptypes';\nimport './styles.scss';\n\nconst BigTopper = ({\n  url,\n  topic,\n  headline,\n  summary,\n  relatedArticle,\n  mainImage,\n  bylines,\n  socialHeadline,\n  twitterHeadline,\n  facebookHeadline,\n  tweetText,\n  flags,\n  byline,\n  share,\n  ...props\n}) => {\n  // These really mess with Storyshots' snapshot testing\n  const buildTime = props.buildTime || new Date().toISOString(); // eslint-disable-line\n  const publishedDate = props.publishedDate || new Date().toISOString(); // eslint-disable-line\n\n  return (\n    <div className=\"big-topper\">\n      {flags.mainImage && (mainImage.url || mainImage.uuid) && (\n        <figure className=\"graphic graphic-b-1 graphic-pad-1\">\n          <img alt={mainImage.description} src={getMainImage(mainImage)} />\n          <figcaption className=\"o-typography-caption\">\n            {mainImage.description}\n            {mainImage.description && mainImage.credit && ' '}\n            {mainImage.credit}\n          </figcaption>\n        </figure>\n      )}\n\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      {flags.bylines && bylines && (\n        <Bylines prefix=\"By\" names={bylines} date={publishedDate} {...(byline || {})} />\n      )}\n\n      {flags.shareButtons && (\n        <Share\n          url={url}\n          text={socialHeadline || headline}\n          textTwitter={tweetText || twitterHeadline}\n          textFacebook={facebookHeadline}\n          dark={flags.dark}\n          {...(share || {})}\n        />\n      )}\n\n      {flags.summary && summary && (\n        <p className=\"o-editorial-typography-standfirst\">\n          {summary}{' '}\n          {relatedArticle && (\n            <a href={relatedArticle.url} className=\"o-typography-link\">\n              {relatedArticle.text}\n            </a>\n          )}\n        </p>\n      )}\n\n      <meta itemProp=\"dateModified\" content={buildTime} suppressHydrationWarning />\n    </div>\n  );\n};\n\nBigTopper.propTypes = {\n  url: PropTypes.string.isRequired,\n  topic: topicPropType,\n  headline: PropTypes.string.isRequired,\n  summary: PropTypes.string,\n  relatedArticle: PropTypes.exact({\n    url: PropTypes.string.isRequired,\n    text: PropTypes.string.isRequired,\n  }),\n  mainImage: mainImagePropType,\n  bylines: bylinesPropType,\n  socialHeadline: PropTypes.string,\n  twitterHeadline: PropTypes.string,\n  facebookHeadline: PropTypes.string,\n  tweetText: PropTypes.string,\n  flags: flagsPropType.isRequired,\n  publishedDate: PropTypes.string.isRequired,\n  buildTime: PropTypes.string.isRequired,\n  byline: PropTypes.object,\n  share: PropTypes.object,\n};\n\nBigTopper.displayName = 'GBigTopper';\n\nexport default BigTopper;\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _date = _interopRequireDefault(require(\"./dist/js/date.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _date.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _date.default;\nexports.default = _default;\nmodule.exports = exports.default;","/* @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 * 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","const responsiveValues = {\n  default: {\n    mapHeight: 140,\n    mapWidth: 300,\n  },\n  s: {\n    mapHeight: 200,\n    mapWidth: 430,\n  },\n  m: {\n    mapHeight: 240,\n    mapWidth: 520,\n  },\n  l: {\n    mapHeight: 430,\n    mapWidth: 940,\n  },\n  xl: {\n    mapHeight: 540,\n    mapWidth: 1180,\n  },\n};\n\nexport default responsiveValues;\n","import React, { Fragment, useEffect, useState, useMemo, useCallback } from 'react';\nimport { geoRobinson } from 'd3-geo-projection';\nimport { ComposableMap, Geographies, Geography } from 'react-simple-maps';\nimport * as topojson from 'topojson-client';\nimport { isoParse, scaleQuantize, scaleThreshold, timeFormat } from 'd3';\nimport ChoroplethLayer from './choropleth-layer';\nimport PlaybackControls from '../playback-controls';\nimport ChartHead from '../chart-head';\nimport ChartFooter from '../chart-footer';\nimport MapLegend from '../map-legend';\nimport worldBoundaries from '../../../data/world-boundaries.json';\nimport disputedPolygons from '../../../data/disputed-polygons.json';\nimport disputedBoundaries from '../../../data/disputed-boundaries.json';\nimport './styles.scss';\n\nconst colorScale = scaleThreshold()\n  .domain([1, 25, 50, 75, 85])\n  .range(['#d3e8f0', '#fae1af', '#fdac7a', '#f6736b', '#da3c6a', '#a90773'])\n  .unknown('#d9cdc3');\nconst formatTime = timeFormat('%B %e');\n\nconst Map = ({ data, dataAsOf, height, width }) => {\n  const [playing, setPlaying] = useState(false);\n  const [dateIndex, setDateIndex] = useState(data.length - 1);\n  const [worldGeojson, setWorldGeojson] = useState({});\n\n  const projection = useMemo(\n    () =>\n      geoRobinson().fitExtent(\n        [\n          [0, 0],\n          [width, height],\n        ],\n        worldGeojson\n      ),\n    [height, width, worldGeojson]\n  );\n\n  const handleSliderChange = useCallback(value => {\n    setPlaying(false);\n    setDateIndex(value);\n  }, []);\n\n  const handlePlayClick = useCallback(\n    e => {\n      e.preventDefault();\n      setPlaying(!playing);\n    },\n    [playing]\n  );\n\n  const dateFormatted = formatTime(isoParse(dataAsOf));\n\n  useEffect(() => {\n    // Load world polygons TopoJSON\n    (async () => {\n      const worldTopojson = await fetch('./data/world-polygons.json').then(r => r.json());\n      // Convert to GeoJSON for projection.fitExtent\n      const geojson = topojson.feature(worldTopojson, {\n        type: 'GeometryCollection',\n        geometries: worldTopojson.objects['world-less-antarctica'].geometries,\n      });\n\n      setWorldGeojson(geojson);\n    })();\n  }, []);\n\n  useEffect(() => {\n    const playForward =\n      playing &&\n      setInterval(() => setDateIndex(dateIndex < data.length - 1 ? dateIndex + 1 : 0), 300);\n\n    return () => clearInterval(playForward);\n  }, [data.length, dateIndex, playing]);\n\n  return (\n    <Fragment>\n      <div className=\"o-grid-row o-grid-row--compact\">\n        <div data-o-grid-colspan=\"12 Mcenter M8 L4\">\n          <PlaybackControls\n            date={data[dateIndex].date}\n            max={data.length - 1}\n            onChange={handleSliderChange}\n            onClick={handlePlayClick}\n            playing={playing}\n            value={dateIndex}\n            width={width}\n          />\n        </div>\n      </div>\n\n      <div className=\"map\" style={{ width: `${width}px` }}>\n        <ChartHead\n          subtitle=\"Oxford Covid-19 government response stringency index\"\n          title=\"Lockdowns around the world\"\n          width={width}\n        />\n\n        <MapLegend colorScale={colorScale} width={width} />\n\n        <div className=\"map__container\" style={{ width: `${width}px`, minHeight: `${height}px` }}>\n          {worldGeojson.features && (\n            <ComposableMap height={height} projection={projection} width={width}>\n              {/* World polygons layer */}\n              <ChoroplethLayer data={data[dateIndex]} colorScale={colorScale} />\n\n              {/* Disputed territories polygons layer */}\n              <Geographies geography={disputedPolygons}>\n                {({ geographies }) =>\n                  geographies.map(geo => (\n                    <Geography key={geo.rsmKey} geography={geo} fill=\"#d9cdc3\" />\n                  ))\n                }\n              </Geographies>\n\n              {/* World boundaries layer */}\n              <Geographies geography={worldBoundaries}>\n                {({ geographies }) =>\n                  geographies.map(geo => (\n                    <Geography\n                      key={geo.rsmKey}\n                      geography={geo}\n                      fill=\"none\"\n                      stroke=\"#ccc1b7\"\n                      strokeWidth={0.6}\n                    />\n                  ))\n                }\n              </Geographies>\n\n              {/* Disputed territories boundaries layer */}\n              <Geographies geography={disputedBoundaries}>\n                {({ geographies }) =>\n                  geographies.map(geo => (\n                    <Geography\n                      key={geo.rsmKey}\n                      geography={geo}\n                      fill=\"none\"\n                      stroke=\"#ccc1b7\"\n                      strokeWidth={1}\n                      strokeDasharray=\"0 4\"\n                      strokeLinecap=\"round\"\n                      strokeLinejoin=\"round\"\n                    />\n                  ))\n                }\n              </Geographies>\n            </ComposableMap>\n          )}\n        </div>\n\n        <ChartFooter\n          credit=\"Graphic: Alan Smith and David Blood\"\n          source={`Blavatnik School of Government, University of Oxford. Data as of ${dateFormatted}. Data for the most recent seven days may not yet reflect government response changes implemented during that period`}\n          width={width}\n        />\n      </div>\n    </Fragment>\n  );\n};\n\nexport default Map;\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","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 React, { useCallback } from 'react';\nimport { Geographies, Geography } from 'react-simple-maps';\nimport geographyPath from '../../../data/world-polygons.json';\n\nconst ChoroplethLayer = ({ data, colorScale }) => {\n  const { countries } = data;\n  const geographiesCallback = useCallback(\n    ({ geographies }) => {\n      return geographies.map(geo => {\n        const d = countries.find(s => s.iso3 === geo.properties.ISO_A3.toLowerCase());\n\n        return (\n          <Geography\n            key={geo.rsmKey}\n            geography={geo}\n            tabIndex=\"0\"\n            fill={d && typeof d.stringency === 'number' ? colorScale(d.stringency) : '#d9cdc3'}\n          />\n        );\n      });\n    },\n    [colorScale, countries]\n  );\n  return <Geographies geography={geographyPath}>{geographiesCallback}</Geographies>;\n};\n\nexport default ChoroplethLayer;\n","import React, { useContext } from 'react';\nimport Slider from 'react-rangeslider';\nimport { timeFormat, timeParse } from 'd3';\nimport { Context } from '@financial-times/g-components/article-layout';\nimport './styles.scss';\n\nconst PlaybackControls = ({ date, max, onChange, onClick, playing, value, width }) => {\n  const icon = playing ? 'pause' : 'play';\n  const parseTime = timeParse('%Y-%m-%d');\n  const formatTime = timeFormat('%b %e %Y');\n  const dateFormatted = formatTime(parseTime(date));\n\n  const { breakpoint: b } = useContext(Context);\n  const breakpoint = ((b && b.breakpoint) || 'default').toLowerCase();\n\n  const buttonClassname = [\n    'o-buttons',\n    'o-buttons--secondary',\n    'o-buttons--mono',\n    'o-buttons-icon',\n    `o-buttons-icon--${icon}`,\n    'o-buttons-icon--icon-only',\n    !['default', 's'].includes(breakpoint) && 'o-buttons--big',\n  ]\n    .filter(Boolean)\n    .join(' ');\n\n  return (\n    <div className=\"playback-controls\" style={{ maxWidth: `${width}px` }}>\n      <div className=\"playback-controls__play-button\">\n        <button\n          aria-label={`${icon.charAt(0).toUpperCase()}${icon.slice(1)}`}\n          className={buttonClassname}\n          onClick={onClick}\n          type=\"button\"\n        />\n      </div>\n\n      <div className=\"playback-controls__range-slider\">\n        <Slider min={0} max={max} onChange={onChange} tooltip={false} value={value} />\n      </div>\n\n      <div className=\"playback-controls__date\">{dateFormatted}</div>\n    </div>\n  );\n};\n\nexport default PlaybackControls;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _Rangeslider = require('./Rangeslider');\n\nvar _Rangeslider2 = _interopRequireDefault(_Rangeslider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Rangeslider2.default;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst ChartHead = ({ subtitle, title, width }) => {\n  return (\n    <div className=\"chart-head\" style={{ width: `${width}px` }}>\n      <div className=\"chart-head__stab-rule\" />\n\n      <div className=\"chart-head__title\">{title}</div>\n\n      <div className=\"chart-head__subtitle\">{subtitle}</div>\n    </div>\n  );\n};\n\nChartHead.propTypes = {\n  subtitle: PropTypes.string.isRequired,\n  title: PropTypes.string.isRequired,\n  width: PropTypes.number.isRequired,\n};\n\nexport default ChartHead;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst ChartFooter = ({ credit, source, width }) => {\n  return (\n    <div className=\"chart-footer\" style={{ width: `${width}px` }}>\n      <footer>\n        {credit}\n        <br />\n        Source: {source}\n        <br />\n        <em>© FT</em>\n      </footer>\n    </div>\n  );\n};\n\nChartFooter.propTypes = {\n  credit: PropTypes.string.isRequired,\n  source: PropTypes.string.isRequired,\n  width: PropTypes.number.isRequired,\n};\n\nexport default ChartFooter;\n","import React, { useEffect, useRef } from 'react';\nimport * as d3 from 'd3';\n\nconst MapLegend = ({ colorScale: colourScale, width }) => {\n  const setup = {\n    legendPosition: 0,\n    legendLabelFontSize: 14,\n    legendTitleFontSize: 16,\n    legendTitleTickHeight: 8,\n    legendBlockWidth: width < 740 ? 30 : 40,\n    legendBlockHeight: 12,\n  };\n  const height = setup.legendTitleFontSize + setup.legendTitleTickHeight + setup.legendBlockHeight;\n  const svgRef = useRef(null);\n\n  useEffect(() => {\n    const {\n      legendPosition,\n      legendLabelFontSize,\n      legendTitleFontSize,\n      legendTitleTickHeight,\n      legendBlockWidth,\n      legendBlockHeight,\n    } = setup;\n    const svg = d3.select(svgRef.current);\n\n    svg.selectAll('*').remove();\n\n    const legend = svg\n      .append('g')\n      .attr(\n        'transform',\n        `translate(${width -\n          (legendBlockWidth + 1) * (colourScale.domain().length + 1) -\n          12}, ${legendPosition})`\n      );\n\n    legend\n      .append('text')\n      .attr('x', -legendBlockWidth * 1.15)\n      .attr('y', legendTitleFontSize + legendTitleTickHeight)\n      .attr('text-anchor', 'end')\n      .attr('dominant-baseline', 'hanging')\n      .attr('font-size', legendLabelFontSize)\n      .attr('fill', '#66605c')\n      .text('NO DATA');\n\n    legend\n      .append('rect')\n      .attr('x', -legendBlockWidth)\n      .attr('y', legendTitleFontSize + legendTitleTickHeight)\n      .attr('width', legendBlockWidth / 2)\n      .attr('height', legendBlockHeight)\n      .attr('fill', colourScale(undefined));\n\n    const legendGroups = legend\n      .selectAll()\n      .data([0, ...colourScale.domain(), 100])\n      .enter()\n      .append('g')\n      .attr('transform', (_, i) => `translate(${i * (legendBlockWidth + 1)}, 0)`);\n\n    legendGroups\n      .append('text')\n      .attr('dominant-baseline', 'hanging')\n      .attr('text-anchor', 'middle')\n      .attr('font-size', legendTitleFontSize)\n      .attr('fill', '#66605c')\n      .style('font-feature-settings', \"'tnum'\")\n      .text(d => d.toLocaleString());\n\n    legendGroups\n      .append('line')\n      .attr('stroke', '#66605c')\n      .attr('stroke-width', 1)\n      .attr('x1', -0.5)\n      .attr('y1', legendTitleFontSize)\n      .attr('x2', -0.5)\n      .attr('y2', legendTitleFontSize + legendTitleTickHeight);\n\n    legendGroups\n      .filter((_, i, a) => i < a.length - 1)\n      .append('rect')\n      .attr('y', legendTitleFontSize + legendTitleTickHeight)\n      .attr('width', legendBlockWidth)\n      .attr('height', legendBlockHeight)\n      .attr('fill', d => colourScale(d));\n  }, [width]); // eslint-disable-line\n\n  return (\n    <svg\n      height={height}\n      ref={svgRef}\n      viewBox={`0 0 ${width} ${height}`}\n      width={width}\n      xmlns=\"http://www.w3.org/2000/svg\"\n    />\n  );\n};\n\nexport default MapLegend;\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","/**\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","import React from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport BasicCard from '../basic-card';\n\nconst ListCard = ({ title, source }) => (\n  <BasicCard title={title}>\n    <ReactMarkdown\n      source={source}\n      renderers={{\n        root: ({ children }) => (\n          <ul className=\"o-typography-list o-typography-list--unordered\">{children}</ul>\n        ),\n        paragraph: ({ children }) => <li>{children}</li>,\n      }}\n    />\n  </BasicCard>\n);\n\nexport default ListCard;\n","import React, { useContext } from 'react';\nimport { Context } from '@financial-times/g-components/article-layout';\n\nconst BreakpointContainer = ({ children }) => {\n  const { breakpoint: b } = useContext(Context);\n  const breakpoint = ((b && b.breakpoint) || 'default').toLowerCase();\n\n  return children({ breakpoint });\n};\n\nexport default BreakpointContainer;\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","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nconst getEmbedUrl = (flourishUrl) => {\n  return flourishUrl.replace(/https:\\/\\/public\\.flourish\\.studio\\/(visualisation|story)\\/(\\d+)\\//g, 'https://flo.uri.sh/$1/$2/embed?auto=1');\n}\n\nconst FlourishEmbed = ({ url, alt }) => {\n  useEffect(() => {\n    window.addEventListener('message', event => {\n      if (event.origin === 'https://flo.uri.sh') {\n        const eventData = JSON.parse(event.data);\n        const iframes = document.querySelectorAll('iframe');\n        iframes.forEach(i => {\n          if (i.src === eventData.src.replace('#slide-0', '')) {\n            i.height = eventData.height;\n          }\n        });\n      }\n    });\n  }, []);\n\n  return (\n    <iframe\n      src={getEmbedUrl(url)}\n      title={alt}\n      scrolling=\"no\"\n      frameBorder=\"0\"\n      width=\"100%\"\n      height=\"600px\"\n      sandbox=\"allow-same-origin allow-forms allow-scripts allow-downloads allow-popups allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation\"\n    />\n  );\n};\n\nFlourishEmbed.propTypes = {\n  url: PropTypes.string.isRequired,\n  alt: PropTypes.string.isRequired,\n};\n\nexport default FlourishEmbed;\n","module.exports = \"Curfews and other restrictions on daily life aimed at curbing the virus' spread remain a reality for millions around the world.\\n\\nGovernments have been cautious about easing lockdown measures after the lifting of restrictions over the summer led to new waves of the virus. For many, optimism generated by rapid progress in the development has been partially offset by concerns over slow rollouts and their efficacy with new, highly transmissible variants of the virus.\\n\\nThis page provides an ongoing visual representation of the worldwide imposition\\nand relaxation of lockdown measures. It uses the [Covid-19 government response stringency index](https://www.bsg.ox.ac.uk/research/research-projects/coronavirus-government-response-tracker), a composite score developed by researchers at Oxford university, to compare\\ncountries’ policy responses to the coronavirus pandemic.\\n\"","module.exports = \"**October 27, 2021:** Graphics now use the stringency index with [version 3.7](https://github.com/OxCGRT/covid-policy-tracker/blob/master/documentation/index_methodology.md) of the index methodology.\\n\\n**June 1, 2020:** Graphics now use the stringency index with [version 3.1](https://github.com/OxCGRT/covid-policy-tracker/blob/master/documentation/index_methodology.md) of the index methodology.\\n\\n**May 5, 2020:** Graphics updated to use a six-colour instead of\\nfive-colour scale to represent stringency index values.\\n\\n**May 1, 2020:** Map animation controls added. Graphics now use\\nthe stringency index with [version 2.0](https://www.bsg.ox.ac.uk/sites/default/files/OxCGRT.%20What%27s%20changed%2024%20April%202020.pdf) of the index methodology.\\n\"","module.exports = \"_Help the Blavatnik School of Government at Oxford university improve the\\nstringency index used in this map by providing\\n[direct feedback](https://forms.office.com/Pages/ResponsePage.aspx?id=G96VzPWXk0-0uv5ouFLPkVPwT6t5-mtCnZ6_s5yQ4ppUME9NOUtYRkxLVldLUVFERTRTMEJSRkZITC4u)._\\n\"","module.exports = \"Every country’s lockdown is different. The wide range of measures adopted by\\ndifferent governments poses a challenge to analysts who want to compare these\\npolicies over time or between countries.\\n\\nTo enable such comparisons, a team at Oxford university’s Blavatnik School of\\nGovernment is maintaining a database of pandemic-response policies and using\\nit to derive an index of the measures’ overall stringency.\\n\\nMore than 100 volunteer academics and students collate publicly-available\\ninformation on government response measures, across nine policy areas. These\\nare assigned stringency ratings which are then used to derive a [composite score](https://www.bsg.ox.ac.uk/sites/default/files/2020-04/BSG-WP-2020-032-v5.0.pdf) between 0 and 100. Most other efforts to track the pandemic response take the\\nform of lists of events without attempting to create comparable measures\\nacross countries.\\n\\nThe Oxford team is not currently collecting any sub-national data, meaning\\nthat the index does not perfectly capture local measures in large or federal\\ncountries. A measure only in force in one or two regions contributes less to\\nthe stringency index than a nationwide policy, but rules in force in only one\\nor two regions can also inflate a whole country’s overall score.\\n\"","module.exports = \"_Reporting, data analysis, design and development by [Steven Bernard](https://www.ft.com/steven-bernard), [David Blood](https://www.ft.com/david-blood), [Cale Tilford](https://www.ft.com/cale-tilford), [Max Harlow](https://www.ft.com/max-harlow), [Caroline Nevitt](https://www.ft.com/caroline-nevitt), [Ændrew Rininsland](https://www.ft.com/aendrew-rininsland), [Alan Smith](https://www.ft.com/alan-smith), [Martin Stabe](https://www.ft.com/martin-stabe), [Aleksandra Wisniewska](https://www.ft.com/aleksandra-wisniewska)._\\n\\n_An earlier version of the timeline heatmap graphic on this page represented\\ndates where stringency index values were missing and those where the values\\nwere zero as equivalent. This has since been amended._\\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","'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.13.1\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.13.1\";\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\nif (rootElement.hasChildNodes()) {\n  hydrate(<App />, rootElement);\n} else {\n  render(<App />, rootElement);\n}","/** @license React v16.13.1\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.13.1\",\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.13.1\";\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","/**\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  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 = Gp.constructor = GeneratorFunctionPrototype;\n  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  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  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  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, 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  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n  if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","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;","/**\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _search = _interopRequireDefault(require(\"./search.js\"));\n\nvar _mega = _interopRequireDefault(require(\"./mega.js\"));\n\nvar _drawer = _interopRequireDefault(require(\"./drawer.js\"));\n\nvar _subnav = _interopRequireDefault(require(\"./subnav.js\"));\n\nvar _sticky = _interopRequireDefault(require(\"./sticky.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nclass Header {\n  constructor(headerEl) {\n    if (!headerEl) {\n      headerEl = document.querySelector('[data-o-component=\"o-header\"]');\n    } else if (typeof headerEl === 'string') {\n      headerEl = document.querySelector(headerEl);\n    }\n\n    if (headerEl.hasAttribute('data-o-header--js')) {\n      return;\n    }\n\n    this.headerEl = headerEl;\n\n    _search.default.init(this.headerEl);\n\n    _mega.default.init(this.headerEl);\n\n    _drawer.default.init(this.headerEl);\n\n    _subnav.default.init(this.headerEl);\n\n    _sticky.default.init(this.headerEl);\n\n    this.headerEl.removeAttribute('data-o-header--no-js');\n    this.headerEl.setAttribute('data-o-header--js', '');\n  }\n\n  static init(rootEl) {\n    if (!rootEl) {\n      rootEl = document.body;\n    }\n\n    if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    if (/\\bo-header\\b/.test(rootEl.getAttribute('data-o-component'))) {\n      return new Header(rootEl);\n    }\n\n    return [].map.call(rootEl.querySelectorAll('[data-o-component=\"o-header\"]'), el => {\n      if (!el.hasAttribute('data-o-header--js')) {\n        return new Header(el);\n      }\n    }).filter(header => {\n      return header !== undefined;\n    });\n  }\n\n}\n\nvar _default = Header;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.default = void 0;\n\nvar _oToggle = _interopRequireDefault(require(\"@financial-times/o-toggle\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction init(headerEl) {\n  var target = headerEl.querySelector('[data-o-header-search]');\n  var controls = target && headerEl.querySelectorAll(\"[aria-controls=\\\"\".concat(target.id, \"\\\"]\"));\n\n  if (controls === null || controls.length === 0) {\n    return;\n  }\n\n  var opening = [];\n\n  var callback = function callback(state, e) {\n    if (state === 'open') {\n      // record the opening control\n      opening.push(e.currentTarget);\n      target.querySelector('[name=\"q\"]').focus();\n    } else {\n      // re-focus opening control\n      if (opening.length) {\n        opening.pop().focus();\n      }\n    }\n  };\n\n  for (var i = 0, len = controls.length; i < len; i++) {\n    new _oToggle.default(controls[i], {\n      target,\n      callback\n    });\n  }\n}\n\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _target = _interopRequireDefault(require(\"./target.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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  // if the pressed key is a space, we'll simulate a click\n  if (e.keyCode === 32) {\n    this.toggle(e);\n  }\n}\n\nclass Toggle {\n  constructor(toggleEl, config) {\n    if (!Toggle._targets) {\n      Toggle._targets = new Map();\n    }\n\n    if (!toggleEl) {\n      return;\n    } else if (!(toggleEl instanceof HTMLElement)) {\n      toggleEl = document.querySelector(toggleEl);\n    }\n\n    if (toggleEl.hasAttribute('data-o-toggle--js')) {\n      return;\n    }\n\n    if (!config) {\n      config = {}; // Try to get config set declaratively on the element\n\n      Array.prototype.forEach.call(toggleEl.attributes, attr => {\n        if (attr.name.indexOf('data-o-toggle') === 0) {\n          // Remove the prefix part of the data attribute name\n          var key = attr.name.replace('data-o-toggle-', '');\n\n          try {\n            // If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n            // We also replace all ' with \" so JSON strings are parsed correctly\n            config[key] = JSON.parse(attr.value.replace(/\\'/g, '\"'));\n          } catch (e) {\n            config[key] = attr.value;\n          }\n        }\n      });\n    } // Set the toggle callback if its a string.\n\n\n    if (config.callback && typeof config.callback === 'string') {\n      // Error if the callback is a string and a global function of that name does not exist.\n      if (typeof window[config.callback] !== 'function') {\n        throw new Error(\"Could not find o-toggle callback \\\"\".concat(config.callback, \"\\\".\"));\n      }\n\n      this.callback = window[config.callback];\n    } // Set the toggle callback if its a funciton.\n\n\n    if (config.callback && typeof config.callback === 'function') {\n      this.callback = config.callback;\n    } // Error if some callback value has been given but has not been set.\n\n\n    if (config.callback && !this.callback) {\n      throw new Error(\"The o-toggle callback must be a string or function.\");\n    } // Set the toggle element.\n\n\n    this.toggleEl = toggleEl;\n\n    if (this.toggleEl.nodeName === 'A') {\n      this.toggleEl.setAttribute('role', 'button');\n      this.toggleEl.addEventListener('keydown', handleSpaceKeydown.bind(this)); // If a user drags their mouse slightly when trying to interact with the toggle\n      // it will trigger the 'drag and drop' functionality.\n      // Regular buttons prevent this and ensure as long as the mouse is still above the\n      // button that the click will register.\n      // This will help users with motor impairments and those less familiar with a trackpad.\n\n      this.toggleEl.setAttribute('draggable', 'false');\n    }\n\n    this.toggle = this.toggle.bind(this);\n    this.toggleEl.addEventListener('click', this.toggle);\n    this.toggleEl.setAttribute('data-o-toggle--js', 'true');\n    this.targetEl = config.target;\n\n    if (!(this.targetEl instanceof HTMLElement)) {\n      this.targetEl = document.querySelector(this.targetEl);\n    }\n\n    if (Toggle._targets.get(this.targetEl) === undefined) {\n      this.target = new Toggle.Target(this);\n\n      Toggle._targets.set(this.targetEl, this.target);\n    } else {\n      this.target = Toggle._targets.get(this.targetEl);\n    }\n\n    this.target.addToggle(this);\n    this.target.close();\n  }\n\n  open() {\n    this.toggleEl.setAttribute('aria-expanded', 'true');\n  }\n\n  close() {\n    this.toggleEl.setAttribute('aria-expanded', 'false');\n  } // toggle is bound to the Toggle instance in the constructor\n\n\n  toggle(e) {\n    this.target.toggle();\n\n    if (e) {\n      e.preventDefault();\n    }\n\n    if (this.callback) {\n      var stateName = this.target.isOpen() ? 'open' : 'close';\n      this.callback(stateName, e);\n    }\n  }\n\n  destroy() {\n    if (this.toggleEl.nodeName === 'A') {\n      this.toggleEl.removeEventListener('keydown', handleSpaceKeydown);\n    }\n\n    this.toggleEl.removeEventListener('click', this.toggle);\n    this.toggleEl.removeAttribute('aria-expanded');\n    this.toggleEl.removeAttribute('role');\n    this.toggleEl.removeAttribute('data-o-toggle--js');\n    this.target.removeToggle(this);\n    this.target = undefined;\n    this.toggleEl = undefined;\n    this.callback = undefined;\n  }\n\n  static init(el, config) {\n    if (!el) {\n      el = document.body;\n    } else if (!(el instanceof HTMLElement)) {\n      el = document.querySelector(el);\n    }\n\n    var toggleEls = el.querySelectorAll('[data-o-component=\"o-toggle\"]');\n    var toggles = [];\n\n    for (var toggleEl of toggleEls) {\n      if (!toggleEl.hasAttribute('data-o-toggle--js')) {\n        toggles.push(new Toggle(toggleEl, config));\n      }\n    }\n\n    return toggles;\n  }\n\n}\n\nToggle.Target = _target.default;\nvar _default = Toggle;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nclass Target {\n  constructor(toggle) {\n    this.targetEl = toggle.targetEl;\n    this.toggles = [];\n  }\n\n  addToggle(toggle) {\n    this.toggles.push(toggle);\n  }\n\n  removeToggle(toggle) {\n    var togglePosition = this.toggles.indexOf(toggle);\n    this.toggles = this.toggles.slice(0, togglePosition).concat(this.toggles.slice(togglePosition + 1));\n\n    if (this.toggles.length === 0) {\n      // If that was the last/only toggle that controlled this target then ensure\n      // this target is open so it doesn't get stuck in the closed position\n      this.open();\n    }\n  }\n\n  open() {\n    this.targetEl.setAttribute('aria-hidden', 'false');\n    this.targetEl.classList.add('o-toggle--active'); // Set every toggle that controls this target to be open\n\n    this.toggles.forEach(toggle => {\n      toggle.open();\n    });\n  }\n\n  close() {\n    this.targetEl.setAttribute('aria-hidden', 'true');\n    this.targetEl.classList.remove('o-toggle--active'); // Set every toggle that controls this target to be closed\n\n    this.toggles.forEach(toggle => {\n      toggle.close();\n    });\n  }\n\n  toggle() {\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  isOpen() {\n    return this.targetEl.classList.contains('o-toggle--active');\n  }\n\n}\n\nvar _default = Target;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.show = show;\nexports.hide = hide;\nexports.default = void 0;\nvar INTENT_ENTER = 300;\nvar INTENT_LEAVE = 400;\nvar expanded = [];\n\nfunction addEvents(parent, menu) {\n  var timeout;\n  parent.addEventListener('mouseenter', () => {\n    clearTimeout(timeout);\n\n    if (isOpen(menu)) {\n      return;\n    }\n\n    timeout = setTimeout(() => {\n      if (expanded.length) {\n        hide(expanded[0]);\n        show(menu, false);\n      } else {\n        show(menu, true);\n      }\n    }, INTENT_ENTER);\n  });\n  parent.addEventListener('mouseleave', () => {\n    clearTimeout(timeout);\n    timeout = setTimeout(() => isOpen(menu) && hide(menu), INTENT_LEAVE);\n  });\n}\n\nfunction isOpen(menu) {\n  return expanded.indexOf(menu) !== -1;\n}\n\nfunction show(menu, animate) {\n  if (animate) {\n    menu.classList.add('o-header__mega--animation');\n  }\n\n  menu.setAttribute('aria-hidden', 'false');\n  menu.setAttribute('aria-expanded', 'true');\n  menu.dispatchEvent(new CustomEvent('oHeader.MegaMenuShow', {\n    bubbles: true\n  }));\n  expanded.push(menu);\n}\n\nfunction hide(menu) {\n  menu.classList.remove('o-header__mega--animation');\n  menu.setAttribute('aria-hidden', 'true');\n  menu.setAttribute('aria-expanded', 'false');\n  menu.dispatchEvent(new CustomEvent('oHeader.MegaMenuHide', {\n    bubbles: true\n  }));\n  expanded.splice(expanded.indexOf(menu), 1);\n}\n\nfunction init(headerEl) {\n  var menus = Array.from(headerEl.querySelectorAll('[data-o-header-mega]'));\n  var parents = menus.map(menu => menu.parentNode);\n  menus.forEach(menu => {\n    menu.setAttribute('aria-hidden', 'true');\n    menu.setAttribute('aria-expanded', 'false');\n  });\n  parents.forEach((parent, i) => addEvents(parent, menus[i]));\n}\n\nvar _default = {\n  init,\n  show,\n  hide\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.handleCloseEvents = handleCloseEvents;\nexports.default = void 0;\n\nvar _oToggle = _interopRequireDefault(require(\"@financial-times/o-toggle\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LISTEN_DELAY = 300;\nvar INTENT_DELAY = 1000;\n\nfunction handleCloseEvents(scope, callback, allFocusable) {\n  var timeout;\n\n  var handleKeydown = e => {\n    if (e.keyCode === 27) {\n      callback();\n    }\n  };\n\n  var handleClick = e => {\n    if (!scope.contains(e.target)) {\n      callback();\n    }\n  };\n\n  var handleMouseenter = () => {\n    clearTimeout(timeout);\n  };\n\n  var handleMouseleave = () => {\n    // IE 11 mobile fires a mouseleave event when the search box gets focus. This means when the user tries\n    // to use the search box, it disappears because the drawer closes.\n    // Mouseout events should only occur when the drawer takes up less than 100% of the window, so we can ignore\n    // any events triggered if the width of the drawer is equal to or bigger than the window.innerwidth\n    if (window.innerWidth >= scope.offsetWidth) {\n      timeout = setTimeout(callback, INTENT_DELAY);\n    }\n  };\n\n  var handleFocus = e => {\n    var target = e.relatedTarget || e.target;\n\n    if (!scope.contains(target)) {\n      scope.focus();\n    }\n  };\n\n  var handleTab = e => {\n    if (e.keyCode === 9) {\n      var firstEl = allFocusable[0];\n      var lastEl = allFocusable[allFocusable.length - 1]; // Keep focus within the drawer when tabbing for a11y reasons.\n\n      if (!e.shiftKey && e.target === lastEl) {\n        firstEl.focus();\n        e.preventDefault();\n      } else if (e.shiftKey && e.target === firstEl) {\n        // loop to the bottom when shift+tabbing.\n        lastEl.focus();\n        e.preventDefault();\n      }\n    }\n  };\n\n  var removeEvents = () => {\n    clearTimeout(timeout);\n    scope.removeEventListener('mouseenter', handleMouseenter);\n    scope.removeEventListener('mouseleave', handleMouseleave);\n    document.removeEventListener('click', handleClick);\n    document.removeEventListener('touchstart', handleClick);\n    document.removeEventListener('keydown', handleKeydown);\n    document.removeEventListener('focusin', handleFocus);\n    document.removeEventListener('focusout', handleFocus);\n    scope.removeEventListener('keydown', handleTab);\n  };\n\n  var addEvents = () => {\n    scope.addEventListener('mouseenter', handleMouseenter);\n    scope.addEventListener('mouseleave', handleMouseleave);\n    document.addEventListener('click', handleClick);\n    document.addEventListener('touchstart', handleClick);\n    document.addEventListener('keydown', handleKeydown); // Firefox doesn't support focusin or focusout\n    // https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\n    document.addEventListener('focusin', handleFocus);\n    document.addEventListener('focusout', handleFocus);\n    scope.addEventListener('keydown', handleTab);\n  };\n\n  return {\n    addEvents,\n    removeEvents,\n    handleMouseleave\n  };\n}\n\nfunction addDrawerToggles(drawerEl, allFocusable) {\n  var controls = Array.from(document.body.querySelectorAll(\"[aria-controls=\\\"\".concat(drawerEl.id, \"\\\"]\")));\n  var handleClose;\n  var openingControl;\n\n  function toggleCallback(state, e) {\n    if (state === 'close') {\n      toggleTabbing(drawerEl, false, allFocusable);\n      handleClose.removeEvents();\n      openingControl.focus();\n    } else {\n      toggleTabbing(drawerEl, true, allFocusable); // don't capture the initial click or accidental double taps etc.\n      // we could use transitionend but scoping is tricky and it needs prefixing and...\n\n      setTimeout(handleClose.addEvents, LISTEN_DELAY); // record the opening control so we can send focus back to it when closing the drawer\n\n      openingControl = e.currentTarget; // aria-controls is only supported by JAWS.\n      // In a setTimeout callback to avoid flickering transitions in Chrome (v54)\n\n      setTimeout(() => {\n        // Don't focus on the drawer itself or iOS VoiceOver will miss it\n        // Focus on the first focusable element\n        var firstFocusable = drawerEl.querySelector('a, button, input, select');\n\n        if (firstFocusable) {\n          firstFocusable.focus();\n        } else {\n          drawerEl.focus();\n        }\n      });\n    }\n\n    drawerEl.classList.toggle('o-header__drawer--closing', state === 'close');\n    drawerEl.classList.toggle('o-header__drawer--opening', state === 'open');\n  }\n\n  controls.forEach(control => {\n    var drawerToggle = new _oToggle.default(control, {\n      target: drawerEl,\n      callback: toggleCallback\n    }); // Both toggles have the same target, so the toggle function will be the same\n    // If there's a separate handleClose instance for each toggle, removeEvents doesn't work\n    // when the close toggle is clicked\n\n    if (!handleClose) {\n      handleClose = handleCloseEvents(drawerEl, drawerToggle.toggle, allFocusable);\n    }\n  }); // make the drawer programmatically focusable\n\n  drawerEl.tabIndex = -1;\n}\n\nfunction addSubmenuToggles(drawerEl) {\n  var submenus = drawerEl.querySelectorAll('[id^=\"o-header-drawer-child-\"]');\n  Array.from(submenus).forEach(submenu => {\n    var button = drawerEl.querySelector(\"[aria-controls=\\\"\".concat(submenu.id, \"\\\"]\"));\n    submenu.setAttribute('aria-hidden', 'true');\n    new _oToggle.default(button, {\n      target: submenu,\n      callback: state => {\n        button.textContent = button.textContent.replace(/fewer|more/, state === 'open' ? 'fewer' : 'more');\n      }\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.\n\n\nfunction toggleTabbing(drawerEl, isEnabled, allFocusable) {\n  if (isEnabled) {\n    allFocusable.forEach(el => {\n      el.removeAttribute('tabindex');\n    });\n  } else {\n    allFocusable.forEach(el => {\n      el.setAttribute('tabindex', '-1');\n    });\n  }\n}\n\nfunction init() {\n  var drawerEl = document.body.querySelector('[data-o-header-drawer]');\n\n  if (!drawerEl) {\n    return;\n  }\n\n  var allFocusable = Array.from(drawerEl.querySelectorAll('a, button, input, select'));\n  toggleTabbing(drawerEl, false, allFocusable);\n  addSubmenuToggles(drawerEl);\n  addDrawerToggles(drawerEl, allFocusable); // Wrap in a timeout to stop page load stall in Chrome v73 on Android\n  // toggleTabbing and the removal of the no-js attribute spikes the CPU\n  // and causes the main process to block for around 10 seconds.\n\n  setTimeout(() => {\n    drawerEl.removeAttribute('data-o-header-drawer--no-js');\n    drawerEl.setAttribute('data-o-header-drawer--js', 'true');\n  });\n}\n\nvar _default = {\n  init,\n  handleCloseEvents\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.default = void 0;\n\nvar oUtils = _interopRequireWildcard(require(\"@financial-times/o-utils\"));\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 init(headerEl) {\n  var subnav = headerEl.querySelector('[data-o-header-subnav]');\n\n  if (subnav === null) {\n    return;\n  }\n\n  var buttons = Array.from(subnav.getElementsByTagName('button'));\n  var wrapper = subnav.querySelector('[data-o-header-subnav-wrapper]');\n  var scrollWidth;\n  var wrapperWidth = wrapper.clientWidth;\n\n  function checkCurrentPosition() {\n    var currentSelection = wrapper.querySelector('[aria-current]');\n\n    if (currentSelection) {\n      var currentSelectionEnd = currentSelection.getBoundingClientRect().right; //if the current selection is wider than the end of the wrapper\n\n      if (currentSelectionEnd > wrapperWidth) {\n        // check by how much\n        var diff = currentSelectionEnd - wrapperWidth; // if the difference is greater than half of the wrapper, scroll to the end of the current selection.\n\n        diff = diff > wrapperWidth / 2 ? currentSelectionEnd : wrapperWidth / 2;\n        wrapper.scrollTo(diff, 0);\n      }\n    }\n\n    scrollable();\n  }\n\n  function direction(button) {\n    return button.className.match(/left|right/).pop();\n  }\n\n  function scrollable() {\n    scrollWidth = wrapper.scrollWidth;\n    buttons.forEach(button => {\n      if (direction(button) === 'left') {\n        button.disabled = wrapper.scrollLeft === 0;\n      } else {\n        var remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft; // Allow a little difference as scrollWidth is fast, not accurate.\n\n        button.disabled = remaining <= 1;\n      }\n    });\n  }\n\n  function scroll(e) {\n    var distance = 100;\n\n    if (direction(e.currentTarget) === 'left') {\n      distance = (wrapper.scrollLeft > distance ? distance : wrapper.scrollLeft) * -1;\n    } else {\n      var remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n      distance = remaining > distance ? distance : remaining;\n    }\n\n    wrapper.scrollLeft = wrapper.scrollLeft + distance;\n    scrollable();\n  }\n\n  wrapper.addEventListener('scroll', oUtils.throttle(scrollable, 100));\n  window.addEventListener('oViewport.resize', scrollable);\n  buttons.forEach(button => {\n    button.onclick = scroll;\n  });\n  checkCurrentPosition();\n}\n\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = init;\nexports.default = void 0;\n\nvar _oUtils = require(\"@financial-times/o-utils\");\n\nfunction init(headerEl) {\n  if (!headerEl.hasAttribute('data-o-header--sticky')) {\n    return;\n  }\n\n  var viewportOffset;\n  var lastScrollDepth;\n  var lastAnimationFrame;\n  var lastStickyState;\n\n  function handleFrame() {\n    // sticky el will appear when scrolled down from page top to\n    // (arbitrarily) > half the viewport height\n    var scrollDepth = window.pageYOffset || window.scrollY;\n    var isActive = scrollDepth > viewportOffset;\n    headerEl.classList.toggle('o-header--sticky-active', isActive);\n\n    if (isActive !== lastStickyState) {\n      lastStickyState = isActive;\n      headerEl.dispatchEvent(new CustomEvent('oHeader.Sticky', {\n        bubbles: true,\n        detail: {\n          isActive\n        }\n      }));\n    } // allow a little wiggling room so we don't get too hasty toggling up/down state\n\n\n    if (Math.abs(scrollDepth - lastScrollDepth) > 20) {\n      var isScrollingDown = lastScrollDepth < scrollDepth;\n      headerEl.classList.toggle('o-header--sticky-scroll-down', isActive && isScrollingDown);\n      headerEl.classList.toggle('o-header--sticky-scroll-up', isActive && !isScrollingDown);\n    }\n\n    lastScrollDepth = scrollDepth;\n  }\n\n  function startLoop() {\n    viewportOffset = window.innerHeight / 2;\n    lastAnimationFrame = window.requestAnimationFrame(() => {\n      handleFrame();\n      startLoop();\n    });\n  }\n\n  function stopLoop() {\n    if (lastAnimationFrame) {\n      window.cancelAnimationFrame(lastAnimationFrame);\n    }\n  }\n\n  function scrollStart() {\n    window.removeEventListener('scroll', scrollStart);\n    window.addEventListener('scroll', debouncedScrollEnd);\n    startLoop();\n  }\n\n  function scrollEnd() {\n    stopLoop();\n    window.removeEventListener('scroll', debouncedScrollEnd);\n    window.addEventListener('scroll', scrollStart);\n  }\n\n  var debouncedScrollEnd = (0, _oUtils.debounce)(scrollEnd, 300);\n  window.addEventListener('scroll', scrollStart);\n  handleFrame();\n}\n\nvar _default = {\n  init\n};\nexports.default = _default;","'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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.api = exports.default = void 0;\n\n/**\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 */\nvar c = 0;\nvar blockSize = 4;\nvar base = 36;\nvar discreteValues = Math.pow(base, blockSize);\n\nvar pad = function pad(num, size) {\n  var s = \"000000000\" + num;\n  return s.substr(s.length - size);\n};\n\nvar randomBlock = function randomBlock() {\n  return pad((Math.random() * discreteValues << 0).toString(base), blockSize);\n};\n\nvar safeCounter = () => {\n  c = c < discreteValues ? c : 0;\n  c++; // this is not subliminal\n\n  return c - 1;\n};\n\nvar api = function cuid() {\n  // Starting with a lowercase letter makes\n  // it HTML element ID friendly.\n  // hard-coded allows for sequential access\n  var letter = 'c'; // timestamp\n  // warning: this exposes the exact date and time\n  // that the uid was created.\n\n  var timestamp = new Date().getTime().toString(base); // Prevent same-machine collisions.\n\n  var counter; // A few chars to generate distinct ids for different\n  // clients (so different computers are far less\n  // likely to generate the same id)\n\n  var fingerprint = api.fingerprint(); // Grab some more chars from Math.random()\n\n  var random = randomBlock() + randomBlock();\n  counter = pad(safeCounter().toString(base), blockSize);\n  return letter + timestamp + counter + fingerprint + random;\n};\n\nexports.api = api;\n\napi.slug = function slug() {\n  var date = new Date().getTime().toString(36);\n  var counter;\n  var print = api.fingerprint().slice(0, 1) + api.fingerprint().slice(-1);\n  var random = randomBlock().slice(-2);\n  counter = safeCounter().toString(36).slice(-4);\n  return date.slice(-2) + counter + print + random;\n};\n\napi.globalCount = function globalCount() {\n  // We want to cache the results of this\n  var cache = function calc() {\n    var count = 0;\n\n    for (var i in window) {\n      // eslint-disable-line no-unused-vars, guard-for-in\n      count++;\n    }\n\n    return count;\n  }();\n\n  api.globalCount = () => cache;\n\n  return cache;\n};\n\napi.fingerprint = function browserPrint() {\n  return pad((navigator.mimeTypes.length + navigator.userAgent.length).toString(36) + api.globalCount().toString(36), 4);\n};\n\nvar _default = api;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.get = get;\nObject.defineProperty(exports, \"xhr\", {\n  enumerable: true,\n  get: function get() {\n    return _xhr.default;\n  }\n});\nObject.defineProperty(exports, \"sendBeacon\", {\n  enumerable: true,\n  get: function get() {\n    return _sendBeacon.default;\n  }\n});\nObject.defineProperty(exports, \"image\", {\n  enumerable: true,\n  get: function get() {\n    return _image.default;\n  }\n});\nexports.default = void 0;\n\nvar _xhr = _interopRequireDefault(require(\"./xhr\"));\n\nvar _sendBeacon = _interopRequireDefault(require(\"./send-beacon\"));\n\nvar _image = _interopRequireDefault(require(\"./image\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction get(name) {\n  return this.mock || this[name];\n}\n\nvar _default = {\n  xhr: _xhr.default,\n  sendBeacon: _sendBeacon.default,\n  image: _image.default,\n  get\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.xhr = xhr;\nexports.default = void 0;\n\nfunction xhr() {\n  var xhr = new window.XMLHttpRequest();\n  return {\n    name: 'xhr',\n    send: function send(url, data) {\n      xhr.open('POST', url, true);\n      xhr.withCredentials = true;\n      xhr.setRequestHeader('Content-type', 'application/json');\n      xhr.send(data);\n    },\n    complete: function complete(callback) {\n      xhr.onerror = function () {\n        callback(this);\n      };\n\n      xhr.onload = function () {\n        if (xhr.status >= 200 && xhr.status < 300) {\n          callback();\n        } else {\n          callback('Incorrect response: ' + xhr.status);\n        }\n      };\n    }\n  };\n}\n\nvar _default = xhr;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sendBeacon = sendBeacon;\nexports.default = void 0;\n\nfunction sendBeacon() {\n  var resolver;\n  var rejecter;\n  var p = new Promise((resolve, reject) => {\n    resolver = resolve;\n    rejecter = reject;\n  });\n  return {\n    name: 'sendBeacon',\n    send: function send(url, data) {\n      if (navigator.sendBeacon(url, data)) {\n        resolver();\n      } else {\n        rejecter(new Error('Failed to send beacon event: ' + data.toString()));\n      }\n    },\n    complete: function complete(callback) {\n      if (callback) {\n        p.then(callback, callback);\n      }\n    }\n  };\n}\n\nvar _default = sendBeacon;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.image = image;\nexports.default = void 0;\n\nvar _utils = _interopRequireDefault(require(\"../../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction image() {\n  var image = new Image(1, 1);\n  return {\n    name: 'image',\n    send: function send(url, data) {\n      url = url.replace('https://spoor-api.ft.com/ingest', 'https://spoor-api.ft.com/px.gif');\n      image.src = url + (url.indexOf('?') > -1 ? '&' : '?') + 'data=' + _utils.default.encode(data);\n    },\n    complete: function complete(callback) {\n      if (image.addEventListener) {\n        image.addEventListener('error', callback);\n        image.addEventListener('load', () => callback());\n      } else {\n        // it's IE!\n        image.attachEvent('onerror', callback);\n        image.attachEvent('onload', () => callback());\n      }\n    }\n  };\n}\n\nvar _default = image;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.event = event;\nexports.default = void 0;\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Default properties for events.\n *\n * @type {Object}\n * @return {Object} - Default configuration for events\n */\nvar defaultEventConfig = function defaultEventConfig() {\n  return {\n    category: 'event',\n    action: 'generic',\n    context: {}\n  };\n};\n/**\n * Track an event.\n *\n * @param {Event} trackingEvent - The event, which could the following properties in its 'detail' key:\n *   [category] - The category, for example: video\n *   [action] - The action performed, for example: play\n *   [component_id] - Optional. The ID for the component instance.\n *\n * @param {Function} callback - Optional, Callback function. Called when request completed.\n * @return {undefined}\n */\n\n\nfunction event(trackingEvent, callback) {\n  if (_utils.default.is(trackingEvent.detail.category) || _utils.default.is(trackingEvent.detail.action)) {\n    var noCategoryActionVals = 'Missing category or action values';\n\n    _utils.default.broadcast('oErrors', 'log', {\n      error: noCategoryActionVals,\n      info: {\n        module: 'o-tracking'\n      }\n    });\n\n    throw noCategoryActionVals;\n  }\n\n  var config = _utils.default.merge(defaultEventConfig(), {\n    category: trackingEvent.detail.category,\n    action: trackingEvent.detail.action,\n    context: trackingEvent.detail\n  });\n\n  delete config.context.category;\n  delete config.context.action;\n  var origamiElement = getOrigamiEventTarget(trackingEvent);\n\n  if (origamiElement) {\n    config.context.component_name = origamiElement.getAttribute('data-o-component');\n    config.context.component_id = config.context.component_id || getComponentId(origamiElement);\n  }\n\n  _core.default.track(config, callback);\n}\n/**\n * Helper function that gets the target of an event if it's an Origami component\n * @param  {Event} event - The event triggered.\n * @return {HTMLElement|undefined} - Returns the HTML element if an Origami component, else undefined.\n */\n\n\nfunction getOrigamiEventTarget(event) {\n  // IE backwards compatibility (get the actual target). If not IE, uses\n  // `event.target`\n  var element = event.target || event.srcElement;\n\n  if (element && element.getAttribute('data-o-component')) {\n    return element;\n  } else {}\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 * @return {string} hash\n */\n\n\nfunction getComponentId(element) {\n  var path = _getElementPath(element);\n\n  if (typeof path === 'undefined') {\n    return;\n  } // Select the source element (first item in the ordered sequence `path`)\n\n\n  var srcElement = path[0]; // Because, you could have two identical elements in the DOM as siblings,\n  // we need to determine the 'sibling index': the order they're sitting within a DOM node.\n  // Although in reality this is unlikely to always be the same, it's just a\n  // best guess - unless child elements are always appended to an element rather than added as the first child.\n\n  var siblingIndex = function getSiblingIndex(element) {\n    var srcParent = element.parentElement;\n\n    if (srcParent) {\n      for (var i = 0; i < srcParent.childNodes.length; i++) {\n        if (srcParent.childNodes[i] === srcElement) {\n          return i;\n        }\n      }\n\n      return -1;\n    } else {\n      return 0;\n    }\n  }(srcElement); // Generate a normalised string (normalising browser quirks) from the sequence of elements\n\n\n  var normalisedStringPath = path.reduceRight(function (builder, el) {\n    if (!el.nodeName) {\n      return builder + ' - ' + el.constructor.name + '\\n';\n    }\n\n    var nodeName = el.nodeName.toLowerCase(); // In some browsers, document is prepended with a '#'\n\n    if (nodeName.indexOf('#') === 0) {\n      return builder + '<' + nodeName + '>';\n    } // 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\n\n    return builder + '<' + nodeName + ' id=\"' + (el.id || '') + '\">';\n  }, ''); // Append a sibling index to the string and use some simple, off the shelf string hashing algorithm.\n\n  return _generateHash(normalisedStringPath + '_siblingIndex=' + siblingIndex);\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 * @return {array} The xpath\n */\n\n\nfunction _getElementPath(element) {\n  var path = [];\n\n  while (element) {\n    path.push(element);\n    element = element.parentElement;\n  }\n\n  return path;\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 * @return {number} 32-bit positive integer hash\n *\n * @private\n */\n\n\nfunction _generateHash(str) {\n  var l = str.length;\n  var h = 1 ^ l;\n  var i = 0;\n  var k;\n\n  while (l >= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    k ^= k >>> 24;\n    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n    h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n    l -= 4;\n    ++i;\n  }\n\n  switch (l) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n      break;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n      break;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n      break;\n\n    default:\n      break;\n  }\n\n  h ^= h >>> 13;\n  h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n  h ^= h >>> 15;\n  return h >>> 0;\n}\n\nvar init = function init() {\n  _utils.default.addEvent(window, 'oTracking.event', event);\n};\n\nevent.init = init;\nvar _default = event;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.page = page;\nexports.default = void 0;\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _settings = _interopRequireDefault(require(\"../core/settings\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_settings.default.set('page_viewed', false);\n/**\n * Default properties for page tracking requests.\n *\n * @return {Object} - The default properties for pages.\n */\n\n\nvar defaultPageConfig = function defaultPageConfig() {\n  return {\n    category: 'page',\n    action: 'view',\n    context: {\n      url: document.URL,\n      referrer: document.referrer\n    },\n    async: true // Send this event asyncronously - as sync doesn't work in FF, as it doesn't send cookies. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials\n\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 * @return {undefined}\n */\n\n\nfunction page(config, callback) {\n  config = _utils.default.merge(defaultPageConfig(), {\n    context: config\n  }); // New PageID for a new Page... Unless... It's the first pageview, and some events may have been sent before this.\n\n  if (_settings.default.get('page_viewed')) {\n    _core.default.setRootID();\n  }\n\n  _core.default.track(config, callback); // Alert internally that a new page has been tracked - for single page apps for example.\n\n\n  _settings.default.set('page_viewed', true);\n\n  _utils.default.triggerPage();\n}\n/**\n * Listener for pages.\n *\n * @param {CustomEvent} e - The CustomEvent\n * @private\n * @return {undefined}\n */\n\n\nfunction listener(e) {\n  page(e.detail);\n}\n\nvar init = function init() {\n  _utils.default.addEvent(window, 'oTracking.page', listener);\n};\n\npage.init = init;\nvar _default = page;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = exports.default = void 0;\n\nvar _ftdomdelegate = _interopRequireDefault(require(\"ftdomdelegate\"));\n\nvar _queue = _interopRequireDefault(require(\"../core/queue\"));\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nvar _settings = _interopRequireDefault(require(\"../core/settings\"));\n\nvar _getTrace = _interopRequireDefault(require(\"../../libs/get-trace\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar internalQueue;\nvar eventPropertiesToCollect = [\"ctrlKey\", \"altKey\", \"shiftKey\", \"metaKey\"]; // Trigger the event tracking\n\nvar track = eventData => {\n  var firstDomPathToken = eventData.context.domPathTokens[0];\n  var href = firstDomPathToken.href || null;\n  var oTrackingSkipQueueAttr = firstDomPathToken['data-o-tracking-skip-queue'];\n  var skipQueue = oTrackingSkipQueueAttr && oTrackingSkipQueueAttr.toLowerCase() === 'true' || false;\n  var isInternal = href && href.indexOf(window.document.location.hostname) > -1;\n\n  if (isInternal && !skipQueue) {\n    eventData.context.source_id = _core.default.getRootID(); // Queue the event and send it on the next page load\n\n    internalQueue.add(eventData).save();\n  } else {\n    // Send now, before leaving this page\n    eventData.async = false;\n\n    _core.default.track(eventData);\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.\n\n\nvar getEventProperties = event => {\n  var eventProperties = eventPropertiesToCollect.reduce((returnObject, property) => {\n    try {\n      if (event[property]) {\n        returnObject[property] = _utils.default.sanitise(event[property]);\n      }\n    } catch (e) {\n      console.log(e);\n    }\n\n    return returnObject;\n  }, {});\n  return eventProperties;\n}; // Controller for handling click events\n\n\nvar handleClickEvent = eventData => (clickEvent, clickElement) => {\n  //we don't want to track clicks to anonymous services like securedrop\n  if (clickElement.getAttribute(\"data-o-tracking-do-not-track\") === \"true\") {\n    return;\n  }\n\n  var context = getEventProperties(clickEvent);\n  var {\n    trace,\n    customContext\n  } = (0, _getTrace.default)(clickElement);\n  context.domPathTokens = trace;\n  context.url = window.document.location.href || null;\n\n  _utils.default.assignIfUndefined(customContext, context);\n\n  eventData.context = context; // Merge the event data into the \"parent\" config data\n\n  var config = _utils.default.merge(_settings.default.get('config'), eventData);\n\n  track(config);\n};\n/**\n * If there are any requests queued, attempts to send the next one\n * Otherwise, does nothing\n * @return {undefined}\n */\n\n/*eslint-disable no-unused-vars*/\n\n\nvar runQueue = _ => {\n  var next = _ => {\n    runQueue();\n  };\n\n  var nextLink = internalQueue.shift();\n\n  if (nextLink) {\n    _core.default.track(nextLink, next);\n  }\n};\n/*eslint-enable no-unused-vars*/\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 * @return {undefined}\n */\n\n\nvar init = (category, elementsToTrack) => {\n  elementsToTrack = elementsToTrack || 'a, button, input, [role=\"button\"]'; // See https://github.com/ftlabs/ftdomdelegate#selector-string\n  // Note: `context` is the term o-tracking uses for the data that is sent to spoor\n\n  var eventData = {\n    action: 'click',\n    category: category || 'o-tracking'\n  }; // Activate the click event listener\n\n  var delegate = new _ftdomdelegate.default(document.body);\n  delegate.on('click', elementsToTrack, handleClickEvent(eventData), true); // Track any queued events\n\n  internalQueue = new _queue.default('clicks');\n  runQueue(); // Listen for page requests. If this is a single page app, we can send link requests now.\n\n  _utils.default.onPage(runQueue);\n};\n\nexports.init = init;\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.init = exports.default = void 0;\n\nvar _core = _interopRequireDefault(require(\"../core\"));\n\nvar _getTrace = _interopRequireDefault(require(\"../../libs/get-trace\"));\n\nvar _utils = _interopRequireDefault(require(\"../utils\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TRACKING_ATTRIBUTES = ['componentContentId', 'type', 'subtype', 'component'];\n\nvar decorateEventData = (eventData, viewedEl, opts) => {\n  var {\n    trace,\n    customContext\n  } = (0, _getTrace.default)(viewedEl);\n  var context;\n\n  if (opts.getContextData) {\n    if (typeof opts.getContextData !== 'function') {\n      throw new Error('opts.getContextData is not a function');\n    }\n\n    var dataBeforeWhitelist = opts.getContextData(viewedEl);\n\n    if (typeof dataBeforeWhitelist !== 'object') {\n      throw new Error('opts.getContextData function should return {Object}');\n    }\n\n    context = _utils.default.whitelistProps(dataBeforeWhitelist, TRACKING_ATTRIBUTES);\n  } else {\n    context = {};\n  }\n\n  context.domPathTokens = trace;\n  context.url = window.document.location.href || null;\n\n  _utils.default.assignIfUndefined(customContext, context);\n\n  eventData.context = context;\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 * @return {undefined}\n */\n\n\nvar init = function init() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n  if (!window.IntersectionObserver) {\n    console.warn('o-tracking: Unable to track component view events as \"window.IntersectionObserver\" is not supported.');\n    return;\n  }\n\n  var selector = opts.selector || '[data-o-tracking-view]';\n  var elementsToTrack = [...document.querySelectorAll(selector)];\n\n  if (!elementsToTrack.length) {\n    return;\n  }\n\n  function onChange(changes) {\n    changes.forEach(change => {\n      if (change.isIntersecting || change.intersectionRatio > 0) {\n        var eventData = {\n          action: opts.action || 'view',\n          category: opts.category || 'component'\n        };\n        var viewedEl = change.target;\n        decorateEventData(eventData, viewedEl, opts);\n\n        _core.default.track(eventData);\n\n        observer.unobserve(viewedEl);\n      }\n    });\n  }\n\n  var observer = new IntersectionObserver(onChange, {\n    threshold: [1.0]\n  });\n  elementsToTrack.forEach(el => observer.observe(el));\n};\n\nexports.init = init;\nvar _default = {\n  init\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _stream = _interopRequireDefault(require(\"./stream.js\"));\n\nvar _count = _interopRequireDefault(require(\"./count.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nclass Comments {\n  constructor(rootEl, opts) {\n    this.options = Object.assign({}, {}, opts || Comments.getDataAttributes(rootEl));\n    var isCount = rootEl.getAttribute('data-o-comments-count') === 'true';\n\n    if (!this.options.articleId) {\n      console.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    }\n\n    if (!this.options.articleUrl) {\n      console.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    }\n\n    if (!this.options.title) {\n      console.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    }\n\n    if (isCount) {\n      var count = new _count.default(rootEl, this.options);\n      count.renderCount();\n      return count;\n    } else {\n      var stream = new _stream.default(rootEl, this.options);\n      stream.init();\n      return stream;\n    }\n  }\n\n  static getCount(id) {\n    return _count.default.fetchCount(id);\n  }\n  /**\n   * Get the data attributes from the element. If the component is being set up\n   * declaratively, this method is used to extract the data attributes from the DOM.\n   *\n   * @param {HTMLElement} rootEl - The component element in the DOM\n   * @returns {Object} - Data attributes as an object\n   */\n\n\n  static getDataAttributes(rootEl) {\n    if (!(rootEl instanceof HTMLElement)) {\n      return {};\n    }\n\n    return Object.keys(rootEl.dataset).reduce((options, key) => {\n      // Ignore data-o-component\n      if (key === 'oComponent') {\n        return options;\n      } // Build a concise key and get the option value\n\n\n      var shortKey = key.replace(/^oComments(\\w)(\\w+)$/, (m, m1, m2) => m1.toLowerCase() + m2);\n      var value = rootEl.dataset[key]; // Try parsing the value as JSON, otherwise just set it as a string\n\n      try {\n        options[shortKey] = JSON.parse(value.replace(/\\'/g, '\"'));\n      } catch (error) {\n        options[shortKey] = value;\n      }\n\n      return options;\n    }, {});\n  }\n  /**\n   * Initialise the component.\n   *\n   * @param {(HTMLElement|String)} rootEl - The root element to intialise the component in, or a CSS selector for the root element\n   * @param {Object} [opts={}] - An options object for configuring the component\n   * @returns {(Comments|Array<Comments>)} - Comments instance(s)\n   */\n\n\n  static init(rootEl, opts) {\n    if (!rootEl) {\n      rootEl = document.body;\n    }\n\n    if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    if (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-comments]')) {\n      return new Comments(rootEl, opts);\n    }\n\n    return Array.from(rootEl.querySelectorAll('[data-o-component=\"o-comments\"]'), rootEl => new Comments(rootEl, opts));\n  }\n\n}\n\nvar _default = Comments;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar events = _interopRequireWildcard(require(\"./utils/events.js\"));\n\nvar displayName = _interopRequireWildcard(require(\"./utils/display-name.js\"));\n\nvar auth = _interopRequireWildcard(require(\"./utils/auth.js\"));\n\nvar _purgeJwtCache = _interopRequireDefault(require(\"./utils/purge-jwt-cache.js\"));\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\nclass Stream {\n  /**\n   * Class constructor.\n   *\n   * @param {HTMLElement} [streamEl] - The component element in the DOM\n   * @param {Object} [opts={}] - An options object for configuring the component\n   */\n  constructor(streamEl) {\n    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.streamEl = streamEl || document;\n    this.options = opts;\n    this.eventSeenTimes = {};\n    this.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n  }\n\n  init() {\n    var renderAndAuthenticate = displayName => {\n      return Promise.all([this.renderComments(), this.authenticateUser(displayName)]).then(() => {\n        this.login();\n      });\n    };\n\n    return displayName.validation(this.options.displayName).then(displayName => renderAndAuthenticate(displayName)).catch(() => renderAndAuthenticate());\n  }\n\n  login() {\n    if (this.authenticationToken) {\n      this.embed.login(this.authenticationToken);\n\n      if (this.displayName) {\n        this.renderSignedInMessage();\n      }\n    }\n  }\n\n  authenticateUser(displayName) {\n    var fetchOptions = {\n      useStagingEnvironment: this.useStagingEnvironment\n    };\n\n    if (displayName) {\n      fetchOptions.displayName = displayName;\n    }\n\n    return auth.fetchJsonWebToken(fetchOptions).then(response => {\n      this.displayName = response.displayName;\n\n      if (response.token) {\n        this.authenticationToken = response.token;\n      } else {\n        this.userHasValidSession = response.userHasValidSession;\n      }\n    }).catch(() => {\n      return false;\n    });\n  }\n\n  renderComments() {\n    return new Promise(resolve => {\n      try {\n        /*global Coral*/\n        var scriptElement = document.createElement('script');\n        scriptElement.src = this.useStagingEnvironment ? 'https://ft.staging.coral.coralproject.net/assets/js/embed.js' : 'https://ft.coral.coralproject.net/assets/js/embed.js';\n        var rootUrl = this.useStagingEnvironment ? 'https://ft.staging.coral.coralproject.net' : 'https://ft.coral.coralproject.net';\n\n        scriptElement.onload = () => {\n          this.embed = Coral.createStreamEmbed({\n            id: this.streamEl.id,\n            storyURL: this.options.articleUrl,\n            storyID: this.options.articleId,\n            rootURL: rootUrl,\n            autoRender: true,\n            events: _events => {\n              _events.onAny((name, data) => {\n                this.publishEvent({\n                  name,\n                  data\n                });\n              });\n            }\n          });\n          resolve();\n        };\n\n        this.streamEl.parentNode.appendChild(scriptElement);\n\n        if (this.useStagingEnvironment) {\n          var stagingWarning = document.createElement('div');\n          stagingWarning.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          this.streamEl.parentNode.insertBefore(stagingWarning, this.streamEl);\n        }\n\n        document.dispatchEvent(new Event('oCommentsReady'));\n      } catch (error) {\n        resolve();\n      }\n    });\n  }\n\n  displayNamePrompt() {\n    var {\n      purgeCacheAfterCompletion = false\n    } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var overlay = displayName.prompt();\n\n    var onOverlayReady = event => {\n      var sourceOverlay = event.srcElement;\n      var displayNameForm = sourceOverlay.querySelector('#o-comments-displayname-form');\n\n      if (displayNameForm) {\n        displayNameForm.addEventListener('submit', event => {\n          displayName.promptValidation(event).then(displayName => {\n            overlay.close();\n            this.authenticateUser(displayName).then(() => {\n              this.login();\n            });\n\n            if (purgeCacheAfterCompletion) {\n              (0, _purgeJwtCache.default)();\n            }\n          });\n        });\n      }\n    };\n\n    document.addEventListener('oOverlay.ready', onOverlayReady);\n\n    var onOverlayClosed = () => {\n      overlay.context.removeEventListener('oLayers.close', onOverlayClosed);\n      document.removeEventListener('oOverlay.ready', onOverlayReady);\n      overlay.destroy();\n    };\n\n    overlay.context.addEventListener('oLayers.close', onOverlayClosed);\n  }\n  /**\n   * Emits events that have a valid o-comment event name.\n   *\n   * @param {String} name - The event name\n   * @param {Object} data - The event payload\n   * @returns {void}\n   */\n\n\n  publishEvent(_ref) {\n    var {\n      name,\n      data = {}\n    } = _ref;\n    var {\n      success: {\n        status\n      } = {},\n      error\n    } = data;\n\n    if (name === 'loginPrompt' && this.userHasValidSession) {\n      return this.displayNamePrompt();\n    }\n\n    var mappedEvent = events.coralEventMap.get(name);\n\n    if (mappedEvent) {\n      var now = Number(new Date());\n      var delayInMilliseconds = 100;\n      var eventHasntBeenSeenRecently = !this.eventSeenTimes[mappedEvent.oComments] || now > this.eventSeenTimes[mappedEvent.oComments] + delayInMilliseconds;\n\n      if (eventHasntBeenSeenRecently) {\n        this.eventSeenTimes[mappedEvent.oComments] = now;\n        var oCommentsEventOptions = {\n          bubbles: true\n        };\n\n        if (error) {\n          oCommentsEventOptions.detail = {\n            error\n          };\n        }\n\n        var oCommentsEvent = new CustomEvent(mappedEvent.oComments, oCommentsEventOptions);\n        this.streamEl.dispatchEvent(oCommentsEvent);\n\n        if (mappedEvent.oTracking && !this.options.disableOTracking) {\n          var oTrackingEventOptions = {\n            bubbles: true,\n            detail: {\n              category: 'comment',\n              action: mappedEvent.oTracking,\n              coral: true,\n              isWithheld: status === 'SYSTEM_WITHHELD'\n            }\n          };\n\n          if (error) {\n            oTrackingEventOptions.detail.error = error;\n          }\n\n          var oTrackingEvent = new CustomEvent('oTracking.event', oTrackingEventOptions);\n          document.body.dispatchEvent(oTrackingEvent);\n        }\n      }\n    }\n  }\n\n  renderSignedInMessage() {\n    var editButtonId = \"o-comments-edit-button--\".concat(this.streamEl.id);\n    var signedInMessage = document.createElement('div');\n    signedInMessage.classList.add('o-comments__signed-in-container');\n    signedInMessage.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=\\\"\".concat(editButtonId, \"\\\" class=\\\"o-comments__edit-display-name\\\">Edit</button>\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</p>\");\n    signedInMessage.querySelector('.o-comments__signed-in-inner-text').innerText = this.displayName;\n    var oldSignedInMessage = this.streamEl.parentNode.querySelector('.o-comments__signed-in-container');\n\n    if (oldSignedInMessage) {\n      oldSignedInMessage.remove();\n    }\n\n    this.streamEl.parentNode.insertBefore(signedInMessage, this.streamEl);\n\n    document.getElementById(editButtonId).onclick = () => {\n      this.displayNamePrompt({\n        purgeCacheAfterCompletion: true\n      });\n    };\n  }\n\n}\n\nvar _default = Stream;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.coralEventMap = void 0;\nvar coralEventMap = new Map([['ready', {\n  oComments: 'oComments.ready',\n  oTracking: 'ready'\n}], ['loginPrompt', {\n  oComments: 'oComments.loginPrompt'\n}], ['createComment.success', {\n  oComments: 'oComments.postComment',\n  oTracking: 'post'\n}], ['createComment.error', {\n  oComments: 'oComments.errorComment',\n  oTracking: 'post-error'\n}], ['createCommentReply.success', {\n  oComments: 'oComments.replyComment',\n  oTracking: 'reply'\n}], ['editComment.success', {\n  oComments: 'oComments.editComment',\n  oTracking: 'edit'\n}], ['createCommentReaction.success', {\n  oComments: 'oComments.likeComment',\n  oTracking: 'like'\n}], ['reportComment.success', {\n  oComments: 'oComments.reportComment',\n  oTracking: 'report'\n}], ['ignoreUser.success', {\n  oComments: 'oComments.ignoreUser',\n  oTracking: 'ignore-user'\n}]]);\nexports.coralEventMap = coralEventMap;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.promptValidation = exports.validation = exports.prompt = void 0;\n\nvar _oOverlay = _interopRequireDefault(require(\"@financial-times/o-overlay\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar 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\\\">\\t\\t\\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\nvar isUnique = displayName => {\n  var url = \"https://comments-api.ft.com/displayname/isavailable/\".concat(encodeURIComponent(displayName));\n  return fetch(url, {\n    method: 'GET'\n  }).then(response => response.json()).then((_ref) => {\n    var {\n      available\n    } = _ref;\n    return available;\n  });\n};\n\nvar findInvalidCharacters = displayName => {\n  /*\n   * Allowed Characters\n   * The below regex matches any character not in the allowed characters set\n   * All allowed characters are case insensitive\n   * Anything in the range A-Z or 0-9 is allowed\n   * Any of the below special characters are allowed\n   * !#$%'`()*+,-./:;=@[]^_{|}\n   * Spaces are allowed\n   */\n  var matchInvalidCharacters = /[^0-9a-z!#$%'`()*+,\\-.\\/:;=@[\\]\\^_{}\\|\\s]/gi;\n  var matchingCharacters = displayName.match(matchInvalidCharacters);\n  var uniqueMatchingCharacters = matchingCharacters && matchingCharacters.length ? matchingCharacters.filter((character, position) => matchingCharacters.indexOf(character) === position) : [];\n  return uniqueMatchingCharacters.length ? uniqueMatchingCharacters.join('') : false;\n};\n\nvar prompt = () => {\n  var overlay = new _oOverlay.default('displayName', {\n    html: form,\n    class: 'o-comments__displayname-prompt',\n    compact: true,\n    heading: {\n      title: 'Choose a commenting display name'\n    }\n  });\n  overlay.open();\n  return overlay;\n};\n\nexports.prompt = prompt;\n\nvar validation = displayName => {\n  return new Promise((resolve, reject) => {\n    if (!displayName) {\n      return reject(new Error('Empty display name'));\n    }\n\n    var invalidCharacters = findInvalidCharacters(displayName);\n\n    if (invalidCharacters) {\n      return reject(new Error(\"The display name contains the following invalid characters: \".concat(invalidCharacters)));\n    } else {\n      isUnique(displayName).then(isUnique => {\n        if (!isUnique) {\n          return reject(new Error('Unfortunately that display name is already taken'));\n        } else {\n          return resolve(displayName);\n        }\n      }).catch(() => {\n        var apiError = new Error('Sorry, we are unable to update display names. Please try again later.');\n        apiError.name = 'CommentsApiError';\n        return reject(apiError);\n      });\n    }\n  });\n};\n\nexports.validation = validation;\n\nvar promptValidation = event => {\n  event.preventDefault();\n  return new Promise(resolve => {\n    var displayNameForm = event.srcElement;\n    var input = displayNameForm.querySelector('input');\n    var displayName = input.value.trim();\n    var errorMessage = displayNameForm.querySelector('#o-comments-displayname-error');\n    errorMessage.innerText = '';\n    displayNameForm.classList.remove('o-forms-input--invalid');\n    return validation(displayName).then(displayName => resolve(displayName)).catch(error => {\n      errorMessage.innerText = error.message;\n      displayNameForm.classList.add('o-forms-input--invalid');\n\n      if (error.name === 'CommentsApiError') {\n        throw error;\n      }\n    });\n  });\n};\n\nexports.promptValidation = promptValidation;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _overlay = _interopRequireDefault(require(\"./dist/js/overlay.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar constructAll = function constructAll() {\n  _overlay.default.init();\n\n  document.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nvar _default = _overlay.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _ftdomdelegate = _interopRequireDefault(require(\"ftdomdelegate\"));\n\nvar _oViewport = _interopRequireDefault(require(\"@financial-times/o-viewport\"));\n\nvar _oLayers = _interopRequireDefault(require(\"@financial-times/o-layers\"));\n\nvar _utils = _interopRequireDefault(require(\"./utils.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar overlays = {};\n\nvar checkOptions = function checkOptions(opts) {\n  if (opts.trigger && !(opts.trigger instanceof HTMLElement)) {\n    opts.trigger = document.querySelector(opts.trigger);\n  }\n\n  if (opts.heading && (!opts.heading.title || !opts.heading.title.trim())) {\n    throw new Error('\"o-overlay error\": To have a heading, a non-empty title needs to be set');\n  } // Overlays should be modal and layers by default\n\n\n  if (typeof opts.modal === 'undefined') {\n    opts.modal = true;\n  }\n\n  if (typeof opts.layer === 'undefined') {\n    opts.layer = true;\n  }\n\n  if (opts.compact && opts.heading && opts.heading.shaded) {\n    throw new Error('\"o-overlay error\": Compact overlays can\\'t have a shaded header');\n  }\n\n  return opts;\n};\n\nvar getOptionsFromTrigger = function getOptionsFromTrigger(trigger) {\n  var opts = {}; // Get config from data attributes set in the trigger if they haven't been passed via JS\n\n  if (trigger instanceof HTMLElement) {\n    Array.prototype.forEach.call(trigger.attributes, function (attr) {\n      if (attr.name.indexOf('data-o-overlay') === 0) {\n        // Remove the unnecessary part of the string the first time this is run for each attribute\n        var key = attr.name.replace('data-o-overlay-', '');\n        opts = _utils.default.optionsFromKey(key, attr.value, opts);\n      }\n    });\n    opts.trigger = trigger;\n  }\n\n  return opts;\n};\n\nvar triggerClickHandler = function triggerClickHandler(id, ev) {\n  ev.stopPropagation();\n  var overlay = overlays[id];\n\n  if (overlay) {\n    if (overlay.visible === true) {\n      overlay.close();\n    } else {\n      overlay.open();\n    }\n  }\n};\n\nvar isVisible = function isVisible(element) {\n  return Boolean(element.offsetHeight);\n};\n\nvar focusTrap = function focusTrap(event) {\n  var tabKeyCode = 9;\n  var overlayFocusableElements = [].slice.call(this.wrapper.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')).filter(element => {\n    var elementVisible = isVisible(element); // Inputs for radio and checkboxes are visually hidden,\n    // so check the label visibility of inputs too when determining\n    // whether to trap focus.\n\n    var elementLabelVisible = element.labels && [].slice.call(element.labels).some(l => isVisible(l)); // When tabbing, the checked radio input of a group is focused, not each radio input.\n\n    var elementIsUncheckedRadio = element.type === 'radio' && element.checked !== true;\n    return !element.disabled && !elementIsUncheckedRadio && (elementVisible || elementLabelVisible);\n  });\n\n  if (overlayFocusableElements.length && event.keyCode === tabKeyCode) {\n    var lastElement = overlayFocusableElements[overlayFocusableElements.length - 1]; // Loop focus back to the first element if focus has reached the focusable element\n\n    if (event.target === lastElement) {\n      overlayFocusableElements[0].focus();\n      event.preventDefault();\n    } else if (event.shiftKey && event.target === overlayFocusableElements[0]) {\n      // loop to the bottom when shift+tabbing.\n      lastElement.focus();\n      event.preventDefault();\n    }\n  }\n};\n/**\n * Represents an Overlay.\n */\n\n\nclass Overlay {\n  /**\n   * Construct an overlay.\n   * @constructor\n   * @param {HTMLElement} id - String. A unique identifier for the overlay within the page. (Required)\n   * @param {Object} opts - An options object for configuring the Overlay. This object MUST have either `src` or `html` set. (Required)\n   * @param {String} opts.heading.title - Your overlay's title\n   * @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   * @param {Boolean} opts.heading.shaded - Whether to shade the background of the header. Default: to false\n   * @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   * @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   * @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   * @param {String} opts.html - String or HTMLElement. Raw HTML (cannot be set declaratively)\n   * @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   * @param {String} opts.zindex - Value of the CSS z-index property of the overlay. Default set via CSS: '10'\n   * @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   * @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   * @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   * @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   * @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   * @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   * @throws {Error} Will throw an error if the `id` parameter is not unique.\n   */\n  constructor(id, opts) {\n    if (overlays[id]) {\n      throw new Error(\"o-overlay with id \\\"\".concat(id, \"\\\" already exists. Creating an overlay twice with the same id may result in unexpected behaviour.\"));\n    }\n\n    _oViewport.default.listenTo('resize');\n\n    this.visible = false;\n    this.id = id;\n\n    try {\n      this.opts = checkOptions(opts);\n    } catch (e) {\n      this.broadcast('log', 'oErrors', {\n        error: e\n      });\n      throw e;\n    }\n\n    if (!this.opts) {\n      var noOptError = new Error('\"o-overlay error\": Required options have not been set');\n      this.broadcast('log', 'oErrors', {\n        error: noOptError\n      });\n      throw noOptError;\n    }\n\n    if (this.opts.trigger) {\n      this.opts.trigger.addEventListener('click', triggerClickHandler.bind(this.opts.trigger, id), false);\n      this.context = _oLayers.default.getLayerContext(this.opts.trigger);\n    } else {\n      if (document.querySelector(this.opts.parentnode)) {\n        this.context = document.querySelector(this.opts.parentnode);\n      } else {\n        this.context = document.body;\n      }\n    }\n\n    this.delegates = {\n      doc: new _ftdomdelegate.default(),\n      wrap: new _ftdomdelegate.default(),\n      context: new _ftdomdelegate.default()\n    }; // Add this overlay to the overlays hashmap\n\n    overlays[id] = this;\n  }\n\n  open() {\n    // Prevent page scroll for open modals or fullscreen overlays.\n    if (this.opts.modal || this.opts.fullscreen) {\n      this.originalOverflow = document.documentElement.style.overflow;\n      document.documentElement.style.overflow = 'hidden';\n    } // A full screen overlay can look like a new page so add to history.\n    // The browser back button can then be used to close a full-screen overlay.\n\n\n    if (window.history.pushState && this.opts.fullscreen) {\n      // Push overlay state to history.\n      window.history.pushState({\n        [\"o-overlay-\".concat(this.id)]: 'fullscreen'\n      }, window.location.href); // When history changes check for the overlay and close it.\n\n      this.popstateHandler = function () {\n        if (window.history.state && window.history.state[\"o-overlay-\".concat(this.id)]) {\n          this.close();\n        }\n      }.bind(this);\n\n      window.addEventListener('popstate', this.popstateHandler);\n    }\n\n    if (this.opts.trigger) {\n      this.opts.trigger.setAttribute('aria-pressed', 'true');\n    }\n\n    if (!this.content) {\n      var overlay = this;\n      this.loadContent(function (html) {\n        overlay.opts.html = html;\n\n        if (!overlay.opts.html) {\n          throw new Error('\"o-overlay error\": Content for the overlay needs to be set via the \"html\" or the \"src\" option.');\n        }\n\n        overlay.render();\n      });\n    } else {\n      this.show();\n    }\n  }\n\n  loadContent(callback) {\n    if (!this.opts.html && this.opts.src) {\n      if (/^(https?\\:\\/)?\\//.test(this.opts.src)) {\n        _utils.default.copyContentFromUrl(this.opts.src, function (html) {\n          callback(html);\n        });\n      } else {\n        _utils.default.copyContentFromElement(document.querySelector(this.opts.src), function (html) {\n          callback(html);\n        });\n      }\n    } else {\n      callback(this.opts.html);\n    }\n  }\n\n  render() {\n    var wrapperEl = document.createElement('div');\n    wrapperEl.className = 'o-overlay';\n    wrapperEl.classList.add('o-overlay--' + this.id.replace(' ', '-')); // Add custom classes to the newly created overlay wrapper.\n\n    if (this.opts.class) {\n      try {\n        wrapperEl.classList.add(...this.opts.class.split(' '));\n      } catch (error) {\n        console.warn(\"Could not add the classes: \".concat(this.opts.class));\n      }\n    }\n\n    if (this.opts.fullscreen) {\n      wrapperEl.classList.add('o-overlay--full-screen');\n    }\n\n    wrapperEl.setAttribute('role', 'dialog');\n\n    if (this.opts.zindex) {\n      wrapperEl.style.zIndex = this.opts.zindex;\n    }\n\n    this.wrapper = wrapperEl;\n\n    if (this.opts.heading) {\n      var heading = document.createElement('header');\n      var headingId = this.opts.heading.title.toLowerCase() // replace non-ascii alphanums with hyphens\n      .replace(/[^a-z0-9-]/g, '-') // replace repeated hyphens with a single hyphen\n      .replace(/[\\s-]+/g, '-');\n      heading.classList.add('o-overlay__heading');\n      heading.setAttribute('id', headingId);\n      wrapperEl.setAttribute('aria-labelledby', headingId);\n\n      if (this.opts.heading.shaded) {\n        heading.classList.add('o-overlay__heading--shaded');\n      }\n\n      if (!this.opts.preventclosing) {\n        var button = document.createElement('button');\n        button.className = 'o-overlay__close';\n        button.setAttribute('aria-label', 'Close');\n        button.setAttribute('title', 'Close');\n\n        if (!this.opts.nofocus) {\n          button.setAttribute('tabindex', '0');\n        }\n\n        heading.appendChild(button);\n      }\n\n      var title = document.createElement('span');\n      title.setAttribute('role', 'heading');\n      title.className = 'o-overlay__title';\n\n      if (!this.opts.heading.visuallyhidetitle) {\n        title.innerHTML = this.opts.heading.title;\n      }\n\n      heading.appendChild(title);\n      wrapperEl.appendChild(heading);\n    }\n\n    if (this.opts.tooltip) {\n      var _button = document.createElement('a');\n\n      _button.className = 'o-overlay__close';\n\n      _button.setAttribute('role', 'button');\n\n      _button.setAttribute('href', '#void');\n\n      _button.setAttribute('aria-label', 'Close');\n\n      _button.setAttribute('title', 'Close');\n\n      if (!this.opts.nofocus) {\n        _button.setAttribute('tabindex', '0');\n      }\n\n      wrapperEl.appendChild(_button);\n      wrapperEl.classList.add('o-overlay--compact');\n    }\n\n    var content = document.createElement('section');\n    content.className = 'o-overlay__content';\n    wrapperEl.appendChild(content);\n    this.content = content;\n\n    if (this.opts.compact) {\n      wrapperEl.classList.add('o-overlay--compact');\n    }\n\n    this.show();\n  }\n\n  _trapFocus() {\n    // Trap the focus inside the overlay so keyboard navigation doesn't escape the overlay\n    document.addEventListener('keydown', focusTrap.bind(this));\n  }\n  /**\n   * Show the overlay\n   *\n   * @fires oOverlay#ready\n   */\n\n\n  show() {\n    if (this.opts.modal) {\n      this.wrapper.classList.add('o-overlay--modal');\n      var shadow = document.createElement('div');\n      shadow.className = 'o-overlay-shadow';\n      this.shadow = shadow;\n\n      if (this.opts.zindex) {\n        shadow.style.zIndex = this.opts.zindex - 1;\n      }\n\n      document.body.appendChild(shadow);\n    }\n\n    this.delegates.doc.root(document.body);\n    this.delegates.wrap.root(this.wrapper);\n    this.delegates.context.root(this.context);\n    this.closeHandler = this.close.bind(this); // If the overlay is nested within a DOM element don't attach the viewport resize listeners.\n\n    if (!this.opts.nested) {\n      this.resizeListenerHandler = this.resizeListener.bind(this);\n      this.delegates.doc.on('oViewport.resize', 'body', this.resizeListenerHandler);\n      this.closeOnEscapePressHandler = this.closeOnEscapePress.bind(this);\n      this.delegates.doc.on('keyup', this.closeOnEscapePressHandler);\n    }\n\n    if (this.opts.layer) {\n      this.closeOnNewLayerHandler = this.closeOnNewLayer.bind(this);\n      this.delegates.context.on('oLayers.new', this.closeOnNewLayerHandler);\n      this.broadcast('new', 'oLayers');\n    }\n\n    if (this.opts.heading || this.opts.tooltip || this.opts.customclose) {\n      this.delegates.wrap.on('click', '.o-overlay__close', this.closeHandler);\n      this.delegates.wrap.on('touchend', '.o-overlay__close', this.closeHandler);\n    }\n\n    this.closeOnExternalClickHandler = this.closeOnExternalClick.bind(this);\n    this.delegates.doc.on('click', 'body', this.closeOnExternalClickHandler);\n    this.delegates.doc.on('touchend', 'body', this.closeOnExternalClickHandler);\n    this.context.appendChild(this.wrapper); // Give the overlay focus\n\n    if (!this.opts.nofocus) {\n      this.wrapper.setAttribute('tabindex', '0');\n      this.wrapper.style.outline = 0;\n    } // Renders content after overlay has been added so css is applied before that\n    // Thay way if an element has autofocus, the window won't scroll to the bottom\n    // in Safari as the overlay is already in position\n\n\n    window.requestAnimationFrame(function () {\n      if (!this.content.innerHTML) {\n        if (typeof this.opts.html === 'string') {\n          this.content.innerHTML = this.opts.html;\n        } else {\n          this.content.appendChild(this.opts.html);\n        }\n      }\n\n      this.width = this.getWidth();\n      this.height = this.getHeight(); // If the overlay is nested within a DOM element don't resize according to the viewport.\n\n      if (!this.opts.nested) {\n        this.realign();\n      }\n\n      this.visible = true;\n      this.wrapper.focus();\n      /**\n       * Ready event\n       *\n       * @event oOverlay#ready\n       * @type {object}\n       * @property {oOverlay} instance - the firing instance\n       */\n\n      this.broadcast('ready', 'oOverlay', {\n        instance: this\n      }); // Add o-tracking integration\n\n      this.broadcast('event', 'oTracking', {\n        category: 'overlay',\n        action: 'show',\n        overlay_id: this.id\n      });\n\n      this._trapFocus();\n    }.bind(this));\n  }\n\n  close() {\n    this.delegates.doc.destroy();\n    this.delegates.wrap.destroy();\n    this.delegates.context.destroy(); // Restore document scroll when modals or fullscreen overlays are closed.\n\n    if (this.opts.modal || this.opts.fullscreen) {\n      document.documentElement.style.overflow = this.originalOverflow;\n    } // Remove fullscreen popstate handler and re-enable document scroll.\n\n\n    if (this.opts.fullscreen) {\n      window.removeEventListener('popstate', this.popstateHandler);\n    } // Remove state from history if fullscreen state is still in history.\n    // E.g.The close button was clicked directly rather than the browser back button.\n\n\n    if (window.history.pushState && window.history.state && window.history.state[\"o-overlay-\".concat(this.id)] === 'fullscreen') {\n      window.history.back();\n    }\n\n    _oViewport.default.stopListeningTo('resize');\n\n    this.broadcast('destroy');\n    this.broadcast('event', 'oTracking', {\n      category: 'overlay',\n      action: 'close',\n      overlay_id: this.id\n    });\n    this.context.removeChild(this.wrapper);\n\n    if (this.opts.modal) {\n      this.shadow.parentNode.removeChild(this.shadow);\n    } // Put focus back on the triggering element\n\n\n    if (this.opts.trigger) {\n      this.opts.trigger.focus();\n      this.opts.trigger.setAttribute('aria-pressed', 'false');\n    }\n\n    document.removeEventListener('keydown', focusTrap);\n    this.visible = false;\n\n    if (this.opts.layer) {\n      this.broadcast('close', 'oLayers');\n    }\n\n    return false;\n  }\n\n  closeOnExternalClick(ev) {\n    if (!this.wrapper.contains(ev.target) && !this.opts.modal && this.opts.trigger && !this.opts.trigger.contains(ev.target)) {\n      this.close();\n    }\n  }\n\n  closeOnEscapePress(ev) {\n    if (!this.opts.preventclosing && ev.keyCode === 27) {\n      this.close();\n    }\n  }\n\n  closeOnNewLayer(ev) {\n    if (!ev.detail || ev.detail.el !== this) {\n      this.close();\n    }\n  }\n\n  resizeListener(ev) {\n    if (!this.wrapper.contains(ev.target)) {\n      this.respondToWindow();\n    }\n  }\n\n  broadcast(eventType, namespace, detail) {\n    namespace = namespace || 'oOverlay';\n    var target = namespace === 'oLayers' ? this.context : this.wrapper || document.body;\n    detail = detail || {};\n\n    if (namespace !== 'oTracking') {\n      detail.el = this;\n    }\n\n    target.dispatchEvent(new CustomEvent(namespace + '.' + eventType, {\n      detail: detail,\n      // Don't bubble above the overlay's layer context otherwise we risk triggering a listener on a parent context\n      bubbles: namespace !== 'oLayers' ? true : false\n    }));\n  }\n\n  realign(dimension, size) {\n    // Realign both height and width according to the window by default.\n    if (!dimension && !size) {\n      this._align('width', _oViewport.default.getSize().width);\n\n      this._align('height', _oViewport.default.getSize().height);\n\n      return;\n    } // For a given dimension realign according to the viewport by default.\n\n\n    if (dimension && !size) {\n      this._align(dimension, _oViewport.default.getSize()['dimension']);\n\n      return;\n    }\n\n    this._align(dimension, size);\n  }\n\n  _align(dimension, size) {\n    if (dimension !== 'width' && dimension !== 'height') {\n      throw new Error(\"Can not realign the overlay for the dimension \\\"\".concat(dimension, \"\\\". \\\"height\\\" or \\\"width\\\" expected.\"));\n    }\n\n    if (isNaN(size)) {\n      throw new Error(\"Can not realign the overlay for the size \".concat(size, \". A number is expected.\"));\n    }\n\n    var edge = dimension === 'width' ? 'left' : 'top'; // Update overlay size for realignment calculation.\n    // We may be realigning because the content within the overlay has changed.\n\n    this.width = this.getWidth();\n    this.height = this.getHeight(); // E.g. viewport dimension <= overlay dimension\n\n    if (size <= this[dimension]) {\n      this.wrapper.classList.add('o-overlay--full-' + dimension);\n      this.wrapper.style[edge] = '0';\n      this.wrapper.style['margin' + _utils.default.capitalise(edge)] = 0;\n\n      if (dimension === 'height') {\n        // Set the exact height that the content of the overlay will have which is the total\n        // height of the overlay minus the heading if there is one. If height = 100%, the\n        // heading is part of that 100%, so some content is truncated.\n        var borderHeight = this.wrapper.offsetHeight - this.wrapper.clientHeight;\n        this.content.style.height = this.wrapper.offsetHeight - (this.opts.heading ? this.wrapper.querySelector('header').offsetHeight : 0) - borderHeight + 'px';\n      }\n    } else {\n      if (dimension === 'height') {\n        // Remove the property and let the overlay extend to its content\n        this.content.style.height = null;\n      }\n\n      this.wrapper.classList.remove('o-overlay--full-' + dimension);\n      this.wrapper.style['margin' + _utils.default.capitalise(edge)] = -(this.wrapper['offset' + _utils.default.capitalise(dimension)] / 2) + 'px'; // Set alignment in JavaScript (not via CSS) after all other styles have been applied\n      // so that browsers compute it properly. If it's applied earlier, when the negative\n      // margin is calculated, the overlay might not fit, so it shrinks and the negative\n      // margin would be incorrect\n\n      this.wrapper.style[edge] = '50%';\n    }\n  }\n\n  respondToWindow() {\n    this.realign();\n  }\n\n  fills(dimension) {\n    return this.wrapper.classList.contains('o-overlay--full-' + dimension);\n  }\n\n  destroy() {\n    if (this.visible === true) {\n      this.close();\n    }\n\n    if (this.opts.trigger) {\n      this.opts.trigger.removeEventListener('click', triggerClickHandler);\n    }\n\n    delete overlays[this.id];\n  }\n\n  getHeight() {\n    var borderHeight = this.wrapper.offsetHeight - this.wrapper.clientHeight;\n    return this.content.scrollHeight + (this.opts.heading ? this.wrapper.querySelector('header').offsetHeight : 0) + borderHeight;\n  }\n\n  getWidth() {\n    var borderWidth = this.wrapper.offsetWidth - this.wrapper.clientWidth;\n    return this.content.scrollWidth + borderWidth;\n  }\n\n  static init(el) {\n    if (!el) {\n      el = document.body;\n    }\n\n    if (!(el instanceof HTMLElement)) {\n      el = document.querySelector(el);\n    }\n\n    var triggers = el.querySelectorAll('.o-overlay-trigger');\n    var overlaysArray = [];\n\n    for (var t = 0; t < triggers.length; t++) {\n      // 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      if (!overlays[triggers[t].getAttribute('data-o-overlay-id')]) {\n        overlaysArray.push(new Overlay(triggers[t].getAttribute('data-o-overlay-id'), getOptionsFromTrigger(triggers[t])));\n      }\n    }\n\n    return overlaysArray;\n  }\n\n  static destroy() {\n    var overlayIds = Object.keys(overlays);\n    overlayIds.forEach(function (id) {\n      overlays[id].destroy();\n    });\n  }\n\n  static getOverlays() {\n    return overlays;\n  }\n\n}\n\nvar _default = Overlay;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar Utils = _interopRequireWildcard(require(\"@financial-times/o-utils\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar _debug;\n/**\n *\n * @param {string} eventType\n * @param {object} data\n * @param {EventTarget} target\n */\n\n\nfunction broadcast(eventType, data, target) {\n  target = target || document.body;\n\n  if (_debug) {\n    console.log('o-viewport', eventType, data);\n  }\n\n  target.dispatchEvent(new CustomEvent('oViewport.' + eventType, {\n    detail: data,\n    bubbles: true\n  }));\n}\n/**\n* Get the viewport height.\n* @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar height.\n* @return {number}\n*/\n\n\nfunction getHeight(ignoreScrollbars) {\n  return ignoreScrollbars ? document.documentElement.clientHeight : Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n}\n/**\n* Get the viewport width.\n* @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width\n* @return {number}\n*/\n\n\nfunction getWidth(ignoreScrollbars) {\n  return ignoreScrollbars ? document.documentElement.clientWidth : Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n}\n/**\n * Viewport size.\n * @typedef {Object} Size\n * @property {number} height\n * @property {number} width\n */\n\n/**\n* Get the viewport width and height.\n* @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width/height.\n* @return {Size}\n*/\n\n\nfunction getSize(ignoreScrollbars) {\n  return {\n    height: getHeight(ignoreScrollbars),\n    width: getWidth(ignoreScrollbars)\n  };\n}\n/**\n * Scroll position.\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 * @return {ScrollPosition}\n */\n\n\nfunction getScrollPosition() {\n  return {\n    height: document.body.scrollHeight,\n    width: document.body.scrollWidth,\n    left: window.pageXOffset || window.scrollX,\n    top: window.pageYOffset || window.scrollY\n  };\n}\n/**\n * @return {string} - 'portrait' or 'landscape'\n */\n\n\nfunction getOrientation() {\n  var orientation = window.screen.orientation;\n\n  if (orientation) {\n    return typeof orientation === 'string' ? orientation.split('-')[0] : orientation.type.split('-')[0];\n  } else if (window.matchMedia) {\n    return window.matchMedia('(orientation: portrait)').matches ? 'portrait' : 'landscape';\n  } else {\n    return getHeight() >= getWidth() ? 'portrait' : 'landscape';\n  }\n}\n/**\n * @return {boolean} - true if the viewport is visible\n */\n\n\nfunction getVisibility() {\n  return document.hidden;\n}\n\nvar _default = {\n  debug: function debug() {\n    _debug = true;\n  },\n  broadcast,\n  getWidth,\n  getHeight,\n  getSize,\n  getScrollPosition,\n  getVisibility,\n  getOrientation,\n  debounce: Utils.debounce,\n  throttle: Utils.throttle\n};\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.getLayerContext = void 0;\n\nvar getLayerContext = function getLayerContext(el) {\n  return el.closest('.o-layers__context') || document.body;\n};\n\nexports.getLayerContext = getLayerContext;\nvar _default = {\n  getLayerContext\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _default = {\n  unCapitalise: function unCapitalise(str) {\n    return str.charAt(0).toLowerCase() + str.substr(1);\n  },\n  capitalise: function capitalise(str) {\n    return str.charAt(0).toUpperCase() + str.substr(1);\n  },\n  copyContentFromElement: function copyContentFromElement(content, callback) {\n    var html = content.nodeName === 'SCRIPT' ? content.innerHTML : content.outerHTML;\n    callback(html);\n  },\n  copyContentFromUrl: function copyContentFromUrl(url, callback) {\n    var xhr = new XMLHttpRequest();\n    xhr.open('GET', url, true);\n\n    xhr.onload = function () {\n      // eslint complains of e not being used\n      if (xhr.readyState === 4) {\n        if (xhr.status === 200) {\n          callback(xhr.responseText);\n        } else {\n          callback('Content failed to load correctly');\n        }\n      }\n    };\n\n    xhr.onerror = function (e) {\n      throw new Error('\"o-overlay error\": Fetching content from ' + url + ' failed with errror ' + e);\n    };\n\n    xhr.send(null);\n  },\n  optionsFromKey: function optionsFromKey(key, value, opts) {\n    var dashIndex = key.indexOf('-');\n\n    if (dashIndex === -1) {\n      try {\n        // If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n        // We also replace all ' with \" so JSON strings are parsed correctly\n        opts[key] = JSON.parse(value.replace(/\\'/g, '\"'));\n      } catch (e) {\n        opts[key] = value;\n      }\n    } else {\n      // Key that holds an object instead of a value\n      var subKey = key.substr(0, dashIndex); // If sub-object doesn't exist already, create it\n\n      if (!opts[subKey]) {\n        opts[subKey] = {};\n      } // Run function again starting with the rest of the key\n\n\n      opts[subKey] = this.optionsFromKey(key.substr(dashIndex + 1), value, opts[subKey]);\n    }\n\n    return opts;\n  },\n  // Code based on this article to get coordinates independent of scroll: http://javascript.info/tutorial/coordinates\n  getOffsetRect: function getOffsetRect(e) {\n    var eClientRect = e.getBoundingClientRect();\n    var body = document.body;\n    var docElem = document.documentElement; // docElem.scrollTop/Left for IE, use body as a last resort\n\n    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft; // IE sometimes shifts the upper left corner\n\n    var clientTop = docElem.clientTop || body.clientTop || 0;\n    var clientLeft = docElem.clientLeft || body.clientLeft || 0;\n    return {\n      // IE8 doesn't support getBoundingClientRect().height and .weight\n      width: eClientRect.width || eClientRect.right - eClientRect.left,\n      height: eClientRect.height || eClientRect.bottom - eClientRect.top,\n      top: eClientRect.top + scrollTop - clientTop,\n      left: eClientRect.left + scrollLeft - clientLeft\n    };\n  }\n};\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.fetchJsonWebToken = fetchJsonWebToken;\n\nfunction fetchJsonWebToken() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var url = new URL('https://comments-api.ft.com/user/auth/');\n\n  if (options.displayName) {\n    url.searchParams.append('displayName', options.displayName);\n  }\n\n  if (options.useStagingEnvironment) {\n    url.searchParams.append('staging', '1');\n  }\n\n  return fetch(url, {\n    credentials: 'include'\n  }).then(response => {\n    // user is signed in and has a pseudonym\n    if (response.ok) {\n      return response.json();\n    } else {\n      // user is signed in but has no display name\n      if (response.status === 409) {\n        return {\n          userHasValidSession: true\n        };\n      } // user is not signed in or session token is invalid\n      // or error in comments api\n\n\n      return {\n        userHasValidSession: false\n      };\n    }\n  });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = purgeJwtCache;\n\nfunction purgeJwtCache() {\n  var url = \"https://comments-api.ft.com/user/auth\";\n  return fetch(url, {\n    method: 'PURGE',\n    credentials: 'include'\n  });\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nclass Count {\n  /**\n   * Class constructor.\n   *\n   * @param {HTMLElement} [countEl] - The component element in the DOM\n   * @param {Object} [opts={}] - An options object for configuring the component\n   */\n  constructor(countEl) {\n    var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.countEl = countEl;\n    this.articleId = opts.articleId;\n    this.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n  }\n  /**\n   * Render a comment count instance.\n   *\n   * @access private\n   * @returns {Promise<void>} A promise that resolves when the count has been updated\n   */\n\n\n  renderCount() {\n    if (this.countEl && !(this.countEl instanceof HTMLElement)) {\n      this.countEl = document.querySelector(this.countEl);\n    }\n\n    if (!this.countEl) {\n      throw new Error('Element must be a HTMLElement');\n    }\n\n    return Count.fetchCount(this.articleId, this.useStagingEnvironment).then(count => {\n      this.countEl.textContent = count;\n      var countLabel = Count.getCountLabel(count);\n      this.countEl.setAttribute('aria-label', countLabel);\n    });\n  }\n  /**\n   * Get the aria-label for the count element.\n   *\n   * @param {Number} count - The comment count\n   * @returns {String} The string that should be used as the aria-label\n   */\n\n\n  static getCountLabel(count) {\n    if (count === 1) {\n      return 'There is 1 comment, click to go to the comment section.';\n    } else {\n      return \"There are \".concat(count, \" comments, click to go to the comment section.\");\n    }\n  }\n\n  static fetchCount(id, useStaging) {\n    var url = \"https://comments-api.ft.com/story/count/\".concat(id) + (useStaging ? '?staging=1' : '');\n    return fetch(url).then(res => res.json()).then(json => json.commentCount).catch(error => {\n      throw new Error(\"Error with fetching comment count: \".concat(error.message));\n    });\n  }\n\n}\n\nvar _default = Count;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _oToggle = _interopRequireDefault(require(\"@financial-times/o-toggle\"));\n\nvar _layout = _interopRequireDefault(require(\"./layout.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar COLLAPSIBLE_BREAKPOINTS = ['default', 'XS', 'S'];\n\nclass Footer {\n  constructor(footerEl) {\n    if (!footerEl) {\n      footerEl = document.querySelector('[data-o-component=\"o-footer\"]');\n    } else if (typeof footerEl === 'string') {\n      footerEl = document.querySelector(footerEl);\n    }\n\n    this.footerEl = footerEl;\n    (0, _layout.default)(breakpoint => {\n      var shouldCollapse = Footer.shouldCollapse(breakpoint);\n\n      if (shouldCollapse && !this._toggles) {\n        return this.setup();\n      }\n\n      if (!shouldCollapse && this._toggles) {\n        return this.destroy();\n      }\n    });\n    this.footerEl.removeAttribute('data-o-footer--no-js');\n    this.footerEl.setAttribute('data-o-footer--js', '');\n  }\n\n  setup() {\n    this._toggles = [];\n    var toggleEls = this.footerEl.querySelectorAll('[aria-controls]');\n    Array.prototype.forEach.call(toggleEls, toggleEl => {\n      var target = document.getElementById(toggleEl.getAttribute('aria-controls'));\n      toggleEl.setAttribute('role', 'button');\n      toggleEl.setAttribute('tabindex', '0');\n\n      this._toggles.push(new _oToggle.default(toggleEl, {\n        target\n      }));\n    });\n  }\n\n  destroy() {\n    this._toggles.forEach(toggle => toggle.destroy());\n\n    this._toggles = null;\n  }\n\n  static get collapsibleBreakpoints() {\n    return COLLAPSIBLE_BREAKPOINTS;\n  }\n\n  static shouldCollapse(breakpoint) {\n    return COLLAPSIBLE_BREAKPOINTS.indexOf(breakpoint) !== -1;\n  }\n\n  static init(rootEl) {\n    if (!rootEl) {\n      rootEl = document.body;\n    } else if (typeof rootEl === 'string') {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    var footerEl = rootEl.querySelector('[data-o-component=\"o-footer\"]');\n\n    if (footerEl) {\n      return new Footer(footerEl);\n    }\n  }\n\n}\n\nvar _default = Footer;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = init;\n\nvar _oGrid = _interopRequireDefault(require(\"@financial-times/o-grid\"));\n\nvar _oViewport = _interopRequireDefault(require(\"@financial-times/o-viewport\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction init(callback) {\n  _oViewport.default.listenTo('resize');\n\n  var lastBreakpoint = _oGrid.default.getCurrentLayout();\n\n  document.body.addEventListener('oViewport.resize', () => {\n    var breakpoint = _oGrid.default.getCurrentLayout();\n\n    if (breakpoint !== lastBreakpoint) {\n      callback(breakpoint);\n      lastBreakpoint = breakpoint;\n    }\n  });\n  callback(lastBreakpoint);\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.buildPerfmarkSuffix = buildPerfmarkSuffix;\nexports.broadcast = broadcast;\nexports.on = on;\nexports.off = off;\nexports.once = once;\nexports.perfMark = void 0;\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\nvar perfMark = name => {\n  /* istanbul ignore next */\n  var 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\n\nexports.perfMark = perfMark;\n\nfunction buildPerfmarkSuffix(eventDetailsObj) {\n  var 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\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.\".concat(eventName);\n  var opts = {\n    bubbles: true,\n    cancelable: true,\n    detail: data\n  };\n  var isSlotEvent = typeof data === 'object' && 'pos' in data;\n  var 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  var suffix = buildPerfmarkSuffix(evDetails);\n  var 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 {function} callback The function to execute on the event\n* @param {HTMLElement} target The element to attach the event listener to\n*/\n\n\nfunction on(name, callback, target) {\n  name = \"oAds.\".concat(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\n\nfunction off(name, callback, target) {\n  name = \"oAds.\".concat(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\n\nfunction once(name, callback, target) {\n  var handler = function handler(event) {\n    /* istanbul ignore next: ignore the final fallback as hard trigger */\n    var targ = event.target || event.srcElement;\n    targ.removeEventListener(name = \"oAds.\".concat(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}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.clearPerfMarks = clearPerfMarks;\nexports.setupMetrics = setupMetrics;\nexports.markPageChange = markPageChange;\n\nvar _index = _interopRequireDefault(require(\"./index.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getMarksForEvents(events, suffix) {\n  var markNames = events.map(eventName => 'oAds.' + eventName + suffix);\n\n  if (!performance || !performance.getEntriesByName) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  var marks = {};\n  markNames.forEach(function (mName) {\n    var pMarks = performance.getEntriesByName(mName);\n    var 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      var mNameNoSuffix = mName.replace(suffix, '');\n      var 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}\n\nfunction clearPerfMarks(metricsDefinitions, groupsToClear) {\n  if (!performance || !performance.getEntriesByType) {\n    return;\n  }\n\n  var relevantGroups = metricsDefinitions.filter(group => groupsToClear.includes(group.spoorAction));\n  var relevantGroupsMarks = relevantGroups.map(group => group.marks); // Because relevantGroupsMarks is a 2D array ...\n\n  var eventsToClear = [].concat(...relevantGroupsMarks);\n  var perfMarks = performance.getEntriesByType('mark');\n  perfMarks.forEach((_ref) => {\n    var {\n      name\n    } = _ref;\n    eventsToClear.forEach(eventName => {\n      if (name.match(\"oAds.\".concat(eventName))) {\n        performance.clearMarks(name);\n      }\n    });\n  });\n}\n/* istanbul ignore next */\n\n\nfunction getNavigationPerfMarks(desiredMarks) {\n  if (!performance || !performance.getEntriesByType || !_index.default.isArray(desiredMarks)) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  var navMarksArray = performance.getEntriesByType('navigation');\n  var navMarks = _index.default.isArray(navMarksArray) && navMarksArray[0] || {};\n  var 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 || _index.default.inSample(eDef.sampleSize)) {\n      var 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  var suffix = _index.default.buildPerfmarkSuffix(eventDetails);\n\n  var marks = getMarksForEvents(eMarkMap.marks, suffix);\n\n  if (eMarkMap.navigation) {\n    var navMarks = getNavigationPerfMarks(eMarkMap.navigation);\n    Object.assign(marks, navMarks);\n  }\n\n  var eventPayload = {\n    category: 'ads',\n    action: eMarkMap.spoorAction,\n    timings: {\n      marks: marks\n    }\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\n  _index.default.broadcast('pageChange');\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * Utility methods for postMessage api.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\nvar _default = {\n  post: function post(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 parse(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};\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getCurrent = getCurrent;\nexports.default = init;\nexports.setThrottleInterval = void 0;\n\nvar _index = _interopRequireDefault(require(\"./index.js\"));\n\nvar _oViewport = _interopRequireDefault(require(\"@financial-times/o-viewport\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar callback;\nvar breakpoints;\nvar current;\n\nfunction getNearestBreakpoint() {\n  var winner;\n\n  var dims = _oViewport.default.getSize(true);\n\n  function findCurrentBreakpoint(breakpoint) {\n    var breakpointDims = breakpoints[breakpoint];\n\n    if (dims.width >= breakpointDims[0] && dims.height >= breakpointDims[1]) {\n      if (!winner || breakpointDims[0] >= breakpoints[winner][0]) {\n        winner = breakpoint;\n      }\n    }\n  }\n\n  Object.keys(breakpoints).forEach(findCurrentBreakpoint);\n  return winner;\n}\n\nfunction fire() {\n  var 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}\n\nfunction init(brps, cb) {\n  if (!_index.default.isFunction(cb)) {\n    // must have a call back function\n    return false;\n  }\n\n  breakpoints = brps;\n  callback = cb;\n  setCurrent(getNearestBreakpoint());\n  document.body.addEventListener('oViewport.orientation', fire);\n  document.body.addEventListener('oViewport.resize', fire);\n\n  _oViewport.default.listenTo('orientation');\n\n  _oViewport.default.listenTo('resize');\n\n  return getCurrent();\n}\n\nvar setThrottleInterval = _oViewport.default.setThrottleInterval;\nexports.setThrottleInterval = setThrottleInterval;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = log;\nexports.attributeTable = exports.table = exports.end = exports.start = exports.info = exports.error = exports.warn = exports.isOn = void 0;\n\nvar _index = require(\"./index.js\");\n\n/* eslint no-console: 0 */\n\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 */\nfunction log() {\n  var type;\n  var 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  var 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\n\nvar isOn = function isOn(type) {\n  /* istanbul ignore else  */\n  var 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\n\nexports.isOn = isOn;\n\nvar warn = function warn() {\n  var args = ['warn'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an error message\n */\n\n\nexports.warn = warn;\n\nvar error = function error() {\n  var args = ['error'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an info message\n */\n\n\nexports.error = error;\n\nvar info = function info() {\n  var 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\n\nexports.info = info;\n\nvar start = function start(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\n\nexports.start = start;\n\nvar end = function end() {\n  if (!log.isOn('groupEnd')) {\n    return;\n  }\n\n  window.console.groupEnd();\n};\n\nexports.end = end;\n\nvar table = function table(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};\n\nexports.table = table;\n\nvar attributeTable = function attributeTable(object, columns) {\n  if (log.isOn('log') && window.console) {\n    if (object && console.table) {\n      var data = Object.keys(object).map(item => {\n        var val;\n\n        if ((0, _index.isArray)(object[item]) || (0, _index.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\nexports.attributeTable = attributeTable;","\"use strict\";\n\n// generated by genversion\nmodule.exports = '18.3.3';","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nvar _config = _interopRequireDefault(require(\"./config.js\"));\n\nvar _slot = _interopRequireDefault(require(\"./slot.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint no-inner-declarations: 1 */\nvar 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  var slots = [];\n  names = names || Object.keys(this);\n  /* istanbul ignore else\t*/\n\n  if (_index.default.isNonEmptyString(names)) {\n    slots.push(names);\n  } else if (_index.default.isArray(names)) {\n    slots = names;\n  }\n\n  slots.forEach(run.bind(null, this, method));\n\n  if (_index.default.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  var slot = slots[name];\n\n  if (slot) {\n    if (_index.default.isFunction(slot[action])) {\n      slot[action]();\n    } else {\n      if (_index.default.isFunction(slot.fire)) {\n        slot.fire(action);\n      } else {\n        _index.default.log.warn('Attempted to %s on a non-slot %s', action, name);\n      }\n    }\n  } else {\n    _index.default.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  var formats = (0, _config.default)('formats');\n\n  for (var prop in formats) {\n    /* istanbul ignore else\t*/\n    if (formats.hasOwnProperty(prop)) {\n      var sizes = formats[prop].sizes;\n      sizes = _index.default.isArray(sizes[0]) ? sizes : [sizes];\n      var 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 (_index.default.isString(container)) {\n    container = document.getElementById(container) || document.querySelector(\"[data-o-ads-name=\\\"\".concat(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 (!_index.default.isElement(container)) {\n    _index.default.log.error('slot container must be an element!', container);\n\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  var slot = new _slot.default(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    _index.default.log.error('slot %s is already defined!', slot.name);\n  }\n\n  return slot;\n};\n\nSlots.prototype.initRefresh = function () {\n  if ((0, _config.default)('flags').refresh && (0, _config.default)('refresh')) {\n    var data = (0, _config.default)('refresh');\n    this.refreshCount = 0;\n    /* istanbul ignore else\t*/\n\n    if (data.time && !data.inview) {\n      var 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  _index.default.on('slotRenderStart', function (slots, event) {\n    var slot = slots[event.detail.name];\n    /* istanbul ignore else\t*/\n\n    if (slot) {\n      _index.default.extend(slot[slot.server], event.detail[slot.server]);\n\n      var size = event.detail.gpt.size;\n      var format = findFormatBySize(size);\n      slot.setFormatLoaded(format);\n      slot.maximise(size);\n      slot.fire('slotExpand', event.detail);\n    }\n  }.bind(null, this));\n\n  return this;\n};\n/*\n * if responsive configuration exists listen for breakpoint changes\n */\n\n\nSlots.prototype.initResponsive = function () {\n  var breakpoints = (0, _config.default)('responsive');\n  /* istanbul ignore else\t*/\n\n  if (_index.default.isObject(breakpoints)) {\n    screensize = _index.default.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      var isCurrentlyResponsive = slot.container && slot.container.getAttribute('data-o-ads-loaded') === 'Responsive';\n      var 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    var data = _index.default.messenger.parse(event.data);\n    /* istanbul ignore else\tdon't process messages with a non oAds type*/\n\n\n    if (data.type && (/^oAds\\./.test(data.type) || /^touch/.test(data.type))) {\n      var type = data.type.replace('oAds.', ''); // Make sure the message is coming from an identified ad slot\n\n      var slotName = _index.default.iframeToSlotName(event.source.window);\n\n      var slot = slots[slotName] || false;\n\n      if (!slot) {\n        _index.default.log.error('Message received from unidentified slot');\n\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            _index.default.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  var lazyLoadingConfig = (0, _config.default)('lazyLoad') || slotConfig | {};\n  this.lazyLoadingObservers = this.lazyLoadingObservers || [];\n  this.flushLazyLoading(); // find any pre-existing observers\n\n  var 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      var 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    var 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    var slot = this[name];\n    /* istanbul ignore else\t*/\n\n    if (slot instanceof _slot.default) {\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  var log = _index.default.log;\n  var data = [];\n  this.forEach(function (slot) {\n    var 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: _index.default.isArray(slot.gpt.size) && slot.gpt.size.join('×') || slot.gpt.isEmpty && 'empty' || 'N/A',\n      sizes: _index.default.isArray(slot.sizes) && slot.sizes.map(function (item) {\n        return item.join('×');\n      }).join(', ') || 'responsive slot',\n      targeting: Object.keys(slot.targeting).map(function (param) {\n        return \"\".concat(param, \"=\").concat(slot.targeting[param]);\n      }).join(', ')\n    };\n    data.push(row);\n  });\n  log.start('Creatives');\n  log.table(data);\n  log.end();\n};\n\nvar _default = new Slots();\n\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _index = _interopRequireDefault(require(\"./utils/index.js\"));\n\nvar _config = _interopRequireDefault(require(\"./config.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VALID_SIZE_STRINGS = ['fluid'];\nvar VALID_COLLAPSE_MODES = ['before', 'after', 'never'];\nvar attributeParsers = {\n  sizes: function sizes(value, _sizes) {\n    if (value === false || value === 'false') {\n      return false;\n    }\n    /* istanbul ignore else  */\n    else if (_index.default.isArray(_sizes)) {\n        var 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 formats(value, sizes) {\n    if (value === false || value === 'false') {\n      sizes = false;\n    } else {\n      var mapping = (0, _config.default)().formats;\n      var formats = _index.default.isArray(value) ? value : value.split(',');\n      formats.forEach(format => {\n        if (mapping && mapping[format]) {\n          format = mapping[format];\n\n          if (_index.default.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          _index.default.log.error(\"Slot configured with unknown format \".concat(format));\n        }\n      });\n    }\n\n    return sizes;\n  },\n  responsiveSizes: function responsiveSizes(name, value, sizes) {\n    var screenName = name.replace(/^sizes/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!_index.default.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.sizes(value, sizes[screenName] || []);\n    return sizes;\n  },\n  responsiveFormats: function responsiveFormats(name, value, sizes) {\n    var screenName = name.replace(/^formats/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!_index.default.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.formats(value, []);\n    return sizes;\n  },\n  lazyLoadThreshold: function lazyLoadThreshold(value) {\n    return value.split(',').map(Number);\n  },\n  targeting: function targeting(value, _targeting) {\n    value = _index.default.hash(value, ';', '=');\n\n    _index.default.extend(_targeting, value);\n\n    return _targeting;\n  },\n  base: function base(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 collapseEmpty(value) {\n    var isUnknownAttribute = VALID_COLLAPSE_MODES.indexOf(value) === -1;\n\n    if (isUnknownAttribute) {\n      _index.default.log.warn(\"Invalid attribute \".concat(value, \" used for collapse-empty attribute, please use 'before', 'after' or 'never'\"));\n\n      return undefined;\n    }\n\n    return value;\n  }\n};\n\nvar convertLazyLoadBooleanToObject = obj => {\n  if (obj.lazyLoad === true) {\n    obj.lazyLoad = {};\n  }\n};\n\nvar onChangeBreakpoint = event => {\n  var 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  var renderEvent = 'slotRenderStart';\n  var cfg = (0, _config.default)();\n  var slotConfig = (0, _config.default)('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 (_index.default.isArray(slotConfig.formats)) {\n    attributeParsers.formats(slotConfig.formats, this.sizes);\n  } else if (_index.default.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 = (0, _config.default)('lazyLoad') || false;\n  }\n\n  var outerEl = container.querySelector('.o-ads__outer');\n\n  if (outerEl && cfg.displayLabelWithBorders && this.container.getAttribute('data-o-ads-label')) {\n    _index.default.once(renderEvent, () => {\n      outerEl.classList.add('o-ads--label-with-borders');\n    });\n  } // extend with imperative configuration options\n\n\n  this.parseAttributeConfig();\n  /* istanbul ignore else\t*/\n\n  if (!this.sizes.length && !_index.default.isPlainObject(this.sizes)) {\n    _index.default.log.error('slot %s has no configured sizes!', this.name);\n\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    var name = _index.default.parseAttributeName(attribute.name);\n\n    var 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  var attributes = {};\n  Array.from(this.container.attributes).forEach(attribute => {\n    attributes[_index.default.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      _index.default.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 (_index.default.isPlainObject(this.sizes)) {\n    /* istanbul ignore else */\n    if (!this.hasValidSize()) {\n      this.collapse();\n    }\n\n    _index.default.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-\".concat(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-\".concat(this.name));\n\n  _index.default.broadcast('collapsed', this);\n\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-\".concat(className));\n\n  _index.default.broadcast('slotClassAdded', this);\n\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-\".concat(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 (_index.default.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 (_index.default.isFunction(this['destroySlot'])) {\n    _index.default.off('breakpoint', onChangeBreakpoint, this.container);\n\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 (_index.default.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  var gpt = this.gpt || {};\n  var 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 (_index.default.isPlainObject(data)) {\n    _index.default.extend(details, data);\n  }\n\n  _index.default.broadcast(name, details, this.container);\n\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  var container = '<div ';\n  /* istanbul ignore else  */\n\n  if (attrs) {\n    Object.keys(attrs).forEach(function (attr) {\n      var value = attrs[attr];\n      container += \"\".concat(attr, \"=\").concat(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 && _index.default.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  var 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 && !(0, _config.default)('displayLabelWithBorders')) {\n    this.container.classList.add(\"o-ads--\".concat(className));\n  }\n\n  return this;\n};\n\nvar _default = Slot;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.DEFAULT_LAZY_LOAD = void 0;\n\nvar _config = _interopRequireDefault(require(\"../config.js\"));\n\nvar _index = _interopRequireDefault(require(\"../utils/index.js\"));\n\nvar _targeting = _interopRequireDefault(require(\"../targeting.js\"));\n\nvar _url = require(\"../utils/url.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*globals googletag: true */\n\n/* eslint no-inner-declarations: 1 */\n\n/**\n * @fileOverview\n * ad server modules for o-ads implementing Google publisher tags ad requests.\n *\n * @author Robin Marr, robin.marr@ft.com\n */\nvar DEFAULT_LAZY_LOAD = {\n  fetchMarginPercent: 500,\n  renderMarginPercent: 200,\n  mobileScaling: 2.0\n};\nexports.DEFAULT_LAZY_LOAD = DEFAULT_LAZY_LOAD;\nvar DEFAULT_COLLAPSE_MODE = 'never';\nvar breakpoints = false;\n/*\n//###########################\n// Initialisation handlers ##\n//###########################\n*/\n\n/*\n * Initialise Google publisher tags functionality\n */\n\nfunction init() {\n  var gptConfig = (0, _config.default)('gpt') || {};\n  breakpoints = (0, _config.default)('responsive');\n  loadGPT();\n\n  _index.default.on('slotReady', onReady.bind(null, slotMethods));\n\n  _index.default.on('slotCanRender', onRender);\n\n  _index.default.on('refresh', onRefresh);\n\n  _index.default.on('resize', onResize);\n\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  _index.default.attach('//securepubads.g.doubleclick.net/tag/js/gpt.js', true, () => {\n    _index.default.broadcast('serverScriptLoaded');\n  }, err => {\n    _index.default.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  var nonPersonalized = (0, _config.default)('nonPersonalized') ? 1 : 0;\n  googletag.pubads().addEventListener('slotRenderEnded', onRenderEnded);\n  enableCompanions(gptConfig);\n  setRenderingMode(gptConfig);\n  setPageTargeting(_targeting.default.get());\n  setPageCollapseEmpty();\n\n  if (gptConfig.hasOwnProperty('enableLazyLoad')) {\n    enableLazyLoad(gptConfig.enableLazyLoad);\n  }\n\n  var url = (0, _url.stripUrlParams)({\n    href: window.location.href,\n    filters: {\n      root: _url.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    var opts = Object.assign({}, DEFAULT_LAZY_LOAD, typeof lazyLoadConf === 'object' ? lazyLoadConf : {});\n    window.googletag.pubads().enableLazyLoad(opts);\n  } else {\n    _index.default.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  var 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 (_index.default.isPlainObject(targetingData)) {\n    googletag.cmd.push(() => {\n      var 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    _index.default.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    _index.default.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n\n    return;\n  }\n\n  if (!key) {\n    _index.default.log.warn('Refusing to unset all keys - a key must be specified');\n\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  var mode = (0, _config.default)('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  var 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    _index.default.extend(slot, slotMethods); // setup the gpt configuration the ad\n\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  var slot = event.detail.slot;\n  /* istanbul ignore else  */\n\n  if (_index.default.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    var targeting = event.detail.targeting;\n\n    if (_index.default.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  var iframe = event.detail.slot.gpt.iframe;\n  var 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  var data = {\n    gpt: {}\n  };\n  var gptSlotId = event.slot.getSlotId();\n  var domId = gptSlotId.getDomId().split('-');\n  var iframeId = \"google_ads_iframe_\".concat(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  var 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  var 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  var 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    _index.default.log.warn('No iFrame found matching GPT SlotID');\n  }\n\n  _index.default.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\nvar slotMethods = {\n  /**\n   * define a GPT slot\n   */\n  defineSlot: function defineSlot() {\n    window.googletag.cmd.push(() => {\n      this.gpt.id = \"\".concat(this.name, \"-gpt\");\n      this.inner.setAttribute('id', this.gpt.id);\n      this.setUnitName();\n\n      if (!this.outOfPage) {\n        if (breakpoints && _index.default.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 clearSlot(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 initResponsive() {\n    window.googletag.cmd.push(() => {\n      _index.default.on('breakpoint', event => {\n        var slot = event.detail.slot;\n        var 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\n      var 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 destroySlot(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 display() {\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 setUnitName() {\n    window.googletag.cmd.push(() => {\n      var unitName;\n      var gpt = (0, _config.default)('gpt') || {};\n      var attr = this.container.getAttribute('data-o-ads-gpt-unit-name');\n\n      if (_index.default.isNonEmptyString(attr)) {\n        unitName = attr;\n      } else if (_index.default.isNonEmptyString(gpt.unitName)) {\n        unitName = gpt.unitName;\n      } else {\n        var network = gpt.network;\n        var site = gpt.site;\n        var zone = gpt.zone;\n        unitName = \"/\".concat(network);\n        unitName += _index.default.isNonEmptyString(site) ? \"/\".concat(site) : '';\n        unitName += _index.default.isNonEmptyString(zone) ? \"/\".concat(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 addServices(gptSlot) {\n    window.googletag.cmd.push(() => {\n      var gpt = (0, _config.default)('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 setCollapseEmpty() {\n    window.googletag.cmd.push(() => {\n      var mode = this.collapseEmpty || (0, _config.default)('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 submitGptImpression() {\n    /* istanbul ignore next  */\n    function getImpressionURL(iframe) {\n      var trackingUrlElement = iframe.contentWindow.document.querySelector('[data-o-ads-impression-url]');\n\n      if (trackingUrlElement) {\n        return trackingUrlElement.dataset.oAdsImpressionUrl;\n      } else {\n        _index.default.log.warn('Impression URL not found, this is set via a creative template.');\n\n        return false;\n      }\n    }\n\n    if (this.outOfPage && this.gpt.iframe) {\n      var impressionURL = getImpressionURL(this.gpt.iframe);\n      /* istanbul ignore next  */\n\n      if (impressionURL) {\n        _index.default.attach(impressionURL, true, () => {\n          _index.default.log.info('Impression Url requested');\n        }, () => {\n          _index.default.log.info('CORS request to submit an impression failed');\n        }, true);\n      }\n    } else {\n      _index.default.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 setURL(gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      var canonical = (0, _config.default)('canonical');\n      gptSlot.set('page_url', canonical ? canonical : _index.default.getLocation());\n    });\n    return this;\n  },\n\n  /**\n   * Adds key values from a given object to the slot targeting\n   */\n  setTargeting: function setTargeting(gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      /* istanbul ignore else  */\n\n      if (_index.default.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  _index.default.log.warn('[DEPRECATED]: Updatecorrelator is being phased out by google and removed from o-ads in future releases.');\n\n  googletag.cmd.push(() => {\n    googletag.pubads().updateCorrelator();\n  });\n}\n\nfunction clearPageTargeting() {\n  if (window.googletag) {\n    googletag.cmd.push(() => {\n      googletag.pubads().clearTargeting();\n    });\n  } else {\n    _index.default.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n  }\n}\n\nfunction updatePageTargeting(override) {\n  if (window.googletag) {\n    var params = _index.default.isPlainObject(override) ? override : _targeting.default.get();\n    setPageTargeting(params);\n  } else {\n    _index.default.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  var log = _index.default.log;\n  var conf = (0, _config.default)('gpt');\n\n  if (!conf) {\n    return;\n  }\n\n  log.start('gpt');\n  log.attributeTable(conf);\n  log.end();\n}\n\nvar _default = {\n  init,\n  setup,\n  updateCorrelator,\n  updatePageTargeting,\n  clearPageTargeting,\n  clearPageTargetingForKey,\n  hasGPTLoaded,\n  loadGPT,\n  debug\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.filterNestedParams = filterNestedParams;\nexports.stripUrlParams = stripUrlParams;\nexports.SEARCH_PARAMS = void 0;\nvar 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\nexports.SEARCH_PARAMS = SEARCH_PARAMS;\n\nfunction filterNestedParams(nestedParams, keysToStrip) {\n  if (!keysToStrip || keysToStrip.length < 1) {\n    return nestedParams;\n  }\n\n  var childParams = new URLSearchParams(nestedParams);\n\n  for (var 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\n\nfunction stripUrlParams(_ref) {\n  var {\n    href,\n    filters\n  } = _ref;\n  // @ts-ignore: URL absolutely accepts Location!\n  var url = new URL(href);\n\n  for (var [param, filter] of Object.entries(filters)) {\n    if (param === 'root') {\n      // Strip parameters from the main query string\n      for (var key of filter) {\n        url.searchParams.delete(key);\n      }\n    } else {\n      // Handle nested parameters\n      var 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}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _ftdomdelegate = _interopRequireDefault(require(\"ftdomdelegate\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar socialUrls = {\n  twitter: \"https://twitter.com/intent/tweet?url={{url}}&text={{title}}&related={{relatedTwitterAccounts}}&via=FT\",\n  facebook: \"http://www.facebook.com/sharer.php?u={{url}}\",\n  linkedin: \"http://www.linkedin.com/shareArticle?mini=true&url={{url}}&title={{title}}+%7C+{{titleExtra}}&summary={{summary}}&source=Financial+Times\",\n  pinterest: \"http://www.pinterest.com/pin/create/button/?url={{url}}&description={{title}}\",\n  whatsapp: \"whatsapp://send?text={{title}}%20({{titleExtra}})%20-%20{{url}}\",\n  link: \"{{url}}\"\n};\nvar descriptiveLinkText = {\n  twitter: 'Share {{title}} on Twitter (opens a new window)',\n  facebook: 'Share {{title}} on Facebook (opens a new window)',\n  linkedin: 'Share {{title}} on LinkedIn (opens a new window)',\n  pinterest: 'Share {{title}} on Pinterest (opens a new window)',\n  whatsapp: 'Share {{title}} on Whatsapp (opens a new window)',\n  link: 'Open link in new window'\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  *\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  */\n\nfunction Share(rootEl, config) {\n  var oShare = this;\n  var openWindows = {};\n  /**\n    * Helper function to dispatch namespaced events, namespace defaults to oShare\n    *\n    * @private\n    */\n\n  function dispatchCustomEvent(event) {\n    var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var namespace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'oShare';\n    oShare.rootEl.dispatchEvent(new CustomEvent(namespace + '.' + event, {\n      detail: data,\n      bubbles: true\n    }));\n  }\n  /**\n    * Click event handler that checks the event target is an o-share action\n    *\n    * @param {Event} ev - The event to handle\n    * @return {undefined}\n    * @private\n    */\n\n\n  function handleClick(ev) {\n    var actionEl = ev.target.closest('li.o-share__action');\n\n    if (oShare.rootEl.contains(actionEl) && actionEl.querySelector('a[href]')) {\n      ev.preventDefault();\n      ev.stopPropagation();\n      var url = actionEl.querySelector('a[href]').href;\n      var shareLocation = oShare.rootEl.dataset.oShareLocation || '';\n      dispatchCustomEvent('event', {\n        category: 'share',\n        action: 'click',\n        button: actionEl.textContent.trim().toLowerCase(),\n        location: shareLocation\n      }, 'oTracking');\n      shareSocial(url);\n    }\n  }\n  /**\n    * Event handler for social network actions. Opens up a new window for that social network and dispatched the 'oShare.open' event\n    *\n    * @private\n    * @param {string} url - URL to be loaded in the new window\n    * @returns {undefined}\n    * @fires \"oShare.open\"\n    */\n\n\n  function shareSocial(url) {\n    if (url) {\n      if (openWindows[url] && !openWindows[url].closed) {\n        openWindows[url].focus();\n      } else {\n        openWindows[url] = window.open(url, '', 'width=646,height=436');\n        openWindows[url].opener = null;\n      }\n\n      dispatchCustomEvent('open', {\n        share: oShare,\n        action: \"social\",\n        url: url\n      });\n    }\n  }\n  /**\n    * Transforms the default social urls\n    *\n    * @private\n    * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n    * @returns {string}\n    */\n\n\n  function generateSocialUrl(socialNetwork) {\n    var templateUrl = socialUrls[socialNetwork];\n    templateUrl = templateUrl.replace('{{url}}', encodeURIComponent(config.url)).replace('{{title}}', encodeURIComponent(config.title)).replace('{{titleExtra}}', encodeURIComponent(config.titleExtra)).replace('{{summary}}', encodeURIComponent(config.summary)).replace('{{relatedTwitterAccounts}}', encodeURIComponent(config.relatedTwitterAccounts));\n    return templateUrl;\n  }\n  /**\n    * Transforms the descriptive text for social links\n    *\n    * @private\n    * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n    * @returns {string}\n    */\n\n\n  function generateDesriptiveLinkText(socialNetwork) {\n    var templateLinkText = descriptiveLinkText[socialNetwork];\n    templateLinkText = templateLinkText.replace('{{title}}', config.title);\n    return templateLinkText;\n  }\n  /**\n    * Renders the list of social networks in {@link config.links}\n    *\n    * @returns {undefined}\n    * @private\n    */\n\n\n  function render() {\n    normaliseConfig();\n    var ulElement = document.createElement('ul');\n\n    for (var i = 0; i < config.links.length; i++) {\n      var liElement = document.createElement('li');\n      var spanElement = document.createElement('span');\n      var aElement = document.createElement('a');\n      liElement.classList.add('o-share__action', \"o-share__action--\".concat(config.links[i]));\n      spanElement.classList.add('o-share__text');\n      spanElement.innerText = generateDesriptiveLinkText(config.links[i]);\n      aElement.classList.add('o-share__icon', \"o-share__icon--\".concat(config.links[i]));\n      aElement.href = generateSocialUrl(config.links[i]);\n      aElement.setAttribute('target', '_blank');\n      aElement.setAttribute('rel', 'noopener');\n      aElement.appendChild(spanElement);\n      liElement.appendChild(aElement);\n      ulElement.appendChild(liElement);\n    }\n\n    oShare.rootEl.appendChild(ulElement);\n  }\n  /**\n    * Normalises any data in the configuration, converting relative URLs to ready-to-share\n    * absolute versions\n    *\n    * @return {undefined}\n    * @private\n    */\n\n\n  function normaliseConfig() {\n    var link = document.createElement('a');\n    link.href = config.url;\n    config.url = link.protocol + '//' + link.host + link.pathname + link.search + link.hash;\n  }\n  /**\n    * Initialises the Share class, rendering the o-share element if it's empty with {@link config} options,\n    * or from corresponding data attributes and sets up dom-delegates.\n    * Dispatches 'oShare.ready' at the end\n    *\n    * @return {undefined}\n    * @fires \"oShare.ready\"\n    */\n\n\n  function init() {\n    if (!rootEl) {\n      rootEl = document.body;\n    } else if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    var rootDelegate = new _ftdomdelegate.default(rootEl);\n    rootDelegate.on('click', handleClick);\n    rootEl.setAttribute('data-o-share--js', '');\n    oShare.rootDomDelegate = rootDelegate;\n    oShare.rootEl = rootEl;\n\n    if (rootEl.children.length === 0) {\n      if (!config) {\n        config = {};\n        config.links = rootEl.hasAttribute('data-o-share-links') ? rootEl.getAttribute('data-o-share-links').split(' ') : [];\n        config.url = rootEl.getAttribute('data-o-share-url') || '';\n        config.title = rootEl.getAttribute('data-o-share-title') || '';\n        config.titleExtra = rootEl.getAttribute('data-o-share-titleExtra') || '';\n        config.summary = rootEl.getAttribute('data-o-share-summary') || '';\n        config.relatedTwitterAccounts = rootEl.getAttribute('data-o-share-relatedTwitterAccounts') || '';\n      }\n\n      render();\n    }\n\n    dispatchCustomEvent('ready', {\n      share: oShare\n    });\n  }\n\n  init();\n}\n/**\n  * Destroys the Share instance, disables dom-delegates\n  *\n  * @return {undefined}\n  */\n\n\nShare.prototype.destroy = function () {\n  this.rootDomDelegate.destroy(); // Should destroy remove its children? Maybe setting .innerHTML to '' is faster\n\n  for (var i = 0; i < this.rootEl.children; i++) {\n    this.rootEl.removeChild(this.rootEl.children[i]);\n  }\n\n  this.rootEl.removeAttribute('data-o-share--js');\n  this.rootEl = undefined;\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 {Array} - An array of Share instances\n  */\n\n\nShare.init = function () {\n  var rootEl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.body;\n\n  if (!(rootEl instanceof HTMLElement)) {\n    rootEl = document.querySelector(rootEl);\n  }\n\n  if (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-share]')) {\n    return new Share(rootEl);\n  }\n\n  return Array.from(rootEl.querySelectorAll('[data-o-component=o-share]'), rootEl => new Share(rootEl));\n};\n\nvar _default = Share;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _ftDateFormat = _interopRequireDefault(require(\"@financial-times/ft-date-format\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar updateEventName = 'update';\nvar interval;\n\nfunction ftDateFormatWarning(methodName) {\n  // eslint-disable-next-line no-console\n  console.warn(\"The o-date method \\\"\".concat(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 * Initialise the o-date component.\n * @param {HTMLElement|String} rootElement - The root element or CSS selector to initialise\n */\n\n\nclass ODate {\n  constructor(rootEl) {\n    if (!rootEl) {\n      // eslint-disable-next-line no-console\n      console.warn('To initialise all o-date elements on the page use ' + 'the `init` method. Passing no arguments to the constructor ' + 'is deprecated.');\n    }\n\n    if (rootEl && !(rootEl instanceof HTMLElement)) {\n      // eslint-disable-next-line no-console\n      console.warn('Using the constructor to initialise one or more ' + 'o-date elements with a query selector is deprecated. ' + 'Pass a single o-date HTMLElement to initialise or use the ' + '`init` method.');\n    }\n\n    if (!rootEl) {\n      rootEl = document.body;\n    } else if (!(rootEl instanceof HTMLElement)) {\n      rootEl = document.querySelector(rootEl);\n    }\n\n    if (rootEl.getAttribute('data-o-component') === \"o-date\") {\n      this.el = rootEl;\n    } else {\n      this.el = rootEl.querySelector('[data-o-component~=\"o-date\"]');\n    }\n\n    if (this.el) {\n      document.body.addEventListener(updateEventName, this);\n      this.update();\n      this.el.setAttribute('data-o-date-js', '');\n    }\n\n    if (this.el && !interval) {\n      interval = setInterval(function () {\n        document.body.dispatchEvent(new CustomEvent(updateEventName));\n      }, 60000);\n    }\n  } // Use object-level event listener method so a new function doesn't need to be bound for each instance\n\n\n  handleEvent(e) {\n    if (e.type === updateEventName) {\n      this.update();\n    }\n  }\n  /**\n   * Re-render the formatted date within the `time` element.\n   * @returns {undefined}\n   */\n\n\n  update() {\n    var el = this.el; // Find the date to render.\n    // Use the current date if the `datetime` attribute is not set and\n    // the o-date `time` element has no text content.\n\n    var dateTime = el.getAttribute('datetime');\n    var date = dateTime ? _ftDateFormat.default.toDate(dateTime) : null;\n\n    if (!date && this.el.textContent === '') {\n      date = new Date();\n    }\n\n    if (!date) {\n      return;\n    } // Find elements to render formatted dates to.\n    // @deprecated - The class `.o-date__printer` is deprecated.\n    // `.o-date__printer` should be removed in the next major.\n    // Use `[data-o-date-printer]` instead of `.o-date__printer`.\n\n\n    var printers = el.querySelectorAll('.o-date__printer,[data-o-date-printer]');\n    printers = printers.length ? printers : [el]; // Render the found date in each printer element.\n\n    for (var printer of printers) {\n      this._renderDateFor(printer, date);\n    } // If no printers result in output, e.g. because the,\n    // format chosen does not output the time after x hours,\n    // then hide the `time` element.\n\n\n    if (el.textContent) {\n      el.setAttribute('title', _ftDateFormat.default.format(date, 'datetime'));\n      el.removeAttribute('aria-hidden');\n    } else {\n      el.setAttribute('aria-hidden', true);\n    }\n  }\n  /**\n   * Remove o-date from the `time` element i.e. remove event\n   * listeners and drop references to the element.\n   * @returns {undefined}\n   */\n\n\n  destroy() {\n    document.body.removeEventListener(updateEventName, this);\n    this.el = null;\n  }\n  /**\n   * Initialise the o-date component.\n   * @param {HTMLElement|String} el - The root element or CSS selector to initialise\n   * @returns {Array<ODate> | ODate} - An o-date instance or array of o-date instances.\n   */\n\n\n  static init(el) {\n    if (!el) {\n      el = document.body;\n    }\n\n    if (!(el instanceof HTMLElement)) {\n      el = document.querySelector(el);\n    }\n    /* If el's data-o-component has \\bo-date\\b in it, ie it is itself a date,\n     return a new o-date */\n\n\n    if (/\\bo-date\\b/.test(el.getAttribute('data-o-component'))) {\n      return new ODate(el);\n    } // If el contains date components, return o-dates\n\n\n    var dateEls = el.querySelectorAll('[data-o-component~=\"o-date\"]');\n    return [].map.call(dateEls, function (el) {\n      return new ODate(el);\n    });\n  }\n  /**\n   * Render the date to the \"printer\" element in the requested format.\n   * @param {HTMLElement} printer - The element to render the date in\n   * @param {Date} date - The date to format\n   * @returns {undefined}\n   */\n\n\n  _renderDateFor(printer, date) {\n    // Use the printer `data-o-date-format` if found or fallback to the\n    // root element if not found.\n    var format = printer.getAttribute('data-o-date-format') || this.el.getAttribute('data-o-date-format');\n    var dateString;\n    var labelString;\n\n    if (format === 'today-or-yesterday-or-nothing') {\n      dateString = _ftDateFormat.default.asTodayOrYesterdayOrNothing(date);\n    } else if (format === 'date-only') {\n      dateString = _ftDateFormat.default.format(date, 'date');\n    } else if (format === 'time-ago-limit-4-hours') {\n      dateString = _ftDateFormat.default.timeAgo(date, {\n        limit: 4 * _ftDateFormat.default.inSeconds.hour\n      });\n    } else if (format === 'time-ago-abbreviated') {\n      dateString = _ftDateFormat.default.timeAgo(date, {\n        abbreviated: true\n      });\n      labelString = _ftDateFormat.default.timeAgo(date);\n    } else if (format === 'time-ago-abbreviated-limit-4-hours') {\n      dateString = _ftDateFormat.default.timeAgo(date, {\n        abbreviated: true,\n        limit: 4 * _ftDateFormat.default.inSeconds.hour\n      });\n      labelString = _ftDateFormat.default.timeAgo(date, {\n        limit: 4 * _ftDateFormat.default.inSeconds.hour\n      });\n    } else if (format === 'time-ago-no-seconds') {\n      dateString = _ftDateFormat.default.timeAgoNoSeconds(date);\n    } else if (format !== null) {\n      dateString = _ftDateFormat.default.format(date, format);\n    } else {\n      dateString = _ftDateFormat.default.ftTime(date);\n    } // To avoid triggering a parent live region unnecessarily\n    // <https://github.com/Financial-Times/o-date/pull/43>\n\n\n    var hasSingleTextNode = printer.childNodes.length === 1 && printer.firstChild && printer.firstChild.nodeType === 3;\n\n    if (hasSingleTextNode) {\n      printer.firstChild.nodeValue = dateString;\n    } else {\n      printer.innerHTML = dateString;\n    }\n\n    if (dateString) {\n      printer.setAttribute('aria-label', labelString || dateString);\n    } else {\n      printer.removeAttribute('aria-label');\n    }\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static toDate() {\n    ftDateFormatWarning('toDate');\n    return _ftDateFormat.default.toDate(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static format() {\n    ftDateFormatWarning('format');\n    return _ftDateFormat.default.format(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static getSecondsBetween() {\n    ftDateFormatWarning('getSecondsBetween');\n    return _ftDateFormat.default.getSecondsBetween(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static ftTime() {\n    ftDateFormatWarning('ftTime');\n    return _ftDateFormat.default.ftTime(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isNearFuture() {\n    ftDateFormatWarning('isNearFuture');\n    return _ftDateFormat.default.isNearFuture(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isFarFuture() {\n    ftDateFormatWarning('isFarFuture');\n    return _ftDateFormat.default.isFarFuture(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isToday() {\n    ftDateFormatWarning('isToday');\n    return _ftDateFormat.default.isToday(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static isYesterday() {\n    ftDateFormatWarning('isYesterday');\n    return _ftDateFormat.default.isYesterday(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static timeAgo() {\n    ftDateFormatWarning('timeAgo');\n    return _ftDateFormat.default.timeAgo(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static asTodayOrYesterdayOrNothing() {\n    ftDateFormatWarning('asTodayOrYesterdayOrNothing');\n    return _ftDateFormat.default.asTodayOrYesterdayOrNothing(...arguments);\n  }\n  /**\n   * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n   * @return {String} - A formatted date or empty string.\n   */\n\n\n  static timeAgoNoSeconds() {\n    ftDateFormatWarning('timeAgoNoSeconds');\n    return _ftDateFormat.default.timeAgoNoSeconds(...arguments);\n  }\n\n}\n\nvar _default = ODate;\nexports.default = _default;\nmodule.exports = exports.default;","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","'use strict'\n\n/* Dependencies. */\nvar extend = require('extend')\nvar bail = require('bail')\nvar vfile = require('vfile')\nvar trough = require('trough')\nvar string = require('x-is-string')\nvar plain = require('is-plain-obj')\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(err, tree, file) {\n    if (err) {\n      next(err)\n    } else {\n      ctx.tree = tree\n      ctx.file = file\n      next()\n    }\n  }\n}\n\nfunction pipelineStringify(p, ctx) {\n  ctx.file.contents = p.stringify(ctx.tree, ctx.file)\n}\n\n/* Function to create the first processor. */\nfunction unified() {\n  var attachers = []\n  var transformers = trough()\n  var namespace = {}\n  var frozen = false\n  var freezeIndex = -1\n\n  /* Data management. */\n  processor.data = data\n\n  /* Lock. */\n  processor.freeze = freeze\n\n  /* Plug-ins. */\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\n   * in the current scope. */\n  function processor() {\n    var destination = unified()\n    var length = attachers.length\n    var index = -1\n\n    while (++index < 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\n   * configuration.\n   *\n   * For example, take unified itself.  It’s frozen.\n   * Plug-ins should not be added to it.  Rather, it should\n   * be extended, by invoking it, before modifying it.\n   *\n   * In essence, always invoke this when exporting a\n   * processor. */\n  function freeze() {\n    var values\n    var plugin\n    var options\n    var transformer\n\n    if (frozen) {\n      return processor\n    }\n\n    while (++freezeIndex < attachers.length) {\n      values = attachers[freezeIndex]\n      plugin = values[0]\n      options = values[1]\n      transformer = null\n\n      if (options === false) {\n        continue\n      }\n\n      if (options === true) {\n        values[1] = undefined\n      }\n\n      transformer = plugin.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 (string(key)) {\n      /* Set `key`. */\n      if (arguments.length === 2) {\n        assertUnfrozen('data', frozen)\n\n        namespace[key] = value\n\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  /* Plug-in management.\n   *\n   * Pass it:\n   * *   an attacher and options,\n   * *   a preset,\n   * *   a list of presets, attachers, and arguments (list\n   *     of attachers and 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 length\n      var index\n\n      if (plugins === null || plugins === undefined) {\n        /* Empty */\n      } else if (typeof plugins === 'object' && 'length' in plugins) {\n        length = plugins.length\n        index = -1\n\n        while (++index < 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(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 length = attachers.length\n    var index = -1\n    var entry\n\n    while (++index < length) {\n      entry = attachers[index]\n\n      if (entry[0] === plugin) {\n        return entry\n      }\n    }\n  }\n\n  /* Parse a file (in string or VFile representation)\n   * into a Unist node using the `Parser` on the\n   * 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)) {\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\n   * (in string or 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(err, tree, file) {\n        tree = tree || node\n        if (err) {\n          reject(err)\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\n   * (in string or VFile representation), sync. */\n  function runSync(node, file) {\n    var complete = false\n    var result\n\n    run(node, file, done)\n\n    assertDone('runSync', 'run', complete)\n\n    return result\n\n    function done(err, tree) {\n      complete = true\n      bail(err)\n      result = tree\n    }\n  }\n\n  /* Stringify a Unist node representation of a file\n   * (in string or VFile representation) into a string\n   * 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)) {\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)\n   * into a Unist node using the `Parser` on the processor,\n   * then run transforms on that node, and compile the\n   * resulting node using the `Compiler` on the processor,\n   * and 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(err) {\n        if (err) {\n          reject(err)\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\n   * representation), sync. */\n  function processSync(doc) {\n    var complete = false\n    var file\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(err) {\n      complete = true\n      bail(err)\n    }\n  }\n}\n\n/* Check if `func` is a constructor. */\nfunction newable(value) {\n  return typeof value === 'function' && keys(value.prototype)\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  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      [\n        'Cannot invoke `' + name + '` on a frozen processor.\\nCreate a new ',\n        'processor first, by invoking it: use `processor()` instead of ',\n        '`processor`.'\n      ].join('')\n    )\n  }\n}\n\n/* Assert `node` is a Unist node. */\nfunction assertNode(node) {\n  if (!node || !string(node.type)) {\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\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 = bail\n\nfunction bail(err) {\n  if (err) {\n    throw err\n  }\n}\n","'use strict';\n\nvar VMessage = require('vfile-message');\nvar VFile = require('./core.js');\n\nmodule.exports = VFile;\n\nvar proto = VFile.prototype;\n\nproto.message = message;\nproto.info = info;\nproto.fail = fail;\n\n/* Slight backwards compatibility.  Remove in the future. */\nproto.warn = message;\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 filePath = this.path;\n  var message = new VMessage(reason, position, origin);\n\n  if (filePath) {\n    message.name = filePath + ':' + message.name;\n    message.file = filePath;\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,\n * 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,\n * and marks the fatality 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 own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n  /* Nothing. */\n  if (!value || typeof value !== 'object') {\n    return null\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 null\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 path = require('path');\nvar replace = require('replace-ext');\nvar buffer = require('is-buffer');\n\nmodule.exports = VFile;\n\nvar own = {}.hasOwnProperty;\nvar proto = VFile.prototype;\n\nproto.toString = toString;\n\n/* Order of setting (least specific to most), we need this because\n * otherwise `{stem: 'a', path: '~/b.js'}` would throw, as a path\n * is needed before a stem can be set. */\nvar order = [\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n];\n\n/* Construct a new file. */\nfunction VFile(options) {\n  var prop;\n  var index;\n  var length;\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 = process.cwd();\n\n  /* Set path related properties in the correct order. */\n  index = -1;\n  length = order.length;\n\n  while (++index < 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) === -1) {\n      this[prop] = options[prop];\n    }\n  }\n}\n\n/* Access full path (`~/index.min.js`). */\nObject.defineProperty(proto, 'path', {\n  get: function () {\n    return this.history[this.history.length - 1];\n  },\n  set: function (path) {\n    assertNonEmpty(path, 'path');\n\n    if (path !== this.path) {\n      this.history.push(path);\n    }\n  }\n});\n\n/* Access parent path (`~`). */\nObject.defineProperty(proto, 'dirname', {\n  get: function () {\n    return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n  },\n  set: function (dirname) {\n    assertPath(this.path, 'dirname');\n    this.path = path.join(dirname || '', this.basename);\n  }\n});\n\n/* Access basename (`index.min.js`). */\nObject.defineProperty(proto, 'basename', {\n  get: function () {\n    return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n  },\n  set: function (basename) {\n    assertNonEmpty(basename, 'basename');\n    assertPart(basename, 'basename');\n    this.path = path.join(this.dirname || '', basename);\n  }\n});\n\n/* Access extname (`.js`). */\nObject.defineProperty(proto, 'extname', {\n  get: function () {\n    return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n  },\n  set: function (extname) {\n    var ext = extname || '';\n\n    assertPart(ext, 'extname');\n    assertPath(this.path, 'extname');\n\n    if (ext) {\n      if (ext.charAt(0) !== '.') {\n        throw new Error('`extname` must start with `.`');\n      }\n\n      if (ext.indexOf('.', 1) !== -1) {\n        throw new Error('`extname` cannot contain multiple dots');\n      }\n    }\n\n    this.path = replace(this.path, ext);\n  }\n});\n\n/* Access stem (`index.min`). */\nObject.defineProperty(proto, 'stem', {\n  get: function () {\n    return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n  },\n  set: function (stem) {\n    assertNonEmpty(stem, 'stem');\n    assertPart(stem, 'stem');\n    this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n  }\n});\n\n/* Get the value of the file. */\nfunction toString(encoding) {\n  var value = this.contents || '';\n  return buffer(value) ? value.toString(encoding) : String(value);\n}\n\n/* Assert that `part` is not a path (i.e., does\n * not contain `path.sep`). */\nfunction assertPart(part, name) {\n  if (part.indexOf(path.sep) !== -1) {\n    throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\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\nvar path = require('path');\n\nfunction replaceExt(npath, ext) {\n  if (typeof npath !== 'string') {\n    return npath;\n  }\n\n  if (npath.length === 0) {\n    return npath;\n  }\n\n  var nFileName = path.basename(npath, path.extname(npath)) + ext;\n  return path.join(path.dirname(npath), nFileName);\n}\n\nmodule.exports = replaceExt;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\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","var toString = Object.prototype.toString\n\nmodule.exports = isString\n\nfunction isString(obj) {\n    return toString.call(obj) === \"[object String]\"\n}\n","'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n","'use strict';\n\nvar unherit = require('unherit');\nvar xtend = require('xtend');\nvar Parser = require('./lib/parser.js');\n\nmodule.exports = parse;\nparse.Parser = Parser;\n\nfunction parse(options) {\n  var Local = unherit(Parser);\n  Local.prototype.options = xtend(Local.prototype.options, this.data('settings'), options);\n  this.Parser = Local;\n}\n","'use strict'\n\nvar xtend = require('xtend')\nvar inherits = require('inherits')\n\nmodule.exports = unherit\n\n// Create a custom constructor which can be modified without affecting the\n// original class.\nfunction unherit(Super) {\n  var result\n  var key\n  var value\n\n  inherits(Of, Super)\n  inherits(From, Of)\n\n  // Clone values.\n  result = Of.prototype\n\n  for (key in result) {\n    value = result[key]\n\n    if (value && typeof value === 'object') {\n      result[key] = 'concat' in value ? value.concat() : xtend(value)\n    }\n  }\n\n  return Of\n\n  // Constructor accepting a single argument, which itself is an `arguments`\n  // object.\n  function From(parameters) {\n    return Super.apply(this, parameters)\n  }\n\n  // Constructor accepting variadic arguments.\n  function Of() {\n    if (!(this instanceof Of)) {\n      return new From(arguments)\n    }\n\n    return Super.apply(this, arguments)\n  }\n}\n","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar toggle = require('state-toggle');\nvar vfileLocation = require('vfile-location');\nvar unescape = require('./unescape');\nvar decode = require('./decode');\nvar tokenizer = require('./tokenizer');\n\nmodule.exports = Parser;\n\nfunction Parser(doc, file) {\n  this.file = file;\n  this.offset = {};\n  this.options = xtend(this.options);\n  this.setOptions({});\n\n  this.inList = false;\n  this.inBlock = false;\n  this.inLink = false;\n  this.atStart = true;\n\n  this.toOffset = vfileLocation(file).toOffset;\n  this.unescape = unescape(this, 'escape');\n  this.decode = decode(this);\n}\n\nvar proto = Parser.prototype;\n\n/* Expose core. */\nproto.setOptions = require('./set-options');\nproto.parse = require('./parse');\n\n/* Expose `defaults`. */\nproto.options = require('./defaults');\n\n/* Enter and exit helpers. */\nproto.exitStart = toggle('atStart', true);\nproto.enterList = toggle('inList', false);\nproto.enterLink = toggle('inLink', false);\nproto.enterBlock = toggle('inBlock', false);\n\n/* Nodes that can interupt a paragraph:\n *\n * ```markdown\n * A paragraph, followed by a thematic break.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the paragraph. */\nproto.interruptParagraph = [\n  ['thematicBreak'],\n  ['atxHeading'],\n  ['fencedCode'],\n  ['blockquote'],\n  ['html'],\n  ['setextHeading', {commonmark: false}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Nodes that can interupt a list:\n *\n * ```markdown\n * - One\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the list. */\nproto.interruptList = [\n  ['atxHeading', {pedantic: false}],\n  ['fencedCode', {pedantic: false}],\n  ['thematicBreak', {pedantic: false}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Nodes that can interupt a blockquote:\n *\n * ```markdown\n * > A paragraph.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the blockquote. */\nproto.interruptBlockquote = [\n  ['indentedCode', {commonmark: true}],\n  ['fencedCode', {commonmark: true}],\n  ['atxHeading', {commonmark: true}],\n  ['setextHeading', {commonmark: true}],\n  ['thematicBreak', {commonmark: true}],\n  ['html', {commonmark: true}],\n  ['list', {commonmark: true}],\n  ['definition', {commonmark: false}],\n  ['footnote', {commonmark: false}]\n];\n\n/* Handlers. */\nproto.blockTokenizers = {\n  newline: require('./tokenize/newline'),\n  indentedCode: require('./tokenize/code-indented'),\n  fencedCode: require('./tokenize/code-fenced'),\n  blockquote: require('./tokenize/blockquote'),\n  atxHeading: require('./tokenize/heading-atx'),\n  thematicBreak: require('./tokenize/thematic-break'),\n  list: require('./tokenize/list'),\n  setextHeading: require('./tokenize/heading-setext'),\n  html: require('./tokenize/html-block'),\n  footnote: require('./tokenize/footnote-definition'),\n  definition: require('./tokenize/definition'),\n  table: require('./tokenize/table'),\n  paragraph: require('./tokenize/paragraph')\n};\n\nproto.inlineTokenizers = {\n  escape: require('./tokenize/escape'),\n  autoLink: require('./tokenize/auto-link'),\n  url: require('./tokenize/url'),\n  html: require('./tokenize/html-inline'),\n  link: require('./tokenize/link'),\n  reference: require('./tokenize/reference'),\n  strong: require('./tokenize/strong'),\n  emphasis: require('./tokenize/emphasis'),\n  deletion: require('./tokenize/delete'),\n  code: require('./tokenize/code-inline'),\n  break: require('./tokenize/break'),\n  text: require('./tokenize/text')\n};\n\n/* Expose precedence. */\nproto.blockMethods = keys(proto.blockTokenizers);\nproto.inlineMethods = keys(proto.inlineTokenizers);\n\n/* Tokenizers. */\nproto.tokenizeBlock = tokenizer('block');\nproto.tokenizeInline = tokenizer('inline');\nproto.tokenizeFactory = tokenizer;\n\n/* Get all keys in `value`. */\nfunction keys(value) {\n  var result = [];\n  var key;\n\n  for (key in value) {\n    result.push(key);\n  }\n\n  return result;\n}\n","'use strict'\n\nmodule.exports = factory\n\n// Construct a state `toggler`: a function which inverses `property` in context\n// based on its current value.\n// The by `toggler` returned function restores that value.\nfunction factory(key, state, ctx) {\n  return enter\n\n  function enter() {\n    var context = ctx || this\n    var current = context[key]\n\n    context[key] = !state\n\n    return exit\n\n    function exit() {\n      context[key] = current\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = factory\n\nfunction factory(file) {\n  var contents = indices(String(file))\n\n  return {\n    toPosition: offsetToPositionFactory(contents),\n    toOffset: positionToOffsetFactory(contents)\n  }\n}\n\n// Factory to get the line and column-based `position` for `offset` in the bound\n// indices.\nfunction offsetToPositionFactory(indices) {\n  return offsetToPosition\n\n  // Get the line and column-based `position` for `offset` in the bound indices.\n  function offsetToPosition(offset) {\n    var index = -1\n    var length = indices.length\n\n    if (offset < 0) {\n      return {}\n    }\n\n    while (++index < length) {\n      if (indices[index] > offset) {\n        return {\n          line: index + 1,\n          column: offset - (indices[index - 1] || 0) + 1,\n          offset: offset\n        }\n      }\n    }\n\n    return {}\n  }\n}\n\n// Factory to get the `offset` for a line and column-based `position` in the\n// bound indices.\nfunction positionToOffsetFactory(indices) {\n  return positionToOffset\n\n  // Get the `offset` for a line and column-based `position` in the bound\n  // indices.\n  function positionToOffset(position) {\n    var line = position && position.line\n    var column = position && position.column\n\n    if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n      return (indices[line - 2] || 0) + column - 1 || 0\n    }\n\n    return -1\n  }\n}\n\n// Get indices of line-breaks in `value`.\nfunction indices(value) {\n  var result = []\n  var index = value.indexOf('\\n')\n\n  while (index !== -1) {\n    result.push(index + 1)\n    index = value.indexOf('\\n', index + 1)\n  }\n\n  result.push(value.length + 1)\n\n  return result\n}\n","'use strict';\n\nmodule.exports = factory;\n\n/* Factory to de-escape a value, based on a list at `key`\n * in `ctx`. */\nfunction factory(ctx, key) {\n  return unescape;\n\n  /* De-escape a string using the expression at `key`\n   * in `ctx`. */\n  function unescape(value) {\n    var prev = 0;\n    var index = value.indexOf('\\\\');\n    var escape = ctx[key];\n    var queue = [];\n    var character;\n\n    while (index !== -1) {\n      queue.push(value.slice(prev, index));\n      prev = index + 1;\n      character = value.charAt(prev);\n\n      /* If the following character is not a valid escape,\n       * add the slash. */\n      if (!character || escape.indexOf(character) === -1) {\n        queue.push('\\\\');\n      }\n\n      index = value.indexOf('\\\\', prev);\n    }\n\n    queue.push(value.slice(prev));\n\n    return queue.join('');\n  }\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar entities = require('parse-entities');\n\nmodule.exports = factory;\n\n/* Factory to create an entity decoder. */\nfunction factory(ctx) {\n  decoder.raw = decodeRaw;\n\n  return decoder;\n\n  /* Normalize `position` to add an `indent`. */\n  function normalize(position) {\n    var offsets = ctx.offset;\n    var line = position.line;\n    var result = [];\n\n    while (++line) {\n      if (!(line in offsets)) {\n        break;\n      }\n\n      result.push((offsets[line] || 0) + 1);\n    }\n\n    return {\n      start: position,\n      indent: result\n    };\n  }\n\n  /* Handle a warning.\n   * See https://github.com/wooorm/parse-entities\n   * for the warnings. */\n  function handleWarning(reason, position, code) {\n    if (code === 3) {\n      return;\n    }\n\n    ctx.file.message(reason, position);\n  }\n\n  /* Decode `value` (at `position`) into text-nodes. */\n  function decoder(value, position, handler) {\n    entities(value, {\n      position: normalize(position),\n      warning: handleWarning,\n      text: handler,\n      reference: handler,\n      textContext: ctx,\n      referenceContext: ctx\n    });\n  }\n\n  /* Decode `value` (at `position`) into a string. */\n  function decodeRaw(value, position, options) {\n    return entities(value, xtend(options, {\n      position: normalize(position),\n      warning: handleWarning\n    }));\n  }\n}\n","'use strict'\n\nmodule.exports = hexadecimal\n\n// Check if the given character code, or the character code at the first\n// character, is hexadecimal.\nfunction hexadecimal(character) {\n  var code = typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 /* a */ && code <= 102) /* z */ ||\n    (code >= 65 /* A */ && code <= 70) /* Z */ ||\n    (code >= 48 /* A */ && code <= 57) /* Z */\n  )\n}\n","'use strict'\n\nvar alphabetical = require('is-alphabetical')\nvar decimal = require('is-decimal')\n\nmodule.exports = alphanumerical\n\n// Check if the given character code, or the character code at the first\n// character, is alphanumerical.\nfunction alphanumerical(character) {\n  return alphabetical(character) || decimal(character)\n}\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\nmodule.exports = factory;\n\nvar MERGEABLE_NODES = {\n  text: mergeText,\n  blockquote: mergeBlockquote\n};\n\n/* Check whether a node is mergeable with adjacent nodes. */\nfunction mergeable(node) {\n  var start;\n  var end;\n\n  if (node.type !== 'text' || !node.position) {\n    return true;\n  }\n\n  start = node.position.start;\n  end = node.position.end;\n\n  /* Only merge nodes which occupy the same size as their\n   * `value`. */\n  return start.line !== end.line ||\n      end.column - start.column === node.value.length;\n}\n\n/* Merge two text nodes: `node` into `prev`. */\nfunction mergeText(prev, node) {\n  prev.value += node.value;\n\n  return prev;\n}\n\n/* Merge two blockquotes: `node` into `prev`, unless in\n * CommonMark mode. */\nfunction mergeBlockquote(prev, node) {\n  if (this.options.commonmark) {\n    return node;\n  }\n\n  prev.children = prev.children.concat(node.children);\n\n  return prev;\n}\n\n/* Construct a tokenizer.  This creates both\n * `tokenizeInline` and `tokenizeBlock`. */\nfunction factory(type) {\n  return tokenize;\n\n  /* Tokenizer for a bound `type`. */\n  function tokenize(value, location) {\n    var self = this;\n    var offset = self.offset;\n    var tokens = [];\n    var methods = self[type + 'Methods'];\n    var tokenizers = self[type + 'Tokenizers'];\n    var line = location.line;\n    var column = location.column;\n    var index;\n    var length;\n    var method;\n    var name;\n    var matched;\n    var valueLength;\n\n    /* Trim white space only lines. */\n    if (!value) {\n      return tokens;\n    }\n\n    /* Expose on `eat`. */\n    eat.now = now;\n    eat.file = self.file;\n\n    /* Sync initial offset. */\n    updatePosition('');\n\n    /* Iterate over `value`, and iterate over all\n     * tokenizers.  When one eats something, re-iterate\n     * with the remaining value.  If no tokenizer eats,\n     * something failed (should not happen) and an\n     * exception is thrown. */\n    while (value) {\n      index = -1;\n      length = methods.length;\n      matched = false;\n\n      while (++index < length) {\n        name = methods[index];\n        method = tokenizers[name];\n\n        if (\n          method &&\n          /* istanbul ignore next */ (!method.onlyAtStart || self.atStart) &&\n          (!method.notInList || !self.inList) &&\n          (!method.notInBlock || !self.inBlock) &&\n          (!method.notInLink || !self.inLink)\n        ) {\n          valueLength = value.length;\n\n          method.apply(self, [eat, value]);\n\n          matched = valueLength !== value.length;\n\n          if (matched) {\n            break;\n          }\n        }\n      }\n\n      /* istanbul ignore if */\n      if (!matched) {\n        self.file.fail(new Error('Infinite loop'), eat.now());\n      }\n    }\n\n    self.eof = now();\n\n    return tokens;\n\n    /* Update line, column, and offset based on\n     * `value`. */\n    function updatePosition(subvalue) {\n      var lastIndex = -1;\n      var index = subvalue.indexOf('\\n');\n\n      while (index !== -1) {\n        line++;\n        lastIndex = index;\n        index = subvalue.indexOf('\\n', index + 1);\n      }\n\n      if (lastIndex === -1) {\n        column += subvalue.length;\n      } else {\n        column = subvalue.length - lastIndex;\n      }\n\n      if (line in offset) {\n        if (lastIndex !== -1) {\n          column += offset[line];\n        } else if (column <= offset[line]) {\n          column = offset[line] + 1;\n        }\n      }\n    }\n\n    /* Get offset.  Called before the first character is\n     * eaten to retrieve the range's offsets. */\n    function getOffset() {\n      var indentation = [];\n      var pos = line + 1;\n\n      /* Done.  Called when the last character is\n       * eaten to retrieve the range’s offsets. */\n      return function () {\n        var last = line + 1;\n\n        while (pos < last) {\n          indentation.push((offset[pos] || 0) + 1);\n\n          pos++;\n        }\n\n        return indentation;\n      };\n    }\n\n    /* Get the current position. */\n    function now() {\n      var pos = {line: line, column: column};\n\n      pos.offset = self.toOffset(pos);\n\n      return pos;\n    }\n\n    /* Store position information for a node. */\n    function Position(start) {\n      this.start = start;\n      this.end = now();\n    }\n\n    /* Throw when a value is incorrectly eaten.\n     * This shouldn’t happen but will throw on new,\n     * incorrect rules. */\n    function validateEat(subvalue) {\n      /* istanbul ignore if */\n      if (value.substring(0, subvalue.length) !== subvalue) {\n        /* Capture stack-trace. */\n        self.file.fail(\n          new Error(\n            'Incorrectly eaten value: please report this ' +\n            'warning on http://git.io/vg5Ft'\n          ),\n          now()\n        );\n      }\n    }\n\n    /* Mark position and patch `node.position`. */\n    function position() {\n      var before = now();\n\n      return update;\n\n      /* Add the position to a node. */\n      function update(node, indent) {\n        var prev = node.position;\n        var start = prev ? prev.start : before;\n        var combined = [];\n        var n = prev && prev.end.line;\n        var l = before.line;\n\n        node.position = new Position(start);\n\n        /* If there was already a `position`, this\n         * node was merged.  Fixing `start` wasn’t\n         * hard, but the indent is different.\n         * Especially because some information, the\n         * indent between `n` and `l` wasn’t\n         * tracked.  Luckily, that space is\n         * (should be?) empty, so we can safely\n         * check for it now. */\n        if (prev && indent && prev.indent) {\n          combined = prev.indent;\n\n          if (n < l) {\n            while (++n < l) {\n              combined.push((offset[n] || 0) + 1);\n            }\n\n            combined.push(before.column);\n          }\n\n          indent = combined.concat(indent);\n        }\n\n        node.position.indent = indent || [];\n\n        return node;\n      }\n    }\n\n    /* Add `node` to `parent`s children or to `tokens`.\n     * Performs merges where possible. */\n    function add(node, parent) {\n      var children = parent ? parent.children : tokens;\n      var prev = children[children.length - 1];\n\n      if (\n        prev &&\n        node.type === prev.type &&\n        node.type in MERGEABLE_NODES &&\n        mergeable(prev) &&\n        mergeable(node)\n      ) {\n        node = MERGEABLE_NODES[node.type].call(self, prev, node);\n      }\n\n      if (node !== prev) {\n        children.push(node);\n      }\n\n      if (self.atStart && tokens.length !== 0) {\n        self.exitStart();\n      }\n\n      return node;\n    }\n\n    /* Remove `subvalue` from `value`.\n     * `subvalue` must be at the start of `value`. */\n    function eat(subvalue) {\n      var indent = getOffset();\n      var pos = position();\n      var current = now();\n\n      validateEat(subvalue);\n\n      apply.reset = reset;\n      reset.test = test;\n      apply.test = test;\n\n      value = value.substring(subvalue.length);\n\n      updatePosition(subvalue);\n\n      indent = indent();\n\n      return apply;\n\n      /* Add the given arguments, add `position` to\n       * the returned node, and return the node. */\n      function apply(node, parent) {\n        return pos(add(pos(node), parent), indent);\n      }\n\n      /* Functions just like apply, but resets the\n       * content:  the line and column are reversed,\n       * and the eaten value is re-added.\n       * This is useful for nodes with a single\n       * type of content, such as lists and tables.\n       * See `apply` above for what parameters are\n       * expected. */\n      function reset() {\n        var node = apply.apply(null, arguments);\n\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n\n        return node;\n      }\n\n      /* Test the position, after eating, and reverse\n       * to a not-eaten state. */\n      function test() {\n        var result = pos({});\n\n        line = current.line;\n        column = current.column;\n        value = subvalue + value;\n\n        return result.position;\n      }\n    }\n  }\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar escapes = require('markdown-escapes');\nvar defaults = require('./defaults');\n\nmodule.exports = setOptions;\n\nfunction setOptions(options) {\n  var self = this;\n  var current = self.options;\n  var key;\n  var value;\n\n  if (options == null) {\n    options = {};\n  } else if (typeof options === 'object') {\n    options = xtend(options);\n  } else {\n    throw new Error(\n      'Invalid value `' + options + '` ' +\n      'for setting `options`'\n    );\n  }\n\n  for (key in defaults) {\n    value = options[key];\n\n    if (value == null) {\n      value = current[key];\n    }\n\n    if (\n      (key !== 'blocks' && typeof value !== 'boolean') ||\n      (key === 'blocks' && typeof value !== 'object')\n    ) {\n      throw new Error('Invalid value `' + value + '` for setting `options.' + key + '`');\n    }\n\n    options[key] = value;\n  }\n\n  self.options = options;\n  self.escape = escapes(options);\n\n  return self;\n}\n","'use strict'\n\nmodule.exports = escapes\n\nvar defaults = [\n  '\\\\',\n  '`',\n  '*',\n  '{',\n  '}',\n  '[',\n  ']',\n  '(',\n  ')',\n  '#',\n  '+',\n  '-',\n  '.',\n  '!',\n  '_',\n  '>'\n]\n\nvar gfm = defaults.concat(['~', '|'])\n\nvar commonmark = gfm.concat([\n  '\\n',\n  '\"',\n  '$',\n  '%',\n  '&',\n  \"'\",\n  ',',\n  '/',\n  ':',\n  ';',\n  '<',\n  '=',\n  '?',\n  '@',\n  '^'\n])\n\nescapes.default = defaults\nescapes.gfm = gfm\nescapes.commonmark = commonmark\n\n// Get markdown escapes.\nfunction escapes(options) {\n  var settings = options || {}\n\n  if (settings.commonmark) {\n    return commonmark\n  }\n\n  return settings.gfm ? gfm : defaults\n}\n","'use strict';\n\nvar xtend = require('xtend');\nvar removePosition = require('unist-util-remove-position');\n\nmodule.exports = parse;\n\nvar C_NEWLINE = '\\n';\nvar EXPRESSION_LINE_BREAKS = /\\r\\n|\\r/g;\n\n/* Parse the bound file. */\nfunction parse() {\n  var self = this;\n  var value = String(self.file);\n  var start = {line: 1, column: 1, offset: 0};\n  var content = xtend(start);\n  var node;\n\n  /* Clean non-unix newlines: `\\r\\n` and `\\r` are all\n   * changed to `\\n`.  This should not affect positional\n   * information. */\n  value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);\n\n  if (value.charCodeAt(0) === 0xFEFF) {\n    value = value.slice(1);\n\n    content.column++;\n    content.offset++;\n  }\n\n  node = {\n    type: 'root',\n    children: self.tokenizeBlock(value, content),\n    position: {\n      start: start,\n      end: self.eof || xtend(start)\n    }\n  };\n\n  if (!self.options.position) {\n    removePosition(node, true);\n  }\n\n  return node;\n}\n","'use strict'\n\nvar visit = require('unist-util-visit')\n\nmodule.exports = removePosition\n\nfunction removePosition(node, force) {\n  visit(node, force ? hard : soft)\n  return node\n}\n\nfunction hard(node) {\n  delete node.position\n}\n\nfunction soft(node) {\n  node.position = undefined\n}\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\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 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\n  one(tree, null, [])\n\n  // Visit a single node.\n  function one(node, index, parents) {\n    var result = []\n    var subresult\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      subresult = toResult(all(node.children, parents.concat(node)))\n      return subresult[0] === EXIT ? subresult : result\n    }\n\n    return result\n  }\n\n  // Visit children in `parent`.\n  function all(children, parents) {\n    var min = -1\n    var step = reverse ? -1 : 1\n    var index = (reverse ? children.length : min) + step\n    var result\n\n    while (index > min && index < children.length) {\n      result = one(children[index], index, parents)\n\n      if (result[0] === EXIT) {\n        return result\n      }\n\n      index = typeof result[1] === 'number' ? result[1] : index + step\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 (typeof test === 'string') {\n    return typeFactory(test)\n  }\n\n  if (test === null || test === undefined) {\n    return ok\n  }\n\n  if (typeof test === 'object') {\n    return ('length' in test ? anyFactory : matchesFactory)(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\nfunction convertAll(tests) {\n  var results = []\n  var length = tests.length\n  var index = -1\n\n  while (++index < length) {\n    results[index] = convert(tests[index])\n  }\n\n  return results\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction matchesFactory(test) {\n  return matches\n\n  function matches(node) {\n    var key\n\n    for (key in test) {\n      if (node[key] !== test[key]) {\n        return false\n      }\n    }\n\n    return true\n  }\n}\n\nfunction anyFactory(tests) {\n  var checks = convertAll(tests)\n  var length = checks.length\n\n  return matches\n\n  function matches() {\n    var index = -1\n\n    while (++index < 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","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = newline;\n\n/* Tokenise newline. */\nfunction newline(eat, value, silent) {\n  var character = value.charAt(0);\n  var length;\n  var subvalue;\n  var queue;\n  var index;\n\n  if (character !== '\\n') {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  index = 1;\n  length = value.length;\n  subvalue = character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n\n    if (character === '\\n') {\n      subvalue += queue;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  eat(subvalue);\n}\n","'use strict';\n\nvar repeat = require('repeat-string');\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = indentedCode;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\n\nvar CODE_INDENT_COUNT = 4;\nvar CODE_INDENT = repeat(C_SPACE, CODE_INDENT_COUNT);\n\n/* Tokenise indented code. */\nfunction indentedCode(eat, value, silent) {\n  var index = -1;\n  var length = value.length;\n  var subvalue = '';\n  var content = '';\n  var subvalueQueue = '';\n  var contentQueue = '';\n  var character;\n  var blankQueue;\n  var indent;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (indent) {\n      indent = false;\n\n      subvalue += subvalueQueue;\n      content += contentQueue;\n      subvalueQueue = '';\n      contentQueue = '';\n\n      if (character === C_NEWLINE) {\n        subvalueQueue = character;\n        contentQueue = character;\n      } else {\n        subvalue += character;\n        content += character;\n\n        while (++index < length) {\n          character = value.charAt(index);\n\n          if (!character || character === C_NEWLINE) {\n            contentQueue = character;\n            subvalueQueue = character;\n            break;\n          }\n\n          subvalue += character;\n          content += character;\n        }\n      }\n    } else if (\n      character === C_SPACE &&\n      value.charAt(index + 1) === character &&\n      value.charAt(index + 2) === character &&\n      value.charAt(index + 3) === character\n    ) {\n      subvalueQueue += CODE_INDENT;\n      index += 3;\n      indent = true;\n    } else if (character === C_TAB) {\n      subvalueQueue += character;\n      indent = true;\n    } else {\n      blankQueue = '';\n\n      while (character === C_TAB || character === C_SPACE) {\n        blankQueue += character;\n        character = value.charAt(++index);\n      }\n\n      if (character !== C_NEWLINE) {\n        break;\n      }\n\n      subvalueQueue += blankQueue + character;\n      contentQueue += character;\n    }\n  }\n\n  if (content) {\n    if (silent) {\n      return true;\n    }\n\n    return eat(subvalue)({\n      type: 'code',\n      lang: null,\n      value: trim(content)\n    });\n  }\n}\n","'use strict';\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = fencedCode;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_TILDE = '~';\nvar C_TICK = '`';\n\nvar MIN_FENCE_COUNT = 3;\nvar CODE_INDENT_COUNT = 4;\n\nfunction fencedCode(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = 0;\n  var subvalue = '';\n  var fenceCount;\n  var marker;\n  var character;\n  var flag;\n  var queue;\n  var content;\n  var exdentedContent;\n  var closing;\n  var exdentedClosing;\n  var indent;\n  var now;\n\n  if (!settings.gfm) {\n    return;\n  }\n\n  /* Eat initial spacing. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  indent = index;\n\n  /* Eat the fence. */\n  character = value.charAt(index);\n\n  if (character !== C_TILDE && character !== C_TICK) {\n    return;\n  }\n\n  index++;\n  marker = character;\n  fenceCount = 1;\n  subvalue += character;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      break;\n    }\n\n    subvalue += character;\n    fenceCount++;\n    index++;\n  }\n\n  if (fenceCount < MIN_FENCE_COUNT) {\n    return;\n  }\n\n  /* Eat spacing before flag. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  /* Eat flag. */\n  flag = '';\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === C_NEWLINE ||\n      character === C_TILDE ||\n      character === C_TICK\n    ) {\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      flag += queue + character;\n      queue = '';\n    }\n\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character && character !== C_NEWLINE) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n\n  subvalue += flag;\n  flag = self.decode.raw(self.unescape(flag), now);\n\n  if (queue) {\n    subvalue += queue;\n  }\n\n  queue = '';\n  closing = '';\n  exdentedClosing = '';\n  content = '';\n  exdentedContent = '';\n\n  /* Eat content. */\n  while (index < length) {\n    character = value.charAt(index);\n    content += closing;\n    exdentedContent += exdentedClosing;\n    closing = '';\n    exdentedClosing = '';\n\n    if (character !== C_NEWLINE) {\n      content += character;\n      exdentedClosing += character;\n      index++;\n      continue;\n    }\n\n    /* Add the newline to `subvalue` if its the first\n     * character.  Otherwise, add it to the `closing`\n     * queue. */\n    if (content) {\n      closing += character;\n      exdentedClosing += character;\n    } else {\n      subvalue += character;\n    }\n\n    queue = '';\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue.slice(indent);\n\n    if (queue.length >= CODE_INDENT_COUNT) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    closing += queue;\n    exdentedClosing += queue;\n\n    if (queue.length < fenceCount) {\n      continue;\n    }\n\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      closing += character;\n      exdentedClosing += character;\n      index++;\n    }\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n  }\n\n  subvalue += content + closing;\n\n  return eat(subvalue)({\n    type: 'code',\n    lang: flag || null,\n    value: trim(exdentedContent)\n  });\n}\n","'use strict';\n\nvar trim = require('trim');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = blockquote;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_GT = '>';\n\n/* Tokenise a blockquote. */\nfunction blockquote(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptBlockquote;\n  var now = eat.now();\n  var currentLine = now.line;\n  var length = value.length;\n  var values = [];\n  var contents = [];\n  var indents = [];\n  var add;\n  var index = 0;\n  var character;\n  var rest;\n  var nextIndex;\n  var content;\n  var line;\n  var startIndex;\n  var prefixed;\n  var exit;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_GT) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character !== C_SPACE && character !== C_TAB) {\n        break;\n      }\n\n      index++;\n    }\n\n    if (value.charAt(index) === C_GT) {\n      index++;\n      prefixed = true;\n\n      if (value.charAt(index) === C_SPACE) {\n        index++;\n      }\n    } else {\n      index = startIndex;\n    }\n\n    content = value.slice(index, nextIndex);\n\n    if (!prefixed && !trim(content)) {\n      index = startIndex;\n      break;\n    }\n\n    if (!prefixed) {\n      rest = value.slice(index);\n\n      /* Check if the following code contains a possible\n       * block. */\n      if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {\n        break;\n      }\n    }\n\n    line = startIndex === index ? content : value.slice(startIndex, nextIndex);\n\n    indents.push(index - startIndex);\n    values.push(line);\n    contents.push(content);\n\n    index = nextIndex + 1;\n  }\n\n  index = -1;\n  length = indents.length;\n  add = eat(values.join(C_NEWLINE));\n\n  while (++index < length) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + indents[index];\n    currentLine++;\n  }\n\n  exit = self.enterBlock();\n  contents = self.tokenizeBlock(contents.join(C_NEWLINE), now);\n  exit();\n\n  return add({\n    type: 'blockquote',\n    children: contents\n  });\n}\n","'use strict';\n\nmodule.exports = atxHeading;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_HASH = '#';\n\nvar MAX_ATX_COUNT = 6;\n\nfunction atxHeading(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var length = value.length + 1;\n  var index = -1;\n  var now = eat.now();\n  var subvalue = '';\n  var content = '';\n  var character;\n  var queue;\n  var depth;\n\n  /* Eat initial spacing. */\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  /* Eat hashes. */\n  depth = 0;\n\n  while (++index <= length) {\n    character = value.charAt(index);\n\n    if (character !== C_HASH) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n    depth++;\n  }\n\n  if (depth > MAX_ATX_COUNT) {\n    return;\n  }\n\n  if (\n    !depth ||\n    (!settings.pedantic && value.charAt(index + 1) === C_HASH)\n  ) {\n    return;\n  }\n\n  length = value.length + 1;\n\n  /* Eat intermediate white-space. */\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n\n  /* Exit when not in pedantic mode without spacing. */\n  if (\n    !settings.pedantic &&\n    queue.length === 0 &&\n    character &&\n    character !== C_NEWLINE\n  ) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  /* Eat content. */\n  subvalue += queue;\n  queue = '';\n  content = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (!character || character === C_NEWLINE) {\n      break;\n    }\n\n    if (\n      character !== C_SPACE &&\n      character !== C_TAB &&\n      character !== C_HASH\n    ) {\n      content += queue + character;\n      queue = '';\n      continue;\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_HASH) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    while (character === C_SPACE || character === C_TAB) {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    index--;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n\n  return eat(subvalue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}\n","'use strict';\n\nmodule.exports = thematicBreak;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_DASH = '-';\n\nvar THEMATIC_BREAK_MARKER_COUNT = 3;\n\nfunction thematicBreak(eat, value, silent) {\n  var index = -1;\n  var length = value.length + 1;\n  var subvalue = '';\n  var character;\n  var marker;\n  var markerCount;\n  var queue;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  if (\n    character !== C_ASTERISK &&\n    character !== C_DASH &&\n    character !== C_UNDERSCORE\n  ) {\n    return;\n  }\n\n  marker = character;\n  subvalue += character;\n  markerCount = 1;\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === marker) {\n      markerCount++;\n      subvalue += queue + marker;\n      queue = '';\n    } else if (character === C_SPACE) {\n      queue += character;\n    } else if (\n      markerCount >= THEMATIC_BREAK_MARKER_COUNT &&\n      (!character || character === C_NEWLINE)\n    ) {\n      subvalue += queue;\n\n      if (silent) {\n        return true;\n      }\n\n      return eat(subvalue)({type: 'thematicBreak'});\n    } else {\n      return;\n    }\n  }\n}\n","'use strict';\n\n/* eslint-disable max-params */\n\nvar trim = require('trim');\nvar repeat = require('repeat-string');\nvar decimal = require('is-decimal');\nvar getIndent = require('../util/get-indentation');\nvar removeIndent = require('../util/remove-indentation');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = list;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_PLUS = '+';\nvar C_DASH = '-';\nvar C_DOT = '.';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_PAREN_CLOSE = ')';\nvar C_X_LOWER = 'x';\n\nvar TAB_SIZE = 4;\nvar EXPRESSION_LOOSE_LIST_ITEM = /\\n\\n(?!\\s*$)/;\nvar EXPRESSION_TASK_ITEM = /^\\[([ \\t]|x|X)][ \\t]/;\nvar EXPRESSION_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])( {1,4}(?! )| |\\t|$|(?=\\n))([^\\n]*)/;\nvar EXPRESSION_PEDANTIC_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])([ \\t]+)/;\nvar EXPRESSION_INITIAL_INDENT = /^( {1,4}|\\t)?/gm;\n\n/* Map of characters which can be used to mark\n * list-items. */\nvar LIST_UNORDERED_MARKERS = {};\n\nLIST_UNORDERED_MARKERS[C_ASTERISK] = true;\nLIST_UNORDERED_MARKERS[C_PLUS] = true;\nLIST_UNORDERED_MARKERS[C_DASH] = true;\n\n/* Map of characters which can be used to mark\n * list-items after a digit. */\nvar LIST_ORDERED_MARKERS = {};\n\nLIST_ORDERED_MARKERS[C_DOT] = true;\n\n/* Map of characters which can be used to mark\n * list-items after a digit. */\nvar LIST_ORDERED_COMMONMARK_MARKERS = {};\n\nLIST_ORDERED_COMMONMARK_MARKERS[C_DOT] = true;\nLIST_ORDERED_COMMONMARK_MARKERS[C_PAREN_CLOSE] = true;\n\nfunction list(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var pedantic = self.options.pedantic;\n  var tokenizers = self.blockTokenizers;\n  var interuptors = self.interruptList;\n  var markers;\n  var index = 0;\n  var length = value.length;\n  var start = null;\n  var size = 0;\n  var queue;\n  var ordered;\n  var character;\n  var marker;\n  var nextIndex;\n  var startIndex;\n  var prefixed;\n  var currentMarker;\n  var content;\n  var line;\n  var prevEmpty;\n  var empty;\n  var items;\n  var allLines;\n  var emptyLines;\n  var item;\n  var enterTop;\n  var exitBlockquote;\n  var isLoose;\n  var node;\n  var now;\n  var end;\n  var indented;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_TAB) {\n      size += TAB_SIZE - (size % TAB_SIZE);\n    } else if (character === C_SPACE) {\n      size++;\n    } else {\n      break;\n    }\n\n    index++;\n  }\n\n  if (size >= TAB_SIZE) {\n    return;\n  }\n\n  character = value.charAt(index);\n\n  markers = commonmark ?\n    LIST_ORDERED_COMMONMARK_MARKERS :\n    LIST_ORDERED_MARKERS;\n\n  if (LIST_UNORDERED_MARKERS[character] === true) {\n    marker = character;\n    ordered = false;\n  } else {\n    ordered = true;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!decimal(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (!queue || markers[character] !== true) {\n      return;\n    }\n\n    start = parseInt(queue, 10);\n    marker = character;\n  }\n\n  character = value.charAt(++index);\n\n  if (character !== C_SPACE && character !== C_TAB) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  index = 0;\n  items = [];\n  allLines = [];\n  emptyLines = [];\n\n  while (index < length) {\n    nextIndex = value.indexOf(C_NEWLINE, index);\n    startIndex = index;\n    prefixed = false;\n    indented = false;\n\n    if (nextIndex === -1) {\n      nextIndex = length;\n    }\n\n    end = index + TAB_SIZE;\n    size = 0;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_TAB) {\n        size += TAB_SIZE - (size % TAB_SIZE);\n      } else if (character === C_SPACE) {\n        size++;\n      } else {\n        break;\n      }\n\n      index++;\n    }\n\n    if (size >= TAB_SIZE) {\n      indented = true;\n    }\n\n    if (item && size >= item.indent) {\n      indented = true;\n    }\n\n    character = value.charAt(index);\n    currentMarker = null;\n\n    if (!indented) {\n      if (LIST_UNORDERED_MARKERS[character] === true) {\n        currentMarker = character;\n        index++;\n        size++;\n      } else {\n        queue = '';\n\n        while (index < length) {\n          character = value.charAt(index);\n\n          if (!decimal(character)) {\n            break;\n          }\n\n          queue += character;\n          index++;\n        }\n\n        character = value.charAt(index);\n        index++;\n\n        if (queue && markers[character] === true) {\n          currentMarker = character;\n          size += queue.length + 1;\n        }\n      }\n\n      if (currentMarker) {\n        character = value.charAt(index);\n\n        if (character === C_TAB) {\n          size += TAB_SIZE - (size % TAB_SIZE);\n          index++;\n        } else if (character === C_SPACE) {\n          end = index + TAB_SIZE;\n\n          while (index < end) {\n            if (value.charAt(index) !== C_SPACE) {\n              break;\n            }\n\n            index++;\n            size++;\n          }\n\n          if (index === end && value.charAt(index) === C_SPACE) {\n            index -= TAB_SIZE - 1;\n            size -= TAB_SIZE - 1;\n          }\n        } else if (character !== C_NEWLINE && character !== '') {\n          currentMarker = null;\n        }\n      }\n    }\n\n    if (currentMarker) {\n      if (!pedantic && marker !== currentMarker) {\n        break;\n      }\n\n      prefixed = true;\n    } else {\n      if (!commonmark && !indented && value.charAt(startIndex) === C_SPACE) {\n        indented = true;\n      } else if (commonmark && item) {\n        indented = size >= item.indent || size > TAB_SIZE;\n      }\n\n      prefixed = false;\n      index = startIndex;\n    }\n\n    line = value.slice(startIndex, nextIndex);\n    content = startIndex === index ? line : value.slice(index, nextIndex);\n\n    if (\n      currentMarker === C_ASTERISK ||\n      currentMarker === C_UNDERSCORE ||\n      currentMarker === C_DASH\n    ) {\n      if (tokenizers.thematicBreak.call(self, eat, line, true)) {\n        break;\n      }\n    }\n\n    prevEmpty = empty;\n    empty = !trim(content).length;\n\n    if (indented && item) {\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (prefixed) {\n      if (emptyLines.length !== 0) {\n        item.value.push('');\n        item.trail = emptyLines.concat();\n      }\n\n      item = {\n        value: [line],\n        indent: size,\n        trail: []\n      };\n\n      items.push(item);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    } else if (empty) {\n      if (prevEmpty) {\n        break;\n      }\n\n      emptyLines.push(line);\n    } else {\n      if (prevEmpty) {\n        break;\n      }\n\n      if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {\n        break;\n      }\n\n      item.value = item.value.concat(emptyLines, line);\n      allLines = allLines.concat(emptyLines, line);\n      emptyLines = [];\n    }\n\n    index = nextIndex + 1;\n  }\n\n  node = eat(allLines.join(C_NEWLINE)).reset({\n    type: 'list',\n    ordered: ordered,\n    start: start,\n    loose: null,\n    children: []\n  });\n\n  enterTop = self.enterList();\n  exitBlockquote = self.enterBlock();\n  isLoose = false;\n  index = -1;\n  length = items.length;\n\n  while (++index < length) {\n    item = items[index].value.join(C_NEWLINE);\n    now = eat.now();\n\n    item = eat(item)(listItem(self, item, now), node);\n\n    if (item.loose) {\n      isLoose = true;\n    }\n\n    item = items[index].trail.join(C_NEWLINE);\n\n    if (index !== length - 1) {\n      item += C_NEWLINE;\n    }\n\n    eat(item);\n  }\n\n  enterTop();\n  exitBlockquote();\n\n  node.loose = isLoose;\n\n  return node;\n}\n\nfunction listItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var fn = ctx.options.pedantic ? pedanticListItem : normalListItem;\n  var checked = null;\n  var task;\n  var indent;\n\n  value = fn.apply(null, arguments);\n\n  if (ctx.options.gfm) {\n    task = value.match(EXPRESSION_TASK_ITEM);\n\n    if (task) {\n      indent = task[0].length;\n      checked = task[1].toLowerCase() === C_X_LOWER;\n      offsets[position.line] += indent;\n      value = value.slice(indent);\n    }\n  }\n\n  return {\n    type: 'listItem',\n    loose: EXPRESSION_LOOSE_LIST_ITEM.test(value) ||\n      value.charAt(value.length - 1) === C_NEWLINE,\n    checked: checked,\n    children: ctx.tokenizeBlock(value, position)\n  };\n}\n\n/* Create a list-item using overly simple mechanics. */\nfunction pedanticListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n\n  /* Remove the list-item’s bullet. */\n  value = value.replace(EXPRESSION_PEDANTIC_BULLET, replacer);\n\n  /* The initial line was also matched by the below, so\n   * we reset the `line`. */\n  line = position.line;\n\n  return value.replace(EXPRESSION_INITIAL_INDENT, replacer);\n\n  /* A simple replacer which removed all matches,\n   * and adds their length to `offset`. */\n  function replacer($0) {\n    offsets[line] = (offsets[line] || 0) + $0.length;\n    line++;\n\n    return '';\n  }\n}\n\n/* Create a list-item using sane mechanics. */\nfunction normalListItem(ctx, value, position) {\n  var offsets = ctx.offset;\n  var line = position.line;\n  var max;\n  var bullet;\n  var rest;\n  var lines;\n  var trimmedLines;\n  var index;\n  var length;\n\n  /* Remove the list-item’s bullet. */\n  value = value.replace(EXPRESSION_BULLET, replacer);\n\n  lines = value.split(C_NEWLINE);\n\n  trimmedLines = removeIndent(value, getIndent(max).indent).split(C_NEWLINE);\n\n  /* We replaced the initial bullet with something\n   * else above, which was used to trick\n   * `removeIndentation` into removing some more\n   * characters when possible.  However, that could\n   * result in the initial line to be stripped more\n   * than it should be. */\n  trimmedLines[0] = rest;\n\n  offsets[line] = (offsets[line] || 0) + bullet.length;\n  line++;\n\n  index = 0;\n  length = lines.length;\n\n  while (++index < length) {\n    offsets[line] = (offsets[line] || 0) +\n      lines[index].length - trimmedLines[index].length;\n    line++;\n  }\n\n  return trimmedLines.join(C_NEWLINE);\n\n  function replacer($0, $1, $2, $3, $4) {\n    bullet = $1 + $2 + $3;\n    rest = $4;\n\n    /* Make sure that the first nine numbered list items\n     * can indent with an extra space.  That is, when\n     * the bullet did not receive an extra final space. */\n    if (Number($2) < 10 && bullet.length % 2 === 1) {\n      $2 = C_SPACE + $2;\n    }\n\n    max = $1 + repeat(C_SPACE, $2.length) + $3;\n\n    return max + rest;\n  }\n}\n","'use strict';\n\nvar trim = require('trim');\nvar repeat = require('repeat-string');\nvar getIndent = require('./get-indentation');\n\nmodule.exports = indentation;\n\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n\n/* Remove the minimum indent from every line in `value`.\n * Supports both tab, spaced, and mixed indentation (as\n * well as possible). */\nfunction indentation(value, maximum) {\n  var values = value.split(C_NEWLINE);\n  var position = values.length + 1;\n  var minIndent = Infinity;\n  var matrix = [];\n  var index;\n  var indentation;\n  var stops;\n  var padding;\n\n  values.unshift(repeat(C_SPACE, maximum) + '!');\n\n  while (position--) {\n    indentation = getIndent(values[position]);\n\n    matrix[position] = indentation.stops;\n\n    if (trim(values[position]).length === 0) {\n      continue;\n    }\n\n    if (indentation.indent) {\n      if (indentation.indent > 0 && indentation.indent < minIndent) {\n        minIndent = indentation.indent;\n      }\n    } else {\n      minIndent = Infinity;\n\n      break;\n    }\n  }\n\n  if (minIndent !== Infinity) {\n    position = values.length;\n\n    while (position--) {\n      stops = matrix[position];\n      index = minIndent;\n\n      while (index && !(index in stops)) {\n        index--;\n      }\n\n      if (\n        trim(values[position]).length !== 0 &&\n        minIndent &&\n        index !== minIndent\n      ) {\n        padding = C_TAB;\n      } else {\n        padding = '';\n      }\n\n      values[position] = padding + values[position].slice(\n        index in stops ? stops[index] + 1 : 0\n      );\n    }\n  }\n\n  values.shift();\n\n  return values.join(C_NEWLINE);\n}\n","'use strict';\n\nmodule.exports = setextHeading;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_EQUALS = '=';\nvar C_DASH = '-';\n\nvar MAX_HEADING_INDENT = 3;\n\n/* Map of characters which can be used to mark setext\n * headers, mapping to their corresponding depth. */\nvar SETEXT_MARKERS = {};\n\nSETEXT_MARKERS[C_EQUALS] = 1;\nSETEXT_MARKERS[C_DASH] = 2;\n\nfunction setextHeading(eat, value, silent) {\n  var self = this;\n  var now = eat.now();\n  var length = value.length;\n  var index = -1;\n  var subvalue = '';\n  var content;\n  var queue;\n  var character;\n  var marker;\n  var depth;\n\n  /* Eat initial indentation. */\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE || index >= MAX_HEADING_INDENT) {\n      index--;\n      break;\n    }\n\n    subvalue += character;\n  }\n\n  /* Eat content. */\n  content = '';\n  queue = '';\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      index--;\n      break;\n    }\n\n    if (character === C_SPACE || character === C_TAB) {\n      queue += character;\n    } else {\n      content += queue + character;\n      queue = '';\n    }\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  subvalue += content + queue;\n\n  /* Ensure the content is followed by a newline and a\n   * valid marker. */\n  character = value.charAt(++index);\n  marker = value.charAt(++index);\n\n  if (character !== C_NEWLINE || !SETEXT_MARKERS[marker]) {\n    return;\n  }\n\n  subvalue += character;\n\n  /* Eat Setext-line. */\n  queue = marker;\n  depth = SETEXT_MARKERS[marker];\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character !== marker) {\n      if (character !== C_NEWLINE) {\n        return;\n      }\n\n      index--;\n      break;\n    }\n\n    queue += character;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  return eat(subvalue + queue)({\n    type: 'heading',\n    depth: depth,\n    children: self.tokenizeInline(content, now)\n  });\n}\n","'use strict';\n\nvar openCloseTag = require('../util/html').openCloseTag;\n\nmodule.exports = blockHTML;\n\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_LT = '<';\n\nfunction blockHTML(eat, value, silent) {\n  var self = this;\n  var blocks = self.options.blocks;\n  var length = value.length;\n  var index = 0;\n  var next;\n  var line;\n  var offset;\n  var character;\n  var count;\n  var sequence;\n  var subvalue;\n\n  var sequences = [\n    [/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true],\n    [/^<!--/, /-->/, true],\n    [/^<\\?/, /\\?>/, true],\n    [/^<![A-Za-z]/, />/, true],\n    [/^<!\\[CDATA\\[/, /\\]\\]>/, true],\n    [new RegExp('^</?(' + blocks.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true],\n    [new RegExp(openCloseTag.source + '\\\\s*$'), /^$/, false]\n  ];\n\n  /* Eat initial spacing. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    index++;\n  }\n\n  if (value.charAt(index) !== C_LT) {\n    return;\n  }\n\n  next = value.indexOf(C_NEWLINE, index + 1);\n  next = next === -1 ? length : next;\n  line = value.slice(index, next);\n  offset = -1;\n  count = sequences.length;\n\n  while (++offset < count) {\n    if (sequences[offset][0].test(line)) {\n      sequence = sequences[offset];\n      break;\n    }\n  }\n\n  if (!sequence) {\n    return;\n  }\n\n  if (silent) {\n    return sequence[2];\n  }\n\n  index = next;\n\n  if (!sequence[1].test(line)) {\n    while (index < length) {\n      next = value.indexOf(C_NEWLINE, index + 1);\n      next = next === -1 ? length : next;\n      line = value.slice(index + 1, next);\n\n      if (sequence[1].test(line)) {\n        if (line) {\n          index = next;\n        }\n\n        break;\n      }\n\n      index = next;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n\n  return eat(subvalue)({type: 'html', value: subvalue});\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar normalize = require('../util/normalize');\n\nmodule.exports = footnoteDefinition;\nfootnoteDefinition.notInList = true;\nfootnoteDefinition.notInBlock = true;\n\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_CARET = '^';\nvar C_COLON = ':';\n\nvar EXPRESSION_INITIAL_TAB = /^( {4}|\\t)?/gm;\n\nfunction footnoteDefinition(eat, value, silent) {\n  var self = this;\n  var offsets = self.offset;\n  var index;\n  var length;\n  var subvalue;\n  var now;\n  var currentLine;\n  var content;\n  var queue;\n  var subqueue;\n  var character;\n  var identifier;\n  var add;\n  var exit;\n\n  if (!self.options.footnotes) {\n    return;\n  }\n\n  index = 0;\n  length = value.length;\n  subvalue = '';\n  now = eat.now();\n  currentLine = now.line;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  if (\n    value.charAt(index) !== C_BRACKET_OPEN ||\n    value.charAt(index + 1) !== C_CARET\n  ) {\n    return;\n  }\n\n  subvalue += C_BRACKET_OPEN + C_CARET;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (\n    !queue ||\n    value.charAt(index) !== C_BRACKET_CLOSE ||\n    value.charAt(index + 1) !== C_COLON\n  ) {\n    return;\n  }\n\n  if (silent) {\n    return true;\n  }\n\n  identifier = normalize(queue);\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  now.column += subvalue.length;\n  now.offset += subvalue.length;\n  queue = '';\n  content = '';\n  subqueue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_NEWLINE) {\n      subqueue = character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_NEWLINE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      queue += subqueue;\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character !== C_SPACE) {\n          break;\n        }\n\n        subqueue += character;\n        index++;\n      }\n\n      if (subqueue.length === 0) {\n        break;\n      }\n\n      queue += subqueue;\n    }\n\n    if (queue) {\n      content += queue;\n      queue = '';\n    }\n\n    content += character;\n    index++;\n  }\n\n  subvalue += content;\n\n  content = content.replace(EXPRESSION_INITIAL_TAB, function (line) {\n    offsets[currentLine] = (offsets[currentLine] || 0) + line.length;\n    currentLine++;\n\n    return '';\n  });\n\n  add = eat(subvalue);\n\n  exit = self.enterBlock();\n  content = self.tokenizeBlock(content, now);\n  exit();\n\n  return add({\n    type: 'footnoteDefinition',\n    identifier: identifier,\n    children: content\n  });\n}\n","'use strict'\n\nmodule.exports = collapse\n\n// `collapse(' \\t\\nbar \\nbaz\\t') // ' bar baz '`\nfunction collapse(value) {\n  return String(value).replace(/\\s+/g, ' ')\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar normalize = require('../util/normalize');\n\nmodule.exports = definition;\ndefinition.notInList = true;\ndefinition.notInBlock = true;\n\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_COLON = ':';\nvar C_LT = '<';\nvar C_GT = '>';\n\nfunction definition(eat, value, silent) {\n  var self = this;\n  var commonmark = self.options.commonmark;\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var beforeURL;\n  var beforeTitle;\n  var queue;\n  var character;\n  var test;\n  var identifier;\n  var url;\n  var title;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_SPACE && character !== C_TAB) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      break;\n    } else if (character === C_BACKSLASH) {\n      queue += character;\n      index++;\n      character = value.charAt(index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (\n    !queue ||\n    value.charAt(index) !== C_BRACKET_CLOSE ||\n    value.charAt(index + 1) !== C_COLON\n  ) {\n    return;\n  }\n\n  identifier = queue;\n  subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n  index = subvalue.length;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character !== C_TAB &&\n      character !== C_SPACE &&\n      character !== C_NEWLINE\n    ) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isEnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === isEnclosedURLCharacter.delimiter) {\n      subvalue += C_LT + queue + character;\n      index++;\n    } else {\n      if (commonmark) {\n        return;\n      }\n\n      index -= queue.length + 1;\n      queue = '';\n    }\n  }\n\n  if (!queue) {\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (!isUnclosedURLCharacter(character)) {\n        break;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    subvalue += queue;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  url = queue;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      character !== C_TAB &&\n      character !== C_SPACE &&\n      character !== C_NEWLINE\n    ) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  test = null;\n\n  if (character === C_DOUBLE_QUOTE) {\n    test = C_DOUBLE_QUOTE;\n  } else if (character === C_SINGLE_QUOTE) {\n    test = C_SINGLE_QUOTE;\n  } else if (character === C_PAREN_OPEN) {\n    test = C_PAREN_CLOSE;\n  }\n\n  if (!test) {\n    queue = '';\n    index = subvalue.length;\n  } else if (queue) {\n    subvalue += queue + character;\n    index = subvalue.length;\n    queue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === test) {\n        break;\n      }\n\n      if (character === C_NEWLINE) {\n        index++;\n        character = value.charAt(index);\n\n        if (character === C_NEWLINE || character === test) {\n          return;\n        }\n\n        queue += C_NEWLINE;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character !== test) {\n      return;\n    }\n\n    beforeTitle = subvalue;\n    subvalue += queue + character;\n    index++;\n    title = queue;\n    queue = '';\n  } else {\n    return;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character !== C_TAB && character !== C_SPACE) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!character || character === C_NEWLINE) {\n    if (silent) {\n      return true;\n    }\n\n    beforeURL = eat(beforeURL).test().end;\n    url = self.decode.raw(self.unescape(url), beforeURL, {nonTerminated: false});\n\n    if (title) {\n      beforeTitle = eat(beforeTitle).test().end;\n      title = self.decode.raw(self.unescape(title), beforeTitle);\n    }\n\n    return eat(subvalue)({\n      type: 'definition',\n      identifier: normalize(identifier),\n      title: title || null,\n      url: url\n    });\n  }\n}\n\n/* Check if `character` can be inside an enclosed URI. */\nfunction isEnclosedURLCharacter(character) {\n  return character !== C_GT &&\n    character !== C_BRACKET_OPEN &&\n    character !== C_BRACKET_CLOSE;\n}\n\nisEnclosedURLCharacter.delimiter = C_GT;\n\n/* Check if `character` can be inside an unclosed URI. */\nfunction isUnclosedURLCharacter(character) {\n  return character !== C_BRACKET_OPEN &&\n    character !== C_BRACKET_CLOSE &&\n    !whitespace(character);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = table;\n\nvar C_BACKSLASH = '\\\\';\nvar C_TICK = '`';\nvar C_DASH = '-';\nvar C_PIPE = '|';\nvar C_COLON = ':';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n\nvar MIN_TABLE_COLUMNS = 1;\nvar MIN_TABLE_ROWS = 2;\n\nvar TABLE_ALIGN_LEFT = 'left';\nvar TABLE_ALIGN_CENTER = 'center';\nvar TABLE_ALIGN_RIGHT = 'right';\nvar TABLE_ALIGN_NONE = null;\n\nfunction table(eat, value, silent) {\n  var self = this;\n  var index;\n  var alignments;\n  var alignment;\n  var subvalue;\n  var row;\n  var length;\n  var lines;\n  var queue;\n  var character;\n  var hasDash;\n  var align;\n  var cell;\n  var preamble;\n  var count;\n  var opening;\n  var now;\n  var position;\n  var lineCount;\n  var line;\n  var rows;\n  var table;\n  var lineIndex;\n  var pipeIndex;\n  var first;\n\n  /* Exit when not in gfm-mode. */\n  if (!self.options.gfm) {\n    return;\n  }\n\n  /* Get the rows.\n   * Detecting tables soon is hard, so there are some\n   * checks for performance here, such as the minimum\n   * number of rows, and allowed characters in the\n   * alignment row. */\n  index = 0;\n  lineCount = 0;\n  length = value.length + 1;\n  lines = [];\n\n  while (index < length) {\n    lineIndex = value.indexOf(C_NEWLINE, index);\n    pipeIndex = value.indexOf(C_PIPE, index + 1);\n\n    if (lineIndex === -1) {\n      lineIndex = value.length;\n    }\n\n    if (pipeIndex === -1 || pipeIndex > lineIndex) {\n      if (lineCount < MIN_TABLE_ROWS) {\n        return;\n      }\n\n      break;\n    }\n\n    lines.push(value.slice(index, lineIndex));\n    lineCount++;\n    index = lineIndex + 1;\n  }\n\n  /* Parse the alignment row. */\n  subvalue = lines.join(C_NEWLINE);\n  alignments = lines.splice(1, 1)[0] || [];\n  index = 0;\n  length = alignments.length;\n  lineCount--;\n  alignment = false;\n  align = [];\n\n  while (index < length) {\n    character = alignments.charAt(index);\n\n    if (character === C_PIPE) {\n      hasDash = null;\n\n      if (alignment === false) {\n        if (first === false) {\n          return;\n        }\n      } else {\n        align.push(alignment);\n        alignment = false;\n      }\n\n      first = false;\n    } else if (character === C_DASH) {\n      hasDash = true;\n      alignment = alignment || TABLE_ALIGN_NONE;\n    } else if (character === C_COLON) {\n      if (alignment === TABLE_ALIGN_LEFT) {\n        alignment = TABLE_ALIGN_CENTER;\n      } else if (hasDash && alignment === TABLE_ALIGN_NONE) {\n        alignment = TABLE_ALIGN_RIGHT;\n      } else {\n        alignment = TABLE_ALIGN_LEFT;\n      }\n    } else if (!whitespace(character)) {\n      return;\n    }\n\n    index++;\n  }\n\n  if (alignment !== false) {\n    align.push(alignment);\n  }\n\n  /* Exit when without enough columns. */\n  if (align.length < MIN_TABLE_COLUMNS) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  /* Parse the rows. */\n  position = -1;\n  rows = [];\n\n  table = eat(subvalue).reset({\n    type: 'table',\n    align: align,\n    children: rows\n  });\n\n  while (++position < lineCount) {\n    line = lines[position];\n    row = {type: 'tableRow', children: []};\n\n    /* Eat a newline character when this is not the\n     * first row. */\n    if (position) {\n      eat(C_NEWLINE);\n    }\n\n    /* Eat the row. */\n    eat(line).reset(row, table);\n\n    length = line.length + 1;\n    index = 0;\n    queue = '';\n    cell = '';\n    preamble = true;\n    count = null;\n    opening = null;\n\n    while (index < length) {\n      character = line.charAt(index);\n\n      if (character === C_TAB || character === C_SPACE) {\n        if (cell) {\n          queue += character;\n        } else {\n          eat(character);\n        }\n\n        index++;\n        continue;\n      }\n\n      if (character === '' || character === C_PIPE) {\n        if (preamble) {\n          eat(character);\n        } else {\n          if (character && opening) {\n            queue += character;\n            index++;\n            continue;\n          }\n\n          if ((cell || character) && !preamble) {\n            subvalue = cell;\n\n            if (queue.length > 1) {\n              if (character) {\n                subvalue += queue.slice(0, queue.length - 1);\n                queue = queue.charAt(queue.length - 1);\n              } else {\n                subvalue += queue;\n                queue = '';\n              }\n            }\n\n            now = eat.now();\n\n            eat(subvalue)({\n              type: 'tableCell',\n              children: self.tokenizeInline(cell, now)\n            }, row);\n          }\n\n          eat(queue + character);\n\n          queue = '';\n          cell = '';\n        }\n      } else {\n        if (queue) {\n          cell += queue;\n          queue = '';\n        }\n\n        cell += character;\n\n        if (character === C_BACKSLASH && index !== length - 2) {\n          cell += line.charAt(index + 1);\n          index++;\n        }\n\n        if (character === C_TICK) {\n          count = 1;\n\n          while (line.charAt(index + 1) === character) {\n            cell += character;\n            index++;\n            count++;\n          }\n\n          if (!opening) {\n            opening = count;\n          } else if (count >= opening) {\n            opening = 0;\n          }\n        }\n      }\n\n      preamble = false;\n      index++;\n    }\n\n    /* Eat the alignment row. */\n    if (!position) {\n      eat(C_NEWLINE + alignments);\n    }\n  }\n\n  return table;\n}\n","'use strict';\n\nvar trim = require('trim');\nvar decimal = require('is-decimal');\nvar trimTrailingLines = require('trim-trailing-lines');\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = paragraph;\n\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\n\nvar TAB_SIZE = 4;\n\n/* Tokenise paragraph. */\nfunction paragraph(eat, value, silent) {\n  var self = this;\n  var settings = self.options;\n  var commonmark = settings.commonmark;\n  var gfm = settings.gfm;\n  var tokenizers = self.blockTokenizers;\n  var interruptors = self.interruptParagraph;\n  var index = value.indexOf(C_NEWLINE);\n  var length = value.length;\n  var position;\n  var subvalue;\n  var character;\n  var size;\n  var now;\n\n  while (index < length) {\n    /* Eat everything if there’s no following newline. */\n    if (index === -1) {\n      index = length;\n      break;\n    }\n\n    /* Stop if the next character is NEWLINE. */\n    if (value.charAt(index + 1) === C_NEWLINE) {\n      break;\n    }\n\n    /* In commonmark-mode, following indented lines\n     * are part of the paragraph. */\n    if (commonmark) {\n      size = 0;\n      position = index + 1;\n\n      while (position < length) {\n        character = value.charAt(position);\n\n        if (character === C_TAB) {\n          size = TAB_SIZE;\n          break;\n        } else if (character === C_SPACE) {\n          size++;\n        } else {\n          break;\n        }\n\n        position++;\n      }\n\n      if (size >= TAB_SIZE) {\n        index = value.indexOf(C_NEWLINE, index + 1);\n        continue;\n      }\n    }\n\n    subvalue = value.slice(index + 1);\n\n    /* Check if the following code contains a possible\n     * block. */\n    if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {\n      break;\n    }\n\n    /* Break if the following line starts a list, when\n     * already in a list, or when in commonmark, or when\n     * in gfm mode and the bullet is *not* numeric. */\n    if (\n      tokenizers.list.call(self, eat, subvalue, true) &&\n      (\n        self.inList ||\n        commonmark ||\n        (gfm && !decimal(trim.left(subvalue).charAt(0)))\n      )\n    ) {\n      break;\n    }\n\n    position = index;\n    index = value.indexOf(C_NEWLINE, index + 1);\n\n    if (index !== -1 && trim(value.slice(position, index)) === '') {\n      index = position;\n      break;\n    }\n  }\n\n  subvalue = value.slice(0, index);\n\n  if (trim(subvalue) === '') {\n    eat(subvalue);\n\n    return null;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  now = eat.now();\n  subvalue = trimTrailingLines(subvalue);\n\n  return eat(subvalue)({\n    type: 'paragraph',\n    children: self.tokenizeInline(subvalue, now)\n  });\n}\n","'use strict';\n\nvar locate = require('../locate/escape');\n\nmodule.exports = escape;\nescape.locator = locate;\n\nfunction escape(eat, value, silent) {\n  var self = this;\n  var character;\n  var node;\n\n  if (value.charAt(0) === '\\\\') {\n    character = value.charAt(1);\n\n    if (self.escape.indexOf(character) !== -1) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      if (character === '\\n') {\n        node = {type: 'break'};\n      } else {\n        node = {\n          type: 'text',\n          value: character\n        };\n      }\n\n      return eat('\\\\' + character)(node);\n    }\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('\\\\', fromIndex);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar decode = require('parse-entities');\nvar locate = require('../locate/tag');\n\nmodule.exports = autoLink;\nautoLink.locator = locate;\nautoLink.notInLink = true;\n\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_AT_SIGN = '@';\nvar C_SLASH = '/';\nvar MAILTO = 'mailto:';\nvar MAILTO_LENGTH = MAILTO.length;\n\n/* Tokenise a link. */\nfunction autoLink(eat, value, silent) {\n  var self;\n  var subvalue;\n  var length;\n  var index;\n  var queue;\n  var character;\n  var hasAtCharacter;\n  var link;\n  var now;\n  var content;\n  var tokenizers;\n  var exit;\n\n  if (value.charAt(0) !== C_LT) {\n    return;\n  }\n\n  self = this;\n  subvalue = '';\n  length = value.length;\n  index = 0;\n  queue = '';\n  hasAtCharacter = false;\n  link = '';\n\n  index++;\n  subvalue = C_LT;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (\n      whitespace(character) ||\n      character === C_GT ||\n      character === C_AT_SIGN ||\n      (character === ':' && value.charAt(index + 1) === C_SLASH)\n    ) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  link += queue;\n  queue = '';\n\n  character = value.charAt(index);\n  link += character;\n  index++;\n\n  if (character === C_AT_SIGN) {\n    hasAtCharacter = true;\n  } else {\n    if (\n      character !== ':' ||\n      value.charAt(index + 1) !== C_SLASH\n    ) {\n      return;\n    }\n\n    link += C_SLASH;\n    index++;\n  }\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_GT) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  if (!queue || character !== C_GT) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  link += queue;\n  content = link;\n  subvalue += link + character;\n  now = eat.now();\n  now.column++;\n  now.offset++;\n\n  if (hasAtCharacter) {\n    if (link.slice(0, MAILTO_LENGTH).toLowerCase() === MAILTO) {\n      content = content.substr(MAILTO_LENGTH);\n      now.column += MAILTO_LENGTH;\n      now.offset += MAILTO_LENGTH;\n    } else {\n      link = MAILTO + link;\n    }\n  }\n\n  /* Temporarily remove all tokenizers except text in autolinks. */\n  tokenizers = self.inlineTokenizers;\n  self.inlineTokenizers = {text: tokenizers.text};\n\n  exit = self.enterLink();\n\n  content = self.tokenizeInline(content, now);\n\n  self.inlineTokenizers = tokenizers;\n  exit();\n\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(link, {nonTerminated: false}),\n    children: content\n  });\n}\n","'use strict';\n\nvar decode = require('parse-entities');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/url');\n\nmodule.exports = url;\nurl.locator = locate;\nurl.notInLink = true;\n\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_AT_SIGN = '@';\n\nvar HTTP_PROTOCOL = 'http://';\nvar HTTPS_PROTOCOL = 'https://';\nvar MAILTO_PROTOCOL = 'mailto:';\n\nvar PROTOCOLS = [\n  HTTP_PROTOCOL,\n  HTTPS_PROTOCOL,\n  MAILTO_PROTOCOL\n];\n\nvar PROTOCOLS_LENGTH = PROTOCOLS.length;\n\nfunction url(eat, value, silent) {\n  var self = this;\n  var subvalue;\n  var content;\n  var character;\n  var index;\n  var position;\n  var protocol;\n  var match;\n  var length;\n  var queue;\n  var parenCount;\n  var nextCharacter;\n  var exit;\n\n  if (!self.options.gfm) {\n    return;\n  }\n\n  subvalue = '';\n  index = -1;\n  length = PROTOCOLS_LENGTH;\n\n  while (++index < length) {\n    protocol = PROTOCOLS[index];\n    match = value.slice(0, protocol.length);\n\n    if (match.toLowerCase() === protocol) {\n      subvalue = match;\n      break;\n    }\n  }\n\n  if (!subvalue) {\n    return;\n  }\n\n  index = subvalue.length;\n  length = value.length;\n  queue = '';\n  parenCount = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (whitespace(character) || character === C_LT) {\n      break;\n    }\n\n    if (\n      character === '.' ||\n      character === ',' ||\n      character === ':' ||\n      character === ';' ||\n      character === '\"' ||\n      character === '\\'' ||\n      character === ')' ||\n      character === ']'\n    ) {\n      nextCharacter = value.charAt(index + 1);\n\n      if (!nextCharacter || whitespace(nextCharacter)) {\n        break;\n      }\n    }\n\n    if (character === C_PAREN_OPEN || character === C_BRACKET_OPEN) {\n      parenCount++;\n    }\n\n    if (character === C_PAREN_CLOSE || character === C_BRACKET_CLOSE) {\n      parenCount--;\n\n      if (parenCount < 0) {\n        break;\n      }\n    }\n\n    queue += character;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue += queue;\n  content = subvalue;\n\n  if (protocol === MAILTO_PROTOCOL) {\n    position = queue.indexOf(C_AT_SIGN);\n\n    if (position === -1 || position === length - 1) {\n      return;\n    }\n\n    content = content.substr(MAILTO_PROTOCOL.length);\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  exit = self.enterLink();\n  content = self.tokenizeInline(content, eat.now());\n  exit();\n\n  return eat(subvalue)({\n    type: 'link',\n    title: null,\n    url: decode(subvalue, {nonTerminated: false}),\n    children: content\n  });\n}\n","'use strict';\n\nmodule.exports = locate;\n\nvar PROTOCOLS = ['https://', 'http://', 'mailto:'];\n\nfunction locate(value, fromIndex) {\n  var length = PROTOCOLS.length;\n  var index = -1;\n  var min = -1;\n  var position;\n\n  if (!this.options.gfm) {\n    return -1;\n  }\n\n  while (++index < length) {\n    position = value.indexOf(PROTOCOLS[index], fromIndex);\n\n    if (position !== -1 && (position < min || min === -1)) {\n      min = position;\n    }\n  }\n\n  return min;\n}\n","'use strict';\n\nvar alphabetical = require('is-alphabetical');\nvar locate = require('../locate/tag');\nvar tag = require('../util/html').tag;\n\nmodule.exports = inlineHTML;\ninlineHTML.locator = locate;\n\nvar EXPRESSION_HTML_LINK_OPEN = /^<a /i;\nvar EXPRESSION_HTML_LINK_CLOSE = /^<\\/a>/i;\n\nfunction inlineHTML(eat, value, silent) {\n  var self = this;\n  var length = value.length;\n  var character;\n  var subvalue;\n\n  if (value.charAt(0) !== '<' || length < 3) {\n    return;\n  }\n\n  character = value.charAt(1);\n\n  if (\n    !alphabetical(character) &&\n    character !== '?' &&\n    character !== '!' &&\n    character !== '/'\n  ) {\n    return;\n  }\n\n  subvalue = value.match(tag);\n\n  if (!subvalue) {\n    return;\n  }\n\n  /* istanbul ignore if - not used yet. */\n  if (silent) {\n    return true;\n  }\n\n  subvalue = subvalue[0];\n\n  if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {\n    self.inLink = true;\n  } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {\n    self.inLink = false;\n  }\n\n  return eat(subvalue)({type: 'html', value: subvalue});\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/link');\n\nmodule.exports = link;\nlink.locator = locate;\n\nvar own = {}.hasOwnProperty;\n\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_TICK = '`';\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\n\n/* Map of characters, which can be used to mark link\n * and image titles. */\nvar LINK_MARKERS = {};\n\nLINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nLINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\n\n/* Map of characters, which can be used to mark link\n * and image titles in commonmark-mode. */\nvar COMMONMARK_LINK_MARKERS = {};\n\nCOMMONMARK_LINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_PAREN_OPEN] = C_PAREN_CLOSE;\n\nfunction link(eat, value, silent) {\n  var self = this;\n  var subvalue = '';\n  var index = 0;\n  var character = value.charAt(0);\n  var pedantic = self.options.pedantic;\n  var commonmark = self.options.commonmark;\n  var gfm = self.options.gfm;\n  var closed;\n  var count;\n  var opening;\n  var beforeURL;\n  var beforeTitle;\n  var subqueue;\n  var hasMarker;\n  var markers;\n  var isImage;\n  var content;\n  var marker;\n  var length;\n  var title;\n  var depth;\n  var queue;\n  var url;\n  var now;\n  var exit;\n  var node;\n\n  /* Detect whether this is an image. */\n  if (character === '!') {\n    isImage = true;\n    subvalue = character;\n    character = value.charAt(++index);\n  }\n\n  /* Eat the opening. */\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  /* Exit when this is a link and we’re already inside\n   * a link. */\n  if (!isImage && self.inLink) {\n    return;\n  }\n\n  subvalue += character;\n  queue = '';\n  index++;\n\n  /* Eat the content. */\n  length = value.length;\n  now = eat.now();\n  depth = 0;\n\n  now.column += index;\n  now.offset += index;\n\n  while (index < length) {\n    character = value.charAt(index);\n    subqueue = character;\n\n    if (character === C_TICK) {\n      /* Inline-code in link content. */\n      count = 1;\n\n      while (value.charAt(index + 1) === C_TICK) {\n        subqueue += character;\n        index++;\n        count++;\n      }\n\n      if (!opening) {\n        opening = count;\n      } else if (count >= opening) {\n        opening = 0;\n      }\n    } else if (character === C_BACKSLASH) {\n      /* Allow brackets to be escaped. */\n      index++;\n      subqueue += value.charAt(index);\n    /* In GFM mode, brackets in code still count.\n     * In all other modes, they don’t.  This empty\n     * block prevents the next statements are\n     * entered. */\n    } else if ((!opening || gfm) && character === C_BRACKET_OPEN) {\n      depth++;\n    } else if ((!opening || gfm) && character === C_BRACKET_CLOSE) {\n      if (depth) {\n        depth--;\n      } else {\n        /* Allow white-space between content and\n         * url in GFM mode. */\n        if (!pedantic) {\n          while (index < length) {\n            character = value.charAt(index + 1);\n\n            if (!whitespace(character)) {\n              break;\n            }\n\n            subqueue += character;\n            index++;\n          }\n        }\n\n        if (value.charAt(index + 1) !== C_PAREN_OPEN) {\n          return;\n        }\n\n        subqueue += C_PAREN_OPEN;\n        closed = true;\n        index++;\n\n        break;\n      }\n    }\n\n    queue += subqueue;\n    subqueue = '';\n    index++;\n  }\n\n  /* Eat the content closing. */\n  if (!closed) {\n    return;\n  }\n\n  content = queue;\n  subvalue += queue + subqueue;\n  index++;\n\n  /* Eat white-space. */\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    subvalue += character;\n    index++;\n  }\n\n  /* Eat the URL. */\n  character = value.charAt(index);\n  markers = commonmark ? COMMONMARK_LINK_MARKERS : LINK_MARKERS;\n  queue = '';\n  beforeURL = subvalue;\n\n  if (character === C_LT) {\n    index++;\n    beforeURL += C_LT;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_GT) {\n        break;\n      }\n\n      if (commonmark && character === '\\n') {\n        return;\n      }\n\n      queue += character;\n      index++;\n    }\n\n    if (value.charAt(index) !== C_GT) {\n      return;\n    }\n\n    subvalue += C_LT + queue + C_GT;\n    url = queue;\n    index++;\n  } else {\n    character = null;\n    subqueue = '';\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (subqueue && own.call(markers, character)) {\n        break;\n      }\n\n      if (whitespace(character)) {\n        if (!pedantic) {\n          break;\n        }\n\n        subqueue += character;\n      } else {\n        if (character === C_PAREN_OPEN) {\n          depth++;\n        } else if (character === C_PAREN_CLOSE) {\n          if (depth === 0) {\n            break;\n          }\n\n          depth--;\n        }\n\n        queue += subqueue;\n        subqueue = '';\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        queue += character;\n      }\n\n      index++;\n    }\n\n    subvalue += queue;\n    url = queue;\n    index = subvalue.length;\n  }\n\n  /* Eat white-space. */\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n  subvalue += queue;\n\n  /* Eat the title. */\n  if (queue && own.call(markers, character)) {\n    index++;\n    subvalue += character;\n    queue = '';\n    marker = markers[character];\n    beforeTitle = subvalue;\n\n    /* In commonmark-mode, things are pretty easy: the\n     * marker cannot occur inside the title.\n     *\n     * Non-commonmark does, however, support nested\n     * delimiters. */\n    if (commonmark) {\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          break;\n        }\n\n        if (character === C_BACKSLASH) {\n          queue += C_BACKSLASH;\n          character = value.charAt(++index);\n        }\n\n        index++;\n        queue += character;\n      }\n\n      character = value.charAt(index);\n\n      if (character !== marker) {\n        return;\n      }\n\n      title = queue;\n      subvalue += queue + character;\n      index++;\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (!whitespace(character)) {\n          break;\n        }\n\n        subvalue += character;\n        index++;\n      }\n    } else {\n      subqueue = '';\n\n      while (index < length) {\n        character = value.charAt(index);\n\n        if (character === marker) {\n          if (hasMarker) {\n            queue += marker + subqueue;\n            subqueue = '';\n          }\n\n          hasMarker = true;\n        } else if (!hasMarker) {\n          queue += character;\n        } else if (character === C_PAREN_CLOSE) {\n          subvalue += queue + marker + subqueue;\n          title = queue;\n          break;\n        } else if (whitespace(character)) {\n          subqueue += character;\n        } else {\n          queue += marker + subqueue + character;\n          subqueue = '';\n          hasMarker = false;\n        }\n\n        index++;\n      }\n    }\n  }\n\n  if (value.charAt(index) !== C_PAREN_CLOSE) {\n    return;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  subvalue += C_PAREN_CLOSE;\n\n  url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, {nonTerminated: false});\n\n  if (title) {\n    beforeTitle = eat(beforeTitle).test().end;\n    title = self.decode.raw(self.unescape(title), beforeTitle);\n  }\n\n  node = {\n    type: isImage ? 'image' : 'link',\n    title: title || null,\n    url: url\n  };\n\n  if (isImage) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  } else {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  }\n\n  return eat(subvalue)(node);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/link');\nvar normalize = require('../util/normalize');\n\nmodule.exports = reference;\nreference.locator = locate;\n\nvar T_LINK = 'link';\nvar T_IMAGE = 'image';\nvar T_FOOTNOTE = 'footnote';\nvar REFERENCE_TYPE_SHORTCUT = 'shortcut';\nvar REFERENCE_TYPE_COLLAPSED = 'collapsed';\nvar REFERENCE_TYPE_FULL = 'full';\nvar C_CARET = '^';\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\n\nfunction reference(eat, value, silent) {\n  var self = this;\n  var character = value.charAt(0);\n  var index = 0;\n  var length = value.length;\n  var subvalue = '';\n  var intro = '';\n  var type = T_LINK;\n  var referenceType = REFERENCE_TYPE_SHORTCUT;\n  var content;\n  var identifier;\n  var now;\n  var node;\n  var exit;\n  var queue;\n  var bracketed;\n  var depth;\n\n  /* Check whether we’re eating an image. */\n  if (character === '!') {\n    type = T_IMAGE;\n    intro = character;\n    character = value.charAt(++index);\n  }\n\n  if (character !== C_BRACKET_OPEN) {\n    return;\n  }\n\n  index++;\n  intro += character;\n  queue = '';\n\n  /* Check whether we’re eating a footnote. */\n  if (self.options.footnotes && value.charAt(index) === C_CARET) {\n    /* Exit if `![^` is found, so the `!` will be seen as text after this,\n     * and we’ll enter this function again when `[^` is found. */\n    if (type === T_IMAGE) {\n      return;\n    }\n\n    intro += C_CARET;\n    index++;\n    type = T_FOOTNOTE;\n  }\n\n  /* Eat the text. */\n  depth = 0;\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_OPEN) {\n      bracketed = true;\n      depth++;\n    } else if (character === C_BRACKET_CLOSE) {\n      if (!depth) {\n        break;\n      }\n\n      depth--;\n    }\n\n    if (character === C_BACKSLASH) {\n      queue += C_BACKSLASH;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n\n  subvalue = queue;\n  content = queue;\n  character = value.charAt(index);\n\n  if (character !== C_BRACKET_CLOSE) {\n    return;\n  }\n\n  index++;\n  subvalue += character;\n  queue = '';\n\n  while (index < length) {\n    character = value.charAt(index);\n\n    if (!whitespace(character)) {\n      break;\n    }\n\n    queue += character;\n    index++;\n  }\n\n  character = value.charAt(index);\n\n  /* Inline footnotes cannot have an identifier. */\n  if (type !== T_FOOTNOTE && character === C_BRACKET_OPEN) {\n    identifier = '';\n    queue += character;\n    index++;\n\n    while (index < length) {\n      character = value.charAt(index);\n\n      if (character === C_BRACKET_OPEN || character === C_BRACKET_CLOSE) {\n        break;\n      }\n\n      if (character === C_BACKSLASH) {\n        identifier += C_BACKSLASH;\n        character = value.charAt(++index);\n      }\n\n      identifier += character;\n      index++;\n    }\n\n    character = value.charAt(index);\n\n    if (character === C_BRACKET_CLOSE) {\n      referenceType = identifier ? REFERENCE_TYPE_FULL : REFERENCE_TYPE_COLLAPSED;\n      queue += identifier + character;\n      index++;\n    } else {\n      identifier = '';\n    }\n\n    subvalue += queue;\n    queue = '';\n  } else {\n    if (!content) {\n      return;\n    }\n\n    identifier = content;\n  }\n\n  /* Brackets cannot be inside the identifier. */\n  if (referenceType !== REFERENCE_TYPE_FULL && bracketed) {\n    return;\n  }\n\n  subvalue = intro + subvalue;\n\n  if (type === T_LINK && self.inLink) {\n    return null;\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  if (type === T_FOOTNOTE && content.indexOf(' ') !== -1) {\n    return eat(subvalue)({\n      type: 'footnote',\n      children: this.tokenizeInline(content, eat.now())\n    });\n  }\n\n  now = eat.now();\n  now.column += intro.length;\n  now.offset += intro.length;\n  identifier = referenceType === REFERENCE_TYPE_FULL ? identifier : content;\n\n  node = {\n    type: type + 'Reference',\n    identifier: normalize(identifier)\n  };\n\n  if (type === T_LINK || type === T_IMAGE) {\n    node.referenceType = referenceType;\n  }\n\n  if (type === T_LINK) {\n    exit = self.enterLink();\n    node.children = self.tokenizeInline(content, now);\n    exit();\n  } else if (type === T_IMAGE) {\n    node.alt = self.decode.raw(self.unescape(content), now) || null;\n  }\n\n  return eat(subvalue)(node);\n}\n","'use strict';\n\nvar trim = require('trim');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/strong');\n\nmodule.exports = strong;\nstrong.locator = locate;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction strong(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (\n    (character !== C_ASTERISK && character !== C_UNDERSCORE) ||\n    value.charAt(++index) !== character\n  ) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  marker = character;\n  subvalue = marker + marker;\n  length = value.length;\n  index++;\n  queue = '';\n  character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (\n      character === marker &&\n      value.charAt(index + 1) === marker &&\n      (!pedantic || !whitespace(prev))\n    ) {\n      character = value.charAt(index + 2);\n\n      if (character !== marker) {\n        if (!trim(queue)) {\n          return;\n        }\n\n        /* istanbul ignore if - never used (yet) */\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column += 2;\n        now.offset += 2;\n\n        return eat(subvalue + queue + subvalue)({\n          type: 'strong',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('**', fromIndex);\n  var underscore = value.indexOf('__', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}\n","'use strict';\n\nvar trim = require('trim');\nvar word = require('is-word-character');\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/emphasis');\n\nmodule.exports = emphasis;\nemphasis.locator = locate;\n\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction emphasis(eat, value, silent) {\n  var self = this;\n  var index = 0;\n  var character = value.charAt(index);\n  var now;\n  var pedantic;\n  var marker;\n  var queue;\n  var subvalue;\n  var length;\n  var prev;\n\n  if (character !== C_ASTERISK && character !== C_UNDERSCORE) {\n    return;\n  }\n\n  pedantic = self.options.pedantic;\n  subvalue = character;\n  marker = character;\n  length = value.length;\n  index++;\n  queue = '';\n  character = '';\n\n  if (pedantic && whitespace(value.charAt(index))) {\n    return;\n  }\n\n  while (index < length) {\n    prev = character;\n    character = value.charAt(index);\n\n    if (character === marker && (!pedantic || !whitespace(prev))) {\n      character = value.charAt(++index);\n\n      if (character !== marker) {\n        if (!trim(queue) || prev === marker) {\n          return;\n        }\n\n        if (!pedantic && marker === C_UNDERSCORE && word(character)) {\n          queue += marker;\n          continue;\n        }\n\n        /* istanbul ignore if - never used (yet) */\n        if (silent) {\n          return true;\n        }\n\n        now = eat.now();\n        now.column++;\n        now.offset++;\n\n        return eat(subvalue + queue + marker)({\n          type: 'emphasis',\n          children: self.tokenizeInline(queue, now)\n        });\n      }\n\n      queue += marker;\n    }\n\n    if (!pedantic && character === '\\\\') {\n      queue += character;\n      character = value.charAt(++index);\n    }\n\n    queue += character;\n    index++;\n  }\n}\n","'use strict'\n\nmodule.exports = wordCharacter\n\nvar fromCode = String.fromCharCode\nvar re = /\\w/\n\n// Check if the given character code, or the character code at the first\n// character, is a word character.\nfunction wordCharacter(character) {\n  return re.test(\n    typeof character === 'number' ? fromCode(character) : character.charAt(0)\n  )\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var asterisk = value.indexOf('*', fromIndex);\n  var underscore = value.indexOf('_', fromIndex);\n\n  if (underscore === -1) {\n    return asterisk;\n  }\n\n  if (asterisk === -1) {\n    return underscore;\n  }\n\n  return underscore < asterisk ? underscore : asterisk;\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/delete');\n\nmodule.exports = strikethrough;\nstrikethrough.locator = locate;\n\nvar C_TILDE = '~';\nvar DOUBLE = '~~';\n\nfunction strikethrough(eat, value, silent) {\n  var self = this;\n  var character = '';\n  var previous = '';\n  var preceding = '';\n  var subvalue = '';\n  var index;\n  var length;\n  var now;\n\n  if (\n    !self.options.gfm ||\n    value.charAt(0) !== C_TILDE ||\n    value.charAt(1) !== C_TILDE ||\n    whitespace(value.charAt(2))\n  ) {\n    return;\n  }\n\n  index = 1;\n  length = value.length;\n  now = eat.now();\n  now.column += 2;\n  now.offset += 2;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (\n      character === C_TILDE &&\n      previous === C_TILDE &&\n      (!preceding || !whitespace(preceding))\n    ) {\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      return eat(DOUBLE + subvalue + DOUBLE)({\n        type: 'delete',\n        children: self.tokenizeInline(subvalue, now)\n      });\n    }\n\n    subvalue += previous;\n    preceding = previous;\n    previous = character;\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('~~', fromIndex);\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\nvar locate = require('../locate/code-inline');\n\nmodule.exports = inlineCode;\ninlineCode.locator = locate;\n\nvar C_TICK = '`';\n\n/* Tokenise inline code. */\nfunction inlineCode(eat, value, silent) {\n  var length = value.length;\n  var index = 0;\n  var queue = '';\n  var tickQueue = '';\n  var contentQueue;\n  var subqueue;\n  var count;\n  var openingCount;\n  var subvalue;\n  var character;\n  var found;\n  var next;\n\n  while (index < length) {\n    if (value.charAt(index) !== C_TICK) {\n      break;\n    }\n\n    queue += C_TICK;\n    index++;\n  }\n\n  if (!queue) {\n    return;\n  }\n\n  subvalue = queue;\n  openingCount = index;\n  queue = '';\n  next = value.charAt(index);\n  count = 0;\n\n  while (index < length) {\n    character = next;\n    next = value.charAt(index + 1);\n\n    if (character === C_TICK) {\n      count++;\n      tickQueue += character;\n    } else {\n      count = 0;\n      queue += character;\n    }\n\n    if (count && next !== C_TICK) {\n      if (count === openingCount) {\n        subvalue += queue + tickQueue;\n        found = true;\n        break;\n      }\n\n      queue += tickQueue;\n      tickQueue = '';\n    }\n\n    index++;\n  }\n\n  if (!found) {\n    if (openingCount % 2 !== 0) {\n      return;\n    }\n\n    queue = '';\n  }\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  contentQueue = '';\n  subqueue = '';\n  length = queue.length;\n  index = -1;\n\n  while (++index < length) {\n    character = queue.charAt(index);\n\n    if (whitespace(character)) {\n      subqueue += character;\n      continue;\n    }\n\n    if (subqueue) {\n      if (contentQueue) {\n        contentQueue += subqueue;\n      }\n\n      subqueue = '';\n    }\n\n    contentQueue += character;\n  }\n\n  return eat(subvalue)({\n    type: 'inlineCode',\n    value: contentQueue\n  });\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  return value.indexOf('`', fromIndex);\n}\n","'use strict';\n\nvar locate = require('../locate/break');\n\nmodule.exports = hardBreak;\nhardBreak.locator = locate;\n\nvar MIN_BREAK_LENGTH = 2;\n\nfunction hardBreak(eat, value, silent) {\n  var length = value.length;\n  var index = -1;\n  var queue = '';\n  var character;\n\n  while (++index < length) {\n    character = value.charAt(index);\n\n    if (character === '\\n') {\n      if (index < MIN_BREAK_LENGTH) {\n        return;\n      }\n\n      /* istanbul ignore if - never used (yet) */\n      if (silent) {\n        return true;\n      }\n\n      queue += character;\n\n      return eat(queue)({type: 'break'});\n    }\n\n    if (character !== ' ') {\n      return;\n    }\n\n    queue += character;\n  }\n}\n","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n  var index = value.indexOf('\\n', fromIndex);\n\n  while (index > fromIndex) {\n    if (value.charAt(index - 1) !== ' ') {\n      break;\n    }\n\n    index--;\n  }\n\n  return index;\n}\n","'use strict';\n\nmodule.exports = text;\n\nfunction text(eat, value, silent) {\n  var self = this;\n  var methods;\n  var tokenizers;\n  var index;\n  var length;\n  var subvalue;\n  var position;\n  var tokenizer;\n  var name;\n  var min;\n  var now;\n\n  /* istanbul ignore if - never used (yet) */\n  if (silent) {\n    return true;\n  }\n\n  methods = self.inlineMethods;\n  length = methods.length;\n  tokenizers = self.inlineTokenizers;\n  index = -1;\n  min = value.length;\n\n  while (++index < length) {\n    name = methods[index];\n\n    if (name === 'text' || !tokenizers[name]) {\n      continue;\n    }\n\n    tokenizer = tokenizers[name].locator;\n\n    if (!tokenizer) {\n      eat.file.fail('Missing locator: `' + name + '`');\n    }\n\n    position = tokenizer.call(self, value, 1);\n\n    if (position !== -1 && position < min) {\n      min = position;\n    }\n  }\n\n  subvalue = value.slice(0, min);\n  now = eat.now();\n\n  self.decode(subvalue, now, function (content, position, source) {\n    eat(source || content)({\n      type: 'text',\n      value: content\n    });\n  });\n}\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 = void 0;\n  var currentParent = void 0;\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    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    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\n  return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n  var i = open.length;\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 ? { tag: match[2], opening: !match[1], node: node } : 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\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\nvar visit = require('unist-util-visit');\n\nexports.ofType = function (types, mode) {\n  return function (node) {\n    types.forEach(function (type) {\n      return visit(node, type, disallow, true);\n    });\n    return node;\n  };\n\n  function disallow(node, index, parent) {\n    if (parent) {\n      untangle(node, index, parent, mode);\n    }\n  }\n};\n\nexports.ifNotMatch = function (allowNode, mode) {\n  return function (node) {\n    visit(node, disallow, true);\n    return node;\n  };\n\n  function disallow(node, index, parent) {\n    if (parent && !allowNode(node, index, parent)) {\n      untangle(node, index, parent, mode);\n    }\n  }\n};\n\nfunction untangle(node, index, parent, mode) {\n  if (mode === 'remove') {\n    parent.children.splice(index, 1);\n  } else if (mode === 'unwrap') {\n    var args = [index, 1];\n\n    if (node.children) {\n      args = args.concat(node.children);\n    }\n\n    Array.prototype.splice.apply(parent.children, args);\n  }\n}","'use strict';\n\nvar React = require('react');\nvar xtend = require('xtend');\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\n  var renderer = options.renderers[node.type];\n\n  var pos = node.position.start;\n  var key = [node.type, pos.line, pos.column].join('-');\n\n  if (node.type === 'text') {\n    return renderer ? renderer(node.value, key) : node.value;\n  }\n\n  if (typeof renderer !== 'function' && typeof renderer !== 'string' && !isReactFragment(renderer)) {\n    throw new Error('Renderer for type `' + node.type + '` not defined or is not renderable');\n  }\n\n  var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n\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, { node: node, props: nodeProps }, i);\n    });\n  }\n}\n\nfunction isReactFragment(renderer) {\n  return React.Fragment && React.Fragment === renderer;\n}\n\n// eslint-disable-next-line max-params, complexity\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n  var props = { key: key };\n\n  var isTagRenderer = typeof renderer === 'string';\n\n  // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n  if (opts.sourcePos && node.position) {\n    props['data-sourcepos'] = flattenPosition(node.position);\n  }\n\n  if (opts.rawSourcePos && !isTagRenderer) {\n    props.sourcePosition = node.position;\n  }\n\n  // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n  if (opts.includeNodeIndex && parent.node && parent.node.children && !isTagRenderer) {\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 ? opts.definitions[node.identifier] || {} : null;\n\n  switch (node.type) {\n    case 'root':\n      assignDefined(props, { className: opts.className });\n      break;\n    case 'heading':\n      props.level = node.depth;\n      break;\n    case 'list':\n      props.start = node.start;\n      props.ordered = node.ordered;\n      props.tight = !node.loose;\n      props.depth = node.depth;\n      break;\n    case 'listItem':\n      props.checked = node.checked;\n      props.tight = !node.loose;\n      props.ordered = node.ordered;\n      props.index = node.index;\n      props.children = (props.tight ? unwrapParagraphs(node) : node.children).map(function (childNode, i) {\n        return astToReact(childNode, opts, { node: node, props: props }, i);\n      });\n      break;\n    case 'definition':\n      assignDefined(props, { identifier: node.identifier, title: node.title, url: node.url });\n      break;\n    case 'code':\n      assignDefined(props, { language: node.lang && node.lang.split(/\\s/, 1)[0] });\n      break;\n    case 'inlineCode':\n      props.children = node.value;\n      props.inline = true;\n      break;\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    case 'image':\n      assignDefined(props, {\n        alt: node.alt || undefined,\n        title: node.title || undefined,\n        src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url\n      });\n      break;\n    case 'linkReference':\n      assignDefined(props, xtend(ref, {\n        href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n      }));\n      break;\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        title: ref.title || undefined,\n        alt: node.alt || undefined\n      });\n      break;\n    case 'table':\n    case 'tableHead':\n    case 'tableBody':\n      props.columnAlignment = node.align;\n      break;\n    case 'tableRow':\n      props.isHeader = parent.node.type === 'tableHead';\n      props.columnAlignment = parent.props.columnAlignment;\n      break;\n    case 'tableCell':\n      assignDefined(props, {\n        isHeader: parent.props.isHeader,\n        align: parent.props.columnAlignment[index]\n      });\n      break;\n    case 'virtualHtml':\n      props.tag = node.tag;\n      break;\n    case 'html':\n      // @todo find a better way than this\n      props.isBlock = node.position.start.line !== node.position.end.line;\n      props.escapeHtml = opts.escapeHtml;\n      props.skipHtml = opts.skipHtml;\n      break;\n    default:\n      assignDefined(props, xtend(node, {\n        type: undefined,\n        position: undefined,\n        children: undefined\n      }));\n  }\n\n  if (!isTagRenderer && node.value) {\n    props.value = node.value;\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 flattenPosition(pos) {\n  return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\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\nmodule.exports = astToReact;","'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  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\nmodule.exports = function getDefinitions(node) {\n  var defs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  return (node.children || []).reduce(function (definitions, child) {\n    if (child.type === 'definition') {\n      definitions[child.identifier] = {\n        href: child.url,\n        title: child.title\n      };\n    }\n\n    return getDefinitions(child, definitions);\n  }, defs);\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  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) === protocol) {\n      return url;\n    }\n  }\n\n  index = url.indexOf('?');\n  if (index !== -1 && colon > index) {\n    return url;\n  }\n\n  index = url.indexOf('#');\n  if (index !== -1 && colon > index) {\n    return url;\n  }\n\n  // eslint-disable-next-line no-script-url\n  return 'javascript:void(0)';\n};","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\nvar React = require('react');\nvar createElement = React.createElement;\n\nmodule.exports = {\n  root: 'div',\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\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};\n\nfunction SimpleRenderer(tag, props) {\n  return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n  var style = props.align ? { textAlign: props.align } : undefined;\n  var coreProps = getCoreProps(props);\n  return createElement(props.isHeader ? 'th' : 'td', style ? xtend({ style: style }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n  return createElement('h' + props.level, getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n  var attrs = getCoreProps(props);\n  if (props.start !== null && props.start !== 1) {\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  if (props.checked !== null) {\n    var checked = props.checked;\n    checkbox = createElement('input', { type: 'checkbox', checked: checked, readOnly: true });\n  }\n\n  return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n  var className = props.language && 'language-' + props.language;\n  var code = createElement('code', className ? { className: className } : 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 tag = props.isBlock ? 'div' : 'span';\n  if (props.escapeHtml) {\n    // @todo when fiber lands, we can simply render props.value\n    return createElement(tag, null, props.value);\n  }\n\n  var nodeProps = { dangerouslySetInnerHTML: { __html: props.value } };\n  return createElement(tag, nodeProps);\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  return props['data-sourcepos'] ? { 'data-sourcepos': props['data-sourcepos'] } : {};\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _utils = require('./utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint no-debugger: \"warn\" */\n\n\n/**\n * Predefined constants\n * @type {Object}\n */\nvar constants = {\n  orientation: {\n    horizontal: {\n      dimension: 'width',\n      direction: 'left',\n      reverseDirection: 'right',\n      coordinate: 'x'\n    },\n    vertical: {\n      dimension: 'height',\n      direction: 'top',\n      reverseDirection: 'bottom',\n      coordinate: 'y'\n    }\n  }\n};\n\nvar Slider = function (_Component) {\n  _inherits(Slider, _Component);\n\n  function Slider(props, context) {\n    _classCallCheck(this, Slider);\n\n    var _this = _possibleConstructorReturn(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).call(this, props, context));\n\n    _this.handleFormat = function (value) {\n      var format = _this.props.format;\n\n      return format ? format(value) : value;\n    };\n\n    _this.handleUpdate = function () {\n      if (!_this.slider) {\n        // for shallow rendering\n        return;\n      }\n      var orientation = _this.props.orientation;\n\n      var dimension = (0, _utils.capitalize)(constants.orientation[orientation].dimension);\n      var sliderPos = _this.slider['offset' + dimension];\n      var handlePos = _this.handle['offset' + dimension];\n\n      _this.setState({\n        limit: sliderPos - handlePos,\n        grab: handlePos / 2\n      });\n    };\n\n    _this.handleStart = function (e) {\n      var onChangeStart = _this.props.onChangeStart;\n\n      document.addEventListener('mousemove', _this.handleDrag);\n      document.addEventListener('mouseup', _this.handleEnd);\n      _this.setState({\n        active: true\n      }, function () {\n        onChangeStart && onChangeStart(e);\n      });\n    };\n\n    _this.handleDrag = function (e) {\n      e.stopPropagation();\n      var onChange = _this.props.onChange;\n      var _e$target = e.target,\n          className = _e$target.className,\n          classList = _e$target.classList,\n          dataset = _e$target.dataset;\n\n      if (!onChange || className === 'rangeslider__labels') return;\n\n      var value = _this.position(e);\n\n      if (classList && classList.contains('rangeslider__label-item') && dataset.value) {\n        value = parseFloat(dataset.value);\n      }\n\n      onChange && onChange(value, e);\n    };\n\n    _this.handleEnd = function (e) {\n      var onChangeComplete = _this.props.onChangeComplete;\n\n      _this.setState({\n        active: false\n      }, function () {\n        onChangeComplete && onChangeComplete(e);\n      });\n      document.removeEventListener('mousemove', _this.handleDrag);\n      document.removeEventListener('mouseup', _this.handleEnd);\n    };\n\n    _this.handleKeyDown = function (e) {\n      e.preventDefault();\n      var keyCode = e.keyCode;\n      var _this$props = _this.props,\n          value = _this$props.value,\n          min = _this$props.min,\n          max = _this$props.max,\n          step = _this$props.step,\n          onChange = _this$props.onChange;\n\n      var sliderValue = void 0;\n\n      switch (keyCode) {\n        case 38:\n        case 39:\n          sliderValue = value + step > max ? max : value + step;\n          onChange && onChange(sliderValue, e);\n          break;\n        case 37:\n        case 40:\n          sliderValue = value - step < min ? min : value - step;\n          onChange && onChange(sliderValue, e);\n          break;\n      }\n    };\n\n    _this.getPositionFromValue = function (value) {\n      var limit = _this.state.limit;\n      var _this$props2 = _this.props,\n          min = _this$props2.min,\n          max = _this$props2.max;\n\n      var diffMaxMin = max - min;\n      var diffValMin = value - min;\n      var percentage = diffValMin / diffMaxMin;\n      var pos = Math.round(percentage * limit);\n\n      return pos;\n    };\n\n    _this.getValueFromPosition = function (pos) {\n      var limit = _this.state.limit;\n      var _this$props3 = _this.props,\n          orientation = _this$props3.orientation,\n          min = _this$props3.min,\n          max = _this$props3.max,\n          step = _this$props3.step;\n\n      var percentage = (0, _utils.clamp)(pos, 0, limit) / (limit || 1);\n      var baseVal = step * Math.round(percentage * (max - min) / step);\n      var value = orientation === 'horizontal' ? baseVal + min : max - baseVal;\n\n      return (0, _utils.clamp)(value, min, max);\n    };\n\n    _this.position = function (e) {\n      var grab = _this.state.grab;\n      var _this$props4 = _this.props,\n          orientation = _this$props4.orientation,\n          reverse = _this$props4.reverse;\n\n\n      var node = _this.slider;\n      var coordinateStyle = constants.orientation[orientation].coordinate;\n      var directionStyle = reverse ? constants.orientation[orientation].reverseDirection : constants.orientation[orientation].direction;\n      var clientCoordinateStyle = 'client' + (0, _utils.capitalize)(coordinateStyle);\n      var coordinate = !e.touches ? e[clientCoordinateStyle] : e.touches[0][clientCoordinateStyle];\n      var direction = node.getBoundingClientRect()[directionStyle];\n      var pos = reverse ? direction - coordinate - grab : coordinate - direction - grab;\n      var value = _this.getValueFromPosition(pos);\n\n      return value;\n    };\n\n    _this.coordinates = function (pos) {\n      var _this$state = _this.state,\n          limit = _this$state.limit,\n          grab = _this$state.grab;\n      var orientation = _this.props.orientation;\n\n      var value = _this.getValueFromPosition(pos);\n      var position = _this.getPositionFromValue(value);\n      var handlePos = orientation === 'horizontal' ? position + grab : position;\n      var fillPos = orientation === 'horizontal' ? handlePos : limit - handlePos;\n\n      return {\n        fill: fillPos,\n        handle: handlePos,\n        label: handlePos\n      };\n    };\n\n    _this.renderLabels = function (labels) {\n      return _react2.default.createElement(\n        'ul',\n        {\n          ref: function ref(sl) {\n            _this.labels = sl;\n          },\n          className: (0, _classnames2.default)('rangeslider__labels')\n        },\n        labels\n      );\n    };\n\n    _this.state = {\n      active: false,\n      limit: 0,\n      grab: 0\n    };\n    return _this;\n  }\n\n  _createClass(Slider, [{\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.handleUpdate();\n      var resizeObserver = new _resizeObserverPolyfill2.default(this.handleUpdate);\n      resizeObserver.observe(this.slider);\n    }\n\n    /**\n     * Format label/tooltip value\n     * @param  {Number} - value\n     * @return {Formatted Number}\n     */\n\n\n    /**\n     * Update slider state on change\n     * @return {void}\n     */\n\n\n    /**\n     * Attach event listeners to mousemove/mouseup events\n     * @return {void}\n     */\n\n\n    /**\n     * Handle drag/mousemove event\n     * @param  {Object} e - Event object\n     * @return {void}\n     */\n\n\n    /**\n     * Detach event listeners to mousemove/mouseup events\n     * @return {void}\n     */\n\n\n    /**\n     * Support for key events on the slider handle\n     * @param  {Object} e - Event object\n     * @return {void}\n     */\n\n\n    /**\n     * Calculate position of slider based on its value\n     * @param  {number} value - Current value of slider\n     * @return {position} pos - Calculated position of slider based on value\n     */\n\n\n    /**\n     * Translate position of slider to slider value\n     * @param  {number} pos - Current position/coordinates of slider\n     * @return {number} value - Slider value\n     */\n\n\n    /**\n     * Calculate position of slider based on value\n     * @param  {Object} e - Event object\n     * @return {number} value - Slider value\n     */\n\n\n    /**\n     * Grab coordinates of slider\n     * @param  {Object} pos - Position object\n     * @return {Object} - Slider fill/handle coordinates\n     */\n\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      var _props = this.props,\n          value = _props.value,\n          orientation = _props.orientation,\n          className = _props.className,\n          tooltip = _props.tooltip,\n          reverse = _props.reverse,\n          labels = _props.labels,\n          min = _props.min,\n          max = _props.max,\n          handleLabel = _props.handleLabel;\n      var active = this.state.active;\n\n      var dimension = constants.orientation[orientation].dimension;\n      var direction = reverse ? constants.orientation[orientation].reverseDirection : constants.orientation[orientation].direction;\n      var position = this.getPositionFromValue(value);\n      var coords = this.coordinates(position);\n      var fillStyle = _defineProperty({}, dimension, coords.fill + 'px');\n      var handleStyle = _defineProperty({}, direction, coords.handle + 'px');\n      var showTooltip = tooltip && active;\n\n      var labelItems = [];\n      var labelKeys = Object.keys(labels);\n\n      if (labelKeys.length > 0) {\n        labelKeys = labelKeys.sort(function (a, b) {\n          return reverse ? a - b : b - a;\n        });\n\n        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n\n        try {\n          for (var _iterator = labelKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n            var key = _step.value;\n\n            var labelPosition = this.getPositionFromValue(key);\n            var labelCoords = this.coordinates(labelPosition);\n            var labelStyle = _defineProperty({}, direction, labelCoords.label + 'px');\n\n            labelItems.push(_react2.default.createElement(\n              'li',\n              {\n                key: key,\n                className: (0, _classnames2.default)('rangeslider__label-item'),\n                'data-value': key,\n                onMouseDown: this.handleDrag,\n                onTouchStart: this.handleStart,\n                onTouchEnd: this.handleEnd,\n                style: labelStyle\n              },\n              this.props.labels[key]\n            ));\n          }\n        } catch (err) {\n          _didIteratorError = true;\n          _iteratorError = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion && _iterator.return) {\n              _iterator.return();\n            }\n          } finally {\n            if (_didIteratorError) {\n              throw _iteratorError;\n            }\n          }\n        }\n      }\n\n      return _react2.default.createElement(\n        'div',\n        {\n          ref: function ref(s) {\n            _this2.slider = s;\n          },\n          className: (0, _classnames2.default)('rangeslider', 'rangeslider-' + orientation, { 'rangeslider-reverse': reverse }, className),\n          onMouseDown: this.handleDrag,\n          onMouseUp: this.handleEnd,\n          onTouchStart: this.handleStart,\n          onTouchEnd: this.handleEnd,\n          'aria-valuemin': min,\n          'aria-valuemax': max,\n          'aria-valuenow': value,\n          'aria-orientation': orientation\n        },\n        _react2.default.createElement('div', { className: 'rangeslider__fill', style: fillStyle }),\n        _react2.default.createElement(\n          'div',\n          {\n            ref: function ref(sh) {\n              _this2.handle = sh;\n            },\n            className: 'rangeslider__handle',\n            onMouseDown: this.handleStart,\n            onTouchMove: this.handleDrag,\n            onTouchEnd: this.handleEnd,\n            onKeyDown: this.handleKeyDown,\n            style: handleStyle,\n            tabIndex: 0\n          },\n          showTooltip ? _react2.default.createElement(\n            'div',\n            {\n              ref: function ref(st) {\n                _this2.tooltip = st;\n              },\n              className: 'rangeslider__handle-tooltip'\n            },\n            _react2.default.createElement(\n              'span',\n              null,\n              this.handleFormat(value)\n            )\n          ) : null,\n          _react2.default.createElement(\n            'div',\n            { className: 'rangeslider__handle-label' },\n            handleLabel\n          )\n        ),\n        labels ? this.renderLabels(labelItems) : null\n      );\n    }\n  }]);\n\n  return Slider;\n}(_react.Component);\n\nSlider.propTypes = {\n  min: _propTypes2.default.number,\n  max: _propTypes2.default.number,\n  step: _propTypes2.default.number,\n  value: _propTypes2.default.number,\n  orientation: _propTypes2.default.string,\n  tooltip: _propTypes2.default.bool,\n  reverse: _propTypes2.default.bool,\n  labels: _propTypes2.default.object,\n  handleLabel: _propTypes2.default.string,\n  format: _propTypes2.default.func,\n  onChangeStart: _propTypes2.default.func,\n  onChange: _propTypes2.default.func,\n  onChangeComplete: _propTypes2.default.func\n};\nSlider.defaultProps = {\n  min: 0,\n  max: 100,\n  step: 1,\n  value: 0,\n  orientation: 'horizontal',\n  tooltip: true,\n  reverse: false,\n  labels: {},\n  handleLabel: ''\n};\nexports.default = Slider;","/**\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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.capitalize = capitalize;\nexports.clamp = clamp;\n/**\n * Capitalize first letter of string\n * @private\n * @param  {string} - String\n * @return {string} - String with first letter capitalized\n */\nfunction capitalize(str) {\n  return str.charAt(0).toUpperCase() + str.substr(1);\n}\n\n/**\n * Clamp position between a range\n * @param  {number} - Value to be clamped\n * @param  {number} - Minimum value in range\n * @param  {number} - Maximum value in range\n * @return {number} - Clamped value\n */\nfunction clamp(value, min, max) {\n  return Math.min(Math.max(value, min), max);\n}","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","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;","export var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var ceil = Math.ceil;\nexport var cos = Math.cos;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var pow = Math.pow;\nexport var round = Math.round;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sin = Math.sin;\nexport var tan = Math.tan;\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var sqrt1_2 = Math.SQRT1_2;\nexport var sqrt2 = sqrt(2);\nexport var sqrtPi = sqrt(pi);\nexport var tau = pi * 2;\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport function sinci(x) {\n  return x ? x / Math.sin(x) : 1;\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function sqrt(x) {\n  return x > 0 ? Math.sqrt(x) : 0;\n}\n\nexport function tanh(x) {\n  x = exp(2 * x);\n  return (x - 1) / (x + 1);\n}\n\nexport function sinh(x) {\n  return (exp(x) - exp(-x)) / 2;\n}\n\nexport function cosh(x) {\n  return (exp(x) + exp(-x)) / 2;\n}\n\nexport function arsinh(x) {\n  return log(x + sqrt(x * x + 1));\n}\n\nexport function arcosh(x) {\n  return log(x + sqrt(x * x - 1));\n}\n","import {geoProjection as projection} from \"d3-geo\";\nimport {abs, degrees, epsilon2, floor, halfPi, max, min, pi, radians} from \"./math.js\";\n\nvar K = [\n  [0.9986, -0.062],\n  [1.0000, 0.0000],\n  [0.9986, 0.0620],\n  [0.9954, 0.1240],\n  [0.9900, 0.1860],\n  [0.9822, 0.2480],\n  [0.9730, 0.3100],\n  [0.9600, 0.3720],\n  [0.9427, 0.4340],\n  [0.9216, 0.4958],\n  [0.8962, 0.5571],\n  [0.8679, 0.6176],\n  [0.8350, 0.6769],\n  [0.7986, 0.7346],\n  [0.7597, 0.7903],\n  [0.7186, 0.8435],\n  [0.6732, 0.8936],\n  [0.6213, 0.9394],\n  [0.5722, 0.9761],\n  [0.5322, 1.0000]\n];\n\nK.forEach(function(d) {\n  d[1] *= 1.0144;\n});\n\nexport function robinsonRaw(lambda, phi) {\n  var i = min(18, abs(phi) * 36 / pi),\n      i0 = floor(i),\n      di = i - i0,\n      ax = (k = K[i0])[0],\n      ay = k[1],\n      bx = (k = K[++i0])[0],\n      by = k[1],\n      cx = (k = K[min(19, ++i0)])[0],\n      cy = k[1],\n      k;\n  return [\n    lambda * (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),\n    (phi > 0 ? halfPi : -halfPi) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2)\n  ];\n}\n\nrobinsonRaw.invert = function(x, y) {\n  var yy = y / halfPi,\n      phi = yy * 90,\n      i = min(18, abs(phi / 5)),\n      i0 = max(0, floor(i));\n  do {\n    var ay = K[i0][1],\n        by = K[i0 + 1][1],\n        cy = K[min(19, i0 + 2)][1],\n        u = cy - ay,\n        v = cy - 2 * by + ay,\n        t = 2 * (abs(yy) - by) / u,\n        c = v / u,\n        di = t * (1 - c * t * (1 - 2 * c * t));\n    if (di >= 0 || i0 === 1) {\n      phi = (y >= 0 ? 5 : -5) * (di + i);\n      var j = 50, delta;\n      do {\n        i = min(18, abs(phi) / 5);\n        i0 = floor(i);\n        di = i - i0;\n        ay = K[i0][1];\n        by = K[i0 + 1][1];\n        cy = K[min(19, i0 + 2)][1];\n        phi -= (delta = (y >= 0 ? halfPi : -halfPi) * (by + di * (cy - ay) / 2 + di * di * (cy - 2 * by + ay) / 2) - y) * degrees;\n      } while (abs(delta) > epsilon2 && --j > 0);\n      break;\n    }\n  } while (--i0 >= 0);\n  var ax = K[i0][0],\n      bx = K[i0 + 1][0],\n      cx = K[min(19, i0 + 2)][0];\n  return [\n    x / (bx + di * (cx - ax) / 2 + di * di * (cx - 2 * bx + ax) / 2),\n    phi * radians\n  ];\n};\n\nexport default function() {\n  return projection(robinsonRaw)\n      .scale(152.63);\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: 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","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, true);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, true);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, true);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n"],"sourceRoot":""}