{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack:///./node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/prop-types/index.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/utils.js","webpack:///./node_modules/@financial-times/ft-date-format/index.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/settings.js","webpack:///./node_modules/@financial-times/o-viewport/src/utils.js","webpack:///./node_modules/@financial-times/g-components/src/shared/proptypes.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core.js","webpack:///./node_modules/@financial-times/o-viewport/main.js","webpack:///./node_modules/@financial-times/g-components/src/grid/index.js","webpack:///./node_modules/@financial-times/g-components/src/shared/helpers.js","webpack:///./node_modules/@financial-times/o-toggle/main.js","webpack:///./node_modules/@financial-times/o-utils/main.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/@financial-times/o-overlay/src/js/utils.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/store.js","webpack:///./node_modules/@financial-times/o-grid/main.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/user.js","webpack:///./node_modules/@financial-times/o-tracking/main.js","webpack:///./node_modules/@financial-times/g-components/src/shared/hooks.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/session.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/send.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/queue.js","webpack:///./node_modules/@financial-times/o-tracking/src/libs/get-trace.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/index.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/display-name.js","webpack:///./node_modules/@financial-times/o-overlay/node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/xhr.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/send-beacon.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/core/transports/image.js","webpack:///./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/react-dom/index.js","webpack:///./app/app.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@financial-times/o-header/src/js/header.js","webpack:///./node_modules/@financial-times/o-toggle/src/js/toggle.js","webpack:///./node_modules/@financial-times/n-tracking/dist/browser.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/tracking.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/custom.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/page-view.js","webpack:///./node_modules/@financial-times/o-comments/src/js/comments.js","webpack:///./node_modules/@financial-times/o-overlay/src/js/overlay.js","webpack:///./node_modules/@financial-times/o-comments/src/js/count.js","webpack:///./node_modules/@financial-times/o-footer/src/js/footer.js","webpack:///./node_modules/@financial-times/o-share/src/js/share.js","webpack:///./node_modules/@financial-times/o-date/src/js/date.js","webpack:///./node_modules/@financial-times/g-audio/src/js/audio.js","webpack:///./node_modules/object-assign/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@financial-times/o-tracking/src/libs/browser-cuid.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///./node_modules/@financial-times/g-components/src/article-layout/index.js","webpack:///./node_modules/@financial-times/g-components/src/header/index.js","webpack:///./node_modules/@financial-times/o-header/main.js","webpack:///./node_modules/@financial-times/o-header/src/js/search.js","webpack:///./node_modules/@financial-times/o-toggle/src/js/target.js","webpack:///./node_modules/@financial-times/o-header/src/js/mega.js","webpack:///./node_modules/@financial-times/o-header/src/js/drawer.js","webpack:///./node_modules/@financial-times/o-header/src/js/subnav.js","webpack:///./node_modules/@financial-times/o-header/src/js/sticky.js","webpack:///./node_modules/@financial-times/g-components/src/analytics/index.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/click.js","webpack:///./node_modules/ftdomdelegate/main.js","webpack:///./node_modules/@financial-times/o-tracking/src/javascript/events/component-view.js","webpack:///./node_modules/@financial-times/n-tracking/node_modules/@financial-times/o-grid/browser.js","webpack:///./node_modules/@financial-times/n-tracking/node_modules/@financial-times/o-viewport/browser.js","webpack:///./node_modules/ready-state/dist/ready-state.es.js","webpack:///./node_modules/remove-markdown/index.js","webpack:///./node_modules/@financial-times/g-components/src/ads/index.js","webpack:///./node_modules/@financial-times/g-components/src/onwardjourney/index.js","webpack:///./node_modules/@financial-times/g-components/src/comments/index.js","webpack:///./node_modules/@financial-times/o-comments/main.js","webpack:///./node_modules/@financial-times/o-comments/src/js/stream.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/events.js","webpack:///./node_modules/@financial-times/o-overlay/main.js","webpack:///./node_modules/focusable/index.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/auth.js","webpack:///./node_modules/@financial-times/o-comments/src/js/utils/purge-jwt-cache.js","webpack:///./node_modules/@financial-times/g-components/src/footer/index.js","webpack:///./node_modules/@financial-times/o-footer/main.js","webpack:///./node_modules/@financial-times/o-footer/src/js/layout.js","webpack:///./node_modules/@financial-times/ads-legacy-o-ads/dist/index.js","webpack:///./node_modules/@financial-times/g-components/src/story-topper/index.js","webpack:///./node_modules/@financial-times/g-components/src/share/index.js","webpack:///./node_modules/@financial-times/o-share/main.js","webpack:///./node_modules/@financial-times/o-share/node_modules/ftdomdelegate/browser.js","webpack:///./node_modules/@financial-times/g-components/src/bylines/index.js","webpack:///./node_modules/@financial-times/o-date/main.js","webpack:///./node_modules/@financial-times/g-components/src/epilogue/index.js","webpack:///./node_modules/@financial-times/g-audio/main.js","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/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@financial-times/n-tracking/node_modules/@financial-times/o-viewport/dist/utils.js","webpack:///./node_modules/@financial-times/n-tracking/node_modules/@financial-times/o-utils/browser.js"],"names":["parentHotUpdateCallback","window","chunkId","moreModules","hotAvailableFilesMap","hotRequestedFilesMap","moduleId","Object","prototype","hasOwnProperty","call","hotUpdate","hotWaitingFiles","hotChunksLoading","hotUpdateDownloaded","hotAddUpdateChunk","hotCurrentChildModule","hotApplyOnUpdate","hotCurrentHash","hotCurrentModuleData","hotCurrentParents","hotCurrentParentsTemp","hotCreateRequire","me","installedModules","__webpack_require__","fn","request","hot","active","parents","indexOf","push","children","console","warn","ObjectFactory","name","configurable","enumerable","get","set","value","defineProperty","e","hotStatus","hotSetStatus","then","finishChunkLoading","err","hotWaitingFilesMap","hotEnsureUpdateChunk","t","mode","hotCreateModule","_acceptedDependencies","_declinedDependencies","_selfAccepted","_selfDeclined","_selfInvalidated","_disposeHandlers","_main","accept","dep","callback","undefined","i","length","decline","dispose","addDisposeHandler","removeDisposeHandler","idx","splice","invalidate","this","modules","hotApplyInvalidatedModule","hotQueuedInvalidatedModules","check","hotCheck","apply","hotApply","status","l","hotStatusHandlers","addStatusHandler","removeStatusHandler","data","newStatus","hotDeferred","hotUpdateNewHash","toModuleId","id","Error","requestTimeout","Promise","resolve","reject","XMLHttpRequest","requestPath","p","open","timeout","send","onreadystatechange","readyState","update","JSON","parse","responseText","hotApplyInvalidatedModules","c","h","promise","script","document","createElement","charset","src","head","appendChild","hotDownloadUpdateChunk","deferred","result","outdatedModules","options","hotApplyInternal","cb","j","module","getAffectedStuff","updateModuleId","outdatedDependencies","queue","map","chain","queueItem","pop","type","parentId","parent","concat","addAllToSet","a","b","item","appliedUpdate","warnUnexpectedRequire","abortError","doApply","doDispose","chainInfo","join","onDeclined","ignoreDeclined","onUnaccepted","ignoreUnaccepted","onAccepted","onDisposed","outdatedSelfAcceptedModules","slice","errorHandler","keys","forEach","installedChunks","hotDisposeChunk","dependency","moduleOutdatedDependencies","disposeHandlers","child","error","callbacks","onErrored","dependencyId","ignoreErrored","err2","originalError","list","exports","m","d","getter","o","r","Symbol","toStringTag","__esModule","ns","create","key","bind","n","object","property","s","_setPrototypeOf","setPrototypeOf","__proto__","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","container","before","_proto","insert","rule","_tag","tag","setAttribute","createTextNode","createStyleElement","nextSibling","insertBefore","sheet","styleSheets","ownerNode","sheetForTag","isImportRule","charCodeAt","insertRule","cssRules","flush","parentNode","removeChild","W","X","trim","split","ia","Z","v","replace","F","P","substring","w","L","ja","ka","test","aa","G","ba","la","ma","R","na","ea","oa","H","q","g","x","A","S","B","U","prefix","D","z","M","k","y","C","K","u","I","J","f","N","charAt","ca","O","da","fa","Y","E","ha","Q","use","T","toSheet","block","Sheet","current","ruleSheet","context","content","selectors","line","column","depth","at","delimiter","stylisOptions","stylis","inserted","_insert","nodes","querySelectorAll","Array","node","getAttribute","stylisPlugins","selector","serialized","shouldCache","styles","cache","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","className","insertStyles","isStringTag","next","str","len","toString","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","arg","styleName","toLowerCase","match","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","obj","string","isArray","_key","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","args","stringMode","strings","raw","lastIndex","identifierName","exec","EmotionCacheContext","HTMLElement","ThemeContext","Provider","func","render","props","ref","Consumer","typePropName","createEmotionProps","newProps","Noop","theme","cssProp","css","ele","possiblyStyleElement","Emotion","arguments","argsLength","createElementArgArray","classnames","cls","toAdd","merge","_len","cx","_len2","_key2","originalModule","webpackPolyfill","page_callbacks","log","is","variable","target","copy","encode","encodeURIComponent","escape","decode","decodeURIComponent","unescape","addEvent","element","event","listener","addEventListener","attachEvent","broadcast","namespace","eventType","detail","dispatchEvent","CustomEvent","bubbles","onPage","includes","triggerPage","getValueFromCookie","matcher","cookie","RegExp","$1","filterProperties","objectToFilter","allowedPropertyNames","filteredObject","allowedName","sanitise","assignIfUndefined","subject","prop","findCircularPathsIn","rootObject","traversedValues","WeakSet","circularPaths","_findCircularPathsIn","currentObject","path","has","add","entries","containsCircularPaths","Boolean","_containsCircularPaths","values","isDeepEqual","constructor","source","flags","valueOf","months","days","formats","datetime","date","compiledTemplates","formatReplacementsMap","MMMM","MMM","MM","yyyy","yy","EEEE","EEE","dd","do","mm","hh","HH","inSeconds","minute","hour","day","week","month","year","compile","format","funcString","substr","replacer","Function","ftDateFormat","toDate","Date","asTodayOrYesterdayOrNothing","now","interval","getSecondsBetween","isToday","isYesterday","dateFormat","tpl","timeAgo","limit","abbreviated","suffix","Math","abs","round","max","floor","timeAgoNoSeconds","ftTime","dateObj","isNearFuture","isFarFuture","time","otherTime","within24Hours","sameDayOfWeek","getDay","within48Hours","consecutiveDaysOfTheWeek","settings","config","clone","stringify","setValue","getValue","destroy","debug","body","getHeight","ignoreScrollbars","documentElement","clientHeight","innerHeight","getWidth","clientWidth","innerWidth","getSize","height","width","getScrollPosition","scrollHeight","scrollWidth","left","pageXOffset","scrollX","top","pageYOffset","scrollY","getOrientation","orientation","screen","matchMedia","matches","getVisibility","hidden","debounce","Utils","throttle","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","creator","contactPoint","contactType","telephone","email","includedInDataCatalog","distribution","encodingFormat","contentUrl","temporalCoverage","spatialCoverage","geo","box","bylinesPropType","location","rootID","setRootID","guid","getRootID","track","currentSession","session","root_id","user","ft_session","ft_session_s","device","spoor_session","spoor_session_is_new","isNew","spoor_id","userID","settingsConfig","addAndRun","utils","listeners","intervals","resize","visibility","scroll","setThrottleInterval","listenToResize","handler","ev","viewport","originalEvent","listenToOrientation","listenToVisibility","listenToScroll","scrollPos","scrollLeft","scrollTop","listenTo","stopListeningTo","removeEventListener","GridRow","GridChild","GridContainer","plain","stripListLeaders","removeMarkdown","gfm","encodedJSON","_data","String","spoorTrackingPixel","jsonString","ieVersion","documentMode","img","data-o-component","imageUUID","getMainImage","makeCancelable","hasCanceled","val","isCanceled","cancel","registerLayoutChangeEvents","layouts","getGridBreakpoints","breakpoints","Map","decr1","Number","setupQuery","query","size","handleMQChange","mql","addListener","unregisterLayoutChangeEvents","removeQuery","find","removeListener","isNode","Node","nodeType","nodeName","isElement","constructAll","Toggle","init","wait","later","clearTimeout","setTimeout","hasOwn","classes","argType","inner","default","unCapitalise","capitalise","toUpperCase","copyContentFromElement","innerHTML","outerHTML","copyContentFromUrl","xhr","onload","onerror","optionsFromKey","opts","dashIndex","subKey","getOffsetRect","eClientRect","getBoundingClientRect","docElem","clientTop","clientLeft","right","bottom","Store","keyPrefix","undefinedName","message","info","cookieLoad","cookies","cookieSave","expiry","expires","setTime","getTime","toUTCString","domain","cookieRemove","assign","storageKey","nameOverride","storage","_type","load","localStorage","getItem","save","setItem","remove","removeItem","loadStore","oldCookieStoreData","read","write","errorMessage","missingDataMessage","getGridProperties","properties","getGridFromDoc","position","gridProperties","getComputedStyle","getPropertyValue","getCurrentLayout","layout","getCurrentGutter","gutter","enableLayoutChangeEvents","gridLayouts","sort","parseFloat","index","layoutName","layoutWidth","nextLayoutWidth","deprecate","paths","store","cookieDomain","defaultUserConfig","hostname","setUser","initialise","tracking","usePortal","rootRef","useRef","useEffect","rootEl","classList","parentEl","querySelector","parentElement","firstElementChild","childNodes","useAds","enabled","OAds","gpt","network","site","gptSite","zone","gptZone","targeting","lazyLoad","initialised","from","slots","initSlot","global","STORYBOOK_ENV","useLayoutChangeEvents","useState","breakpoint","setBreakpoint","listenersRef","useKeyboardShortcuts","shortcuts","handlers","keyCode","reduce","keyPress","defaultSessionConfig","setSession","getSession","parseInt","isUndefined","should_use_sendBeacon","navigator","sendBeacon","sendRequest","queueTime","offlineLag","transport","getTransport","user_callback","core_system","getSetting","system","version","is_live","offset","stringifiedData","complete","category","action","run","all_events","all","counts","label","URL","queue_length","nextRequest","shift","Queue","items","first","last","self","doAdd","created_at","invalidArg","getSiblingsAndPosition","el","originalEl","siblings","findIndex","elementPropertiesToCollect","getAllElementProperties","hasAttribute","getDomPathProps","attrs","filter","attribute","getContextProps","isOriginalEl","customProps","getTrace","trace","customContext","attributes","domPathProps","contextProps","mock","image","form","isUnique","displayName","fetch","method","response","json","available","findInvalidCharacters","matchingCharacters","uniqueMatchingCharacters","character","prompt","overlay","Overlay","html","class","compact","heading","title","validation","invalidCharacters","catch","apiError","promptValidation","preventDefault","displayNameForm","srcElement","innerText","Delegate","root","listenerMap","handle","_removedListeners","matchesTag","tagName","matchesRoot","rootElement","matchesId","captureForType","on","useCapture","matcherParam","TypeError","Element","off","listenerList","singleEventType","correspondingUseElement","eventPhase","currentTarget","ret","toFire","HTMLDocument","fire","_default","withCredentials","setRequestHeader","resolver","rejecter","Image","colspan","data-o-grid-colspan","propTypes","number","xl","XL","defaultProps","bleed","snappy","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","App","setContext","GAudio","dataset","contentSlug","buildTime","role","itemScope","itemType","itemProp","dangerouslySetInnerHTML","__html","storyContent","Header","headerEl","search","mega","drawer","subnav","sticky","removeAttribute","handleSpaceKeydown","toggle","toggleEl","_targets","attr","targetEl","Target","addToggle","close","stateName","isOpen","removeToggle","toggles","getCookie","regex","getLibrarySession","getUserData","networkInfo","connection","mozConnection","webkitConnection","oGrid","oViewport","connectionType","ft_session_publib","getQueryParams","queryString","searchParams","URLSearchParams","getErrorPageParams","errorStatus","errorReason","referrer","transformListToObject","flag","dataPropertyMap","appName","contentId","contentType","conceptId","conceptType","segmentid","cpccampaign","abTestState","transformContextData","contextData","asset_type","isPrototypeOf","cancelable","performance","deviceMemory","hardwareConcurrency","getEntriesByType","mark","toFixed","pow","ttfb","fp","fcp","lcp","lcpFinal","fid","clsFinal","tbt","ntbt","analyticsTracker","metricName","eventProperties","navigatorInformation","serviceWorkerStatus","serviceWorker","controller","isLowEndDevice","isLowEndExperience","vitalsScore","requestIdleCallback","_","beacon","other","total","xmlhttprequest","PerformanceObserver","getEntries","observe","buffered","disconnect","processingStart","startTime","performanceEntry","takeRecords","duration","renderTime","loadTime","identifier","decodedBodySize","initiatorType","usageDetails","quota","usage","caches","indexedDB","serviceWorkerRegistrations","resourceTiming","elementTiming","maxMeasureTime","responseStart","responseEnd","fetchTime","fetchStart","workerTime","workerStart","totalTime","requestStart","downloadTime","timeToFirstByte","headerSize","transferSize","encodedBodySize","dnsLookupTime","domainLookupEnd","domainLookupStart","redirectTime","redirectEnd","redirectStart","effectiveType","saveData","downlink","rtt","estimate","start","end","measure","getEntriesByName","entryType","endPaint","clear","clearMarks","markNTBT","commonjsGlobal","globalThis","createCommonjsModule","seedRandom","pool","GLOBAL","startdenom","significance","overflow","oldRandom","random","ARC4","keylen","count","flatten","typ","mixkey","seed","smear","stringseed","tostring","autoseed","crypto","getRandomValues","Uint8Array","plugins","fromCharCode","use_entropy","entropy","arc4","resetGlobal","seedRandom_1","seedIsInSample","percent","pseudoRandomNumber","randomNumberGenerator","getSpoorId","requiredMetrics","samplePercentage","isContextComplete","every","metric","realUserMonitoringForPerformance","navigation","domInteractive","domComplete","hasAlreadyBroadcast","firstInputDelay","largestContentfulPaint","firstPaint","firstContentfulPaint","cumulativeLayoutShift","totalBlockingTime","href","performanceMetrics","logging","DEPTH_MARKERS","defaultOptions","onScroll","ScrollDepth","observer","IntersectionObserver","handleIntersection","style","percentage","marker","changes","change","isIntersecting","intersectionRatio","scrollDepth","unobserve","ATTENTION_INTERVAL","ATTENTION_EVENTS","ATTENTION_LOST_EVENTS","PAGE_EXIT_EVENTS","defaultOptions$1","onExit","AttentionTime","totalAttentionTime","hasExited","startAttention","endAttention","handleExit","handleVisibilityChange","startConstantAttention","endConstantAttention","attentionTimeout","startAttentionTime","getAttentionTime","constantAttentionInterval","setInterval","clearInterval","currentAttentionTime","visibilityState","pageAttention","attentionTime","attention","meta","percentagesViewed","MAX_LENGTH","TRUNCATED_TEXT","getTextExcerpt","text","newLength","ceil","textCopying","getSelection","selection","characters","words","freeze","SPOOR_API_INGEST_URL","appContext","extraContext","pageViewContext","queryParams","server","useSendBeacon","oTracking","errorPageParams","page","click","initEvent","initPage","updateConfig","newConfig","user_id","destroySetting","hasDeclarativeConfig","getDeclarativeConfigElement","getDeclarativeConfig","initUser","initSession","initSend","declarativeConfigString","configEl","textContent","declarativeOptions","configError","view","core","defaultEventConfig","trackingEvent","origamiElement","getOrigamiEventTarget","component_name","component_id","getComponentId","_getElementPath","siblingIndex","srcParent","_generateHash","reduceRight","builder","setSetting","defaultPageConfig","pageViewEventHasAlreadyBeenSentBefore","previousPageConfigWithoutContextIDs","configWithoutContextIDs","Comments","getDataAttributes","isCount","articleId","articleUrl","Count","renderCount","stream","Stream","fetchCount","shortKey","m1","m2","overlays","checkOptions","trigger","modal","layer","shaded","getOptionsFromTrigger","triggerClickHandler","stopPropagation","visible","isVisible","offsetHeight","focusTrap","overlayFocusableElements","wrapper","focusable","elementVisible","elementLabelVisible","labels","some","elementIsUncheckedRadio","checked","disabled","lastElement","focus","shiftKey","noOptError","parentnode","delegates","doc","wrap","fullscreen","originalOverflow","history","pushState","popstateHandler","state","show","loadContent","wrapperEl","zindex","headingId","preventclosing","button","nofocus","visuallyhidetitle","tooltip","shadow","closeHandler","nested","resizeListenerHandler","resizeListener","closeOnEscapePressHandler","closeOnEscapePress","closeOnNewLayerHandler","closeOnNewLayer","customclose","closeOnExternalClickHandler","closeOnExternalClick","outline","requestAnimationFrame","realign","instance","overlay_id","_trapFocus","back","contains","respondToWindow","dimension","_align","isNaN","edge","borderHeight","borderWidth","offsetWidth","triggers","overlaysArray","countEl","useStagingEnvironment","countLabel","getCountLabel","useStaging","res","commentCount","COLLAPSIBLE_BREAKPOINTS","Footer","footerEl","shouldCollapse","_toggles","setup","toggleEls","getElementById","socialUrls","twitter","facebook","linkedin","pinterest","whatsapp","link","enterpriseSharing","descriptiveLinkText","Share","oShare","openWindows","dispatchCustomEvent","eventName","handleClick","actionEl","closest","shareLocation","oShareLocation","closed","opener","share","shareSocial","generateSocialUrl","socialNetwork","templateUrl","titleExtra","relatedTwitterAccounts","protocol","host","pathname","hash","ulElement","links","liElement","spanElement","aElement","templateLinkText","rootDelegate","DomDelegate","rootDomDelegate","updateEventName","ftDateFormatWarning","methodName","ODate","dateTime","printers","printer","_renderDateFor","formattedDate","firstChild","nodeValue","dateEls","eventListener","audio","progress","currentTime","audioLength","shouldDispatch","fireEvent","addEvents","events","audioObject","extraDetail","playerType","targetObject","playButtonElement","getElementsByClassName","contentElement","playButtonHeight","numLinesOfText","audioURL","unloadListener","updateAmountListened","amount","amountListened","amountPercentage","AudioPlayer","getElementsByTagName","playStart","dateTimePlayStart","display","playButton","innerContent","loadMetadata","pause","toggleAudio","which","jumpTo","adjustProgressBar","unloadEventName","play","clickedPositionX","pageX","percentClickedThrough","goTo","timeStamp","totalDuration","percentPlayed","audioComponents","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","test1","getOwnPropertyNames","test2","test3","letter","shouldUseNative","symbols","to","discreteValues","pad","num","randomBlock","safeCounter","api","timestamp","fingerprint","slug","print","counter","globalCount","mimeTypes","userAgent","writable","asyncGeneratorStep","gen","_next","_throw","done","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arr","Context","createContext","ArticleLayout","exact","headerClasses","OHeader","data-o-header--no-js","controls","opening","togglePosition","expanded","menu","hide","animate","menus","handleCloseEvents","scope","allFocusable","handleKeydown","handleMouseenter","handleMouseleave","handleFocus","relatedTarget","handleTab","firstEl","lastEl","removeEvents","addDrawerToggles","drawerEl","handleClose","openingControl","toggleCallback","toggleTabbing","firstFocusable","control","drawerToggle","tabIndex","addSubmenuToggles","submenus","submenu","isEnabled","buttons","wrapperWidth","oUtils","scrollable","onclick","currentSelection","currentSelectionEnd","diff","scrollTo","checkCurrentPosition","direction","remaining","distance","viewportOffset","lastScrollDepth","lastAnimationFrame","lastStickyState","debouncedScrollEnd","cancelAnimationFrame","scrollStart","handleFrame","isActive","isScrollingDown","startLoop","Analytics","scrollDepthTarget","cutsTheMustard","pageData","microsite_name","nTracking","apiKey","delegate","eventPropertiesToCollect","getEventProperties","handleClickEvent","eventData","clickEvent","clickElement","domPathTokens","source_id","elementsToTrack","sendAllEventsFromQueue","nextLink","phase","returned","TRACKING_ATTRIBUTES","decorateEventData","viewedEl","getContextData","onChange","threshold","_utils","_interopRequireDefault","require","capture","once","passive","defineProperties","loading","interactive","domready","dom","ready","md","listUnicodeChar","useImgAltText","output","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","section","data-g-component","linkPageUrl","OComments","streamEl","eventSeenTimes","renderAndAuthenticate","renderComments","authenticateUser","login","authenticationToken","embed","renderSignedInMessage","fetchOptions","auth","fetchJsonWebToken","token","userHasValidSession","rootUrl","scriptElement","Coral","createStreamEmbed","storyURL","storyID","rootURL","autoRender","onAny","publishEvent","stagingWarning","Event","purgeCacheAfterCompletion","onOverlayReady","purgeJwtCache","onOverlayClosed","success","displayNamePrompt","mappedEvent","coralEventMap","oComments","oCommentsEventOptions","oCommentsEvent","disableOTracking","oTrackingEventOptions","coral","isWithheld","oTrackingEvent","editButtonId","signedInMessage","oldSignedInMessage","append","credentials","ok","OFooter","data-o-footer--no-js","aria-label","data-trackable","aria-controls","data-o-tracking-do-not-track","getFullYear","lastBreakpoint","perfMark","LUX","msPerformance","webkitPerformance","mozPerformance","buildPerfmarkSuffix","eventDetailsObj","pos","creativeId","getMarksForEvents","markNames","marks","mName","pMarks","markName","mNameNoSuffix","pMarks2","clearPerfMarks","metricsDefinitions","groupsToClear","relevantGroupsMarks","group","spoorAction","eventsToClear","getNavigationPerfMarks","desiredMarks","navMarksArray","navMarks","setupMetrics","definitions","disableSampling","eDef","inSample","sampleSize","sendMetricsOnEvent","eMarkMap","listenOnInitialised","sendMetrics","multiple","eventDetails","eventPayload","timings","advert","correlator","oAds","getCorrelator","creative","isEmpty","markPageChange","breakpoints$1","messenger","post","postMessage","getNearestBreakpoint","winner","dims","breakpointDims","setCurrent","getCurrent","init$2","brps","isFunction","argsIndex","isOn","groupCollapsed","groupEnd","table","attributeTable","isObject","hop","isString","isStorage","isWindow","isPlainObject","isNonEmptyString","extend","deep","pairing","pair","hashObj","attach","scriptUrl","async","errorcb","autoRemove","hasRun","processCallback","getReferrer","dehyphenise","hyphen","parseAttributeName","getLocation","getQueryString","getQueryParamByName","results","getTimestamp","getMonth","getDate","getHours","getMinutes","getSeconds","iframeToSlotName","iframeWindow","slotName","iframes","contentWindow","buildObjectFromArray","prev","getVersion","metricsSampleThreshold","responsive","defaults","PartnerContent","sizes","MediumRectangle","Rectangle","WideSkyscraper","Leaderboard","SuperLeaderboard","HalfPage","Billboard","Portrait","AdhesionBanner","MicroBar","Button2","Responsive","extra","large","medium","small","refresh","inview","displayLabelWithBorders","fetchDeclaritiveConfig","fetchCanonicalURL","canonical","canonicalTag","Config","access","config$1","init$1","VALID_SIZE_STRINGS","VALID_COLLAPSE_MODES","attributeParsers","mapping","responsiveSizes","screenName","responsiveFormats","lazyLoadThreshold","base","collapseEmpty","convertLazyLoadBooleanToObject","onChangeBreakpoint","slot","screensize","hasValidSize","uncollapse","collapse","Slot","initLazyLoading","cfg","slotConfig","outer","addContainer","setName","defer","center","outOfPage","companion","outerEl","allowedLabels","adsLabelPos","modifier","parseAttributeConfig","lazyLoadObserver","initLazyLoad","centerContainer","labelContainer","initResponsive","getSlotSizes","getSlotTargeting","params","getSlotGPTSize","viewportMargin","getAttributes","maximise","setFormatLoaded","addClass","clearSlot","destroySlot","submitImpression","submitGptImpression","details","insertAdjacentHTML","lastChild","isSlot","debug$1","row","unitName","lineItemId","Slots","invokeMethodOnSlots","names","findFormatBySize","onBreakpointChange","isCurrentlyResponsive","stillWantsResponsive","initRefresh","refreshCount","initRendered","initPostMessage","slotClass","flushLazyLoading","lazyLoadingObservers","lazyLoadingConfig","lazyLoadingObserver","rootMargin","intersectionRect","parameters","Targeting","methods","socialReferrer","getSocialReferrer","socialFlow","OADS_VERSION","sf","socialflow","codedValue","lookup","google","socref","searchTerm","qs","queryText","searchField","kw","ts","SEARCH_PARAMS","filterNestedParams","nestedParams","keysToStrip","childParams","delete","stripUrlParams","filters","param","DEFAULT_LAZY_LOAD","fetchMarginPercent","renderMarginPercent","mobileScaling","gptConfig","loadGPT","onReady","slotMethods","onRender","onRefresh","onResize","googletag","cmd","nonPersonalized","pubads","onRenderEnded","enableCompanions","setRenderingMode","setPageTargeting","setPageCollapseEmpty","enableLazyLoad","enableServices","setTargeting","setRequestNonPersonalizedAds","lazyLoadConf","rendering","enableSyncRendering","enableSingleRequest","enableAsyncRendering","targetingData","clearPageTargetingForKey","clearTargeting","collapseEmptyDivs","companions","disableInitialLoad","companionAds","setRefreshUnfilledSlots","defineSlot","addServices","setCollapseEmpty","setURL","iframe","gptSlotId","getSlotId","domId","getDomId","iframeId","getId","slotTargeting","getTargetingMap","serviceName","iFrameEl","setUnitName","defineOutOfPageSlot","defineSizeMapping","gptSlot","pubadsReady","updatePageTargeting","sizeMapping","addSize","build","destroySlots","addService","setCollapseEmptyDiv","impressionURL","trackingUrlElement","oAdsImpressionUrl","updateCorrelator","clearPageTargeting","override","hasGPTLoaded","apiReady","conf","Ads","addDOMEventListener","configOptions","disableConsentCookie","consents","behavioral","getConsents","programmatic","initLibrary","updateTargeting","isInitialised","removeDOMEventListener","initAll","consentCookie","StoryTopper","topic","headline","relatedArticle","socialHeadline","twitterHeadline","facebookHeadline","tweetText","toISOString","publishedDate","suppressHydrationWarning","alt","credit","textTwitter","textFacebook","textLinkedIn","textWhatsApp","separated","OShare","services","rel","NamesElement","namesList","separator","author","DateElement","forwardRef","Intl","DateTimeFormat","formatToParts","dateFormatted","Bylines","dateFirst","dateElRef","oDateRef","oDate","CopyRight","Epilogue","includeGrid","gAudio","React","AppContainer","warnAboutHMRDisabled","Children","only","shouldWrapWithAppContainer","areComponentsEqual","setConfig","cold","configureComponent","for","iterator","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","isReactComponent","setState","forceUpdate","isPureReactComponent","__self","__source","$$typeof","_owner","V","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","toArray","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","isValidElement","lazy","_ctor","_status","_result","memo","compare","useCallback","useContext","useDebugValue","useImperativeHandle","useLayoutEffect","useMemo","useReducer","hasChildNodes","hydrate","onError","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","ua","registrationName","va","wa","dependencies","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","setAttributeNS","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","pb","qb","_debugOwner","_debugSource","fileName","lineNumber","return","rb","sb","xb","_valueTracker","getOwnPropertyDescriptor","stopTracking","tb","yb","zb","defaultChecked","defaultValue","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","ownerDocument","activeElement","Gb","Fb","Hb","selected","defaultSelected","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","animation","transition","Xb","Yb","Zb","$b","ac","bc","WeakMap","cc","dc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","sibling","gc","ic","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","oc","pc","qc","topLevelType","nativeEvent","targetInst","ancestors","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","gridArea","lineClamp","kd","ld","setProperty","nd","menuitem","area","br","col","hr","input","keygen","wbr","od","pd","qd","rd","sd","td","ud","vd","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","Hd","Id","Jd","Kd","previousSibling","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","returnValue","ee","eventPool","fe","destructor","de","getPooled","cancelBubble","persist","isTrusted","ge","he","ie","je","ke","le","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","re","se","ve","locale","te","ctrlKey","altKey","metaKey","char","ue","we","color","password","range","tel","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","clientX","clientY","pageY","fromElement","toElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","defaultView","parentWindow","$e","af","bf","cf","df","select","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","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","touches","targetTouches","changedTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","Df","Ef","Ff","getChildContext","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","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","contextType","Mg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ng","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","elementType","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","getDerivedStateFromError","hi","pendingContext","ni","pi","qi","ii","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","renderingStartTime","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","onClick","createElementNS","ti","ui","vi","wi","xi","yi","zi","Ai","stack","Bi","Set","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","componentWillUnmount","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","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","compareDocumentPosition","min","createRange","setStart","removeAllRanges","addRange","setEnd","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","jk","kk","unmount","Lj","lk","Events","findFiberByHostInstance","bundleType","rendererPackageName","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","_s","_e","_arr","_n","_d","arrayLikeToArray","minLen","arr2","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","awrap","iter","reverse","skipTempReset","stop","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","array","bigint","symbol","any","instanceOf","objectOf","checkPropTypes","subClass","superClass","_debug","_interopRequireWildcard","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc"],"mappings":"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","file":"main.51290dbd.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 = \"51290dbd04cd450082ff\";\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(98)(__webpack_require__.s = 98);\n","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\n    // $FlowFixMe\n    return tag.sheet;\n  } // this weirdness brought to you by firefox\n\n  /* istanbul ignore next */\n\n\n  for (var i = 0; i < document.styleSheets.length; i++) {\n    if (document.styleSheets[i].ownerNode === tag) {\n      // $FlowFixMe\n      return document.styleSheets[i];\n    }\n  }\n}\n\nfunction createStyleElement(options) {\n  var tag = document.createElement('style');\n  tag.setAttribute('data-emotion', options.key);\n\n  if (options.nonce !== undefined) {\n    tag.setAttribute('nonce', options.nonce);\n  }\n\n  tag.appendChild(document.createTextNode(''));\n  return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n  function StyleSheet(options) {\n    this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n    this.tags = [];\n    this.ctr = 0;\n    this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n    this.key = options.key;\n    this.container = options.container;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.insert = function insert(rule) {\n    // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n    // it's 1 in dev because we insert source maps that map a single rule to a location\n    // and you can only have one source map per style tag\n    if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n      var _tag = createStyleElement(this);\n\n      var before;\n\n      if (this.tags.length === 0) {\n        before = this.before;\n      } else {\n        before = this.tags[this.tags.length - 1].nextSibling;\n      }\n\n      this.container.insertBefore(_tag, before);\n      this.tags.push(_tag);\n    }\n\n    var tag = this.tags[this.tags.length - 1];\n\n    if (this.isSpeedy) {\n      var sheet = sheetForTag(tag);\n\n      try {\n        // this is a really hot path\n        // we check the second character first because having \"i\"\n        // as the second character will happen less often than\n        // having \"@\" as the first character\n        var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n\n        sheet.insertRule(rule, // we need to insert @import rules before anything else\n        // otherwise there will be an error\n        // technically this means that the @import rules will\n        // _usually_(not always since there could be multiple style tags)\n        // be the first ones in prod and generally later in dev\n        // this shouldn't really matter in the real world though\n        // @import is generally only used for font faces from google fonts and etc.\n        // so while this could be technically correct then it would be slower and larger\n        // for a tiny bit of correctness that won't matter in the real world\n        isImportRule ? 0 : sheet.cssRules.length);\n      } catch (e) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n        }\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    // $FlowFixMe\n    this.tags.forEach(function (tag) {\n      return tag.parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n  function M(d, c, e, h, a) {\n    for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n      g = e.charCodeAt(l);\n      l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n      if (0 === b + n + v + m) {\n        if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n          switch (g) {\n            case 32:\n            case 9:\n            case 59:\n            case 13:\n            case 10:\n              break;\n\n            default:\n              f += e.charAt(l);\n          }\n\n          g = 59;\n        }\n\n        switch (g) {\n          case 123:\n            f = f.trim();\n            q = f.charCodeAt(0);\n            k = 1;\n\n            for (t = ++l; l < B;) {\n              switch (g = e.charCodeAt(l)) {\n                case 123:\n                  k++;\n                  break;\n\n                case 125:\n                  k--;\n                  break;\n\n                case 47:\n                  switch (g = e.charCodeAt(l + 1)) {\n                    case 42:\n                    case 47:\n                      a: {\n                        for (u = l + 1; u < J; ++u) {\n                          switch (e.charCodeAt(u)) {\n                            case 47:\n                              if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                              break;\n\n                            case 10:\n                              if (47 === g) {\n                                l = u + 1;\n                                break a;\n                              }\n\n                          }\n                        }\n\n                        l = u;\n                      }\n\n                  }\n\n                  break;\n\n                case 91:\n                  g++;\n\n                case 40:\n                  g++;\n\n                case 34:\n                case 39:\n                  for (; l++ < J && e.charCodeAt(l) !== g;) {\n                  }\n\n              }\n\n              if (0 === k) break;\n              l++;\n            }\n\n            k = e.substring(t, l);\n            0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n            switch (q) {\n              case 64:\n                0 < r && (f = f.replace(N, ''));\n                g = f.charCodeAt(1);\n\n                switch (g) {\n                  case 100:\n                  case 109:\n                  case 115:\n                  case 45:\n                    r = c;\n                    break;\n\n                  default:\n                    r = O;\n                }\n\n                k = M(c, r, k, g, a + 1);\n                t = k.length;\n                0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n                if (0 < t) switch (g) {\n                  case 115:\n                    f = f.replace(da, ea);\n\n                  case 100:\n                  case 109:\n                  case 45:\n                    k = f + '{' + k + '}';\n                    break;\n\n                  case 107:\n                    f = f.replace(fa, '$1 $2');\n                    k = f + '{' + k + '}';\n                    k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n                    break;\n\n                  default:\n                    k = f + k, 112 === h && (k = (p += k, ''));\n                } else k = '';\n                break;\n\n              default:\n                k = M(c, X(c, f, I), k, h, a + 1);\n            }\n\n            F += k;\n            k = I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n            break;\n\n          case 125:\n          case 59:\n            f = (0 < r ? f.replace(N, '') : f).trim();\n            if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n              case 0:\n                break;\n\n              case 64:\n                if (105 === g || 99 === g) {\n                  G += f + e.charAt(l);\n                  break;\n                }\n\n              default:\n                58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n            }\n            I = r = u = q = 0;\n            f = '';\n            g = e.charCodeAt(++l);\n        }\n      }\n\n      switch (g) {\n        case 13:\n        case 10:\n          47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n          0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n          z = 1;\n          D++;\n          break;\n\n        case 59:\n        case 125:\n          if (0 === b + n + v + m) {\n            z++;\n            break;\n          }\n\n        default:\n          z++;\n          y = e.charAt(l);\n\n          switch (g) {\n            case 9:\n            case 32:\n              if (0 === n + m + b) switch (x) {\n                case 44:\n                case 58:\n                case 9:\n                case 32:\n                  y = '';\n                  break;\n\n                default:\n                  32 !== g && (y = ' ');\n              }\n              break;\n\n            case 0:\n              y = '\\\\0';\n              break;\n\n            case 12:\n              y = '\\\\f';\n              break;\n\n            case 11:\n              y = '\\\\v';\n              break;\n\n            case 38:\n              0 === n + b + m && (r = I = 1, y = '\\f' + y);\n              break;\n\n            case 108:\n              if (0 === n + b + m + E && 0 < u) switch (l - u) {\n                case 2:\n                  112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n                case 8:\n                  111 === K && (E = K);\n              }\n              break;\n\n            case 58:\n              0 === n + b + m && (u = l);\n              break;\n\n            case 44:\n              0 === b + v + n + m && (r = 1, y += '\\r');\n              break;\n\n            case 34:\n            case 39:\n              0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n              break;\n\n            case 91:\n              0 === n + b + v && m++;\n              break;\n\n            case 93:\n              0 === n + b + v && m--;\n              break;\n\n            case 41:\n              0 === n + b + m && v--;\n              break;\n\n            case 40:\n              if (0 === n + b + m) {\n                if (0 === q) switch (2 * x + 3 * K) {\n                  case 533:\n                    break;\n\n                  default:\n                    q = 1;\n                }\n                v++;\n              }\n\n              break;\n\n            case 64:\n              0 === b + v + n + m + u + k && (k = 1);\n              break;\n\n            case 42:\n            case 47:\n              if (!(0 < n + m + v)) switch (b) {\n                case 0:\n                  switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n                    case 235:\n                      b = 47;\n                      break;\n\n                    case 220:\n                      t = l, b = 42;\n                  }\n\n                  break;\n\n                case 42:\n                  47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n              }\n          }\n\n          0 === b && (f += y);\n      }\n\n      K = x;\n      x = g;\n      l++;\n    }\n\n    t = p.length;\n\n    if (0 < t) {\n      r = c;\n      if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n      p = r.join(',') + '{' + p + '}';\n\n      if (0 !== w * E) {\n        2 !== w || L(p, 2) || (E = 0);\n\n        switch (E) {\n          case 111:\n            p = p.replace(ha, ':-moz-$1') + p;\n            break;\n\n          case 112:\n            p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n        }\n\n        E = 0;\n      }\n    }\n\n    return G + p + F;\n  }\n\n  function X(d, c, e) {\n    var h = c.trim().split(ia);\n    c = h;\n    var a = h.length,\n        m = d.length;\n\n    switch (m) {\n      case 0:\n      case 1:\n        var b = 0;\n\n        for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n          c[b] = Z(d, c[b], e).trim();\n        }\n\n        break;\n\n      default:\n        var v = b = 0;\n\n        for (c = []; b < a; ++b) {\n          for (var n = 0; n < m; ++n) {\n            c[v++] = Z(d[n] + ' ', h[b], e).trim();\n          }\n        }\n\n    }\n\n    return c;\n  }\n\n  function Z(d, c, e) {\n    var h = c.charCodeAt(0);\n    33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n    switch (h) {\n      case 38:\n        return c.replace(F, '$1' + d.trim());\n\n      case 58:\n        return d.trim() + c.replace(F, '$1' + d.trim());\n\n      default:\n        if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n    }\n\n    return d + c;\n  }\n\n  function P(d, c, e, h) {\n    var a = d + ';',\n        m = 2 * c + 3 * e + 4 * h;\n\n    if (944 === m) {\n      d = a.indexOf(':', 9) + 1;\n      var b = a.substring(d, a.length - 1).trim();\n      b = a.substring(0, d).trim() + b + ';';\n      return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n    }\n\n    if (0 === w || 2 === w && !L(a, 1)) return a;\n\n    switch (m) {\n      case 1015:\n        return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n      case 951:\n        return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n      case 963:\n        return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n      case 1009:\n        if (100 !== a.charCodeAt(4)) break;\n\n      case 969:\n      case 942:\n        return '-webkit-' + a + a;\n\n      case 978:\n        return '-webkit-' + a + '-moz-' + a + a;\n\n      case 1019:\n      case 983:\n        return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n      case 883:\n        if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n        if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n        break;\n\n      case 932:\n        if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n          case 103:\n            return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n          case 98:\n            return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n        }\n        return '-webkit-' + a + '-ms-' + a + a;\n\n      case 964:\n        return '-webkit-' + a + '-ms-flex-' + a + a;\n\n      case 1023:\n        if (99 !== a.charCodeAt(8)) break;\n        b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n        return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n      case 1005:\n        return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n      case 1e3:\n        b = a.substring(13).trim();\n        c = b.indexOf('-') + 1;\n\n        switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n          case 226:\n            b = a.replace(G, 'tb');\n            break;\n\n          case 232:\n            b = a.replace(G, 'tb-rl');\n            break;\n\n          case 220:\n            b = a.replace(G, 'lr');\n            break;\n\n          default:\n            return a;\n        }\n\n        return '-webkit-' + a + '-ms-' + b + a;\n\n      case 1017:\n        if (-1 === a.indexOf('sticky', 9)) break;\n\n      case 975:\n        c = (a = d).length - 10;\n        b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n        switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n          case 203:\n            if (111 > b.charCodeAt(8)) break;\n\n          case 115:\n            a = a.replace(b, '-webkit-' + b) + ';' + a;\n            break;\n\n          case 207:\n          case 102:\n            a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n        }\n\n        return a + ';';\n\n      case 938:\n        if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n          case 105:\n            return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n          case 115:\n            return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n          default:\n            return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n        }\n        break;\n\n      case 973:\n      case 989:\n        if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n      case 931:\n      case 953:\n        if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n        break;\n\n      case 962:\n        if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n    }\n\n    return a;\n  }\n\n  function L(d, c) {\n    var e = d.indexOf(1 === c ? ':' : '{'),\n        h = d.substring(0, 3 !== c ? e : 10);\n    e = d.substring(e + 1, d.length - 1);\n    return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n  }\n\n  function ea(d, c) {\n    var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n    return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n  }\n\n  function H(d, c, e, h, a, m, b, v, n, q) {\n    for (var g = 0, x = c, w; g < A; ++g) {\n      switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n        case void 0:\n        case !1:\n        case !0:\n        case null:\n          break;\n\n        default:\n          x = w;\n      }\n    }\n\n    if (x !== c) return x;\n  }\n\n  function T(d) {\n    switch (d) {\n      case void 0:\n      case null:\n        A = S.length = 0;\n        break;\n\n      default:\n        if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n          T(d[c]);\n        } else Y = !!d | 0;\n    }\n\n    return T;\n  }\n\n  function U(d) {\n    d = d.prefix;\n    void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n    return U;\n  }\n\n  function B(d, c) {\n    var e = d;\n    33 > e.charCodeAt(0) && (e = e.trim());\n    V = e;\n    e = [V];\n\n    if (0 < A) {\n      var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n      void 0 !== h && 'string' === typeof h && (c = h);\n    }\n\n    var a = M(O, e, c, 0, 0);\n    0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n    V = '';\n    E = 0;\n    z = D = 1;\n    return a;\n  }\n\n  var ca = /^\\0+/g,\n      N = /[\\0\\r\\f]/g,\n      aa = /: */g,\n      ka = /zoo|gra/,\n      ma = /([,: ])(transform)/g,\n      ia = /,\\r+?/g,\n      F = /([\\t\\r\\n ])*\\f?&/g,\n      fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n      Q = /::(place)/g,\n      ha = /:(read-only)/g,\n      G = /[svh]\\w+-[tblr]{2}/,\n      da = /\\(\\s*(.*)\\s*\\)/g,\n      oa = /([\\s\\S]*?);/g,\n      ba = /-self|flex-/g,\n      na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n      la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n      ja = /([^-])(image-set\\()/,\n      z = 1,\n      D = 1,\n      E = 0,\n      w = 1,\n      O = [],\n      S = [],\n      A = 0,\n      R = null,\n      Y = 0,\n      V = '';\n  B.use = T;\n  B.set = U;\n  void 0 !== W && U(W);\n  return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n  if (block) {\n    Sheet.current.insert(block + '}');\n  }\n}\n\nvar Sheet = {\n  current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n  switch (context) {\n    // property\n    case 1:\n      {\n        switch (content.charCodeAt(0)) {\n          case 64:\n            {\n              // @import\n              Sheet.current.insert(content + ';');\n              return '';\n            }\n          // charcode for l\n\n          case 108:\n            {\n              // charcode for b\n              // this ignores label\n              if (content.charCodeAt(2) === 98) {\n                return '';\n              }\n            }\n        }\n\n        break;\n      }\n    // selector\n\n    case 2:\n      {\n        if (ns === 0) return content + delimiter;\n        break;\n      }\n    // at-rule\n\n    case 3:\n      {\n        switch (ns) {\n          // @font-face, @page\n          case 102:\n          case 112:\n            {\n              Sheet.current.insert(selectors[0] + content);\n              return '';\n            }\n\n          default:\n            {\n              return content + (at === 0 ? delimiter : '');\n            }\n        }\n      }\n\n    case -2:\n      {\n        content.split(needle).forEach(toSheet);\n      }\n  }\n};\n\nvar createCache = function createCache(options) {\n  if (options === undefined) options = {};\n  var key = options.key || 'css';\n  var stylisOptions;\n\n  if (options.prefix !== undefined) {\n    stylisOptions = {\n      prefix: options.prefix\n    };\n  }\n\n  var stylis = new Stylis(stylisOptions);\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe\n    if (/[^a-z-]/.test(key)) {\n      throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n    }\n  }\n\n  var inserted = {}; // $FlowFixMe\n\n  var container;\n\n  {\n    container = options.container || document.head;\n    var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n    Array.prototype.forEach.call(nodes, function (node) {\n      var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n      attrib.split(' ').forEach(function (id) {\n        inserted[id] = true;\n      });\n\n      if (node.parentNode !== container) {\n        container.appendChild(node);\n      }\n    });\n  }\n\n  var _insert;\n\n  {\n    stylis.use(options.stylisPlugins)(ruleSheet);\n\n    _insert = function insert(selector, serialized, sheet, shouldCache) {\n      var name = serialized.name;\n      Sheet.current = sheet;\n\n      if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n        var map = serialized.map;\n        Sheet.current = {\n          insert: function insert(rule) {\n            sheet.insert(rule + map);\n          }\n        };\n      }\n\n      stylis(selector, serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[name] = true;\n      }\n    };\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n    var commentStart = /\\/\\*/g;\n    var commentEnd = /\\*\\//g;\n    stylis.use(function (context, content) {\n      switch (context) {\n        case -1:\n          {\n            while (commentStart.test(content)) {\n              commentEnd.lastIndex = commentStart.lastIndex;\n\n              if (commentEnd.test(content)) {\n                commentStart.lastIndex = commentEnd.lastIndex;\n                continue;\n              }\n\n              throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n            }\n\n            commentStart.lastIndex = 0;\n            break;\n          }\n      }\n    });\n    stylis.use(function (context, content, selectors) {\n      switch (context) {\n        case -1:\n          {\n            var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n            var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n            if (unsafePseudoClasses && cache.compat !== true) {\n              unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n                var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n                var ignore = ignoreRegExp.test(content);\n\n                if (unsafePseudoClass && !ignore) {\n                  console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n                }\n              });\n            }\n\n            break;\n          }\n      }\n    });\n  }\n\n  var cache = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  return cache;\n};\n\nexport default createCache;\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n  var rawClassName = '';\n  classNames.split(' ').forEach(function (className) {\n    if (registered[className] !== undefined) {\n      registeredStyles.push(registered[className]);\n    } else {\n      rawClassName += className + \" \";\n    }\n  });\n  return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  var className = cache.key + \"-\" + serialized.name;\n\n  if ( // we only need to add the styles to the registered cache if the\n  // class name could be used further down\n  // the tree but if it's a string tag, we know it won't\n  // so we don't have to add it to registered cache.\n  // this improves memory usage since we can avoid storing the whole style string\n  (isStringTag === false || // we need to always store it if we're in compat mode and\n  // in node since emotion-server relies on whether a style is in\n  // the registered cache to know whether a style is global or not\n  // also, note that this check will be dead code eliminated in the browser\n  isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n  // 'm' and 'r' are mixing constants generated offline.\n  // They're not really 'magic', they just happen to work well.\n  // const m = 0x5bd1e995;\n  // const r = 24;\n  // Initialize the hash\n  var h = 0; // Mix 4 bytes at a time into the hash\n\n  var k,\n      i = 0,\n      len = str.length;\n\n  for (; len >= 4; ++i, len -= 4) {\n    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n    k =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n    k ^=\n    /* k >>> r: */\n    k >>> 24;\n    h =\n    /* Math.imul(k, m): */\n    (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n    /* Math.imul(h, m): */\n    (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Handle the last few bytes of the input array\n\n\n  switch (len) {\n    case 3:\n      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n    case 2:\n      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n    case 1:\n      h ^= str.charCodeAt(i) & 0xff;\n      h =\n      /* Math.imul(h, m): */\n      (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  } // Do a few final mixes of the hash to ensure the last few\n  // bytes are well-incorporated.\n\n\n  h ^= h >>> 13;\n  h =\n  /* Math.imul(h, m): */\n  (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n  return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n  return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n  return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = memoize(function (styleName) {\n  return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n  switch (key) {\n    case 'animation':\n    case 'animationName':\n      {\n        if (typeof value === 'string') {\n          return value.replace(animationRegex, function (match, p1, p2) {\n            cursor = {\n              name: p1,\n              styles: p2,\n              next: cursor\n            };\n            return p1;\n          });\n        }\n      }\n  }\n\n  if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n    return value + 'px';\n  }\n\n  return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n  var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n  var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n  var oldProcessStyleValue = processStyleValue;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g;\n  var hyphenatedCache = {};\n\n  processStyleValue = function processStyleValue(key, value) {\n    if (key === 'content') {\n      if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n        console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n      }\n    }\n\n    var processed = oldProcessStyleValue(key, value);\n\n    if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n      hyphenatedCache[key] = true;\n      console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n        return _char.toUpperCase();\n      }) + \"?\");\n    }\n\n    return processed;\n  };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n  if (interpolation == null) {\n    return '';\n  }\n\n  if (interpolation.__emotion_styles !== undefined) {\n    if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n      throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n    }\n\n    return interpolation;\n  }\n\n  switch (typeof interpolation) {\n    case 'boolean':\n      {\n        return '';\n      }\n\n    case 'object':\n      {\n        if (interpolation.anim === 1) {\n          cursor = {\n            name: interpolation.name,\n            styles: interpolation.styles,\n            next: cursor\n          };\n          return interpolation.name;\n        }\n\n        if (interpolation.styles !== undefined) {\n          var next = interpolation.next;\n\n          if (next !== undefined) {\n            // not the most efficient thing ever but this is a pretty rare case\n            // and there will be very few iterations of this generally\n            while (next !== undefined) {\n              cursor = {\n                name: next.name,\n                styles: next.styles,\n                next: cursor\n              };\n              next = next.next;\n            }\n          }\n\n          var styles = interpolation.styles + \";\";\n\n          if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n            styles += interpolation.map;\n          }\n\n          return styles;\n        }\n\n        return createStringFromObject(mergedProps, registered, interpolation);\n      }\n\n    case 'function':\n      {\n        if (mergedProps !== undefined) {\n          var previousCursor = cursor;\n          var result = interpolation(mergedProps);\n          cursor = previousCursor;\n          return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n        } else if (process.env.NODE_ENV !== 'production') {\n          console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n        }\n\n        break;\n      }\n\n    case 'string':\n      if (process.env.NODE_ENV !== 'production') {\n        var matched = [];\n        var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n          var fakeVarName = \"animation\" + matched.length;\n          matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n          return \"${\" + fakeVarName + \"}\";\n        });\n\n        if (matched.length) {\n          console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n        }\n      }\n\n      break;\n  } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n  if (registered == null) {\n    return interpolation;\n  }\n\n  var cached = registered[interpolation];\n\n  if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n    console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n    shouldWarnAboutInterpolatingClassNameFromCss = false;\n  }\n\n  return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n  var string = '';\n\n  if (Array.isArray(obj)) {\n    for (var i = 0; i < obj.length; i++) {\n      string += handleInterpolation(mergedProps, registered, obj[i], false);\n    }\n  } else {\n    for (var _key in obj) {\n      var value = obj[_key];\n\n      if (typeof value !== 'object') {\n        if (registered != null && registered[value] !== undefined) {\n          string += _key + \"{\" + registered[value] + \"}\";\n        } else if (isProcessableValue(value)) {\n          string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n        }\n      } else {\n        if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n          throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n        }\n\n        if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n          for (var _i = 0; _i < value.length; _i++) {\n            if (isProcessableValue(value[_i])) {\n              string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n            }\n          }\n        } else {\n          var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n          switch (_key) {\n            case 'animation':\n            case 'animationName':\n              {\n                string += processStyleName(_key) + \":\" + interpolated + \";\";\n                break;\n              }\n\n            default:\n              {\n                if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n                  console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n                }\n\n                string += _key + \"{\" + interpolated + \"}\";\n              }\n          }\n        }\n      }\n    }\n  }\n\n  return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n  sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n  if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n    return args[0];\n  }\n\n  var stringMode = true;\n  var styles = '';\n  cursor = undefined;\n  var strings = args[0];\n\n  if (strings == null || strings.raw === undefined) {\n    stringMode = false;\n    styles += handleInterpolation(mergedProps, registered, strings, false);\n  } else {\n    if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n      console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n    }\n\n    styles += strings[0];\n  } // we start at 1 since we've already handled the first arg\n\n\n  for (var i = 1; i < args.length; i++) {\n    styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n    if (stringMode) {\n      if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles += strings[i];\n    }\n  }\n\n  var sourceMap;\n\n  if (process.env.NODE_ENV !== 'production') {\n    styles = styles.replace(sourceMapPattern, function (match) {\n      sourceMap = match;\n      return '';\n    });\n  } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n  labelPattern.lastIndex = 0;\n  var identifierName = '';\n  var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n  while ((match = labelPattern.exec(styles)) !== null) {\n    identifierName += '-' + // $FlowFixMe we know it's not null\n    match[1];\n  }\n\n  var name = hashString(styles) + identifierName;\n\n  if (process.env.NODE_ENV !== 'production') {\n    // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n    return {\n      name: name,\n      styles: styles,\n      map: sourceMap,\n      next: cursor,\n      toString: function toString() {\n        return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n      }\n    };\n  }\n\n  return {\n    name: name,\n    styles: styles,\n    next: cursor\n  };\n};\n\nexport { serializeStyles };\n","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar EmotionCacheContext = /*#__PURE__*/createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n  var render = function render(props, ref) {\n    return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n      return func(props, cache, ref);\n    });\n  }; // $FlowFixMe\n\n\n  return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n  if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n  props.css.indexOf(':') !== -1) {\n    throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n  if (process.env.NODE_ENV !== 'production') {\n    var error = new Error();\n\n    if (error.stack) {\n      // chrome\n      var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n\n      if (!match) {\n        // safari and firefox\n        match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n      }\n\n      if (match) {\n        newProps[labelPropName] = sanitizeIdentifier(match[1]);\n      }\n    }\n  }\n\n  return newProps;\n};\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar render = function render(cache, props, theme, ref) {\n  var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n  // not passing the registered cache to serializeStyles because it would\n  // make certain babel optimisations not possible\n\n  if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n    cssProp = cache.registered[cssProp];\n  }\n\n  var type = props[typePropName];\n  var registeredStyles = [cssProp];\n  var className = '';\n\n  if (typeof props.className === 'string') {\n    className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n  } else if (props.className != null) {\n    className = props.className + \" \";\n  }\n\n  var serialized = serializeStyles(registeredStyles);\n\n  if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n    var labelFromStack = props[labelPropName];\n\n    if (labelFromStack) {\n      serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n    }\n  }\n\n  var rules = insertStyles(cache, serialized, typeof type === 'string');\n  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps.ref = ref;\n  newProps.className = className;\n  var ele = /*#__PURE__*/createElement(type, newProps);\n  var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n  return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n}; // eslint-disable-next-line no-undef\n\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  if (typeof props.css === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      return render(cache, props, theme, ref);\n    });\n  }\n\n  return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };\n","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return serializeStyles(args);\n}\n\nexport default css;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-04d85134.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-04d85134.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwnProperty.call(props, 'css')) {\n    // $FlowFixMe\n    return createElement.apply(undefined, args);\n  }\n\n  var argsLength = args.length;\n  var createElementArgArray = new Array(argsLength);\n  createElementArgArray[0] = Emotion;\n  createElementArgArray[1] = createEmotionProps(type, props);\n\n  for (var i = 2; i < argsLength; i++) {\n    createElementArgArray[i] = args[i];\n  } // $FlowFixMe\n\n\n  return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n  // probably using the custom createElement which\n  // means it will be turned into a className prop\n  // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n  props.className || props.css)) {\n    console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n    warnedAboutCssPropForGlobal = true;\n  }\n\n  var styles = props.styles;\n\n  if (typeof styles === 'function') {\n    return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n      var serialized = serializeStyles([styles(theme)]);\n      return /*#__PURE__*/createElement(InnerGlobal, {\n        serialized: serialized,\n        cache: cache\n      });\n    });\n  }\n\n  var serialized = serializeStyles([styles]);\n  return /*#__PURE__*/createElement(InnerGlobal, {\n    serialized: serialized,\n    cache: cache\n  });\n});\n\n// maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(InnerGlobal, _React$Component);\n\n  function InnerGlobal(props, context, updater) {\n    return _React$Component.call(this, props, context, updater) || this;\n  }\n\n  var _proto = InnerGlobal.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.sheet = new StyleSheet({\n      key: this.props.cache.key + \"-global\",\n      nonce: this.props.cache.sheet.nonce,\n      container: this.props.cache.sheet.container\n    }); // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n    if (node !== null) {\n      this.sheet.tags.push(node);\n    }\n\n    if (this.props.cache.sheet.tags.length) {\n      this.sheet.before = this.props.cache.sheet.tags[0];\n    }\n\n    this.insertStyles();\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.serialized.name !== this.props.serialized.name) {\n      this.insertStyles();\n    }\n  };\n\n  _proto.insertStyles = function insertStyles$1() {\n    if (this.props.serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(this.props.cache, this.props.serialized.next, true);\n    }\n\n    if (this.sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n      this.sheet.before = element;\n      this.sheet.flush();\n    }\n\n    this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.sheet.flush();\n  };\n\n  _proto.render = function render() {\n\n    return null;\n  };\n\n  return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n  var insertable = css.apply(void 0, arguments);\n  var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n  return {\n    name: name,\n    styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n    anim: 1,\n    toString: function toString() {\n      return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n    }\n  };\n};\n\nvar classnames = function classnames(args) {\n  var len = args.length;\n  var i = 0;\n  var cls = '';\n\n  for (; i < len; i++) {\n    var arg = args[i];\n    if (arg == null) continue;\n    var toAdd = void 0;\n\n    switch (typeof arg) {\n      case 'boolean':\n        break;\n\n      case 'object':\n        {\n          if (Array.isArray(arg)) {\n            toAdd = classnames(arg);\n          } else {\n            toAdd = '';\n\n            for (var k in arg) {\n              if (arg[k] && k) {\n                toAdd && (toAdd += ' ');\n                toAdd += k;\n              }\n            }\n          }\n\n          break;\n        }\n\n      default:\n        {\n          toAdd = arg;\n        }\n    }\n\n    if (toAdd) {\n      cls && (cls += ' ');\n      cls += toAdd;\n    }\n  }\n\n  return cls;\n};\n\nfunction merge(registered, css, className) {\n  var registeredStyles = [];\n  var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n  if (registeredStyles.length < 2) {\n    return className;\n  }\n\n  return rawClassName + css(registeredStyles);\n}\n\nvar Noop = function Noop() {\n  return null;\n};\n\nvar ClassNames = withEmotionCache(function (props, context) {\n  return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n    var hasRendered = false;\n\n    var css = function css() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('css can only be used during render');\n      }\n\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      var serialized = serializeStyles(args, context.registered);\n\n      {\n        insertStyles(context, serialized, false);\n      }\n\n      return context.key + \"-\" + serialized.name;\n    };\n\n    var cx = function cx() {\n      if (hasRendered && process.env.NODE_ENV !== 'production') {\n        throw new Error('cx can only be used during render');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return merge(context.registered, css, classnames(args));\n    };\n\n    var content = {\n      css: css,\n      cx: cx,\n      theme: theme\n    };\n    var ele = props.children(content);\n    hasRendered = true;\n    var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n\n\n    return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n  });\n});\n\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };\n","/**\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","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","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Shared 'internal' scope.\n */\nimport {get} from './core/settings.js';\n\n/**\n * CUID Generator\n */\nimport {api as cuid} from '../libs/browser-cuid.js';\n\n/**\n * Record of callbacks to call when a page is tracked.\n */\nconst page_callbacks = [];\n\n/**\n * Log messages to the browser console. Requires 'log' to be set on init.\n *\n * @param {*} args items to log\n * @returns {void}\n */\nfunction log(...args) {\n\tif (get('config').test && window.console) {\n\t\tfor (const arg of args) {\n\t\t\twindow.console.log(arg);\n\t\t}\n\t}\n}\n\n/**\n * Tests if variable is a certain type. Defaults to check for undefined if no type specified.\n *\n * @param {*} variable - The variable to check.\n * @param {string=} type - The type to test for. Defaults to undefined.\n *\n * @returns {boolean} - The answer for if the variable is of type.\n */\nfunction is(variable, type = 'undefined') {\n\treturn typeof variable === type;\n}\n\n/**\n * Merge objects together. Will remove undefined and null values.\n *\n * @param {object} target - The original object to merge in to.\n * @param {object} options - The object to merge into the target. If omitted, will merge target into a new empty Object.\n *\n * @returns {object} The merged object.\n */\nfunction merge(target, options) {\n\tif (!options) {\n\t\toptions = target;\n\t\ttarget = {};\n\t}\n\n\tlet name;\n\tlet src;\n\tlet copy;\n\n\t/* jshint -W089 */\n\t/* eslint guard-for-in: 0 */\n\tfor (name in options) {\n\t\tsrc = target[name];\n\t\tcopy = options[name];\n\n\t\t// Prevent never-ending loop\n\t\tif (target === copy) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Gets rid of missing values too\n\t\tif (typeof copy !== 'undefined' && copy !== null) {\n\t\t\ttarget[name] = src === Object(src) && !is(src, 'function') ? merge(src, copy) : copy;\n\t\t}\n\t}\n\t/* jshint +W089 */\n\t/* jslint forin:true */\n\n\treturn target;\n}\n\n/**\n * URL encode a string.\n *\n * @param {string} str - The string to be encoded.\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n\tif (window.encodeURIComponent) {\n\t\treturn window.encodeURIComponent(str);\n\t} else {\n\t\treturn window.escape(str);\n\t}\n}\n\n/**\n * URL decode a string.\n *\n * @param {string} str - The string to be decoded.\n * @returns {string} The decoded string.\n */\nfunction decode(str) {\n\tif (window.decodeURIComponent) {\n\t\treturn window.decodeURIComponent(str);\n\t} else {\n\t\treturn window.unescape(str);\n\t}\n}\n\n/**\n * Utility to add event listeners.\n *\n * @param {Element} element\n * @param {string} event\n * @param {EventListenerOrEventListenerObject} listener\n * @returns {void}\n */\nfunction addEvent(element, event, listener) {\n\tif (element.addEventListener) {\n\t\telement.addEventListener(event, listener, false);\n\t} else {\n\t\telement.attachEvent('on' + event, listener);\n\t}\n}\n\n/**\n * Utility for dispatching custom events from window\n *\n * @param {string} namespace\n * @param {string} eventType\n * @param {object} detail\n * @returns {void}\n */\nfunction broadcast(namespace, eventType, detail) {\n\tdetail = detail || {};\n\ttry {\n\t\twindow.dispatchEvent(new CustomEvent(namespace + '.' + eventType, {\n\t\t\tdetail: detail,\n\t\t\tbubbles: true\n\t\t}));\n\t} catch (error) {\n\t\t// empty\n\t}\n}\n\n/**\n * Listen for page tracking requests.\n *\n * @param {Function} cb - The callback to be called whenever a page is tracked.\n * @returns {void}\n */\nfunction onPage(cb) {\n\tif (is(cb, 'function') && !page_callbacks.includes(cb)) {\n\t\tpage_callbacks.push(cb);\n\t}\n}\n\n/**\n * Trigger the 'page' listeners.\n *\n * @returns {void}\n */\nfunction triggerPage() {\n\tfor (let i = 0; i < page_callbacks.length; i++) {\n\t\tpage_callbacks[i]();\n\t}\n}\n\n/**\n * Get a value from document.cookie matching the first match of the regexp you supply\n *\n * @param {RegExp} matcher - The Regex to match with\n * @returns {string} - The vale from the cookie\n */\nfunction getValueFromCookie(matcher) {\n\treturn document.cookie.match(matcher) && RegExp.$1 !== '' && RegExp.$1 !== 'null' ? RegExp.$1 : null;\n}\n\n/**\n * Filter an object to only have the properties which are listed in the `allowlist` parameter.\n *\n * @param {object} objectToFilter - An object whose props need to be filtered\n * @param {Array} allowedPropertyNames - The list of props to allow\n * @returns {object} An object containing only the allowed props\n */\nfunction filterProperties (objectToFilter, allowedPropertyNames) {\n\tconst filteredObject = {};\n\tfor (const allowedName of allowedPropertyNames) {\n\t\tif (objectToFilter[allowedName]) {\n\t\t\tfilteredObject[allowedName] = objectToFilter[allowedName];\n\t\t}\n\t}\n\treturn filteredObject;\n}\n\n/**\n * Trim strings\n *\n * @param {string} str - The string to trim.\n * @returns {string} The trimmed string.\n */\nfunction sanitise (str) {\n\treturn typeof str === 'string' ? str.trim() : str;\n}\n\n/**\n * Assign the subject value if the target properties are undefined\n *\n * @param {object} subject - assign the value\n * @param {object} target - be assigned the value\n * @returns {void}\n */\nfunction assignIfUndefined (subject, target) {\n\tfor (const prop in subject) {\n\t\tif (!target[prop]) {\n\t\t\ttarget[prop] = subject[prop];\n\t\t} else {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn(`You can't set a custom property called ${prop}`);\n\t\t}\n\t}\n}\n\n/**\n * Used to find out all the paths which contain a circular reference.\n *\n * @param {*} rootObject The object we want to search within for circular references\n * @returns {string[]} Returns an array of strings, the strings are the full paths to the circular references within the rootObject\n */\nfunction findCircularPathsIn(rootObject) {\n\tconst traversedValues = new WeakSet();\n\tconst circularPaths = [];\n\n\tfunction _findCircularPathsIn(currentObject, path) {\n\t\t// If we already saw this object\n\t\t// the rootObject contains a circular reference\n\t\t// and we can stop looking any further into this currentObj\n\t\tif (traversedValues.has(currentObject)) {\n\t\t\tcircularPaths.push(path);\n\t\t\treturn;\n\t\t}\n\n\t\t// Only Objects and things which inherit from Objects can contain circular references\n\t\t// I.E. string/number/boolean/template literals can not contain circular references\n\t\tif (currentObject instanceof Object) {\n\t\t\ttraversedValues.add(currentObject);\n\n\t\t\t// Loop through all the values of the current object and search those for circular references\n\t\t\tfor (const [key, value] of Object.entries(currentObject)) {\n\t\t\t\t// No need to recurse on every value because only things which inherit\n\t\t\t\t// from Objects can contain circular references\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\tconst parentObjectIsAnArray = Array.isArray(currentObject);\n\t\t\t\t\tif (parentObjectIsAnArray) {\n\t\t\t\t\t// Store path in bracket notation when value is an array\n\t\t\t\t\t\t_findCircularPathsIn(value, `${path}[${key}]`);\n\t\t\t\t\t} else {\n\t\t\t\t\t// Store path in dot-notation when value is an object\n\t\t\t\t\t\t_findCircularPathsIn(value, `${path}.${key}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t_findCircularPathsIn(rootObject, \"\");\n\treturn circularPaths;\n}\n\n/**\n * Used to find out whether an object contains a circular reference.\n *\n * @param {object} rootObject The object we want to search within for circular references\n * @returns {boolean} Returns true if a circular reference was found, otherwise returns false\n */\nfunction containsCircularPaths(rootObject) {\n\t// Used to keep track of all the values the rootObject contains\n\tconst traversedValues = new WeakSet();\n\n\t/**\n\t *\n\t * @param {*} currentObject The current object we want to search within for circular references\n\t * @returns {boolean|undefined} Returns true if a circular reference was found, otherwise returns undefined\n\t */\n\tfunction _containsCircularPaths(currentObject) {\n\t\t// If we already saw this object\n\t\t// the rootObject contains a circular reference\n\t\t// and we can stop looking any further\n\t\tif (traversedValues.has(currentObject)) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Only Objects and things which inherit from Objects can contain circular references\n\t\t// I.E. string/number/boolean/template literals can not contain circular references\n\t\tif (currentObject instanceof Object) {\n\t\t\ttraversedValues.add(currentObject);\n\t\t\t// Loop through all the values of the current object and search those for circular references\n\t\t\tfor (const value of Object.values(currentObject)) {\n\t\t\t\t// No need to recurse on every value because only things which inherit\n\t\t\t\t// from Objects can contain circular references\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\tif (_containsCircularPaths(value)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// _containsCircularPaths returns true or undefined.\n\t// By using Boolean we convert the undefined into false.\n\treturn Boolean(\n\t\t_containsCircularPaths(\n\t\t\trootObject\n\t\t)\n\t);\n}\n\n/**\n * Find out whether two objects are deeply equal to each other.\n *\n * @param {*} a\n * @param {*} b\n * @returns {boolean} - true if the two arguments are deeply equal\n */\nfunction isDeepEqual(a, b) {\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\ta &&\n\t\tb &&\n\t\ttypeof a === \"object\" &&\n\t\ttypeof b === \"object\"\n\t) {\n\t\tif (a.constructor !== b.constructor) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (Array.isArray(a)) {\n\t\t\tconst length = a.length;\n\t\t\tif (length !== b.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\t\tif (!isDeepEqual(a[i], b[i])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (a.constructor === RegExp) {\n\t\t\treturn (\n\t\t\t\ta.source === b.source && a.flags === b.flags\n\t\t\t);\n\t\t}\n\t\tif (a.valueOf !== Object.prototype.valueOf) {\n\t\t\treturn a.valueOf() === b.valueOf();\n\t\t}\n\t\tif (a.toString !== Object.prototype.toString) {\n\t\t\treturn a.toString() === b.toString();\n\t\t}\n\n\t\tconst keys = Object.keys(a);\n\t\tconst length = keys.length;\n\t\tif (length !== Object.keys(b).length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(b, keys[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = length; i-- !== 0; ) {\n\t\t\tconst key = keys[i];\n\n\t\t\tif (!isDeepEqual(a[key], b[key])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n}\n\nexport {\n\tlog,\n\tis,\n\tis as isUndefined,\n\tmerge,\n\tencode,\n\tdecode,\n\tcuid as guid,\n\taddEvent,\n\tbroadcast,\n\tonPage,\n\ttriggerPage,\n\tgetValueFromCookie,\n\tsanitise,\n\tassignIfUndefined,\n\tfilterProperties,\n\tfindCircularPathsIn,\n\tcontainsCircularPaths,\n\tisDeepEqual\n};\n","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","\nconst settings = {config:{}};\n\n/**\n * Very basic implementation of deep clone, and only supports simple POJO objects and\n * native arrays.\n *\n * @param  {*} value Any value\n * @returns {*}       Copy of value\n * @private\n */\nfunction clone(value) {\n\tif (value === undefined) {\n\t\treturn value;\n\t}\n\tswitch (Object.prototype.toString.call(value)) {\n\t\tcase '[object Object]':\n\t\t\treturn JSON.parse(JSON.stringify(value));\n\t\tcase '[object Array]':\n\t\t\treturn [].slice.call(value);\n\t\tdefault:\n\t\t\treturn value;\n\t}\n}\n\n/**\n * Saves a value. Stores a copy rather than a reference, to avoid mutations leaking.\n *\n * @param {string} key - The key to use to store the object\n * @param {*} value - The value\n * @returns {void}\n */\nfunction setValue(key, value) {\n\tsettings[key] = clone(value);\n}\n\n/**\n * Retrieves a value from the settings object. Returns a copy rather than reference, to\n * avoid mutations leaking.\n *\n * @param {string} key - The key to get\n * @returns {*} - The setting.\n */\nfunction getValue(key) {\n\treturn clone(settings[key]);\n}\n\n/**\n * Deletes a value\n *\n * @param  {string} key - The key to delete\n * @returns {void}\n */\nfunction destroy(key) {\n\tdelete settings[key];\n}\nconst set = setValue;\nconst get = getValue;\n\nexport {\n\tset,\n\tget,\n\tdestroy\n};\n","import * as Utils from '@financial-times/o-utils';\n\nlet debug;\n\n/**\n *\n * @param {string} eventType the name of the event\n * @param {object} data the payload of the event\n * @param {EventTarget} target the target of the event\n */\nfunction broadcast(eventType, data, target) {\n\ttarget = target || document.body;\n\n\tif (debug) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log('o-viewport', eventType, data);\n\t}\n\n\ttarget.dispatchEvent(\n\t\tnew CustomEvent('oViewport.' + eventType, {\n\t\t\tdetail: data,\n\t\t\tbubbles: true,\n\t\t})\n\t);\n}\n\n/**\n * Get the viewport height.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar height.\n * @returns {number} viewport height\n */\nfunction getHeight(ignoreScrollbars) {\n\treturn ignoreScrollbars\n\t\t? document.documentElement.clientHeight\n\t\t: Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n}\n\n/**\n * Get the viewport width.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width\n * @returns {number} viewport width\n */\nfunction getWidth(ignoreScrollbars) {\n\treturn ignoreScrollbars\n\t\t? document.documentElement.clientWidth\n\t\t: Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n}\n\n/**\n * Viewport size.\n *\n * @typedef {object} Size\n * @property {number} height viewport height\n * @property {number} width viewport width\n */\n\n/**\n * Get the viewport width and height.\n *\n * @param {boolean} ignoreScrollbars [false] - set to true to discount scrollbar width/height.\n * @returns {Size} viewport width and height object\n */\nfunction getSize(ignoreScrollbars) {\n\treturn {\n\t\theight: getHeight(ignoreScrollbars),\n\t\twidth: getWidth(ignoreScrollbars),\n\t};\n}\n\n/**\n * Scroll position.\n *\n * @typedef {object} ScrollPosition\n * @property {number} height - `document.body.scrollHeight`\n * @property {number} width - `document.body.scrollWidth`\n * @property {number} left - `window.pageXOffset || window.scrollX`\n * @property {number} top - `window.pageYOffset || window.scrollY`\n */\n\n/**\n * @returns {ScrollPosition} current scroll info\n */\nfunction getScrollPosition() {\n\treturn {\n\t\theight: document.body.scrollHeight,\n\t\twidth: document.body.scrollWidth,\n\t\tleft: window.pageXOffset || window.scrollX,\n\t\ttop: window.pageYOffset || window.scrollY,\n\t};\n}\n\n/**\n * @returns {string} - 'portrait' or 'landscape'\n */\nfunction getOrientation() {\n\tconst orientation = window.screen.orientation;\n\tif (orientation) {\n\t\treturn typeof orientation === 'string'\n\t\t\t? orientation.split('-')[0]\n\t\t\t: orientation.type.split('-')[0];\n\t} else if (window.matchMedia) {\n\t\treturn window.matchMedia('(orientation: portrait)').matches\n\t\t\t? 'portrait'\n\t\t\t: 'landscape';\n\t} else {\n\t\treturn getHeight() >= getWidth() ? 'portrait' : 'landscape';\n\t}\n}\n\n/**\n * @returns {boolean} - true if the viewport is visible\n */\nfunction getVisibility() {\n\treturn document.hidden;\n}\n\nexport default {\n\tdebug: function () {\n\t\tdebug = true;\n\t},\n\tbroadcast,\n\tgetWidth,\n\tgetHeight,\n\tgetSize,\n\tgetScrollPosition,\n\tgetVisibility,\n\tgetOrientation,\n\tdebounce: Utils.debounce,\n\tthrottle: Utils.throttle,\n};\n","/**\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 {addAndRun} from './core/send.js';\nimport { userID } from './core/user.js';\nimport { session } from './core/session.js';\nimport { get } from './core/settings.js';\nimport { guid, getValueFromCookie, merge, log } from './utils.js';\n\nlet rootID;\n\n/**\n * Generate and store a new rootID, used to mark a new root event that\n * subsequent events will be linked to.\n *\n * @returns {string|*} The rootID.\n */\nfunction setRootID() {\n\trootID = guid();\n\treturn rootID;\n}\n\n/**\n * Get the current rootID.\n *\n * @returns {string|*} The rootID.\n */\nfunction getRootID() {\n\tif (!rootID) {\n\t\tsetRootID();\n\t}\n\n\treturn rootID;\n}\n\n/**\n * Make a tracking request.\n *\n * @param {object} config - Should be passed an object containing a format and the values for that format\n * @param {Function} [callback] - Fired when the request has been made.\n *\n * @returns {object} request\n */\nfunction track(config, callback = function(){ /* empty */}) {\n\tconst currentSession = session();\n\n\t// Set up the base request object with some values which should always be sent.\n\tconst request = {\n\t\tcallback,\n\t\tcontext: {\n\t\t\tid: config.id || guid(), // Use a supplied id or generate one for this request\n\t\t\troot_id: getRootID(),\n\t\t},\n\t\tuser: {\n\t\t\tft_session: getValueFromCookie(/FTSession=([^;]+)/),\n\t\t\tft_session_s: getValueFromCookie(/FTSession_s=([^;]+)/)\n\t\t},\n\t\tdevice: {\n\t\t\tspoor_session: currentSession.id,\n\t\t\tspoor_session_is_new: currentSession.isNew,\n\t\t\tspoor_id: userID(),\n\t\t},\n\t};\n\n\t// Override any context, user, and device values with object-wide settings\n\tconst settingsConfig = get('config') || {};\n\tif (settingsConfig.context) {\n\t\tmerge(request.context, settingsConfig.context);\n\t}\n\tif (settingsConfig.user) {\n\t\tmerge(request.user, settingsConfig.user);\n\t}\n\tif (settingsConfig.device) {\n\t\tmerge(request.device, settingsConfig.device);\n\t}\n\n\t// Update the base config with the parameter-supplied config\n\tmerge(request, config);\n\n\tlog('Core.Track', request);\n\n\t// Send it.\n\taddAndRun(request);\n\n\treturn request;\n}\n\nexport default {\n\tsetRootID,\n\tgetRootID,\n\ttrack\n};\n","import utils from './src/utils.js';\n\nconst throttle = utils.throttle;\nconst debounce = utils.debounce;\n\nconst listeners = {};\nconst intervals = {\n\tresize: 100,\n\torientation: 100,\n\tvisibility: 100,\n\tscroll: 100\n};\n\n/**\n *\n * @param {string} eventType - The type of event to throttle for this duration.\n * @param {number} interval - The duration to throttle in ms.\n * @returns {void}\n * @example\n * \t   // throttle for different events at different durations\n *     setThrottleInterval('scroll', 100)\n *     setThrottleInterval('resize', 300)\n *     setThrottleInterval('orientation', 30)\n *     setThrottleInterval('visibility', 30)\n * \t\t// throttle all events at 30ms\n *     setThrottleInterval(30);\n */\nfunction setThrottleInterval(eventType, interval) {\n\tif (typeof arguments[0] === 'number') {\n\t\tsetThrottleInterval('scroll', arguments[0]);\n\t\tsetThrottleInterval('resize', arguments[1]);\n\t\tsetThrottleInterval('orientation', arguments[2]);\n\t\tsetThrottleInterval('visibility', arguments[3]);\n\t} else if (interval) {\n\t\tintervals[eventType] = interval;\n\t}\n}\n\n/**\n * @access private\n */\nfunction listenToResize() {\n\tif (listeners.resize) {\n\t\treturn;\n\t}\n\tconst eventType = 'resize';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('resize', {\n\t\t\tviewport: utils.getSize(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.resize);\n\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.resize = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToOrientation() {\n\n\tif (listeners.orientation) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'orientationchange';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('orientation', {\n\t\t\tviewport: utils.getSize(),\n\t\t\torientation: utils.getOrientation(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.orientation);\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.orientation = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToVisibility() {\n\n\tif (listeners.visibility) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'visibilitychange';\n\tconst handler = debounce(function(ev) {\n\t\tutils.broadcast('visibility', {\n\t\t\thidden: utils.getVisibility(),\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.visibility);\n\n\twindow.addEventListener(eventType, handler);\n\n\tlisteners.visibility = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * @access private\n */\nfunction listenToScroll() {\n\n\tif (listeners.scroll) {\n\t\treturn;\n\t}\n\n\tconst eventType = 'scroll';\n\tconst handler = throttle(function(ev) {\n\t\tconst scrollPos = utils.getScrollPosition();\n\t\tutils.broadcast('scroll', {\n\t\t\tviewport: utils.getSize(),\n\t\t\tscrollHeight: scrollPos.height,\n\t\t\tscrollLeft: scrollPos.left,\n\t\t\tscrollTop: scrollPos.top,\n\t\t\tscrollWidth: scrollPos.width,\n\t\t\toriginalEvent: ev\n\t\t});\n\t}, intervals.scroll);\n\n\twindow.addEventListener(eventType, handler);\n\tlisteners.scroll = {\n\t\teventType: eventType,\n\t\thandler: handler\n\t};\n}\n\n/**\n * Start listening for an event(s).\n *\n * @param {string} eventType - The event to start listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n *\n * \t\t// It is now possible to listen for debounce o-viewport events such as `oViewport.orientation`.\n *      document.body.addEventListener('oViewport.orientation', function(event) {\n *      \tconsole.log(event.type); // oViewport.orientation\n *      });\n */\nfunction listenTo(eventType) {\n\tif (eventType === 'resize' || eventType === 'all') {\n\t\tlistenToResize();\n\t}\n\n\tif (eventType === 'scroll' || eventType === 'all') {\n\t\tlistenToScroll();\n\t}\n\n\tif (eventType === 'orientation' || eventType === 'all') {\n\t\tlistenToOrientation();\n\t}\n\n\tif (eventType === 'visibility' || eventType === 'all') {\n\t\tlistenToVisibility();\n\t}\n}\n\n/**\n * Stop listening for an event(s).\n *\n * @param {string} eventType - The event to stop listening for. One of `resize`, `scroll`, `orientation`, `visibility` or `all`.\n * @example\n * \t\t// Start listening for all events.\n * \t\toViewport.listenTo('all');\n * \t\t// We're done. Stop listening for all events.\n * \t\toViewport.stopListeningTo('all');\n */\nfunction stopListeningTo(eventType) {\n\tif (eventType === 'all') {\n\t\tObject.keys(listeners).forEach(stopListeningTo);\n\t} else if (listeners[eventType]) {\n\t\twindow.removeEventListener(listeners[eventType].eventType, listeners[eventType].handler);\n\t\tdelete listeners[eventType];\n\t}\n}\n\nexport default {\n\tdebug: function () {\n\t\tutils.debug();\n\t},\n\tlistenTo,\n\tstopListeningTo,\n\tsetThrottleInterval,\n\tgetOrientation: utils.getOrientation,\n\tgetSize: utils.getSize,\n\tgetScrollPosition: utils.getScrollPosition,\n\tgetVisibility: utils.getVisibility\n};\n","/**\n * @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","/**\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","import Toggle from './src/js/toggle.js';\n\nconst constructAll = () => {\n\tToggle.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Toggle;\n","/**\n*\n* Debounces function so it is only called after n milliseconds\n* without it not being called\n*\n* @example\n* Utils.debounce(myFunction() {}, 100);\n*\n* @param {Function} func - Function to be debounced\n* @param {number} wait - Time in miliseconds\n*\n* @returns {Function} - Debounced function\n*/\nfunction debounce(func, wait) {\n\tlet timeout;\n\treturn function() {\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tfunc.apply(this, args);\n\t\t};\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\n/**\n*\n* Throttle function so it is only called once every n milliseconds\n*\n* @example\n* Utils.throttle(myFunction() {}, 100);\n*\n* @param {Function} func - Function to be throttled\n* @param {number} wait - Time in miliseconds\n*\n* @returns {Function} - Throttled function\n*/\nfunction throttle(func, wait) {\n\tlet timeout;\n\treturn function() {\n\t\tif (timeout) {\n\t\t\treturn;\n\t\t}\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tfunc.apply(this, args);\n\t\t};\n\n\t\ttimeout = setTimeout(later, wait);\n\t};\n}\n\nexport {\n\tdebounce,\n\tthrottle\n};\n","/*!\n  Copyright (c) 2018 Jed Watson.\n  Licensed under the MIT License (MIT), see\n  http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export default {\n\tunCapitalise: function(str) {\n\t\treturn str.charAt(0).toLowerCase() + str.substr(1);\n\t},\n\n\tcapitalise: function(str) {\n\t\treturn str.charAt(0).toUpperCase() + str.substr(1);\n\t},\n\n\tcopyContentFromElement: function(content, callback) {\n\t\tconst html = content.nodeName === 'SCRIPT' ? content.innerHTML : content.outerHTML;\n\t\tcallback(html);\n\t},\n\n\tcopyContentFromUrl: function(url, callback) {\n\t\tconst xhr = new XMLHttpRequest();\n\t\txhr.open('GET', url, true);\n\t\txhr.onload = function() { // eslint complains of e not being used\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif (xhr.status === 200) {\n\t\t\t\t\tcallback(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tcallback('Content failed to load correctly');\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.onerror = function(e) {\n\t\t\tthrow new Error('\"o-overlay error\": Fetching content from ' + url + ' failed with errror ' + e);\n\t\t};\n\n\t\txhr.send(null);\n\t},\n\n\toptionsFromKey: function(key, value, opts) {\n\t\tconst dashIndex = key.indexOf('-');\n\t\tif (dashIndex === -1) {\n\t\t\ttry {\n\t\t\t\t// If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n\t\t\t\t// We also replace all ' with \" so JSON strings are parsed correctly\n\t\t\t\topts[key] = JSON.parse(value.replace(/\\'/g, '\"'));\n\t\t\t} catch (e) {\n\t\t\t\topts[key] = value;\n\t\t\t}\n\t\t} else {\n\t\t\t// Key that holds an object instead of a value\n\t\t\tconst subKey = key.substr(0, dashIndex);\n\n\t\t\t// If sub-object doesn't exist already, create it\n\t\t\tif (!opts[subKey]){\n\t\t\t\topts[subKey] = {};\n\t\t\t}\n\n\t\t\t// Run function again starting with the rest of the key\n\t\t\topts[subKey] = this.optionsFromKey(key.substr(dashIndex+1), value, opts[subKey]);\n\t\t}\n\n\t\treturn opts;\n\t},\n\n\t// Code based on this article to get coordinates independent of scroll: http://javascript.info/tutorial/coordinates\n\tgetOffsetRect: function(e) {\n\t\tconst eClientRect = e.getBoundingClientRect();\n\n\t\tconst body = document.body;\n\t\tconst docElem = document.documentElement;\n\n\t\t// docElem.scrollTop/Left for IE, use body as a last resort\n\t\tconst scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tconst scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\n\t\t// IE sometimes shifts the upper left corner\n\t\tconst clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tconst clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\n\t\treturn {\n\t\t\t// IE8 doesn't support getBoundingClientRect().height and .weight\n\t\t\twidth: eClientRect.width || eClientRect.right - eClientRect.left,\n\t\t\theight: eClientRect.height || eClientRect.bottom - eClientRect.top,\n\t\t\ttop: eClientRect.top + scrollTop - clientTop,\n\t\t\tleft: eClientRect.left + scrollLeft - clientLeft\n\t\t};\n\t}\n};\n","import {broadcast, containsCircularPaths, decode, encode, findCircularPathsIn, is} from '../utils.js';\n\n/**\n * Class for storing data\n * Will choose the 'best' storage method available. Can also specify a type of storage.\n *\n * @class  Store\n * @param {string} name - The name of the store\n * @param {object} config - Optional, config object for extra configuration\n * @param {string} [config.nameOverride] - The internal name for the store\n * @param {string} [config.domain] - The domain that should be used to store cookies on\n */\nconst Store = function (name, config = {}) {\n\n\t/**\n\t * Internal Storage key prefix.\n\t */\n\tconst keyPrefix = 'o-tracking';\n\n\n\tif (typeof name !== 'string' || name === '') {\n\t\tconst undefinedName = new Error('You must specify a name for the store.');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: undefinedName.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow undefinedName;\n\t}\n\n\tthis.config = Object.assign({}, config);\n\n\t/**\n\t * Store data.\n\t */\n\tthis.data = null;\n\n\t/**\n\t * The key/name of this store.\n\t */\n\tthis.storageKey = this.config.nameOverride ? this.config.nameOverride : [keyPrefix, name].join('_');\n\n\t/**\n\t * The storage method to use.\n\t *\n\t * @type {object}\n\t */\n\tthis.storage = {\n\t\t_type: 'localStorage',\n\t\tload: function (name) {\n\t\t\treturn window.localStorage.getItem(name);\n\t\t},\n\t\tsave: function (name, value) {\n\t\t\treturn window.localStorage.setItem(name, value);\n\t\t},\n\t\tremove: function (name) {\n\t\t\t// We attempt to remove the item from the old cookie storage\n\t\t\t// because otherwise the next time o-tracking is initialised for\n\t\t\t// this user, it will import the old value which was meant to\n\t\t\t// have been removed.\n\t\t\tcookieRemove(name);\n\t\t\treturn window.localStorage.removeItem(name);\n\t\t}\n\t};\n\n\tfunction cookieLoad(name) {\n\t\tname = name + '=';\n\n\t\tconst cookies = window.document.cookie.split(';');\n\t\tlet i;\n\t\tlet cookie;\n\n\t\tfor (i = 0; i < cookies.length; i = i + 1) {\n\t\t\tcookie = cookies[i].replace(/^\\s+|\\s+$/g, '');\n\t\t\tif (cookie.indexOf(name) === 0) {\n\t\t\t\treturn decode(cookie.substring(name.length, cookie.length));\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction cookieSave(name, value, expiry) {\n\t\tlet d;\n\t\tlet expires = '';\n\n\t\tif (is(expiry, 'number')) {\n\t\t\td = new Date();\n\t\t\td.setTime(d.getTime() + expiry);\n\t\t\texpires = 'expires=' + d.toUTCString() + ';';\n\t\t}\n\n\t\tconst cookie = encode(name) + '=' + encode(value) + ';' + expires + 'path=/;' + (config.domain ? 'domain=.' + config.domain + ';' : '');\n\t\twindow.document.cookie = cookie;\n\t}\n\n\tfunction cookieRemove(name) {\n\t\tcookieSave(name, '', -1);\n\t}\n\n\t/**\n\t * Temporary var containing data from a previously saved store.\n\t *\n\t * @property {string|undefined} loadStore - JSON string of the previously saved store or undefined.\n\t */\n\t// Retrieve any previous store with the same name.\n\tconst loadStore = this.storage.load(this.storageKey);\n\tif (loadStore) {\n\t\ttry {\n\t\t\tthis.data = JSON.parse(loadStore);\n\t\t} catch (error) {\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tmodule: 'o-tracking'\n\t\t\t});\n\t\t\tthis.data = loadStore;\n\t\t}\n\t}\n\n\t// If the user has previous data stored in the old cookie storage system\n\t// import the data into the new storage system and remove them from the cookie.\n\tconst oldCookieStoreData = cookieLoad(this.storageKey);\n\tif (oldCookieStoreData) {\n\t\ttry {\n\t\t\tif (this.storageKey === 'spoor-id') {\n\t\t\t\t// spoor-id is stored directly as a string and not as an object\n\t\t\t\tthis.data = oldCookieStoreData;\n\t\t\t} else {\n\t\t\t\tconst data = JSON.parse(oldCookieStoreData);\n\t\t\t\tif (this.data) {\n\t\t\t\t\tObject.assign(this.data, data);\n\t\t\t\t} else {\n\t\t\t\t\tthis.data = data;\n\t\t\t\t}\n\t\t\t\tfor (const name of Object.keys(data)) {\n\t\t\t\t\tif (name !== 'spoor-id') {\n\t\t\t\t\t\tcookieRemove(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tmodule: 'o-tracking'\n\t\t\t});\n\t\t\tthis.data = loadStore;\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * Get/Read the current data.\n *\n * @returns {object} Returns the data from the store.\n */\nStore.prototype.read = function () {\n\treturn this.data;\n};\n\n/**\n * Write the supplied data to the store.\n *\n * @param {string} data - The data to write.\n * @returns {Store} - The instance of the store\n */\nStore.prototype.write = function (data) {\n\t// Set this.data, in-case we're on a file:// domain and can't set cookies.\n\tthis.data = data;\n\tlet value;\n\n\tif (typeof this.data === 'string') {\n\t\tvalue = this.data;\n\t} else {\n\t\tif (containsCircularPaths(this.data)) {\n\t\t\tconst errorMessage = \"o-tracking does not support circular references in the analytics data.\\n\" +\n\t\t\t\"Please remove the circular references in the data.\\n\" +\n\t\t\t\"Here are the paths in the data which are circular:\\n\" +\n\t\t\tJSON.stringify(findCircularPathsIn(this.data), undefined, 4);\n\t\t\tthrow new Error(errorMessage);\n\t\t}\n\t\tvalue = JSON.stringify(this.data);\n\t}\n\n\tthis.storage.save(this.storageKey, value);\n\n\treturn this;\n};\n\n/**\n * Delete the current data.\n *\n * @returns {Store} - The instance of the store\n */\nStore.prototype.destroy = function () {\n\tthis.data = null;\n\tthis.storage.remove(this.storageKey);\n\treturn this;\n};\n\nexport { Store };\n","/* eslint-disable no-console */\nconst missingDataMessage = 'Could not find layout information. ' +\n\t'You may need to include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) ' +\n\t'for more information.';\n\n/**\n * Grab grid properties\n *\n * @returns {object} layout names and gutter widths\n */\nfunction getGridProperties() {\n\tconst properties = getGridFromDoc('after');\n\tif (Object.keys(properties).length === 0) {\n\t\tconsole.warn(missingDataMessage);\n\t}\n\treturn properties;\n}\n\n/**\n * Get all layout sizes.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {object} layout names and sizes\n */\nfunction getGridBreakpoints() {\n\tconst breakpoints = getGridFromDoc('before');\n\tif (Object.keys(breakpoints).length === 0) {\n\t\tconsole.warn(missingDataMessage);\n\t}\n\treturn breakpoints;\n}\n\n/**\n * Grab grid properties surfaced in html:after and html:before's content\n *\n * @param {string} position Whether to get all properties in :before, or current properties in :after\n * @returns {object} layout names and gutter widths\n */\nfunction getGridFromDoc(position) {\n\t// Contained in a try/catch as it should not error if o-grid styles are not (deliberately or accidentally) loaded\n\t// e.g. o-tracking will always try to read this property, but the page is not obliged to use o-grid for layout\n\ttry {\n\t\tlet gridProperties = window.getComputedStyle(document.documentElement, ':' + position).getPropertyValue('content');\n\t\t// Firefox computes: \"{\\\"foo\\\": \\\"bar\\\"}\"\n\t\t// We want readable JSON: {\"foo\": \"bar\"}\n\t\tgridProperties = gridProperties.replace(/'/g, '').replace(/\\\\/g, '').replace(/^\"/, '').replace(/\"$/, '');\n\t\treturn JSON.parse(gridProperties);\n\t} catch (e) {\n\t\treturn {};\n\t}\n}\n\n/**\n * Grab the current layout.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {string} Layout name\n */\nfunction getCurrentLayout() {\n\treturn getGridProperties().layout;\n}\n\n/**\n * Grab the current space between columns.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {string} Gutter width in pixels\n */\nfunction getCurrentGutter() {\n\treturn getGridProperties().gutter;\n}\n\n/**\n * This sets MediaQueryListeners on all the o-grid breakpoints\n * and fires a `o-grid.layoutChange` event on layout change.\n * CSS must be included so JavaScript can retrieve layout information.\n * See the README for more information.\n *\n * @returns {void}\n */\nfunction enableLayoutChangeEvents() {\n\t// Create a map containing all breakpoints exposed via html:before\n\tconst gridLayouts = getGridBreakpoints();\n\t// eslint-disable-next-line no-prototype-builtins\n\tif (gridLayouts.hasOwnProperty('layouts')) {\n\t\tconst layouts = gridLayouts.layouts;\n\t\tconst breakpoints = [\n\t\t\t...Object.entries(layouts),\n\t\t\t['default', '240px']\n\t\t].sort((a, b) => parseFloat(a[1]) - parseFloat(b[1]));\n\n\t\tconst setupQuery = (query, size) => {\n\t\t\t// matchMedia listener handler: Dispatch `o-grid.layoutChange` event if a match\n\t\t\tconst handleMQChange = mql => {\n\t\t\t\tif (mql.matches) {\n\t\t\t\t\twindow.dispatchEvent(new CustomEvent('o-grid.layoutChange', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tlayout: size,\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst mql = window.matchMedia(query);\n\t\t\tmql.addListener(handleMQChange);\n\t\t\thandleMQChange(mql);\n\t\t};\n\n\t\t// Generate media queries for each\n\t\tconst decr1 = val => `${Number(val.replace('px', '') - 1)}px`;\n\t\tfor (let index = 0; index < breakpoints.length; index++) {\n\t\t\tconst [layoutName, layoutWidth] = breakpoints[index];\n\t\t\tconst isLast = index === breakpoints.length - 1;\n\t\t\tif (isLast) {\n\t\t\t\tsetupQuery(`(min-width: ${layoutWidth})`, layoutName);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst [,nextLayoutWidth] = breakpoints[index + 1];\n\t\t\tsetupQuery(`(min-width: ${layoutWidth}) and (max-width: ${decr1(nextLayoutWidth)})`, layoutName);\n\t\t}\n\t} else {\n\t\tconsole.error('Could not enable grid layout change events. Include o-grid css. See the README (https://registry.origami.ft.com/components/o-grid/readme) for more details.');\n\t}\n}\n\nexport {\n\tgetCurrentLayout,\n\tgetCurrentGutter,\n\tgetGridBreakpoints,\n\tenableLayoutChangeEvents\n};\n\nexport default {\n\tgetCurrentLayout,\n\tgetCurrentGutter,\n\tgetGridBreakpoints,\n\tenableLayoutChangeEvents\n};\n","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","import {guid} from '../utils.js';\nimport {Store} from './store.js';\n\nlet userID;\nlet store;\n\n/**\n * Init\n *\n * @param {string} value The value of a userID to use if one is not stored\n * @param {string} cookieDomain The domain that should be used to cookie te user\n * @returns {string} - The user ID if present, or a generated UID if not\n */\nfunction init(value, cookieDomain) {\n\tconst defaultUserConfig = {\n\t\tstorage: 'cookie',\n\t\tname: 'spoor-id',\n\t\tnameOverride: 'spoor-id',\n\t\tvalue: null,\n\n\t\t// Set the store cookie domain to .ft.com for ft.com and all its subdomains\n\t\tdomain: location.hostname.match(/^(?:.+\\.)?ft\\.com$/) ? 'ft.com' : null,\n\t};\n\tif ( cookieDomain ) {\n\t\tdefaultUserConfig.domain = cookieDomain;\n\t}\n\n\tstore = new Store(defaultUserConfig.name, defaultUserConfig);\n\tlet id = store.read();\n\n\tif (!id) {\n\t\tid = value;\n\t}\n\n\treturn setUser(id); // Refresh cookies and update state\n}\n\n/**\n * setUser\n *\n * @param {string} id The userID to set.\n * @returns {string} - The user ID if present, or a generated UID if not\n */\nfunction setUser(id) {\n\tuserID = id;\n\n\tif (!userID) {\n\t\tuserID = guid();\n\t}\n\n\tstore.write(userID); // Refreshes the cookie...\n\n\treturn userID;\n}\n\n/**\n * Delete the current user data.\n *\n * @returns {void}\n */\nfunction destroy() {\n\tstore.destroy();\n}\n\n/**\n * Get the user ID\n *\n * @returns {string} - The user ID\n */\nfunction id() {\n\treturn userID;\n}\n\nexport {\n\tinit,\n\tsetUser,\n\tid as userID,\n\tdestroy\n};\n","import tracking from './src/javascript/tracking.js';\n\n/**\n * Automatically initilise o-tracking\n *\n * @returns {void}\n */\nfunction initialise() {\n\ttracking.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', initialise);\n}\n\n// Try and initialise on o.DOMContentLoaded. If it fails, defer to the\n// consumer of the library.\ndocument.addEventListener('o.DOMContentLoaded', initialise);\n\n/**\n * A constructed object, this module is a Singleton as we only want one\n * instance sending events. See {@link Tracking} for the publicly available\n * interface.\n *\n * @type {tracking}\n */\nexport default tracking;\n","/**\n * @file\n * Sundry hooks that have multiple use-cases\n */\n\nimport { useRef, useEffect, useState } from 'react';\nimport OAds from '@financial-times/ads-legacy-o-ads';\nimport { isElement, registerLayoutChangeEvents, unregisterLayoutChangeEvents } from './helpers';\n\n/**\n * @function\n * Provides a standardised way of creating the container DOM elements for portals\n * Usage:\n  ```\n  const SomeComponent = () => {\n    const target = usePortal();\n    return createPortal(<div>my modal</div>, target);\n  }\n  ```\n *\n * Modified from: https://www.jayfreestone.com/writing/react-portals-with-hooks/\n */\nexport const usePortal = (parent) => {\n  const rootRef = useRef(null);\n\n  useEffect(() => {\n    if (!rootRef.current) {\n      const rootEl = document.createElement('div');\n      rootEl.classList.add('g-portal');\n      rootRef.current = rootEl;\n    }\n    /* eslint-disable no-nested-ternary */\n    const parentEl = isElement(parent)\n      ? parent\n      : typeof parent === 'string'\n      ? document.querySelector(parent) || document.createElement('div')\n      : document.createElement('div');\n    /* eslint-enable no-nested-ternary */\n\n    // Unmounted\n    if (!parentEl.parentElement) {\n      parentEl.classList.add('g-portal-parent');\n      document.body.insertBefore(parentEl, document.body.firstElementChild);\n    }\n\n    parentEl.appendChild(rootRef.current);\n\n    return () => {\n      rootRef.current.remove();\n      // Remove parent element if empty.\n      if (parentEl.childNodes.length === 0) parentEl.remove();\n    };\n  }, [parent]);\n\n  return rootRef.current;\n};\n\n/**\n * @function\n * Initialises o-ads\n */\nexport const useAds = (config, enabled = true) => {\n  useEffect(() => {\n    // Async side-effects should be in an IIFE in useEffect; don't make the CB async!\n    (async () => {\n      try {\n        if (enabled) {\n          const initialised = await OAds.init({\n            gpt: {\n              network: 5887,\n              site: config.gptSite || 'ft.com',\n              zone: config.gptZone || 'unclassified',\n            },\n            targeting: config.targeting,\n            lazyLoad: true,\n          });\n\n          const slots = Array.from(document.querySelectorAll('.o-ads, [data-o-ads-name]'));\n          slots.forEach(initialised.slots.initSlot.bind(initialised.slots));\n        }\n      } catch (e) {\n        if (!global.STORYBOOK_ENV) console.error(e); // eslint-disable-line no-console\n      }\n    })();\n  }, [config, enabled]);\n};\n\n/**\n * @function\n * Initialises o-grid's layout change events on first call;\n * then returns the current breakpoint.\n */\nexport const useLayoutChangeEvents = () => {\n  const [breakpoint, setBreakpoint] = useState('default');\n\n  const listenersRef = useRef();\n\n  const update = ({ detail }) => {\n    setBreakpoint({ breakpoint: detail });\n  };\n\n  useEffect(() => {\n    try {\n      window.addEventListener('o-grid.layoutChange', update);\n      listenersRef.current = registerLayoutChangeEvents();\n\n      return () => {\n        unregisterLayoutChangeEvents(listenersRef.current);\n        window.removeEventListener('o-grid.layoutChange', update);\n      };\n    } catch (e) {\n      // Suppress errors in Jest\n      if (!global.STORYBOOK_ENV) console.error(e); // eslint-disable-line no-console\n    }\n  }, []);\n\n  return breakpoint;\n};\n\n/**\n * @file\n * Sets up global keyboard shortcuts\n */\nexport const useKeyboardShortcuts = (shortcuts) => {\n  const handlers = useRef(null);\n  useEffect(() => {\n    handlers.current = shortcuts;\n  }, [shortcuts]);\n  useEffect(() => {\n    const listener = ({ keyCode, target }) => {\n      if (target === document.body && handlers.current[keyCode]) {\n        handlers.current[keyCode]();\n      }\n    };\n\n    document.addEventListener('keydown', listener);\n    return () => {\n      window.removeEventListener('keydown', listener);\n    };\n  }, []);\n\n  // Returns synthetic event listeners\n  return Object.entries(shortcuts).reduce(\n    (a, [k, v]) => ({\n      ...a,\n      [k]: ({ keyPress }) => keyPress === k && v(),\n    }),\n    {},\n  );\n};\n\nexport default {\n  usePortal,\n  useAds,\n  useLayoutChangeEvents,\n  useKeyboardShortcuts,\n};\n","import {is, merge, isUndefined, guid} from '../utils.js';\nimport {Store} from './store.js';\n\n/**\n * @typedef {object} Session\n * @property {string} id - The id of the session\n * @property {boolean} isNew - Whether it is a brand new session\n */\n\nlet store;\nconst defaultSessionConfig = {\n\tstorage: 'best',\n\tname: 'session',\n\texpires: 30 * 60 * 1000 // 30 minutes\n};\n\n/**\n * Set the session in the store.\n *\n * @param {string} session - The session to be stored.\n * @returns {void}\n */\nfunction setSession(session) {\n\tconst d = new Date();\n\td.setTime(d.getTime() + store.config.expires);\n\n\tstore.write({\n\t\tvalue: session,\n\t\texpiry: d.valueOf()\n\t});\n}\n\n/**\n * Get the session from the store. Expiry and gen of a new session are handled here.\n *\n * @returns {Session} the current session\n */\nfunction getSession() {\n\tconst s = store.read();\n\tlet session;\n\tlet isNew = false;\n\n\tif (s) {\n\t\tconst d = new Date().valueOf();\n\t\tconst exp = parseInt(s.expiry, 10);\n\n\t\t// If current session is active.\n\t\tif (exp >= d) {\n\t\t\tsession = s.value;\n\t\t}\n\t}\n\n\t// No active session, gen a new one.\n\tif (!session) {\n\t\tsession = guid();\n\t\tisNew = true;\n\t}\n\n\t// Refreshes the cookie...\n\tsetSession(session);\n\n\treturn {\n\t\tid: session,\n\t\tisNew: isNew\n\t};\n}\n\n/**\n * Init\n *\n * @param {string|object} [config] The name used to store the session or configuration object.\n * @returns {Session} - The session\n */\nfunction init(config) {\n\tif (is(config, 'string')) {\n\t\tconfig = { name: config };\n\t}\n\n\tif (isUndefined(config)) {\n\t\tconfig = {};\n\t}\n\n\tconst c = merge(defaultSessionConfig, config);\n\n\t// config.name is important here, means the user has specifically asked for a cookie name.\n\tif (c.storage === 'cookie' && config.name) {\n\t\tc.nameOverride = c.name;\n\t}\n\n\tstore = new Store(c.name, c);\n\n\treturn getSession();\n}\n\nexport { getSession as session, init };\n","import {get as getSetting} from './settings.js';\nimport {broadcast, is, findCircularPathsIn, containsCircularPaths, merge, addEvent, log} from '../utils.js';\nimport {Queue} from './queue.js';\nimport {get as getTransport} from './transports/index.js';\n\n/**\n * Queue queue.\n *\n * @type {Queue}\n */\nlet queue;\n\n/**\n * Consistent check to see if we should use sendBeacon or not.\n *\n * @returns {boolean} Should we use sendBeacon?\n */\nfunction should_use_sendBeacon() {\n\treturn Boolean(navigator.sendBeacon);\n}\n\n/**\n * Attempts to send a tracking request.\n *\n * @param {object} request The request to be sent.\n * @param {Function=} callback Callback to fire the next item in the queue.\n * @returns {void}\n */\nfunction sendRequest(request, callback) {\n\tconst queueTime = request.queueTime;\n\tconst offlineLag = new Date().getTime() - queueTime;\n\n\tconst transport = should_use_sendBeacon() ? getTransport('sendBeacon')() :\n\t\twindow.XMLHttpRequest && 'withCredentials' in new window.XMLHttpRequest() ? getTransport('xhr')() :\n\t\t\tgetTransport('image')();\n\tconst user_callback = request.callback;\n\n\tconst core_system = getSetting('config') && getSetting('config').system || {};\n\tconst system = merge(core_system, {\n\t\tversion: getSetting('version'), // Version of the tracking client e.g. '1.2'\n\t\tsource: getSetting('source'), // Source of the tracking client e.g. 'o-tracking'\n\t\ttransport: transport.name, // The transport method used.\n\t});\n\n\tif (getSetting('config').test) {\n\t\tsystem.is_live = false;\n\t} else {\n\t\tsystem.is_live = true;\n\t}\n\n\n\trequest = merge({ system: system }, request);\n\n\t// Only bothered about offlineLag if it's longer than a second, but less than 12 months. (Especially as Date can be dodgy)\n\tif (offlineLag > 1000 && offlineLag < 12 * 30 * 24 * 60 * 60 * 1000) {\n\t\trequest.time = request.time || {};\n\t\trequest.time.offset = offlineLag;\n\t}\n\tdelete request.callback;\n\tdelete request.type;\n\tdelete request.queueTime;\n\n\tlog('user_callback', user_callback);\n\tlog('PreSend', request);\n\n\tif (containsCircularPaths(request)) {\n\t\tconst errorMessage = \"o-tracking does not support circular references in the analytics data.\\n\" +\n\t\t\"Please remove the circular references in the data.\\n\" +\n\t\t\"Here are the paths in the data which are circular:\\n\" +\n\t\tJSON.stringify(findCircularPathsIn(request), undefined, 4);\n\t\tthrow new Error(errorMessage);\n\t}\n\n\tconst stringifiedData = JSON.stringify(request);\n\n\ttransport.complete(function (error) {\n\t\tif (is(user_callback, 'function')) {\n\t\t\tuser_callback.call(request);\n\t\t\tlog('calling user_callback');\n\t\t}\n\n\t\tif (error) {\n\t\t\t// Re-add to the queue if it failed.\n\t\t\t// Re-apply queueTime here\n\t\t\trequest.queueTime = queueTime;\n\t\t\tqueue.add(request).save();\n\n\t\t\tbroadcast('oErrors', 'log', {\n\t\t\t\terror: error.message,\n\t\t\t\tinfo: { module: 'o-tracking' }\n\t\t\t});\n\t\t} else if (callback) {\n\t\t\tcallback();\n\t\t}\n\t});\n\t/**\n\t * Default collection server.\n\t */\n\tlet url = 'https://spoor-api.ft.com/ingest';\n\n\tif (request && request.category && request.action) {\n\t\turl += `?type=${request.category}:${request.action}`;\n\t}\n\n\ttransport.send(url, stringifiedData);\n}\n\n/**\n * Adds a new request to the list of pending requests\n *\n * @param {object} request The request to queue\n * @returns {void}\n */\nfunction add(request) {\n\trequest.queueTime = new Date().getTime();\n\tif (should_use_sendBeacon()) {\n\t\tsendRequest(request);\n\t} else {\n\t\tqueue.add(request).save();\n\t}\n\tlog('AddedToQueue', queue);\n}\n\n/**\n * If there are any requests queued, attempts to send the next one\n * Otherwise, does nothing\n *\n * @param {Function} [callback] - Optional callback\n * @returns {void}\n */\nfunction run(callback = function () { /* empty */}) {\n\t// Investigate queue lengths bug\n\t// https://jira.ft.com/browse/DTP-330\n\tconst all_events = queue.all();\n\n\tif (all_events.length > 200) {\n\t\tconst counts = {};\n\n\t\tall_events.forEach(function (event) {\n\t\t\tconst label = [event.category, event.action].join(':');\n\n\t\t\tif (!Object.prototype.hasOwnProperty.call(counts, label)) {\n\t\t\t\tcounts[label] = 0;\n\t\t\t}\n\n\t\t\tcounts[label] += 1;\n\t\t});\n\n\t\tqueue.replace([]);\n\n\t\tqueue.add({\n\t\t\tcategory: 'o-tracking',\n\t\t\taction: 'queue-bug',\n\t\t\tcontext: {\n\t\t\t\turl: document.URL,\n\t\t\t\tqueue_length: all_events.length,\n\t\t\t\tcounts: counts,\n\t\t\t\tstorage: queue.storage.storage._type\n\t\t\t}\n\t\t});\n\t}\n\n\tconst next = function () {\n\t\trun();\n\t\tcallback();\n\t};\n\tconst nextRequest = queue.shift();\n\n\t// Cancel if we've run out of requests.\n\tif (!nextRequest) {\n\t\treturn callback();\n\t}\n\n\t// Send this request, then try run again.\n\treturn sendRequest(nextRequest, next);\n}\n\n/**\n * Convenience function to add and run a request all in one go.\n *\n * @param {object} request The request to queue and run.\n * @returns {void}\n */\nfunction addAndRun(request) {\n\tadd(request);\n\trun();\n}\n\n/**\n * Init a queue and send any leftover events.\n *\n * @returns {Queue} An initialised queue.\n */\nfunction init() {\n\tqueue = new Queue('requests');\n\n\t// If any tracking calls are made whilst offline, try sending them the next time the device comes online\n\taddEvent(window, 'online', function() {\n\t\trun();\n\t});\n\n\t// On startup, try sending any requests queued from a previous session.\n\trun();\n\n\treturn queue;\n}\n\nexport {\n\tinit,\n\tadd,\n\trun,\n\taddAndRun\n};\n","import {is, isUndefined, broadcast} from '../utils.js';\nimport {Store} from './store.js';\n\n/**\n * Class for handling a queue backed up by a store.\n *\n * @class Queue\n *\n * @param {string} name - The name of the queue.\n * @returns {Queue} - Returns the instance of the queue.\n */\nfunction Queue (name) {\n\tif (isUndefined(name)) {\n\t\tconst undefinedName = new Error('You must specify a name for the queue.');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: undefinedName.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow undefinedName;\n\t}\n\n\t/**\n\t * Queue data.\n\t *\n\t * @type {Array}\n\t */\n\tthis.queue = [];\n\n\t/**\n\t * The storage method to use. Determines best storage method.\n\t *\n\t * @type {object}\n\t */\n\tthis.storage = new Store(name);\n\n\t// Retrieve any previous store with the same name.\n\tif (this.storage.read()) {\n\t\tthis.queue = this.storage.read();\n\t}\n\n\treturn this;\n}\n\n/**\n * Gets the contents of the store.\n *\n * @returns {Array} The array of items.\n */\nQueue.prototype.all = function () {\n\tif (this.queue.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst items = [];\n\n\tfor (let i = 0; i < this.queue.length; i = i + 1) {\n\t\titems.push(this.queue[i].item);\n\t}\n\n\treturn items;\n};\n\n/**\n * Gets the first item in the store.\n *\n * @returns {object} Returns the item.\n */\nQueue.prototype.first = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn this.queue[0].item;\n};\n\n/**\n * Gets the last item in the store.\n *\n * @returns {object} Returns the item.\n */\nQueue.prototype.last = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn this.queue.slice(-1)[0].item;\n};\n\n/**\n * Add data to the store.\n *\n * @param {object} item - An item or an array of items.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.add = function (item) {\n\t// I was trying to turn this whole add function into a little module, to stop doAdd function being created everytime, but couldn't work out how to get to 'this' from within the module.\n\n\tconst self = this;\n\tlet i;\n\n\tfunction doAdd(item) {\n\t\tself.queue.push({\n\t\t\tcreated_at: new Date().valueOf(),\n\t\t\titem: item\n\t\t});\n\t}\n\n\tif (is(item, 'object') && item.constructor.toString().match(/array/i)) {\n\t\tfor (i = 0; i < item.length; i = i + 1) {\n\t\t\tdoAdd(item[i]);\n\t\t}\n\t} else {\n\t\tdoAdd(item);\n\t}\n\n\treturn self;\n};\n\n/**\n * Overwrite the store with something completely new.\n *\n * @param {Array} items The new array of data.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.replace = function (items) {\n\tif (Array.isArray(items)) {\n\t\tthis.queue = [];\n\t\tthis.add(items).save();\n\n\t\treturn this;\n\t}\n\n\tconst invalidArg = new Error('Argument invalid, must be an array.');\n\tbroadcast('oErrors', 'log', {\n\t\terror: invalidArg.message,\n\t\tinfo: { module: 'o-tracking' }\n\t});\n\tthrow invalidArg;\n};\n\n/**\n * Pop the first item from the queue.\n *\n * @returns {object} The item.\n */\nQueue.prototype.shift = function () {\n\tif (this.queue.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst item = this.queue.shift().item;\n\n\tthis.save();\n\n\treturn item;\n};\n\n/**\n * Save the current store to localStorage so that old requests can still be sent after a page refresh.\n *\n * @returns {Queue} - Returns the instance of the queue.\n */\nQueue.prototype.save = function () {\n\tthis.storage.write(this.queue);\n\n\treturn this;\n};\n\nexport { Queue };\n","// Trace the element and all of its parents, collecting properties as we go\nimport {sanitise, assignIfUndefined} from '../javascript/utils.js';\n\n// For a given container element, get the number of elements that match the\n// original element (siblings); and the index of the original element (position).\nconst getSiblingsAndPosition = (el, originalEl, selector) => {\n\tconst siblings = Array.from(el.querySelectorAll(selector));\n\tconst position = siblings.findIndex(item => item === originalEl);\n\tif(position === -1) {return;}\n\treturn {\n\t\tsiblings: siblings.length,\n\t\tposition,\n\t};\n};\n\n\nconst elementPropertiesToCollect = [\n\t\"nodeName\",\n\t\"className\",\n\t\"id\",\n\t\"href\",\n\t\"text\",\n\t\"role\",\n];\n// Get all (sanitised) properties of a given element.\nconst getAllElementProperties = element => {\n\n\tconst properties = {};\n\tfor (const property of elementPropertiesToCollect) {\n\t\tconst value = element[property] || element.getAttribute(property) || element.hasAttribute(property);\n\t\tif (value !== undefined) {\n\t\t\tif (typeof value === 'boolean') {\n\t\t\t\tproperties[property] = value;\n\t\t\t} else {\n\t\t\t\tproperties[property] = sanitise(value);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn properties;\n};\n\n// Get some properties of a given element.\nconst getDomPathProps = (attrs, props) => {\n\n\t// Collect any attribute that matches given strings.\n\tattrs\n\t\t.filter(attribute => attribute.name.match(/^data-trackable|^data-o-|^aria-/i))\n\t\t.forEach(attribute => {\n\t\t\tprops[attribute.name] = attribute.value;\n\t\t});\n\n\treturn props;\n};\n\n// Get only the custom data-trackable-context-? properties of a given element\nconst getContextProps = (attrs, props, isOriginalEl) => {\n\n\tconst customProps = {};\n\n\t// for the original element collect properties like className, nodeName\n\tif (isOriginalEl) {\n\t\telementPropertiesToCollect.forEach(name => {\n\t\t\tif (typeof props[name] !== 'undefined' && name !== 'id') {\n\t\t\t\tcustomProps[name] = props[name];\n\t\t\t}\n\t\t});\n\t}\n\n\t// Collect any attribute that matches given strings.\n\tattrs\n\t\t.filter(attribute => attribute.name.match(/^data-trackable-context-/i))\n\t\t.forEach(attribute => {\n\t\t\tcustomProps[attribute.name.replace('data-trackable-context-', '')] = attribute.value;\n\t\t});\n\n\treturn customProps;\n};\n\nexport function getTrace (el) {\n\tconst rootEl = document;\n\tconst originalEl = el;\n\tconst selector = originalEl.getAttribute('data-trackable') ? `[data-trackable=\"${originalEl.getAttribute('data-trackable')}\"]` : originalEl.nodeName;\n\tconst trace = [];\n\tconst customContext = {};\n\twhile (el && el !== rootEl) {\n\t\tconst props = getAllElementProperties(el);\n\t\tconst attrs = Array.from(el.attributes);\n\t\tlet domPathProps = getDomPathProps(attrs, props);\n\n\t\t// If the element happens to have a data-trackable attribute, get the siblings\n\t\t// and position of the element (relative to the current element).\n\t\tif (domPathProps[\"data-trackable\"]) {\n\t\t\tdomPathProps = Object.assign(\n\t\t\t\tdomPathProps,\n\t\t\t\tgetSiblingsAndPosition(el, originalEl, selector)\n\t\t\t);\n\t\t}\n\n\t\ttrace.push(domPathProps);\n\n\t\tconst contextProps = getContextProps(attrs, props, el === originalEl);\n\n\t\tassignIfUndefined(contextProps, customContext);\n\n\t\tel = el.parentNode;\n\t}\n\treturn { trace, customContext };\n}\n","import {xhr} from './xhr.js';\nimport {sendBeacon} from './send-beacon.js';\nimport {image} from './image.js';\n\nexport {\n\txhr,\n\tsendBeacon,\n\timage\n};\n\n/**\n * @type {object|undefined} - mock transport for testing\n */\nexport const mock = {};\n\n/**\n * Given the name of a transport, returns that transport if it exists.\n *\n * @param {string} name - The name of the transport to use\n * @returns {Function|undefined} - The transport function or undefined if not found.\n */\nexport function get(name) {\n\tif (mock.transport) {\n\t\treturn mock.transport;\n\t}\n\tswitch (name) {\n\t\tcase 'xhr': {\n\t\t\treturn xhr;\n\t\t}\n\t\tcase 'sendBeacon': {\n\t\t\treturn sendBeacon;\n\t\t}\n\t\tcase 'image': {\n\t\t\treturn image;\n\t\t}\n\t\tdefault: {\n\t\t\treturn undefined;\n\t\t}\n\t}\n}\n","import Overlay from '@financial-times/o-overlay';\n\nconst form = `<form id=\"o-comments-displayname-form\" class=\"o-forms o-forms o-comments__displayname-form\">\n\t\t\t<label for=\"o-comments-displayname-input\" class=\"o-forms-field o-comments__displayname-field\">\n\t\t\t\t<span class=\"o-forms-title\">Display name</span>\n\t\t\t</label>\n\t\t\t<div class=\"o-comments__displayname-container\">\n\t\t\t\t<span class=\"o-forms-input o-forms-input--text o-comments__displayname-input\">\n\t\t\t\t\t<input id=\"o-comments-displayname-input\" type=\"text\" name=\"text\" value=\"\" required=\"\">\n\t\t\t\t</span>\n\t\t\t\t<button type=\"submit\" class=\"o-comments__displayname-submit\">Save</button>\n\t\t\t</div>\n\t\t\t<span id=\"o-comments-displayname-error\" class=\"o-forms-input__error o-comments__displayname-error\" aria-live=\"assertive\"></span>\n\t</form>\n</form>`;\n\nconst isUnique = (displayName) => {\n\tconst url = `https://comments-api.ft.com/displayname/isavailable/${encodeURIComponent(displayName)}`;\n\n\treturn fetch(url, { method: 'GET' })\n\t\t.then(response => response.json())\n\t\t.then(({available}) => {\n\t\t\treturn available;\n\t\t});\n};\n\nconst findInvalidCharacters = (displayName) => {\n\t/*\n\t * Allowed Characters\n\t * The below regex matches any character not in the allowed characters set\n\t * All allowed characters are case insensitive\n\t * Anything in the range A-Z or 0-9 is allowed\n\t * Any of the below special characters are allowed\n\t * !#$%'`()*+,-./:;=@[]^_{|}\n\t * Spaces are allowed\n\t */\n\n\tconst matchInvalidCharacters = /[^0-9a-z!#$%'`()*+,\\-.\\/:;=@[\\]\\^_{}\\|\\s]/gi;\n\tconst matchingCharacters = displayName\n\t\t.match(matchInvalidCharacters);\n\tconst uniqueMatchingCharacters = matchingCharacters && matchingCharacters.length ?\n\t\tmatchingCharacters\n\t\t\t.filter((character, position) => matchingCharacters.indexOf(character) === position) :\n\t\t[];\n\n\treturn uniqueMatchingCharacters.length ?\n\t\tuniqueMatchingCharacters.join('') :\n\t\tfalse;\n};\n\nconst prompt = () => {\n\tconst overlay = new Overlay('displayName', {\n\t\thtml: form,\n\t\tclass: 'o-comments__displayname-prompt',\n\t\tcompact: true,\n\t\theading: {\n\t\t\ttitle: 'Choose a commenting display name'\n\t\t}\n\t});\n\n\toverlay.open();\n\n\treturn overlay;\n};\n\nconst validation = (displayName) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!displayName) {\n\t\t\treturn reject(new Error('Empty display name'));\n\t\t}\n\n\t\tconst invalidCharacters = findInvalidCharacters(displayName);\n\n\t\tif (invalidCharacters) {\n\t\t\treturn reject(new Error(`The display name contains the following invalid characters: ${invalidCharacters}`));\n\t\t} else {\n\t\t\tisUnique(displayName)\n\t\t\t\t.then(isUnique => {\n\t\t\t\t\tif (!isUnique) {\n\t\t\t\t\t\treturn reject(new Error('Unfortunately that display name is already taken'));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn resolve(displayName);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tconst apiError = new Error('Sorry, we are unable to update display names. Please try again later.');\n\n\t\t\t\t\tapiError.name = 'CommentsApiError';\n\n\t\t\t\t\treturn reject(apiError);\n\t\t\t\t});\n\t\t}\n\t});\n};\n\nconst promptValidation = (event) => {\n\tevent.preventDefault();\n\n\treturn new Promise(resolve => {\n\t\tconst displayNameForm = event.srcElement;\n\t\tconst input = displayNameForm.querySelector('input');\n\t\tconst displayName = input.value.trim();\n\t\tconst errorMessage = displayNameForm.querySelector('#o-comments-displayname-error');\n\n\t\terrorMessage.innerText = '';\n\t\tdisplayNameForm.classList.remove('o-forms-input--invalid');\n\n\n\t\treturn validation(displayName)\n\t\t\t.then(displayName => resolve(displayName))\n\t\t\t.catch(error => {\n\t\t\t\terrorMessage.innerText = error.message;\n\t\t\t\tdisplayNameForm.classList.add('o-forms-input--invalid');\n\n\t\t\t\tif (error.name === 'CommentsApiError') {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t});\n\t});\n};\n\nexport default {\n\tprompt,\n\tvalidation,\n\tpromptValidation\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n  /**\n   * Maintain a map of listener\n   * lists, keyed by event name.\n   *\n   * @type Object\n   */\n  this.listenerMap = [{}, {}];\n\n  if (root) {\n    this.root(root);\n  }\n  /** @type function() */\n\n\n  this.handle = Delegate.prototype.handle.bind(this); // Cache of event listeners removed during an event cycle\n\n  this._removedListeners = [];\n}\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.root = function (root) {\n  var listenerMap = this.listenerMap;\n  var eventType; // Remove master event listeners\n\n  if (this.rootElement) {\n    for (eventType in listenerMap[1]) {\n      if (listenerMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, true);\n      }\n    }\n\n    for (eventType in listenerMap[0]) {\n      if (listenerMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, false);\n      }\n    }\n  } // If no root or root is not\n  // a dom node, then remove internal\n  // root reference and exit here\n\n\n  if (!root || !root.addEventListener) {\n    if (this.rootElement) {\n      delete this.rootElement;\n    }\n\n    return this;\n  }\n  /**\n   * The root node at which\n   * listeners are attached.\n   *\n   * @type Node\n   */\n\n\n  this.rootElement = root; // Set up master event listeners\n\n  for (eventType in listenerMap[1]) {\n    if (listenerMap[1].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, true);\n    }\n  }\n\n  for (eventType in listenerMap[0]) {\n    if (listenerMap[0].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, false);\n    }\n  }\n\n  return this;\n};\n/**\n * @param {string} eventType\n * @returns boolean\n */\n\n\nDelegate.prototype.captureForType = function (eventType) {\n  return ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n  var root;\n  var listenerMap;\n  var matcher;\n  var matcherParam;\n\n  if (!eventType) {\n    throw new TypeError('Invalid event type: ' + eventType);\n  } // handler can be passed as\n  // the second or third argument\n\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // Fallback to sensible defaults\n  // if useCapture not set\n\n\n  if (useCapture === undefined) {\n    useCapture = this.captureForType(eventType);\n  }\n\n  if (typeof handler !== 'function') {\n    throw new TypeError('Handler must be a type of Function');\n  }\n\n  root = this.rootElement;\n  listenerMap = this.listenerMap[useCapture ? 1 : 0]; // Add master handler for type if not created yet\n\n  if (!listenerMap[eventType]) {\n    if (root) {\n      root.addEventListener(eventType, this.handle, useCapture);\n    }\n\n    listenerMap[eventType] = [];\n  }\n\n  if (!selector) {\n    matcherParam = null; // COMPLEX - matchesRoot needs to have access to\n    // this.rootElement, so bind the function to this.\n\n    matcher = matchesRoot.bind(this); // Compile a matcher for the given selector\n  } else if (/^[a-z]+$/i.test(selector)) {\n    matcherParam = selector;\n    matcher = matchesTag;\n  } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n    matcherParam = selector.slice(1);\n    matcher = matchesId;\n  } else {\n    matcherParam = selector;\n    matcher = Element.prototype.matches;\n  } // Add to the list of listeners\n\n\n  listenerMap[eventType].push({\n    selector: selector,\n    handler: handler,\n    matcher: matcher,\n    matcherParam: matcherParam\n  });\n  return this;\n};\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n  var i;\n  var listener;\n  var listenerMap;\n  var listenerList;\n  var singleEventType; // Handler can be passed as\n  // the second or third argument\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // If useCapture not set, remove\n  // all event listeners\n\n\n  if (useCapture === undefined) {\n    this.off(eventType, selector, handler, true);\n    this.off(eventType, selector, handler, false);\n    return this;\n  }\n\n  listenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n  if (!eventType) {\n    for (singleEventType in listenerMap) {\n      if (listenerMap.hasOwnProperty(singleEventType)) {\n        this.off(singleEventType, selector, handler);\n      }\n    }\n\n    return this;\n  }\n\n  listenerList = listenerMap[eventType];\n\n  if (!listenerList || !listenerList.length) {\n    return this;\n  } // Remove only parameter matches\n  // if specified\n\n\n  for (i = listenerList.length - 1; i >= 0; i--) {\n    listener = listenerList[i];\n\n    if ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n      this._removedListeners.push(listener);\n\n      listenerList.splice(i, 1);\n    }\n  } // All listeners removed\n\n\n  if (!listenerList.length) {\n    delete listenerMap[eventType]; // Remove the main handler\n\n    if (this.rootElement) {\n      this.rootElement.removeEventListener(eventType, this.handle, useCapture);\n    }\n  }\n\n  return this;\n};\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\n\n\nDelegate.prototype.handle = function (event) {\n  var i;\n  var l;\n  var type = event.type;\n  var root;\n  var phase;\n  var listener;\n  var returned;\n  var listenerList = [];\n  var target;\n  var eventIgnore = 'ftLabsDelegateIgnore';\n\n  if (event[eventIgnore] === true) {\n    return;\n  }\n\n  target = event.target; // Hardcode value of Node.TEXT_NODE\n  // as not defined in IE8\n\n  if (target.nodeType === 3) {\n    target = target.parentNode;\n  } // Handle SVG <use> elements in IE\n\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  root = this.rootElement;\n  phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2); // eslint-disable-next-line default-case\n\n  switch (phase) {\n    case 1:\n      //Event.CAPTURING_PHASE:\n      listenerList = this.listenerMap[1][type];\n      break;\n\n    case 2:\n      //Event.AT_TARGET:\n      if (this.listenerMap[0] && this.listenerMap[0][type]) {\n        listenerList = listenerList.concat(this.listenerMap[0][type]);\n      }\n\n      if (this.listenerMap[1] && this.listenerMap[1][type]) {\n        listenerList = listenerList.concat(this.listenerMap[1][type]);\n      }\n\n      break;\n\n    case 3:\n      //Event.BUBBLING_PHASE:\n      listenerList = this.listenerMap[0][type];\n      break;\n  }\n\n  var toFire = []; // Need to continuously check\n  // that the specific list is\n  // still populated in case one\n  // of the callbacks actually\n  // causes the list to be destroyed.\n\n  l = listenerList.length;\n\n  while (target && l) {\n    for (i = 0; i < l; i++) {\n      listener = listenerList[i]; // Bail from this loop if\n      // the length changed and\n      // no more listeners are\n      // defined between i and l.\n\n      if (!listener) {\n        break;\n      }\n\n      if (target.tagName && [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 && target.hasAttribute(\"disabled\")) {\n        // Remove things that have previously fired\n        toFire = [];\n      } // Check for match and fire\n      // the event if there's one\n      //\n      // TODO:MCG:20120117: Need a way\n      // to check if event#stopImmediatePropagation\n      // was called. If so, break both loops.\n      else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n    } // TODO:MCG:20120117: Need a way to\n    // check if event#stopPropagation\n    // was called. If so, break looping\n    // through the DOM. Stop if the\n    // delegation root has been reached\n\n\n    if (target === root) {\n      break;\n    }\n\n    l = listenerList.length; // Fall back to parentNode since SVG children have no parentElement in IE\n\n    target = target.parentElement || target.parentNode; // Do not traverse up to document root when using parentNode, though\n\n    if (target instanceof HTMLDocument) {\n      break;\n    }\n  }\n\n  var ret;\n\n  for (i = 0; i < toFire.length; i++) {\n    // Has it been removed during while the event function was fired\n    if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n      continue;\n    }\n\n    returned = this.fire.apply(this, toFire[i]); // Stop propagation to subsequent\n    // callbacks if the callback returned\n    // false\n\n    if (returned === false) {\n      toFire[i][0][eventIgnore] = true;\n      toFire[i][0].preventDefault();\n      ret = false;\n      break;\n    }\n  }\n\n  return ret;\n};\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\n\n\nDelegate.prototype.fire = function (event, target, listener) {\n  return listener.handler.call(target, event, target);\n};\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesTag(tagName, element) {\n  return tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesRoot(selector, element) {\n  if (this.rootElement === window) {\n    return (// Match the outer document (dispatched from document)\n      element === document || // The <html> element (dispatched from document.body or document.documentElement)\n      element === document.documentElement || // Or the window itself (dispatched from window)\n      element === window\n    );\n  }\n\n  return this.rootElement === element;\n}\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesId(id, element) {\n  return id === element.id;\n}\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\n\n\nDelegate.prototype.destroy = function () {\n  this.off();\n  this.root();\n};\n\nvar _default = Delegate;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * XHR based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction xhr() {\n\tconst xhr = new window.XMLHttpRequest();\n\n\treturn {\n\t\tname: 'xhr',\n\t\tsend: function (url, data) {\n\t\t\txhr.open('POST', url, true);\n\t\t\txhr.withCredentials = true;\n\t\t\txhr.setRequestHeader('Content-type', 'application/json');\n\t\t\txhr.send(data);\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\txhr.onerror = function () {\n\t\t\t\tcallback(this);\n\t\t\t};\n\t\t\txhr.onload = function () {\n\t\t\t\tif (xhr.status >= 200 && xhr.status < 300) {\n\t\t\t\t\tcallback();\n\t\t\t\t} else {\n\t\t\t\t\tcallback('Incorrect response: ' + xhr.status);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n}\n\nexport { xhr };\n","/**\n * Beacon based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction sendBeacon() {\n\tlet resolver;\n\tlet rejecter;\n\tconst p = new Promise((resolve, reject) => {\n\t\tresolver = resolve;\n\t\trejecter = reject;\n\t});\n\treturn {\n\t\tname: 'sendBeacon',\n\t\tsend: function (url, data) {\n\t\t\tif (navigator.sendBeacon(url, data)) {\n\t\t\t\tresolver();\n\t\t\t} else {\n\t\t\t\trejecter(new Error('Failed to send beacon event: ' + data.toString()));\n\t\t\t}\n\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\tif (callback) {\n\t\t\t\tp.then(callback, callback);\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport { sendBeacon };\n","import {encode} from '../../utils.js';\n\n/**\n * Image based transport mechanism\n *\n * @returns {object} - Object with three properties: name, send and complete\n */\nfunction image () {\n\tconst image = new Image(1,1);\n\n\treturn {\n\t\tname: 'image',\n\t\tsend: function (url, data) {\n\t\t\turl = url.replace('https://spoor-api.ft.com/ingest', 'https://spoor-api.ft.com/px.gif');\n\t\t\timage.src = url + (url.indexOf('?') > -1 ? '&' : '?') + 'data=' + encode(data);\n\t\t},\n\t\tcomplete: function (callback) {\n\t\t\tif (image.addEventListener) {\n\t\t\t\timage.addEventListener('error', callback);\n\t\t\t\timage.addEventListener('load', () => callback());\n\t\t\t} else { // it's IE!\n\t\t\t\timage.attachEvent('onerror', callback);\n\t\t\t\timage.attachEvent('onload', () => callback());\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport { image };\n","/**\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","'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","/**\n * @file\n * This is the root component for your project.\n */\n\nimport React, { useEffect, useState } from 'react';\nimport { hot } from 'react-hot-loader/root';\nimport Layout from '@financial-times/g-components/article-layout';\nimport StoryTopper from '@financial-times/g-components/story-topper';\nimport Epilogue from '@financial-times/g-components/epilogue';\nimport { GridChild, GridRow, GridContainer } from '@financial-times/g-components/grid';\nimport GAudio from '@financial-times/g-audio';\n\nconst App = () => {\n  const [context, setContext] = useState(null);\n\n  useEffect(() => {\n    GAudio.init();\n  }, [context]);\n\n  useEffect(() => {\n    (async () => {\n      setContext({\n        ...(await (\n          await fetch(`./context-${document.querySelector('html').dataset.contentSlug}.json`)\n        ).json()),\n        buildTime: window.BUILD_TIME,\n      });\n    })();\n  }, []);\n\n  return context ? (\n    <Layout {...context}>\n      <main key=\"main\" role=\"main\">\n        <article className=\"article\" itemScope itemType=\"http://schema.org/Article\">\n          <GridContainer className=\"article-head\">\n            <GridRow>\n              <GridChild colspan=\"12 S11 Scenter M9 L7\">\n                <StoryTopper {...context} />\n              </GridChild>\n            </GridRow>\n          </GridContainer>\n          <div className=\"article-body o-editorial-typography-body\" itemProp=\"articleBody\">\n            <GridContainer>\n              <GridRow>\n                <GridChild colspan=\"12 S11 Scenter M9 L7\">\n                  <div className=\"o-editorial-layout-wrapper\">\n                    <div dangerouslySetInnerHTML={{ __html: context.storyContent }} />\n                  </div>\n                </GridChild>\n              </GridRow>\n            </GridContainer>\n          </div>\n          <Epilogue />\n        </article>\n      </main>\n    </Layout>\n  ) : null;\n};\n\nexport default hot(App);\n","module.exports = require(\"regenerator-runtime\");\n","import search from './search.js';\nimport mega from './mega.js';\nimport drawer from './drawer.js';\nimport subnav from './subnav.js';\nimport sticky from './sticky.js';\n\nclass Header {\n\n\tconstructor (headerEl) {\n\t\tif (!headerEl) {\n\t\t\theaderEl = document.querySelector('[data-o-component=\"o-header\"]');\n\t\t} else if (typeof headerEl === 'string') {\n\t\t\theaderEl = document.querySelector(headerEl);\n\t\t}\n\n\t\tif (headerEl.hasAttribute('data-o-header--js')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.headerEl = headerEl;\n\n\t\tsearch.init(this.headerEl);\n\t\tmega.init(this.headerEl);\n\t\tdrawer.init(this.headerEl);\n\t\tsubnav.init(this.headerEl);\n\t\tsticky.init(this.headerEl);\n\n\t\tthis.headerEl.removeAttribute('data-o-header--no-js');\n\t\tthis.headerEl.setAttribute('data-o-header--js', '');\n\t}\n\n\tstatic init (rootEl) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t}\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\t\tif (/\\bo-header\\b/.test(rootEl.getAttribute('data-o-component'))) {\n\t\t\treturn new Header(rootEl);\n\t\t}\n\n\t\treturn [].map.call(rootEl.querySelectorAll('[data-o-component=\"o-header\"]'), el => {\n\t\t\tif (!el.hasAttribute('data-o-header--js')) {\n\t\t\t\treturn new Header(el);\n\t\t\t}\n\t\t}).filter((header) => {\n\t\t\treturn header !== undefined;\n\t\t});\n\t}\n\n}\n\nexport default Header;\n","import Target from './target.js';\n\n// Some assistive technologies, like screen readers, suggest to press 'space'\n// when interacting with a link with a role of 'button'.\n// We need to ensure that we replicate this functionality that exists on a button element.\nfunction handleSpaceKeydown (e) {\n\t// if the pressed key is a space, we'll simulate a click\n\tif (e.keyCode === 32) {\n\t\tthis.toggle(e);\n\t}\n}\n\nclass Toggle {\n\n\tconstructor(toggleEl, config) {\n\t\tif (!Toggle._targets) {\n\t\t\tToggle._targets = new Map();\n\t\t}\n\n\t\tif (!toggleEl) {\n\t\t\treturn;\n\t\t} else if (!(toggleEl instanceof HTMLElement)) {\n\t\t\ttoggleEl = document.querySelector(toggleEl);\n\t\t}\n\n\t\tif (toggleEl.hasAttribute('data-o-toggle--js')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!config) {\n\t\t\tconfig = {};\n\t\t\t// Try to get config set declaratively on the element\n\t\t\tArray.prototype.forEach.call(toggleEl.attributes, (attr) => {\n\t\t\t\tif (attr.name.indexOf('data-o-toggle') === 0) {\n\t\t\t\t\t// Remove the prefix part of the data attribute name\n\t\t\t\t\tconst key = attr.name.replace('data-o-toggle-', '');\n\t\t\t\t\ttry {\n\t\t\t\t\t\t// If it's a JSON, a boolean or a number, we want it stored like that, and not as a string\n\t\t\t\t\t\t// We also replace all ' with \" so JSON strings are parsed correctly\n\t\t\t\t\t\tconfig[key] = JSON.parse(attr.value.replace(/\\'/g, '\"'));\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconfig[key] = attr.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Set the toggle callback if its a string.\n\t\tif (config.callback && typeof config.callback === 'string') {\n\t\t\t// Error if the callback is a string and a global function of that name does not exist.\n\t\t\tif (typeof window[config.callback] !== 'function') {\n\t\t\t\tthrow new Error(`Could not find o-toggle callback \"${config.callback}\".`);\n\t\t\t}\n\t\t\tthis.callback = window[config.callback];\n\t\t}\n\t\t// Set the toggle callback if its a funciton.\n\t\tif (config.callback && typeof config.callback === 'function') {\n\t\t\tthis.callback = config.callback;\n\t\t}\n\t\t// Error if some callback value has been given but has not been set.\n\t\tif (config.callback && !this.callback) {\n\t\t\tthrow new Error(`The o-toggle callback must be a string or function.`);\n\t\t}\n\n\t\t// Set the toggle element.\n\t\tthis.toggleEl = toggleEl;\n\n\t\tif (this.toggleEl.nodeName === 'A') {\n\t\t\tthis.toggleEl.setAttribute('role', 'button');\n\t\t\tthis.toggleEl.addEventListener('keydown', handleSpaceKeydown.bind(this));\n\t\t\t// If a user drags their mouse slightly when trying to interact with the toggle\n\t\t\t// it will trigger the 'drag and drop' functionality.\n\t\t\t// Regular buttons prevent this and ensure as long as the mouse is still above the\n\t\t\t// button that the click will register.\n\t\t\t// This will help users with motor impairments and those less familiar with a trackpad.\n\t\t\tthis.toggleEl.setAttribute('draggable', 'false');\n\t\t}\n\n\t\tthis.toggle = this.toggle.bind(this);\n\t\tthis.toggleEl.addEventListener('click', this.toggle);\n\n\t\tthis.toggleEl.setAttribute('data-o-toggle--js', 'true');\n\n\t\tthis.targetEl = config.target;\n\t\tif (!(this.targetEl instanceof HTMLElement)) {\n\t\t\tthis.targetEl = document.querySelector(this.targetEl);\n\t\t}\n\n\t\tif (Toggle._targets.get(this.targetEl) === undefined) {\n\t\t\tthis.target = new Toggle.Target(this);\n\t\t\tToggle._targets.set(this.targetEl, this.target);\n\t\t} else {\n\t\t\tthis.target = Toggle._targets.get(this.targetEl);\n\t\t}\n\n\t\tthis.target.addToggle(this);\n\t\tthis.target.close();\n\t}\n\n\topen() {\n\t\tthis.toggleEl.setAttribute('aria-expanded', 'true');\n\t}\n\n\tclose() {\n\t\tthis.toggleEl.setAttribute('aria-expanded', 'false');\n\t}\n\n\t// toggle is bound to the Toggle instance in the constructor\n\ttoggle(e) {\n\n\t\tthis.target.toggle();\n\n\t\tif(e) {\n\t\t\te.preventDefault();\n\t\t}\n\n\t\tif (this.callback){\n\t\t\tconst stateName = this.target.isOpen() ? 'open' : 'close';\n\t\t\tthis.callback(stateName, e);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tif (this.toggleEl.nodeName === 'A') {\n\t\t\tthis.toggleEl.removeEventListener('keydown', handleSpaceKeydown);\n\t\t}\n\t\tthis.toggleEl.removeEventListener('click', this.toggle);\n\t\tthis.toggleEl.removeAttribute('aria-expanded');\n\t\tthis.toggleEl.removeAttribute('role');\n\t\tthis.toggleEl.removeAttribute('data-o-toggle--js');\n\n\t\tthis.target.removeToggle(this);\n\n\t\tthis.target = undefined;\n\t\tthis.toggleEl = undefined;\n\t\tthis.callback = undefined;\n\t}\n\n\tstatic init(el, config) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t} else if (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\tconst toggleEls = el.querySelectorAll('[data-o-component=\"o-toggle\"]');\n\t\tconst toggles = [];\n\t\tfor (const toggleEl of toggleEls) {\n\t\t\tif (!toggleEl.hasAttribute('data-o-toggle--js')) {\n\t\t\t\ttoggles.push(new Toggle(toggleEl, config));\n\t\t\t}\n\t\t}\n\t\treturn toggles;\n\t}\n}\n\nToggle.Target = Target;\nexport default Toggle;\n","import oTracking from '@financial-times/o-tracking';\nimport oGrid from '@financial-times/o-grid';\nimport oViewport from '@financial-times/o-viewport';\nimport readyState from 'ready-state';\n\nfunction getCookie (name) {\n\tconst regex = new RegExp(`(?:^| )${name}=([^;]+)`);\n\tconst match = document.cookie && document.cookie.match(regex);\n\treturn match ? match[1] : null;\n}\n\nconst getLibrarySession = () => getCookie('FTSession_PubLib');\n\nfunction getUserData () {\n\t// https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation\n\tconst networkInfo =\n\t\tnavigator.connection ||\n\t\tnavigator.mozConnection ||\n\t\tnavigator.webkitConnection;\n\n\treturn {\n\t\tlayout: oGrid.getCurrentLayout(),\n\t\torientation: oViewport.getOrientation(),\n\t\tconnectionType: networkInfo ? networkInfo.type : undefined,\n\t\tft_session_publib: getLibrarySession()\n\t};\n}\n\nfunction getQueryParams (queryString = window.location.search) {\n\tconst result = {};\n\tconst properties = ['segmentid', 'cpccampaign'];\n\tconst searchParams = new URLSearchParams(queryString);\n\n\t// NOTE: undefined parameters will return null values so fallback to undefined\n\tproperties.forEach((property) => {\n\t\tconst value = searchParams.get(property);\n\n\t\tif (value) {\n\t\t\tresult[property] = value;\n\t\t}\n\t});\n\n\treturn result;\n}\n\nfunction getErrorPageParams (queryString = window.location.search) {\n\tconst searchParams = new URLSearchParams(queryString);\n\n\tconst errorStatus = searchParams.get('nextErrorStatus');\n\tconst errorReason = searchParams.get('nextErrorReason');\n\n\tif (errorStatus || errorReason) {\n\t\treturn {\n\t\t\terrorStatus,\n\t\t\terrorReason,\n\t\t\turl: window.parent.location.toString(),\n\t\t\treferrer: window.parent.document.referrer,\n\t\t};\n\t}\n}\n\nfunction transformListToObject (list) {\n\tconst result = {};\n\n\tlist.split(',').map(flag => {\n\t\tconst [name, value] = flag.split(':');\n\n\t\tif (name && value) {\n\t\t\tresult[name] = value;\n\t\t}\n\t});\n\n\treturn result;\n}\n\n// Map of property names received to property names specified by the data team\n// <https://sites.google.com/ft.com/ftproductanalytics/tracking-documents>\nconst dataPropertyMap = {\n\tappName: 'app',\n\tcontentId: 'rootContentId',\n\tcontentType: 'rootContentType',\n\tconceptId: 'rootConceptId',\n\tconceptType: 'rootConceptType',\n\tsegmentid: 'marketing_segment_id',\n\tcpccampaign: 'cpc_campaign',\n\tabTestState: 'active_ammit_flags'\n};\n\nfunction transformContextData (contextData) {\n\tconst result = {};\n\n\tObject.keys(contextData).forEach((key) => {\n\t\tlet value = contextData[key];\n\n\t\tif (key === 'abTestState') {\n\t\t\tvalue = transformListToObject(value);\n\t\t}\n\n\t\t// HACK: ensure content UUID and type match the audio tracking spec\n\t\t// <https://docs.google.com/spreadsheets/d/1YjXO0_3Xojact4sU24tIo_Nnv7e38zbRHWjwmOfHkb0/edit?usp=sharing>\n\t\tif (key === 'contentId') {\n\t\t\tresult.content = { ...result.content, uuid: value };\n\t\t}\n\n\t\tif (key === 'contentType') {\n\t\t\tresult.content = { ...result.content, asset_type: value };\n\t\t}\n\n\t\tresult[dataPropertyMap[key] || key] = value;\n\t});\n\n\treturn result;\n}\n\nfunction broadcast (name, data, bubbles = true) {\n\tconst rootEl = Element.prototype.isPrototypeOf(this) ? this : document.body;\n\n\t// This requires a polyfill for IE\n\t// <https://caniuse.com/#feat=customevent>\n\tconst event = new CustomEvent(name, {\n\t\tbubbles: bubbles,\n\t\tcancelable: true,\n\t\tdetail: data\n\t});\n\n\trootEl.dispatchEvent(event);\n}\n\nvar n={t:!1,i:!1,o:3e4},t=window,e=t.console,i=document,r=t.navigator,o=t.performance,u=function(){return r.deviceMemory},c=function(){return r.hardwareConcurrency},a=function(){return o&&!!o.getEntriesByType&&!!o.now&&!!o.mark},f=\"4g\",s=!1,l=function(){return !!(c()&&c()<=4)||!!(u()&&u()<=4)},m=function(n,t){switch(n){case\"slow-2g\":case\"2g\":case\"3g\":return !0;default:return l()||t}},v={u:!1},d=function(n){i.hidden&&(n(),v.u=i.hidden);},p=function(n){return parseFloat(n.toFixed(4))},g=function(n){return \"number\"!=typeof n?null:p(n/Math.pow(1024,2))},b=[2e3,4e3],h=[2500,4e3],T=[.1,.25],k={ttfb:[200,500],fp:b,fcp:b,lcp:h,lcpFinal:h,fid:[100,300],cls:T,clsFinal:T,tbt:[300,600],ntbt:[400,600]},y=function(n,t){return k[n]?t<=k[n][0]?\"good\":t<=k[n][1]?\"needsImprovement\":\"poor\":null},w=function(e,i,o){var a;a=function(){v.u&&e.indexOf(\"Final\")<0||!n.analyticsTracker||n.analyticsTracker({metricName:e,data:i,eventProperties:o||{},navigatorInformation:r?{deviceMemory:u()||0,hardwareConcurrency:c()||0,serviceWorkerStatus:\"serviceWorker\"in r?r.serviceWorker.controller?\"controlled\":\"supported\":\"unsupported\",isLowEndDevice:l(),isLowEndExperience:m(f,s)}:{},vitalsScore:y(e,i)});},\"requestIdleCallback\"in t?t.requestIdleCallback(a,{timeout:3e3}):a();},_=function(n,t,e){Object.keys(t).forEach((function(n){\"number\"==typeof t[n]&&(t[n]=p(t[n]));})),w(n,t,e);},F=function(t,e,i){var r=p(t);r<=n.o&&r>=0&&w(e,r,i);},E={},x={value:0},D={value:0},I={value:0},P={value:{beacon:0,css:0,fetch:0,img:0,other:0,script:0,total:0,xmlhttprequest:0}},j={value:0},q={value:0},C=function(n){var t=n.pop();t&&!t.s&&t.value&&(x.value+=t.value);},L={},O=function(n,t){try{var i=new PerformanceObserver((function(n){t(n.getEntries());}));return i.observe({type:n,buffered:!0}),i}catch(n){e.warn(\"Perfume.js:\",n);}return null},S=function(n){L[n]&&L[n].disconnect(),delete L[n];},W=function(n){var t=n.pop();t&&F(t.processingStart-t.startTime,\"fid\",{performanceEntry:t}),S(1),F(I.value,\"lcp\"),L[3]&&\"function\"==typeof L[3].takeRecords&&L[3].takeRecords(),F(x.value,\"cls\"),setTimeout((function(){F(j.value,\"tbt\"),_(\"dataConsumption\",P.value);}),1e4);},B=function(n){n.forEach((function(n){if(!(\"self\"!==n.name||n.startTime<D.value)){var t=n.duration-50;t>0&&(j.value+=t,q.value+=t);}}));},M=function(n){n.forEach((function(n){\"first-paint\"===n.name?F(n.startTime,\"fp\"):\"first-contentful-paint\"===n.name&&(D.value=n.startTime,F(D.value,\"fcp\"),L[4]=O(\"longtask\",B),S(0));}));},z=function(n){var t=n.pop();t&&(I.value=t.renderTime||t.loadTime);},H=function(n){n.forEach((function(n){n.identifier&&F(n.startTime,n.identifier);}));},N=function(t){t.forEach((function(t){if(n.t&&_(\"resourceTiming\",t),t.decodedBodySize&&t.initiatorType){var e=t.decodedBodySize/1e3;P.value[t.initiatorType]+=e,P.value.total+=e;}}));},R=function(){L[2]&&(F(I.value,\"lcpFinal\"),S(2)),L[3]&&(\"function\"==typeof L[3].takeRecords&&L[3].takeRecords(),F(x.value,\"clsFinal\"),S(3));},A=function(n){var t=\"usageDetails\"in n?n.usageDetails:{};_(\"storageEstimate\",{quota:g(n.quota),usage:g(n.usage),caches:g(t.caches),indexedDB:g(t.indexedDB),serviceWorker:g(t.serviceWorkerRegistrations)});},G=0,J=function(){function e(e){if(void 0===e&&(e={}),this.l=\"6.4.0\",n.analyticsTracker=e.analyticsTracker,n.t=!!e.resourceTiming,n.i=!!e.elementTiming,n.o=e.maxMeasureTime||n.o,a()){\"PerformanceObserver\"in t&&(L[0]=O(\"paint\",M),L[1]=O(\"first-input\",W),L[2]=O(\"largest-contentful-paint\",z),n.t&&O(\"resource\",N),L[3]=O(\"layout-shift\",C),n.i&&O(\"element\",H)),void 0!==i.hidden&&i.addEventListener(\"visibilitychange\",d.bind(this,R));var u=function(){if(!a())return {};var n=o.getEntriesByType(\"navigation\")[0];if(!n)return {};var t=n.responseStart,e=n.responseEnd;return {fetchTime:e-n.fetchStart,workerTime:n.workerStart>0?e-n.workerStart:0,totalTime:e-n.requestStart,downloadTime:e-t,timeToFirstByte:t-n.requestStart,headerSize:n.transferSize-n.encodedBodySize||0,dnsLookupTime:n.domainLookupEnd-n.domainLookupStart,redirectTime:n.redirectEnd-n.redirectStart}}();_(\"navigationTiming\",u),u.timeToFirstByte&&F(u.timeToFirstByte,\"ttfb\"),_(\"networkInformation\",function(){if(\"connection\"in r){var n=r.connection;return \"object\"!=typeof n?{}:(f=n.effectiveType,s=!!n.saveData,{downlink:n.downlink,effectiveType:n.effectiveType,rtt:n.rtt,saveData:!!n.saveData})}return {}}()),r&&r.storage&&\"function\"==typeof r.storage.estimate&&r.storage.estimate().then(A);}}return e.prototype.start=function(n){a()&&!E[n]&&(E[n]=!0,o.mark(\"mark_\"+n+\"_start\"),v.u=!1);},e.prototype.end=function(n,t,e){if(void 0===t&&(t={}),void 0===e&&(e=!0),a()&&E[n]){o.mark(\"mark_\"+n+\"_end\"),delete E[n];var i=function(n){o.measure(n,\"mark_\"+n+\"_start\",\"mark_\"+n+\"_end\");var t=o.getEntriesByName(n).pop();return t&&\"measure\"===t.entryType?t.duration:-1}(n);e&&_(n,p(i),t);}},e.prototype.endPaint=function(n,t){var e=this;setTimeout((function(){e.end(n,t);}));},e.prototype.clear=function(n){delete E[n],o.clearMarks&&(o.clearMarks(\"mark_\"+n+\"_start\"),o.clearMarks(\"mark_\"+n+\"_end\"));},e.prototype.markNTBT=function(){var n=this;this.start(\"ntbt\"),q.value=0,clearTimeout(G),G=setTimeout((function(){n.end(\"ntbt\",{},!1),F(q.value,\"ntbt\"),q.value=0;}),2e3);},e}();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar seedRandom = createCommonjsModule(function (module) {\n\r\nvar width = 256;// each RC4 output is 0 <= x < 256\r\nvar chunks = 6;// at least six RC4 outputs for each double\r\nvar digits = 52;// there are 52 significant digits in a double\r\nvar pool = [];// pool: entropy pool starts empty\r\nvar GLOBAL = typeof commonjsGlobal === 'undefined' ? window : commonjsGlobal;\r\n\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\nvar startdenom = Math.pow(width, chunks),\r\n    significance = Math.pow(2, digits),\r\n    overflow = significance * 2,\r\n    mask = width - 1;\r\n\r\n\r\nvar oldRandom = Math.random;\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\nmodule.exports = function(seed, options) {\r\n  if (options && options.global === true) {\r\n    options.global = false;\r\n    Math.random = module.exports(seed, options);\r\n    options.global = true;\r\n    return Math.random;\r\n  }\r\n  var use_entropy = (options && options.entropy) || false;\r\n  var key = [];\r\n\r\n  // Flatten the seed string or build one from local entropy if needed.\r\n  var shortseed = mixkey(flatten(\r\n    use_entropy ? [seed, tostring(pool)] :\r\n    0 in arguments ? seed : autoseed(), 3), key);\r\n\r\n  // Use the seed to initialize an ARC4 generator.\r\n  var arc4 = new ARC4(key);\r\n\r\n  // Mix the randomness into accumulated entropy.\r\n  mixkey(tostring(arc4.S), pool);\r\n\r\n  // Override Math.random\r\n\r\n  // This function returns a random double in [0, 1) that contains\r\n  // randomness in every bit of the mantissa of the IEEE 754 value.\r\n\r\n  return function() {         // Closure to return a random double:\r\n    var n = arc4.g(chunks),             // Start with a numerator n < 2 ^ 48\r\n        d = startdenom,                 //   and denominator d = 2 ^ 48.\r\n        x = 0;                          //   and no 'extra last byte'.\r\n    while (n < significance) {          // Fill up all significant digits by\r\n      n = (n + x) * width;              //   shifting numerator and\r\n      d *= width;                       //   denominator and generating a\r\n      x = arc4.g(1);                    //   new least-significant-byte.\r\n    }\r\n    while (n >= overflow) {             // To avoid rounding up, before adding\r\n      n /= 2;                           //   last byte, shift everything\r\n      d /= 2;                           //   right using integer Math until\r\n      x >>>= 1;                         //   we have exactly the desired bits.\r\n    }\r\n    return (n + x) / d;                 // Form the number within [0, 1).\r\n  };\r\n};\r\n\r\nmodule.exports.resetGlobal = function () {\r\n  Math.random = oldRandom;\r\n};\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation.  The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4.  Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n/** @constructor */\r\nfunction ARC4(key) {\r\n  var t, keylen = key.length,\r\n      me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n  // The empty key [] is treated as [0].\r\n  if (!keylen) { key = [keylen++]; }\r\n\r\n  // Set up S using the standard key scheduling algorithm.\r\n  while (i < width) {\r\n    s[i] = i++;\r\n  }\r\n  for (i = 0; i < width; i++) {\r\n    s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n    s[j] = t;\r\n  }\r\n\r\n  // The \"g\" method returns the next (count) outputs as one number.\r\n  (me.g = function(count) {\r\n    // Using instance members instead of closure state nearly doubles speed.\r\n    var t, r = 0,\r\n        i = me.i, j = me.j, s = me.S;\r\n    while (count--) {\r\n      t = s[i = mask & (i + 1)];\r\n      r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n    }\r\n    me.i = i; me.j = j;\r\n    return r;\r\n    // For robust unpredictability discard an initial batch of values.\r\n    // See http://www.rsa.com/rsalabs/node.asp?id=2009\r\n  })(width);\r\n}\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\nfunction flatten(obj, depth) {\r\n  var result = [], typ = (typeof obj)[0], prop;\r\n  if (depth && typ == 'o') {\r\n    for (prop in obj) {\r\n      try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n    }\r\n  }\r\n  return (result.length ? result : typ == 's' ? obj : obj + '\\0');\r\n}\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\nfunction mixkey(seed, key) {\r\n  var stringseed = seed + '', smear, j = 0;\r\n  while (j < stringseed.length) {\r\n    key[mask & j] =\r\n      mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n  }\r\n  return tostring(key);\r\n}\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto if available.\r\n//\r\n/** @param {Uint8Array=} seed */\r\nfunction autoseed(seed) {\r\n  try {\r\n    GLOBAL.crypto.getRandomValues(seed = new Uint8Array(width));\r\n    return tostring(seed);\r\n  } catch (e) {\r\n    return [+new Date, GLOBAL, GLOBAL.navigator && GLOBAL.navigator.plugins,\r\n            GLOBAL.screen, tostring(pool)];\r\n  }\r\n}\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\nfunction tostring(a) {\r\n  return String.fromCharCode.apply(0, a);\r\n}\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool.  Because we do\r\n// not want to intefere with determinstic PRNG state later,\r\n// seedrandom will not call Math.random on its own again after\r\n// initialization.\r\n//\r\nmixkey(Math.random(), pool);\n});\nvar seedRandom_1 = seedRandom.resetGlobal;\n\nfunction seedIsInSample (seed, percent) {\n\tconst randomNumberGenerator = seedRandom(seed);\n\tconst pseudoRandomNumber = randomNumberGenerator();\n\n\treturn Math.round(pseudoRandomNumber * 100) <= percent;\n}\n\nconst getSpoorId = () => getCookie('spoor-id');\n\n// @see \"Important metrics to measure\" https://web.dev/metrics\nconst requiredMetrics = [\n\t'domInteractive',\n\t'domComplete',\n\t'timeToFirstByte',\n\t'firstPaint',\n\t'largestContentfulPaint',\n\t'firstInputDelay',\n\t'cumulativeLayoutShift',\n\t'firstContentfulPaint',\n\t'totalBlockingTime'\n];\n\nconst samplePercentage = 10;\n\nconst isContextComplete = (context) => {\n\treturn requiredMetrics.every((metric) => typeof context[metric] === 'number');\n};\n\nconst realUserMonitoringForPerformance = () => {\n\n\t// Check browser support.\n\t// @see https://developer.mozilla.org/en-US/docs/Web/API/PerformanceLongTaskTiming\n\tif (!'PerformanceLongTaskTiming' in window) return;\n\n\tconst spoorId = getSpoorId();\n\n\t// Gather metrics for only a cohort of users.\n\tif (!seedIsInSample(spoorId, samplePercentage)) return;\n\n\t// Proceed only if the page load event is a \"navigate\".\n\t// @see: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/type\n\t// When testing, you will need to open a new browser window and paste the URL in i.e. simply reloading the page will not work.\n\tconst navigation = performance.getEntriesByType('navigation') && performance.getEntriesByType('navigation')[0];\n\tif (!navigation || navigation.type !== 'navigate') return;\n\n\tconst context = {};\n\n\treadyState.complete.then(() => {\n\t\t// <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/domInteractive>\n\t\tcontext.domInteractive = Math.round(navigation.domInteractive);\n\t\t// <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming/domComplete>\n\t\tcontext.domComplete = Math.round(navigation.domComplete);\n\t});\n\n\t/**\n\t * analyticsTracker()\n\t *\n\t * This function is called every time one of the performance events occurs.\n\t * The \"final\" event should be `firstInputDelay`, which is triggered by any \"input\" event (most likely to be a click.)\n\t * Once all the metrics are present, it fires a broadcast() to the Spoor API.\n\t */\n\tlet hasAlreadyBroadcast = false;\n\n\tconst analyticsTracker = (({ metricName, data}) => {\n\t\tif (hasAlreadyBroadcast) return;\n\n\t\tif (metricName === 'fid') {\n\t\t\tcontext.firstInputDelay = Math.round(data);\n\t\t} else if (metricName === 'lcp') {\n\t\t\t//This fires twice, we are collecting the 'first firing' - see PR notes for more context https://github.com/Financial-Times/n-tracking/pull/86\n\t\t\tcontext.largestContentfulPaint = Math.round(data);\n\t\t} else if (metricName === 'ttfb') {\n\t\t\tcontext.timeToFirstByte = Math.round(data);\n\t\t} else if (metricName === 'fp') {\n\t\t\tcontext.firstPaint = Math.round(data);\n\t\t} else if (metricName === 'fcp'){\n\t\t\tcontext.firstContentfulPaint = Math.round(data);\n\t\t} else if (metricName === 'cls') {\n\t\t\tcontext.cumulativeLayoutShift = data;\n\t\t} else if (metricName === 'tbt') {\n\t\t\tcontext.totalBlockingTime = Math.round(data);\n\t\t}\n\n\t\tcontext.url = window.document.location.href || null;\n\n\t\tif (isContextComplete(context)) {\n\t\t\tconsole.log({ performanceMetrics: context }); // eslint-disable-line no-console\n\n\t\t\tbroadcast('oTracking.event', {\n\t\t\t\taction: 'performance',\n\t\t\t\tcategory: 'page',\n\t\t\t\t...context\n\t\t\t});\n\n\t\t\thasAlreadyBroadcast = true;\n\t\t}\n\t});\n\n\tnew J({\n\t\tanalyticsTracker,\n\t\tlogging: false\n\t});\n};\n\n// Create markers at each of these percentage points\nconst DEPTH_MARKERS = [25, 50, 75, 100];\n\nconst defaultOptions = {\n\tonScroll: () => {},\n\ttarget: 'body',\n\tdebug: false\n};\n\nclass ScrollDepth {\n\tconstructor (options) {\n\t\tthis.options = { ...defaultOptions, ...options };\n\n\t\tthis.init();\n\t}\n\n\tinit () {\n\t\tconst target = document.querySelector(this.options.target);\n\n\t\tif (target && 'IntersectionObserver' in window) {\n\t\t\tthis.observer = new IntersectionObserver(this.handleIntersection.bind(this));\n\n\t\t\ttarget.style.position = 'relative';\n\n\t\t\tDEPTH_MARKERS.forEach((percentage) => {\n\t\t\t\tconst marker = document.createElement('div');\n\t\t\t\tmarker.className = 'n-tracking-scroll-depth-marker';\n\t\t\t\tmarker.style.position = 'absolute';\n\t\t\t\tmarker.style.top = `${percentage}%`;\n\t\t\t\tmarker.style.bottom = '0';\n\t\t\t\tmarker.style.width = '100%';\n\t\t\t\tmarker.style.zIndex = '-1';\n\t\t\t\tmarker.setAttribute('data-scroll-depth', percentage);\n\n\t\t\t\ttarget.appendChild(marker);\n\n\t\t\t\tthis.observer.observe(marker);\n\t\t\t});\n\t\t}\n\t}\n\n\thandleIntersection (changes) {\n\t\tchanges.forEach((change) => {\n\t\t\tif (change.isIntersecting || change.intersectionRatio > 0) {\n\t\t\t\tconst marker = change.target;\n\t\t\t\tconst scrollDepth = marker.getAttribute('data-scroll-depth');\n\n\t\t\t\tthis.options.onScroll(scrollDepth);\n\n\t\t\t\tif (this.options.debug) {\n\t\t\t\t\tconsole.log('ScrollDepth', { marker: scrollDepth }); // eslint-disable-line no-console\n\t\t\t\t}\n\n\t\t\t\tif (marker.parentNode) {\n\t\t\t\t\tmarker.parentNode.removeChild(marker);\n\t\t\t\t}\n\n\t\t\t\tthis.observer.unobserve(marker);\n\t\t\t}\n\t\t});\n\t};\n}\n\n// Automatically stop the attention timer after this time\nconst ATTENTION_INTERVAL = 15000;\n\n// These events re/start the attention timer\nconst ATTENTION_EVENTS = [\n\t'load',\n\t'click',\n\t'focus',\n\t'scroll',\n\t'mousemove',\n\t'touchstart',\n\t'touchend',\n\t'touchcancel',\n\t'touchleave'\n];\n\n// These events pause the attention timer\nconst ATTENTION_LOST_EVENTS = ['blur'];\n\n// These events will trigger the exit callback\nconst PAGE_EXIT_EVENTS = ['beforeunload', 'unload', 'pagehide'];\n\nconst defaultOptions$1 = {\n\tonExit: () => {},\n\tdebug: false\n};\n\nclass AttentionTime {\n\tconstructor (options) {\n\t\tthis.options = { ...defaultOptions$1, ...options };\n\n\t\tthis.totalAttentionTime = 0;\n\t\tthis.hasExited = false;\n\n\t\tthis.init();\n\t}\n\n\tinit () {\n\t\tATTENTION_EVENTS.forEach((event) => {\n\t\t\twindow.addEventListener(event, this.startAttention.bind(this));\n\t\t});\n\n\t\tATTENTION_LOST_EVENTS.forEach((event) => {\n\t\t\twindow.addEventListener(event, this.endAttention.bind(this));\n\t\t});\n\n\t\tPAGE_EXIT_EVENTS.forEach((event) => {\n\t\t\twindow.addEventListener(event, this.handleExit.bind(this));\n\t\t});\n\n\t\tdocument.addEventListener('visibilitychange', this.handleVisibilityChange.bind(this));\n\n\t\tconst videoPlayers = document.querySelectorAll('video');\n\n\t\tvideoPlayers.forEach((element) => {\n\t\t\telement.addEventListener('playing', this.startConstantAttention.bind(this));\n\n\t\t\telement.addEventListener('pause', this.endConstantAttention.bind(this));\n\n\t\t\telement.addEventListener('ended', this.endConstantAttention.bind(this));\n\t\t});\n\t}\n\n\tstartAttention (event) {\n\t\tclearTimeout(this.attentionTimeout);\n\n\t\tif (!this.startAttentionTime) {\n\t\t\tthis.startAttentionTime = Date.now();\n\t\t}\n\n\t\tthis.attentionTimeout = setTimeout(\n\t\t\tthis.endAttention.bind(this, { type: 'timeout' }),\n\t\t\tATTENTION_INTERVAL\n\t\t);\n\n\t\tif (this.options.debug) {\n\t\t\tconsole.log('AttentionTime start', { event: event.type }); // eslint-disable-line no-console\n\t\t}\n\t}\n\n\tendAttention (event) {\n\t\tif (this.startAttentionTime) {\n\t\t\tclearTimeout(this.attentionTimeout);\n\n\t\t\tthis.totalAttentionTime = this.getAttentionTime();\n\t\t\tthis.startAttentionTime = null;\n\t\t}\n\n\t\tif (this.options.debug) {\n\t\t\tconsole.log('AttentionTime end', { event: event.type, time: this.totalAttentionTime }); // eslint-disable-line no-console\n\t\t}\n\t}\n\n\tstartConstantAttention () {\n\t\tthis.constantAttentionInterval = setInterval(\n\t\t\tthis.startAttention.bind(this),\n\t\t\tATTENTION_INTERVAL\n\t\t);\n\t}\n\n\tendConstantAttention (event) {\n\t\tthis.endAttention(event);\n\t\tclearInterval(this.constantAttentionInterval);\n\t}\n\n\tgetAttentionTime () {\n\t\tlet currentAttentionTime = 0;\n\n\t\tif (this.startAttentionTime) {\n\t\t\tcurrentAttentionTime = Math.round(\n\t\t\t\t(Date.now() - this.startAttentionTime) / 1000\n\t\t\t);\n\t\t}\n\n\t\treturn this.totalAttentionTime + currentAttentionTime;\n\t}\n\n\thandleVisibilityChange (event) {\n\t\tif (document.visibilityState === 'hidden') {\n\t\t\tthis.endAttention(event);\n\t\t} else {\n\t\t\tthis.startAttention(event);\n\t\t}\n\t}\n\n\thandleExit (event) {\n\t\tif (this.hasExited) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.endAttention(event);\n\n\t\tif (this.options.debug) {\n\t\t\tconsole.log('AttentionTime', { event: event.type, time: this.totalAttentionTime }); // eslint-disable-line no-console\n\t\t}\n\n\t\tthis.options.onExit(this.totalAttentionTime);\n\n\t\tthis.hasExited = true;\n\t}\n}\n\n// TODO: The tracking event data for the `page:interaction` and `page:scrolldepth`\n// events is needlessly different. We should work with the data team to align it.\nconst pageAttention = (options = {}) => {\n\tconst onExit = (attentionTime) => {\n\t\tbroadcast('oTracking.event', {\n\t\t\tcategory: 'page',\n\t\t\taction: 'interaction',\n\t\t\tcontext: {\n\t\t\t\tattention: {\n\t\t\t\t\ttotal: attentionTime\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tconst attention = new AttentionTime({ ...options, onExit });\n\n\tconst onScroll = (scrollDepth) => {\n\t\tbroadcast('oTracking.event', {\n\t\t\tcategory: 'page',\n\t\t\taction: 'scrolldepth',\n\t\t\tmeta: {\n\t\t\t\tpercentagesViewed: scrollDepth,\n\t\t\t\tattention: attention.getAttentionTime()\n\t\t\t}\n\t\t});\n\t};\n\n\tnew ScrollDepth({ ...options, onScroll });\n};\n\nconst MAX_LENGTH = 100;\n\nconst TRUNCATED_TEXT = ' … ';\n\nvar getTextExcerpt = (text) => {\n\tif (text.length > MAX_LENGTH) {\n\t\tconst newLength = MAX_LENGTH - TRUNCATED_TEXT.length;\n\t\tconst left = Math.floor(newLength / 2);\n\t\tconst right = Math.ceil(newLength / 2);\n\n\t\treturn text.substr(0, left) + TRUNCATED_TEXT + text.substr(right * -1);\n\t} else {\n\t\treturn text;\n\t}\n};\n\nconst textCopying = () => {\n\tdocument.addEventListener('copy', (event) => {\n\t\tconst context = {\n\t\t\tnodeName: event.target.nodeName.toLowerCase()\n\t\t};\n\n\t\tif (window.getSelection) {\n\t\t\tconst selection = window.getSelection().toString().trim();\n\n\t\t\tcontext.characters = selection.length;\n\t\t\tcontext.words = selection.split(/\\s+/).length;\n\t\t\tcontext.selection = getTextExcerpt(selection);\n\t\t}\n\n\t\tbroadcast('oTracking.event', {\n\t\t\taction: 'copy',\n\t\t\tcategory: 'text',\n\t\t\tcontext\n\t\t});\n\t});\n};\n\n\n\nvar index = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\trealUserMonitoringForPerformance: realUserMonitoringForPerformance,\n\tpageAttention: pageAttention,\n\ttextCopying: textCopying\n});\n\nconst SPOOR_API_INGEST_URL = 'https://spoor-api.ft.com/ingest';\n\nfunction init ({ appContext, extraContext, pageViewContext }) {\n\tconst queryParams = getQueryParams();\n\n\tconst options = {\n\t\tserver: SPOOR_API_INGEST_URL,\n\t\t// This data will be appended to _all_ events captured by o-tracking\n\t\tcontext: transformContextData({\n\t\t\t...queryParams,\n\t\t\t...appContext,\n\t\t\t...extraContext\n\t\t}),\n\t\tuser: getUserData(),\n\t\t// Using the Beacon API ensures that no tracking event data is lost\n\t\t// when the document is being unloaded, which happens when navigating\n\t\t// to a different page.\n\t\tuseSendBeacon: true\n\t};\n\n\toTracking.init(options);\n\n\t// Automatically trigger the page view event unless we're in an iframe\n\tif (window === window.top || window.location.hostname === 'errors-next.ft.com') {\n\t\tconst errorPageParams = getErrorPageParams();\n\n\t\toTracking.page({\n\t\t\t...errorPageParams,\n\t\t\t...pageViewContext,\n\t\t});\n\t}\n\n\t//  Initialise click event tracking for interactive elements\n\toTracking.click.init('cta');\n\n\treturn oTracking;\n}\n\nexport { SPOOR_API_INGEST_URL, broadcast, init, index as trackers };\n","import {set, get, destroy as destroySetting} from './core/settings.js';\nimport {setUser, init as initUser} from './core/user.js';\nimport {init as initSession} from './core/session.js';\nimport {init as initSend} from './core/send.js';\nimport {event} from './events/custom.js';\nimport {page} from './events/page-view.js';\nimport {click} from './events/click.js';\nimport core from './core.js';\nimport { merge, broadcast } from './utils.js';\nimport {view} from './events/component-view.js';\n\nconst initEvent = event.init;\nconst initPage = page.init;\n\n/**\n * The version of the tracking module.\n *\n * @type {string}\n */\nconst version = '4.0.1';\n\n/**\n * The source of this event.\n *\n * @type {string}\n */\nconst source = 'o-tracking';\n\n/**\n * Update the tracking configuration with any state changes. The supplied\n * config is merged with any existing config; to unset a value, set it as\n * null or undefined.\n *\n * @param {object} newConfig The configuration object to merge in - see init()\n * @returns {void}\n */\nfunction updateConfig(newConfig) {\n\tlet config = get('config') || {};\n\n\tconfig = merge(config, newConfig);\n\tset('config', config);\n\n\tif (config.user && config.user.user_id) {\n\t\tsetUser(config.user.user_id);\n\t}\n}\n\n/**\n * Clean up the tracking module.\n *\n * @returns {void}\n */\nfunction destroy() {\n\ttracking.initialised = false;\n\n\tdestroySetting('config');\n\tdestroySetting('page_sent');\n}\n/**\n * Overload toString method to show the version.\n *\n * @returns {string} The module's version.\n */\nfunction toString() {\n\treturn 'oTracking version ' + version;\n}\n\n/**\n * Initialises the Tracking object.\n *\n * All options are optional, if a configuration option is missing, the module\n * will try to initialise using any configuration found in the DOM using the\n * script config tag.\n *\n * @example\n * <!-- DOM configuration settings -->\n * <script type='application/json' data-o-tracking-config>\n * page: {\n * \t product: 'desktop'\n * },\n * user: {\n *   user_id: '023ur9jfokwenvcklwnfiwhfoi324'\n * }\n * </script>\n *\n * @param {object} config \t\t\t\t\t- See {@link Tracking} for the configuration options.\n * @param {boolean=} config.test             - Optional, if `true`, the data sent to Spoor will be marked as test data.\n * @param {string=} config.configId          - Optional\n * @param {string=} config.session           - Optional\n * @param {string=} config.cookieDomain      - Optional\n * @param {object=} config.context           - Optional\n * @param {object=} config.user              - Optional\n * @param {object=} config.system            - Optional\n * @param {object=} config.device            - Optional\n *\n * @returns {tracking|null} - The initialised tracking object or null if no configuration has been given.\n */\nfunction init(config = {}) {\n\tif (tracking.initialised) {\n\t\treturn tracking;\n\t}\n\n\tconst hasDeclarativeConfig = Boolean(\n\t\tgetDeclarativeConfigElement()\n\t);\n\n\tif (hasDeclarativeConfig) {\n\t\tconfig = getDeclarativeConfig(config);\n\t}\n\n\t// If there's no config, there is no point initialising!\n\t// http://stackoverflow.com/a/32108184\n\tif (Object.keys(config).length === 0 && config.constructor === Object) {\n\t\treturn null;\n\t}\n\n\tset('version', version);\n\tset('source', source);\n\n\tset('page_sent', false);\n\n\tconst cookieDomain = config ? config.cookieDomain : '';\n\n\t// Set up the user from stored - may later be updated by config\n\tinitUser('', cookieDomain);\n\tupdateConfig(config);\n\n\t// Session\n\tinitSession(config.session);\n\n\t// Initialize the sending queue.\n\tinitSend();\n\n\tinitEvent();\n\tinitPage();\n\ttracking.initialised = true;\n\treturn tracking;\n}\n\n/**\n * Retrieves the <script type='application/json' data-o-tracking-config> element that is in the DOM, otherwise returns null.\n *\n * @private\n * @returns {HTMLElement|null} - Returns the <script> element if found otherwise returns null.\n */\nfunction getDeclarativeConfigElement() {\n\treturn document.querySelector('script[data-o-tracking-config]');\n}\n\n/**\n * Initialises additional data using the <script type='application/json' data-o-tracking-config> element in the DOM.\n *\n * @private\n * @param {object} options - A partially, or fully filled options object.  If\n *                           an option is missing, this method will attempt to\n *                           initialise it from the DOM.\n * @returns {object|boolean} - The options modified to include the options gathered from the DOM\n */\nfunction getDeclarativeConfig(options) {\n\tconst configEl = getDeclarativeConfigElement();\n\tlet declarativeConfigString;\n\tif (configEl) {\n\t\tdeclarativeConfigString = configEl.textContent || configEl.innerText || configEl.innerHTML;\n\t} else {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst declarativeOptions = JSON.parse(declarativeConfigString);\n\t\tObject.assign(options, declarativeOptions);\n\t} catch(e) {\n\t\tconst configError = new Error('Invalid JSON configuration syntax, check validity for o-tracking configuration: \"' + e.message + '\"');\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: configError.message,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow configError;\n\t}\n\n\treturn options;\n}\n\nconst tracking = {\n\t/**\n\t * The initialised state of the object.\n\t *\n\t * @type {boolean}\n\t */\n\tinitialised: false,\n\tversion,\n\tupdateConfig,\n\tsource,\n\tdestroy,\n\ttoString,\n\tinit,\n\tclick,\n\tevent,\n\tpage,\n\tview,\n\tgetRootID: core.getRootID\n};\n\nexport default tracking;\n","import core from '../core.js';\nimport {\n\tis,\n\tbroadcast,\n\tmerge,\n\taddEvent} from '../utils.js';\n\n/**\n * Default properties for events.\n *\n * @type {object}\n * @returns {object} - Default configuration for events\n */\nconst defaultEventConfig = function () {\n\treturn {\n\t\tcategory: 'event',\n\t\taction: 'generic',\n\t\tcontext: {}\n\t};\n};\n\n/**\n * Track an event.\n *\n * @param {object} trackingEvent - The event, which could the following properties in its 'detail' key:\n * @param {object} [trackingEvent.detail] - Custom properties to add to the event.\n * @param {string} [trackingEvent.detail.category] - Category for this event e.g. page\n * @param {string} [trackingEvent.detail.action] - Action for this event e.g. view\n * @param {string} [trackingEvent.detail.component_id] - The ID for the component instance.\n * @param {object} [trackingEvent.detail.context] - Extra context to add to the event\n *\n * @param {Function} [callback] - Optional, Callback function. Called when request completed.\n * @returns {void}\n */\nfunction event(trackingEvent, callback) {\n\tif (is(trackingEvent.detail.category) || is(trackingEvent.detail.action)) {\n\t\tconst noCategoryActionVals = 'Missing category or action values';\n\t\tbroadcast('oErrors', 'log', {\n\t\t\terror: noCategoryActionVals,\n\t\t\tinfo: { module: 'o-tracking' }\n\t\t});\n\t\tthrow noCategoryActionVals;\n\t}\n\n\tconst config = merge(defaultEventConfig(), {\n\t\tcategory: trackingEvent.detail.category,\n\t\taction: trackingEvent.detail.action,\n\t\tcontext: trackingEvent.detail\n\t});\n\n\tdelete config.context.category;\n\tdelete config.context.action;\n\n\tconst origamiElement = getOrigamiEventTarget(trackingEvent);\n\tif (origamiElement) {\n\t\tconfig.context.component_name = origamiElement.getAttribute('data-o-component');\n\t\tconfig.context.component_id = config.context.component_id || getComponentId(origamiElement);\n\t}\n\n\tcore.track(config, callback);\n}\n\n/**\n * Helper function that gets the target of an event if it's an Origami component\n *\n * @param  {Event} event - The event triggered.\n * @returns {HTMLElement|undefined} - Returns the HTML element if an Origami component, else undefined.\n */\nfunction getOrigamiEventTarget(event) {\n\t// IE backwards compatibility (get the actual target). If not IE, uses\n\t// `event.target`\n\tconst element = event.target || event.srcElement;\n\n\tif (element && element.getAttribute('data-o-component')) {\n\t\treturn element;\n\t}\n}\n\n/**\n * Helper function that generates a component id based on its xpath\n *\n * @param {HTMLElement} element - The HTML Element to gen an ID for.\n *\n * @returns {number} hash\n */\nfunction getComponentId(element) {\n\tconst path = _getElementPath(element);\n\n\tif (typeof path === 'undefined') {\n\t\treturn;\n\t}\n\n\t// Select the source element (first item in the ordered sequence `path`)\n\tconst srcElement = path[0];\n\n\t// Because, you could have two identical elements in the DOM as siblings,\n\t// we need to determine the 'sibling index': the order they're sitting within a DOM node.\n\t// Although in reality this is unlikely to always be the same, it's just a\n\t// best guess - unless child elements are always appended to an element rather than added as the first child.\n\tconst siblingIndex = (function getSiblingIndex(element) {\n\t\tconst srcParent = element.parentElement;\n\t\tif (srcParent) {\n\t\t\tfor (let i = 0; i < srcParent.childNodes.length; i++) {\n\t\t\t\tif (srcParent.childNodes[i] === srcElement) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}(srcElement));\n\n\t// Generate a normalised string (normalising browser quirks) from the sequence of elements\n\tconst normalisedStringPath = path.reduceRight(function(builder, el) {\n\t\tif (!el.nodeName) {\n\t\t\treturn builder + ' - ' + el.constructor.name + '\\n';\n\t\t}\n\n\t\tconst nodeName = el.nodeName.toLowerCase();\n\n\t\t// In some browsers, document is prepended with a '#'\n\t\tif (nodeName.indexOf('#') === 0) {\n\t\t\treturn builder + '<' + nodeName + '>';\n\t\t}\n\n\t\t// Replace this stuff with stuff that makes each node unique - without including styling detail (as this may change depending on animation state etc, position)\n\t\treturn builder + '<' + nodeName +' id=\"' + (el.id || '') + '\">';\n\t}, '');\n\n\n\t// Append a sibling index to the string and use some simple, off the shelf string hashing algorithm.\n\treturn _generateHash(normalisedStringPath + '_siblingIndex=' + siblingIndex);\n}\n\n/**\n * Gets the xpath for an element\n *\n * @param  {HTMLElement} element - The element to get a path for.\n *\n * @private\n *\n * @returns {Array} The xpath\n */\nfunction _getElementPath(element) {\n\tconst path = [];\n\n\twhile (element) {\n\t\tpath.push(element);\n\t\telement = element.parentElement;\n\t}\n\n\treturn path;\n}\n\n/**\n * JS Implementation of MurmurHash2\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n * Copyright (c) 2011 Gary Court\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @param {string} str  - The string to hash, ASCII only.\n *\n * @returns {number} 32-bit positive integer hash\n *\n * @private\n */\nfunction _generateHash(str) {\n\tlet l = str.length;\n\tlet h = 1 ^ l;\n\tlet i = 0;\n\tlet k;\n\n\twhile (l >= 4) {\n\t\tk = str.charCodeAt(i) & 0xff |\n\t\t\t(str.charCodeAt(++i) & 0xff) << 8 |\n\t\t\t(str.charCodeAt(++i) & 0xff) << 16 |\n\t\t\t(str.charCodeAt(++i) & 0xff) << 24;\n\n\t\tk = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\t\tk ^= k >>> 24;\n\t\tk = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\n\t\th = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n\n\t\tl -= 4;\n\t\t++i;\n\t}\n\n\tswitch (l) {\n\t\tcase 3:\n\t\t\th ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\th ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\th ^= str.charCodeAt(i) & 0xff;\n\t\t\th = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\n\th ^= h >>> 13;\n\th = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n\th ^= h >>> 15;\n\n\treturn h >>> 0;\n}\n\nconst init = function init() {\n\taddEvent(window, 'oTracking.event', event);\n};\nevent.init = init;\n\nexport { event };\n","import core from '../core.js';\nimport {merge, triggerPage, addEvent, isDeepEqual} from '../utils.js';\nimport {set as setSetting, get as getSetting} from '../core/settings.js';\n\nsetSetting('page_has_already_been_viewed', false);\n\n/**\n * Default properties for page tracking requests.\n *\n * @returns {object} - The default properties for pages.\n */\nconst defaultPageConfig = function () {\n\treturn {\n\t\tcategory: 'page',\n\t\taction: 'view',\n\t\tcontext: {\n\t\t\turl: document.URL,\n\t\t\treferrer: document.referrer\n\t\t}\n\t};\n};\n\n/**\n * Make the page tracking request.\n *\n * @param {object} config - Configuration object. If omitted, will use the defaults.\n * @param {Function=} callback - Callback function. Called when request completed.\n * @returns {void}\n */\nfunction page(config, callback) {\n\tconfig = merge(defaultPageConfig(), {\n\t\tcontext: config\n\t});\n\n\t// Set a new root ID only if the page function has already been called once before.\n\t// This is because o-tracking assumes each page function call is for a different page being viewed\n\t// And o-tracking wants all other events on the page to share the same root_id so that Spoor can\n\t// relate those other events with the page view they were from.\n\t// If o-tracking events were fired before this `page` function was ever called, then the first\n\t// of those events would have created a `root_id` and we want the first page view event to reuse\n\t// that `root_id` so those earlier events can be related to the page view they were from.\n\tif (getSetting('page_has_already_been_viewed')) {\n\t\tcore.setRootID();\n\t}\n\tsetSetting('page_has_already_been_viewed', true);\n\n\t// Some applications which use o-tracking have a bug where they send thousands of page-view events\n\t// Instead of forwarding these errorneous events to Spoor, we ignore them.\n\t// GitHub Issue: https://github.com/Financial-Times/o-tracking/issues/296\n\tif (pageViewEventHasAlreadyBeenSentBefore(config)) {\n\t\tif (getSetting('config').test) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('A page event has already been sent for this page, refusing to send a duplicate page event.');\n\t\t}\n\t} else {\n\t\tcore.track(config, callback);\n\t\t// Alert internally that a new page has been tracked - for single page apps for example.\n\t\ttriggerPage();\n\t}\n}\n\nlet previousPageConfigWithoutContextIDs = {};\n\n/**\n * Detect whether the previously sent page-view event is the\n * same as the page-view event which is about to be sent.\n *\n * @param {object} config - The page configuration object\n * @returns {boolean} - Whether the event has been sent before\n */\nfunction pageViewEventHasAlreadyBeenSentBefore(config) {\n\tconst configWithoutContextIDs = JSON.parse(JSON.stringify(config));\n\tdelete configWithoutContextIDs.context.id;\n\tdelete configWithoutContextIDs.context.root_id;\n\n\tif (isDeepEqual(previousPageConfigWithoutContextIDs, configWithoutContextIDs)) {\n\t\treturn true;\n\t} else {\n\t\tpreviousPageConfigWithoutContextIDs = configWithoutContextIDs;\n\t\treturn false;\n\t}\n}\n\n/**\n * Listener for pages.\n *\n * @param {CustomEvent} e - The CustomEvent\n * @private\n * @returns {void}\n */\nfunction listener(e) {\n\tpage(e.detail);\n}\n\nconst init = function init() {\n\taddEvent(window, 'oTracking.page', listener);\n};\npage.init = init;\n\nexport { page };\n","import Stream from './stream.js';\nimport Count from './count.js';\n\nclass Comments {\n\tconstructor (rootEl, opts) {\n\t\tthis.options = Object.assign({}, {}, opts || Comments.getDataAttributes(rootEl));\n\t\tconst isCount = rootEl.getAttribute('data-o-comments-count') === 'true';\n\t\tif (!this.options.articleId) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `articleId`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\t\tif (!this.options.articleUrl) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `articleUrl`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\t\tif (!this.options.title) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Missing required configuration option: `title`. Documentation on how to construct an instance of Comments is at https://registry.origami.ft.com/components/o-comments@7.7.3/readme#constructing-an-o-comments');\n\t\t}\n\n\t\tif (isCount) {\n\t\t\tconst count = new Count(rootEl, this.options);\n\t\t\tcount.renderCount();\n\n\t\t\treturn count;\n\t\t} else {\n\t\t\tconst stream = new Stream(rootEl, this.options);\n\t\t\tstream.init();\n\n\t\t\treturn stream;\n\t\t}\n\t}\n\n\tstatic getCount (id) {\n\t\treturn Count.fetchCount(id);\n\t}\n\n\t/**\n\t * Get the data attributes from the element. If the component is being set up\n\t * declaratively, this method is used to extract the data attributes from the DOM.\n\t *\n\t * @param {HTMLElement} rootEl - The component element in the DOM\n\t * @returns {object} - Data attributes as an object\n\t */\n\tstatic getDataAttributes (rootEl) {\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\treturn {};\n\t\t}\n\t\treturn Object.keys(rootEl.dataset).reduce((options, key) => {\n\n\t\t\t// Ignore data-o-component\n\t\t\tif (key === 'oComponent') {\n\t\t\t\treturn options;\n\t\t\t}\n\n\t\t\t// Build a concise key and get the option value\n\t\t\tconst shortKey = key.replace(/^oComments(\\w)(\\w+)$/, (m, m1, m2) => m1.toLowerCase() + m2);\n\t\t\tconst value = rootEl.dataset[key];\n\n\t\t\t// Try parsing the value as JSON, otherwise just set it as a string\n\t\t\ttry {\n\t\t\t\toptions[shortKey] = JSON.parse(value.replace(/\\'/g, '\"'));\n\t\t\t} catch (error) {\n\t\t\t\toptions[shortKey] = value;\n\t\t\t}\n\n\t\t\treturn options;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Initialise the component.\n\t *\n\t * @param {(HTMLElement | string)} rootEl - The root element to intialise the component in, or a CSS selector for the root element\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t * @returns {(Comments|Array<Comments>)} - Comments instance(s)\n\t */\n\tstatic init (rootEl, opts) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t}\n\t\tif (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\t\tif (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-comments]')) {\n\t\t\treturn new Comments(rootEl, opts);\n\t\t}\n\t\treturn Array.from(rootEl.querySelectorAll('[data-o-component=\"o-comments\"]'), rootEl => new Comments(rootEl, opts));\n\t}\n}\n\nexport default Comments;\n","import Delegate from 'ftdomdelegate';\nimport viewport from '@financial-times/o-viewport';\nimport utils from './utils.js';\nimport focusable from 'focusable';\n\nconst overlays = {};\n\nconst checkOptions = function (opts) {\n\tif (opts.trigger && !(opts.trigger instanceof HTMLElement)) {\n\t\topts.trigger = document.querySelector(opts.trigger);\n\t}\n\n\tif (opts.heading && (!opts.heading.title || !opts.heading.title.trim())) {\n\t\tthrow new Error(\n\t\t\t'\"o-overlay error\": To have a heading, a non-empty title needs to be set'\n\t\t);\n\t}\n\n\t// Overlays should be modal and layers by default\n\tif (typeof opts.modal === 'undefined') {\n\t\topts.modal = true;\n\t}\n\tif (typeof opts.layer === 'undefined') {\n\t\topts.layer = true;\n\t}\n\n\tif (opts.compact && opts.heading && opts.heading.shaded) {\n\t\tthrow new Error(\n\t\t\t'\"o-overlay error\": Compact overlays can\\'t have a shaded header'\n\t\t);\n\t}\n\n\treturn opts;\n};\n\nconst getOptionsFromTrigger = function (trigger) {\n\tlet opts = {};\n\t// Get config from data attributes set in the trigger if they haven't been passed via JS\n\tif (trigger instanceof HTMLElement) {\n\t\tArray.prototype.forEach.call(trigger.attributes, function (attr) {\n\t\t\tif (attr.name.indexOf('data-o-overlay') === 0) {\n\t\t\t\t// Remove the unnecessary part of the string the first time this is run for each attribute\n\t\t\t\tconst key = attr.name.replace('data-o-overlay-', '');\n\t\t\t\topts = utils.optionsFromKey(key, attr.value, opts);\n\t\t\t}\n\t\t});\n\t\topts.trigger = trigger;\n\t}\n\treturn opts;\n};\n\nconst triggerClickHandler = function (id, ev) {\n\tev.stopPropagation();\n\tconst overlay = overlays[id];\n\tif (overlay) {\n\t\tif (overlay.visible === true) {\n\t\t\toverlay.close();\n\t\t} else {\n\t\t\toverlay.open();\n\t\t}\n\t}\n};\n\nconst isVisible = function (element) {\n\treturn Boolean(element.offsetHeight);\n};\n\nconst focusTrap = function (event) {\n\tconst tabKeyCode = 9;\n\tconst overlayFocusableElements = [].slice\n\t\t.call(\n\t\t\tthis.wrapper.querySelectorAll(focusable)\n\t\t)\n\t\t.filter(element => {\n\t\t\tconst elementVisible = isVisible(element);\n\t\t\t// Inputs for radio and checkboxes are visually hidden,\n\t\t\t// so check the label visibility of inputs too when determining\n\t\t\t// whether to trap focus.\n\t\t\tconst elementLabelVisible =\n\t\t\t\telement.labels && [].slice.call(element.labels).some(l => isVisible(l));\n\t\t\t// When tabbing, the checked radio input of a group is focused, not each radio input.\n\t\t\tconst elementIsUncheckedRadio =\n\t\t\t\telement.type === 'radio' && element.checked !== true;\n\t\t\treturn (\n\t\t\t\t!element.disabled &&\n\t\t\t\t!elementIsUncheckedRadio &&\n\t\t\t\t(elementVisible || elementLabelVisible)\n\t\t\t);\n\t\t});\n\n\tif (overlayFocusableElements.length && event.keyCode === tabKeyCode) {\n\t\tconst lastElement =\n\t\t\toverlayFocusableElements[overlayFocusableElements.length - 1];\n\t\t// Loop focus back to the first element if focus has reached the focusable element\n\t\tif (event.target === lastElement) {\n\t\t\toverlayFocusableElements[0].focus();\n\t\t\tevent.preventDefault();\n\t\t} else if (event.shiftKey && event.target === overlayFocusableElements[0]) {\n\t\t\t// loop to the bottom when shift+tabbing.\n\t\t\tlastElement.focus();\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\n/**\n * Represents an Overlay.\n */\nclass Overlay {\n\t/**\n\t * Construct an overlay.\n\t *\n\t * @class\n\t * @param {HTMLElement} id - String. A unique identifier for the overlay within the page. (Required)\n\t * @param {object} opts - An options object for configuring the Overlay. This object MUST have either `src` or `html` set. (Required)\n\t * @param {string} opts.heading.title - Your overlay's title\n\t * @param {boolean} opts.heading.visuallyhidetitle - If you want to provide a different title style, this option will prevent the title span from being added to the overlay. (In this case the title is only used for aria labelling) Default: false.\n\t * @param {boolean} opts.heading.shaded - Whether to shade the background of the header. Default: to false\n\t * @param {boolean} opts.modal - Whether the overlay should have modal behaviour or not. Setting this as true will add a translucent shadow between the page and the overlay\n\t * @param {boolean} opts.compact - If true, the .o-overlay--compact class will be added to the overlay that reduces heading font-size and paddings in the content.\n\t * @param {string} opts.src - Either a url from which HTML to populate the overlay can be loaded, or a querySelector string identifying an element from which the textContent should be extracted.\n\t * @param {string} opts.html - String or HTMLElement. Raw HTML (cannot be set declaratively)\n\t * @param {string} opts.trigger - querySelector expression or HTMLElement. When there's a trigger set, a click event handler will be added to it that will open or close the overlay accordingly. (cannot be set declaratively)\n\t * @param {string} opts.zindex - Value of the CSS z-index property of the overlay. Default set via CSS: '10'\n\t * @param {boolean} opts.preventclosing - Prevents closure of overlay via standard x button or escape key. For use when you are directing the user to somewhere else. Only valid with modal set to true.\n\t * @param {boolean} opts.customclose - If you do not use the heading, but want to provide a close button in your html / src (with a class of o-overlay__close), setting customclose to true will attach o-overlay's close handler function to that button.\n\t * @param {string} opts.parentnode - Should be a query selector for a DOM element. If set, the overlay will be appended as a child of this rather than the document body or target. If multiple nodes are matched, it will use the first. If nothing matches this selector, the body will be used.\n\t * @param {boolean} opts.nested - If set to true, the resize, escape, and layer listeners will not be set up. This boolean should be used in conjunction with the parentnode setting to allow an overlay to be positioned within a DOM element rather than overlaid on top of everything. Default: false.\n\t * @param {boolean} opts.nofocus - If set to true, the tabindex will not be set on the wrapper element. Useful in conjunction with the nested and parentnode options. Default: false.\n\t * @param {boolean} opts.fullscreen - If set to true, the overlay will display full screen. This overlay disables scroll on the underlying document and is dismissible with the back button.\n\t * @throws {Error} Will throw an error if the `id` parameter is not unique.\n\t */\n\tconstructor(id, opts) {\n\t\tif (overlays[id]) {\n\t\t\tthrow new Error(\n\t\t\t\t`o-overlay with id \"${id}\" already exists. Creating an overlay twice with the same id may result in unexpected behaviour.`\n\t\t\t);\n\t\t}\n\n\t\tviewport.listenTo('resize');\n\t\tthis.visible = false;\n\t\tthis.id = id;\n\n\t\ttry {\n\t\t\tthis.opts = checkOptions(opts);\n\t\t} catch (e) {\n\t\t\tthis.broadcast('log', 'oErrors', {\n\t\t\t\terror: e,\n\t\t\t});\n\t\t\tthrow e;\n\t\t}\n\n\t\tif (!this.opts) {\n\t\t\tconst noOptError = new Error(\n\t\t\t\t'\"o-overlay error\": Required options have not been set'\n\t\t\t);\n\t\t\tthis.broadcast('log', 'oErrors', {\n\t\t\t\terror: noOptError,\n\t\t\t});\n\t\t\tthrow noOptError;\n\t\t}\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.addEventListener(\n\t\t\t\t'click',\n\t\t\t\ttriggerClickHandler.bind(this.opts.trigger, id),\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tthis.context = document.body;\n\t\t} else {\n\t\t\tif (document.querySelector(this.opts.parentnode)) {\n\t\t\t\tthis.context = document.querySelector(this.opts.parentnode);\n\t\t\t} else {\n\t\t\t\tthis.context = document.body;\n\t\t\t}\n\t\t}\n\n\t\tthis.delegates = {\n\t\t\tdoc: new Delegate(),\n\t\t\twrap: new Delegate(),\n\t\t\tcontext: new Delegate(),\n\t\t};\n\n\t\t// Add this overlay to the overlays hashmap\n\t\toverlays[id] = this;\n\t}\n\n\topen() {\n\t\t// Prevent page scroll for open modals or fullscreen overlays.\n\t\tif (this.opts.modal || this.opts.fullscreen) {\n\t\t\tthis.originalOverflow = document.documentElement.style.overflow;\n\t\t\tdocument.documentElement.style.overflow = 'hidden';\n\t\t}\n\n\t\t// A full screen overlay can look like a new page so add to history.\n\t\t// The browser back button can then be used to close a full-screen overlay.\n\t\tif (window.history.pushState && this.opts.fullscreen) {\n\t\t\t// Push overlay state to history.\n\t\t\twindow.history.pushState(\n\t\t\t\t{[`o-overlay-${this.id}`]: 'fullscreen'},\n\t\t\t\twindow.location.href\n\t\t\t);\n\t\t\t// When history changes check for the overlay and close it.\n\t\t\tthis.popstateHandler = function () {\n\t\t\t\tif (\n\t\t\t\t\twindow.history.state &&\n\t\t\t\t\twindow.history.state[`o-overlay-${this.id}`]\n\t\t\t\t) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t}.bind(this);\n\t\t\twindow.addEventListener('popstate', this.popstateHandler);\n\t\t}\n\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.setAttribute('aria-pressed', 'true');\n\t\t}\n\n\t\tif (!this.content) {\n\t\t\tconst overlay = this;\n\t\t\tthis.loadContent(function (html) {\n\t\t\t\toverlay.opts.html = html;\n\t\t\t\tif (!overlay.opts.html) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t'\"o-overlay error\": Content for the overlay needs to be set via the \"html\" or the \"src\" option.'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\toverlay.render();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tloadContent(callback) {\n\t\tif (!this.opts.html && this.opts.src) {\n\t\t\tif (/^(https?\\:\\/)?\\//.test(this.opts.src)) {\n\t\t\t\tutils.copyContentFromUrl(this.opts.src, function (html) {\n\t\t\t\t\tcallback(html);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tutils.copyContentFromElement(\n\t\t\t\t\tdocument.querySelector(this.opts.src),\n\t\t\t\t\tfunction (html) {\n\t\t\t\t\t\tcallback(html);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tcallback(this.opts.html);\n\t\t}\n\t}\n\n\trender() {\n\t\tconst wrapperEl = document.createElement('div');\n\t\twrapperEl.className = 'o-overlay';\n\t\twrapperEl.classList.add('o-overlay--' + this.id.replace(' ', '-'));\n\n\t\t// Add custom classes to the newly created overlay wrapper.\n\t\tif (this.opts.class) {\n\t\t\ttry {\n\t\t\t\twrapperEl.classList.add(...this.opts.class.split(' '));\n\t\t\t} catch (error) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`Could not add the classes: ${this.opts.class}`);\n\t\t\t}\n\t\t}\n\n\t\tif (this.opts.fullscreen) {\n\t\t\twrapperEl.classList.add('o-overlay--full-screen');\n\t\t}\n\n\t\twrapperEl.setAttribute('role', 'dialog');\n\t\tif (this.opts.zindex) {\n\t\t\twrapperEl.style.zIndex = this.opts.zindex;\n\t\t}\n\t\tthis.wrapper = wrapperEl;\n\n\t\tif (this.opts.heading) {\n\t\t\tconst heading = document.createElement('header');\n\t\t\tconst headingId = this.opts.heading.title\n\t\t\t\t.toLowerCase()\n\t\t\t\t// replace non-ascii alphanums with hyphens\n\t\t\t\t.replace(/[^a-z0-9-]/g, '-')\n\t\t\t\t// replace repeated hyphens with a single hyphen\n\t\t\t\t.replace(/[\\s-]+/g, '-');\n\t\t\theading.classList.add('o-overlay__heading');\n\t\t\twrapperEl.setAttribute('aria-labelledby', headingId);\n\n\t\t\tif (this.opts.heading.shaded) {\n\t\t\t\theading.classList.add('o-overlay__heading--shaded');\n\t\t\t}\n\n\t\t\tif (!this.opts.preventclosing) {\n\t\t\t\tconst button = document.createElement('button');\n\t\t\t\tbutton.className = 'o-overlay__close';\n\t\t\t\tbutton.setAttribute('aria-label', 'Close');\n\t\t\t\tbutton.setAttribute('title', 'Close');\n\n\t\t\t\tif (!this.opts.nofocus) {\n\t\t\t\t\tbutton.setAttribute('tabindex', '0');\n\t\t\t\t}\n\t\t\t\theading.appendChild(button);\n\t\t\t}\n\n\t\t\tconst title = document.createElement('span');\n\t\t\ttitle.setAttribute('role', 'heading');\n\t\t\ttitle.setAttribute('aria-level', '1');\n\t\t\ttitle.className = 'o-overlay__title';\n\t\t\ttitle.innerHTML = this.opts.heading.title;\n\t\t\ttitle.setAttribute('id', headingId);\n\n\t\t\tif (this.opts.heading.visuallyhidetitle) {\n\t\t\t\ttitle.classList.add('o-overlay__title--sr-only');\n\t\t\t}\n\n\t\t\theading.appendChild(title);\n\t\t\twrapperEl.appendChild(heading);\n\t\t}\n\n\t\tif (this.opts.tooltip) {\n\t\t\tconst button = document.createElement('a');\n\t\t\tbutton.className = 'o-overlay__close';\n\t\t\tbutton.setAttribute('role', 'button');\n\t\t\tbutton.setAttribute('href', '#void');\n\t\t\tbutton.setAttribute('aria-label', 'Close');\n\t\t\tbutton.setAttribute('title', 'Close');\n\t\t\tif (!this.opts.nofocus) {\n\t\t\t\tbutton.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\twrapperEl.appendChild(button);\n\t\t\twrapperEl.classList.add('o-overlay--compact');\n\t\t}\n\n\t\tconst content = document.createElement('section');\n\t\tcontent.className = 'o-overlay__content';\n\t\twrapperEl.appendChild(content);\n\n\t\tthis.content = content;\n\n\t\tif (this.opts.compact) {\n\t\t\twrapperEl.classList.add('o-overlay--compact');\n\t\t}\n\n\t\tthis.show();\n\t}\n\n\t_trapFocus() {\n\t\t// Trap the focus inside the overlay so keyboard navigation doesn't escape the overlay\n\t\tdocument.addEventListener('keydown', focusTrap.bind(this));\n\t}\n\n\t/**\n\t * Show the overlay\n\t *\n\t * @fires oOverlay#ready\n\t */\n\tshow() {\n\t\tif (this.opts.modal) {\n\t\t\tthis.wrapper.classList.add('o-overlay--modal');\n\t\t\tconst shadow = document.createElement('div');\n\t\t\tshadow.className = 'o-overlay-shadow';\n\t\t\tthis.shadow = shadow;\n\n\t\t\tif (this.opts.zindex) {\n\t\t\t\tshadow.style.zIndex = this.opts.zindex - 1;\n\t\t\t}\n\n\t\t\tdocument.body.appendChild(shadow);\n\t\t}\n\n\t\tthis.delegates.doc.root(document.body);\n\t\tthis.delegates.wrap.root(this.wrapper);\n\t\tthis.delegates.context.root(this.context);\n\n\t\tthis.closeHandler = this.close.bind(this);\n\n\t\t// If the overlay is nested within a DOM element don't attach the viewport resize listeners.\n\t\tif (!this.opts.nested) {\n\t\t\tthis.resizeListenerHandler = this.resizeListener.bind(this);\n\t\t\tthis.delegates.doc.on(\n\t\t\t\t'oViewport.resize',\n\t\t\t\t'body',\n\t\t\t\tthis.resizeListenerHandler\n\t\t\t);\n\n\t\t\tthis.closeOnEscapePressHandler = this.closeOnEscapePress.bind(this);\n\t\t\tthis.delegates.doc.on('keyup', this.closeOnEscapePressHandler);\n\t\t}\n\n\t\tif (this.opts.layer) {\n\t\t\tthis.closeOnNewLayerHandler = this.closeOnNewLayer.bind(this);\n\t\t\tthis.delegates.context.on('oOverlay.layerOpen', this.closeOnNewLayerHandler);\n\n\t\t\tthis.broadcast('layerOpen');\n\t\t}\n\n\t\tif (this.opts.heading || this.opts.tooltip || this.opts.customclose) {\n\t\t\tthis.delegates.wrap.on('click', '.o-overlay__close', this.closeHandler);\n\t\t\tthis.delegates.wrap.on(\n\t\t\t\t'touchend',\n\t\t\t\t'.o-overlay__close',\n\t\t\t\tthis.closeHandler\n\t\t\t);\n\t\t}\n\n\t\tthis.closeOnExternalClickHandler = this.closeOnExternalClick.bind(this);\n\t\tthis.delegates.doc.on('click', 'body', this.closeOnExternalClickHandler);\n\t\tthis.delegates.doc.on('touchend', 'body', this.closeOnExternalClickHandler);\n\n\t\tthis.context.appendChild(this.wrapper);\n\n\t\t// Give the overlay focus\n\t\tif (!this.opts.nofocus) {\n\t\t\tthis.wrapper.setAttribute('tabindex', '0');\n\t\t\tthis.wrapper.style.outline = 0;\n\t\t}\n\n\t\t// Renders content after overlay has been added so css is applied before that\n\t\t// Thay way if an element has autofocus, the window won't scroll to the bottom\n\t\t// in Safari as the overlay is already in position\n\t\twindow.requestAnimationFrame(\n\t\t\tfunction () {\n\t\t\t\tif (!this.content.innerHTML) {\n\t\t\t\t\tif (typeof this.opts.html === 'string') {\n\t\t\t\t\t\tthis.content.innerHTML = this.opts.html;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.content.appendChild(this.opts.html);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.width = this.getWidth();\n\t\t\t\tthis.height = this.getHeight();\n\n\t\t\t\t// If the overlay is nested within a DOM element don't resize according to the viewport.\n\t\t\t\tif (!this.opts.nested) {\n\t\t\t\t\tthis.realign();\n\t\t\t\t}\n\t\t\t\tthis.visible = true;\n\t\t\t\tthis.wrapper.focus();\n\t\t\t\t/**\n\t\t\t\t * Ready event\n\t\t\t\t *\n\t\t\t\t * @event oOverlay#ready\n\t\t\t\t * @type {object}\n\t\t\t\t * @property {Overlay} instance - the firing instance\n\t\t\t\t */\n\t\t\t\tthis.broadcast('ready', 'oOverlay', {\n\t\t\t\t\tinstance: this\n\t\t\t\t});\n\n\t\t\t\t// Add o-tracking integration\n\t\t\t\tthis.broadcast('event', 'oTracking', {\n\t\t\t\t\tcategory: 'overlay',\n\t\t\t\t\taction: 'show',\n\t\t\t\t\toverlay_id: this.id,\n\t\t\t\t});\n\n\t\t\t\tthis._trapFocus();\n\t\t\t}.bind(this)\n\t\t);\n\t}\n\n\tclose() {\n\t\tthis.delegates.doc.destroy();\n\t\tthis.delegates.wrap.destroy();\n\t\tthis.delegates.context.destroy();\n\n\t\t// Restore document scroll when modals or fullscreen overlays are closed.\n\t\tif (this.opts.modal || this.opts.fullscreen) {\n\t\t\tdocument.documentElement.style.overflow = this.originalOverflow;\n\t\t}\n\n\t\t// Remove fullscreen popstate handler and re-enable document scroll.\n\t\tif (this.opts.fullscreen) {\n\t\t\twindow.removeEventListener('popstate', this.popstateHandler);\n\t\t}\n\t\t// Remove state from history if fullscreen state is still in history.\n\t\t// E.g.The close button was clicked directly rather than the browser back button.\n\t\tif (\n\t\t\twindow.history.pushState &&\n\t\t\twindow.history.state &&\n\t\t\twindow.history.state[`o-overlay-${this.id}`] === 'fullscreen'\n\t\t) {\n\t\t\twindow.history.back();\n\t\t}\n\n\t\tviewport.stopListeningTo('resize');\n\n\t\tthis.broadcast('destroy');\n\t\tthis.broadcast('event', 'oTracking', {\n\t\t\tcategory: 'overlay',\n\t\t\taction: 'close',\n\t\t\toverlay_id: this.id,\n\t\t});\n\n\t\tthis.context.removeChild(this.wrapper);\n\t\tif (this.opts.modal) {\n\t\t\tthis.shadow.parentNode.removeChild(this.shadow);\n\t\t}\n\n\t\t// Put focus back on the triggering element\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.focus();\n\t\t\tthis.opts.trigger.setAttribute('aria-pressed', 'false');\n\t\t}\n\t\tdocument.removeEventListener('keydown', focusTrap);\n\n\t\tthis.visible = false;\n\n\t\tif (this.opts.layer) {\n\t\t\tthis.broadcast('layerClose');\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tcloseOnExternalClick(ev) {\n\t\tif (\n\t\t\t!this.wrapper.contains(ev.target) &&\n\t\t\t!this.opts.modal &&\n\t\t\tthis.opts.trigger &&\n\t\t\t!this.opts.trigger.contains(ev.target)\n\t\t) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tcloseOnEscapePress(ev) {\n\t\tif (!this.opts.preventclosing && ev.keyCode === 27) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tcloseOnNewLayer(ev) {\n\t\tif (!ev.detail || ev.detail.el !== this) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresizeListener(ev) {\n\t\tif (!this.wrapper.contains(ev.target)) {\n\t\t\tthis.respondToWindow();\n\t\t}\n\t}\n\n\tbroadcast(eventType, namespace, detail) {\n\t\tnamespace = namespace || 'oOverlay';\n\n\t\tconst isLayerEvent = eventType === 'layerOpen' || eventType === 'layerClose';\n\t\tconst target = isLayerEvent ? this.context : this.wrapper || document.body;\n\n\t\tdetail = detail || {};\n\n\t\tif (namespace !== 'oTracking') {\n\t\t\tdetail.el = this;\n\t\t}\n\n\t\ttarget.dispatchEvent(\n\t\t\tnew CustomEvent(namespace + '.' + eventType, {\n\t\t\t\tdetail: detail,\n\t\t\t\tbubbles: true,\n\t\t\t})\n\t\t);\n\t}\n\n\trealign(dimension, size) {\n\t\t// Realign both height and width according to the window by default.\n\t\tif (!dimension && !size) {\n\t\t\tthis._align('width', viewport.getSize().width);\n\t\t\tthis._align('height', viewport.getSize().height);\n\t\t\treturn;\n\t\t}\n\n\t\t// For a given dimension realign according to the viewport by default.\n\t\tif (dimension && !size) {\n\t\t\tthis._align(dimension, viewport.getSize()['dimension']);\n\t\t\treturn;\n\t\t}\n\n\t\tthis._align(dimension, size);\n\t}\n\n\t_align(dimension, size) {\n\t\tif (dimension !== 'width' && dimension !== 'height') {\n\t\t\tthrow new Error(\n\t\t\t\t`Can not realign the overlay for the dimension \"${dimension}\". \"height\" or \"width\" expected.`\n\t\t\t);\n\t\t}\n\n\t\tif (isNaN(size)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Can not realign the overlay for the size ${size}. A number is expected.`\n\t\t\t);\n\t\t}\n\n\t\tconst edge = dimension === 'width' ? 'left' : 'top';\n\n\t\t// Update overlay size for realignment calculation.\n\t\t// We may be realigning because the content within the overlay has changed.\n\t\tthis.width = this.getWidth();\n\t\tthis.height = this.getHeight();\n\n\t\t// E.g. viewport dimension <= overlay dimension\n\t\tif (size <= this[dimension]) {\n\t\t\tthis.wrapper.classList.add('o-overlay--full-' + dimension);\n\t\t\tthis.wrapper.style[edge] = '0';\n\t\t\tthis.wrapper.style['margin' + utils.capitalise(edge)] = 0;\n\t\t\tif (dimension === 'height') {\n\t\t\t\t// Set the exact height that the content of the overlay will have which is the total\n\t\t\t\t// height of the overlay minus the heading if there is one. If height = 100%, the\n\t\t\t\t// heading is part of that 100%, so some content is truncated.\n\t\t\t\tconst borderHeight =\n\t\t\t\t\tthis.wrapper.offsetHeight - this.wrapper.clientHeight;\n\t\t\t\tthis.content.style.height =\n\t\t\t\t\tthis.wrapper.offsetHeight -\n\t\t\t\t\t(this.opts.heading\n\t\t\t\t\t\t? this.wrapper.querySelector('header').offsetHeight\n\t\t\t\t\t\t: 0) -\n\t\t\t\t\tborderHeight +\n\t\t\t\t\t'px';\n\t\t\t}\n\t\t} else {\n\t\t\tif (dimension === 'height') {\n\t\t\t\t// Remove the property and let the overlay extend to its content\n\t\t\t\tthis.content.style.height = null;\n\t\t\t}\n\t\t\tthis.wrapper.classList.remove('o-overlay--full-' + dimension);\n\t\t\tthis.wrapper.style['margin' + utils.capitalise(edge)] =\n\t\t\t\t-(this.wrapper['offset' + utils.capitalise(dimension)] / 2) + 'px';\n\n\t\t\t// Set alignment in JavaScript (not via CSS) after all other styles have been applied\n\t\t\t// so that browsers compute it properly. If it's applied earlier, when the negative\n\t\t\t// margin is calculated, the overlay might not fit, so it shrinks and the negative\n\t\t\t// margin would be incorrect\n\t\t\tthis.wrapper.style[edge] = '50%';\n\t\t}\n\t}\n\n\trespondToWindow() {\n\t\tthis.realign();\n\t}\n\n\tfills(dimension) {\n\t\treturn this.wrapper.classList.contains('o-overlay--full-' + dimension);\n\t}\n\n\tdestroy() {\n\t\tif (this.visible === true) {\n\t\t\tthis.close();\n\t\t}\n\t\tif (this.opts.trigger) {\n\t\t\tthis.opts.trigger.removeEventListener('click', triggerClickHandler);\n\t\t}\n\t\tdelete overlays[this.id];\n\t}\n\n\tgetHeight() {\n\t\tconst borderHeight = this.wrapper.offsetHeight - this.wrapper.clientHeight;\n\t\treturn (\n\t\t\tthis.content.scrollHeight +\n\t\t\t(this.opts.heading\n\t\t\t\t? this.wrapper.querySelector('header').offsetHeight\n\t\t\t\t: 0) +\n\t\t\tborderHeight\n\t\t);\n\t}\n\n\tgetWidth() {\n\t\tconst borderWidth = this.wrapper.offsetWidth - this.wrapper.clientWidth;\n\t\treturn this.content.scrollWidth + borderWidth;\n\t}\n\n\tstatic init(el) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t}\n\t\tif (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\tconst triggers = el.querySelectorAll('.o-overlay-trigger');\n\t\tconst overlaysArray = [];\n\t\tfor (let t = 0; t < triggers.length; t++) {\n\t\t\t// There can only be one overlay per trigger when set declaratively, so the first trigger found for a given overlay will be the one used to create the overlay\n\t\t\tif (!overlays[triggers[t].getAttribute('data-o-overlay-id')]) {\n\t\t\t\toverlaysArray.push(\n\t\t\t\t\tnew Overlay(\n\t\t\t\t\t\ttriggers[t].getAttribute('data-o-overlay-id'),\n\t\t\t\t\t\tgetOptionsFromTrigger(triggers[t])\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn overlaysArray;\n\t}\n\n\tstatic destroy() {\n\t\tconst overlayIds = Object.keys(overlays);\n\t\toverlayIds.forEach(function (id) {\n\t\t\toverlays[id].destroy();\n\t\t});\n\t}\n\n\tstatic getOverlays() {\n\t\treturn overlays;\n\t}\n}\n\nexport default Overlay;\n","class Count {\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {HTMLElement} [countEl] - The component element in the DOM\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t */\n\tconstructor (countEl, opts = {}) {\n\t\tthis.countEl = countEl;\n\t\tthis.articleId = opts.articleId;\n\t\tthis.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n\t}\n\n\t/**\n\t * Render a comment count instance.\n\t *\n\t * @access private\n\t * @returns {Promise<void>} A promise that resolves when the count has been updated\n\t */\n\trenderCount () {\n\t\tif (this.countEl && !(this.countEl instanceof HTMLElement)) {\n\t\t\tthis.countEl = document.querySelector(this.countEl);\n\t\t}\n\n\t\tif (!this.countEl) {\n\t\t\tthrow new Error('Element must be a HTMLElement');\n\t\t}\n\n\t\treturn Count.fetchCount(this.articleId, this.useStagingEnvironment)\n\t\t\t.then((count) => {\n\t\t\t\tthis.countEl.textContent = count;\n\n\t\t\t\tconst countLabel = Count.getCountLabel(count);\n\t\t\t\tthis.countEl.setAttribute('aria-label', countLabel);\n\t\t\t});\n\t}\n\n\t/**\n\t * Get the aria-label for the count element.\n\t *\n\t * @param {number} count - The comment count\n\t * @returns {string} The string that should be used as the aria-label\n\t */\n\tstatic getCountLabel (count) {\n\t\tif (count === 1) {\n\t\t\treturn 'There is 1 comment, click to go to the comment section.';\n\t\t} else {\n\t\t\treturn `There are ${count} comments, click to go to the comment section.`;\n\t\t}\n\t}\n\n\tstatic fetchCount (id, useStaging) {\n\t\tconst url = `https://comments-api.ft.com/story/count/${id}` + (useStaging ? '?staging=1' : '');\n\n\t\treturn fetch(url)\n\t\t\t.then(res => res.json())\n\t\t\t.then(json => json.commentCount)\n\t\t\t.catch(error => {\n\t\t\t\tthrow new Error(`Error with fetching comment count: ${error.message}`);\n\t\t\t});\n\t}\n}\n\nexport default Count;\n","import Toggle from '@financial-times/o-toggle';\nimport layout from './layout.js';\n\n\nconst COLLAPSIBLE_BREAKPOINTS = ['default', 'XS', 'S'];\n\nclass Footer {\n\n\tconstructor (footerEl) {\n\t\tif (!footerEl) {\n\t\t\tfooterEl = document.querySelector('[data-o-component=\"o-footer\"]');\n\t\t} else if (typeof footerEl === 'string') {\n\t\t\tfooterEl = document.querySelector(footerEl);\n\t\t}\n\n\t\tthis.footerEl = footerEl;\n\n\t\tlayout(breakpoint => {\n\t\t\tconst shouldCollapse = Footer.shouldCollapse(breakpoint);\n\n\t\t\tif (shouldCollapse && !this._toggles) {\n\t\t\t\treturn this.setup();\n\t\t\t}\n\n\t\t\tif (!shouldCollapse && this._toggles) {\n\t\t\t\treturn this.destroy();\n\t\t\t}\n\t\t});\n\n\t\tthis.footerEl.removeAttribute('data-o-footer--no-js');\n\t\tthis.footerEl.setAttribute('data-o-footer--js', '');\n\t}\n\n\tsetup () {\n\t\tthis._toggles = [];\n\n\t\tconst toggleEls = this.footerEl.querySelectorAll('[aria-controls]');\n\n\t\tArray.prototype.forEach.call(toggleEls, toggleEl => {\n\t\t\tconst target = document.getElementById(toggleEl.getAttribute('aria-controls'));\n\t\t\ttoggleEl.setAttribute('role', 'button');\n\t\t\ttoggleEl.setAttribute('tabindex', '0');\n\t\t\tthis._toggles.push(new Toggle(toggleEl, { target }));\n\t\t});\n\t}\n\n\tdestroy () {\n\t\tthis._toggles.forEach(toggle => toggle.destroy());\n\t\tthis._toggles = null;\n\t}\n\n\tstatic get collapsibleBreakpoints(){\n\t\treturn COLLAPSIBLE_BREAKPOINTS;\n\t}\n\n\tstatic shouldCollapse(breakpoint) {\n\t\treturn COLLAPSIBLE_BREAKPOINTS.indexOf(breakpoint) !== -1;\n\t}\n\n\tstatic init (rootEl) {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (typeof rootEl === 'string') {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tconst footerEl = rootEl.querySelector('[data-o-component=\"o-footer\"]');\n\n\t\tif (footerEl) {\n\t\t\treturn new Footer(footerEl);\n\t\t}\n\t}\n}\n\nexport default Footer;\n","import DomDelegate from 'ftdomdelegate';\n\nconst socialUrls = {\n\ttwitter: \"https://twitter.com/intent/tweet?url={{url}}&text={{title}}&related={{relatedTwitterAccounts}}&via=FT\",\n\tfacebook: \"http://www.facebook.com/sharer.php?u={{url}}\",\n\tlinkedin: \"http://www.linkedin.com/shareArticle?mini=true&url={{url}}&title={{title}}+%7C+{{titleExtra}}&summary={{summary}}&source=Financial+Times\",\n\tpinterest: \"http://www.pinterest.com/pin/create/button/?url={{url}}&description={{title}}\",\n\twhatsapp: \"whatsapp://send?text={{title}}%20({{titleExtra}})%20-%20{{url}}\",\n\tlink: \"{{url}}\",\n\tenterpriseSharing: \"{{url}}\",\n};\n\nconst descriptiveLinkText = {\n\ttwitter: 'Share {{title}} on Twitter (opens a new window)',\n\tfacebook: 'Share {{title}} on Facebook (opens a new window)',\n\tlinkedin: 'Share {{title}} on LinkedIn (opens a new window)',\n\tpinterest: 'Share {{title}} on Pinterest (opens a new window)',\n\twhatsapp: 'Share {{title}} on Whatsapp (opens a new window)',\n\tlink: 'Open link in new window',\n\tenterpriseSharing: 'Share {{title}} with your Enterprise Sharing tools (opens a new window)',\n};\n\n/**\n * The `oShare.open` open event fires when a social network share action is\n * triggered, to open a new window.\n *\n * @event \"oShare.open\"\n * @type {object}\n * @property {boolean} share - The o-share instance.\n * @property {boolean} action - The kind of share i.e. \"social\".\n * @property {boolean} url - The social share url opened.\n */\n\n/**\n * The `oShare.ready` fires when a o-share instance has been initialised.\n *\n * @event \"oShare.ready\"\n * @type {object}\n * @property {boolean} share - The initialised o-share instance.\n */\n\n/**\n * @class Share\n * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for an o-share component. You can pass an HTMLElement or a selector string\n * @param {object} config - Optional\n * @param {string} config.url - Optional, url to share\n * @param {string} config.title - Optional, title to be used in social network sharing\n * @param {string} config.titleExtra - Optional, extra bit to add to the title for some social networks\n * @param {string} config.summary - Optional, summary of the page that's being shared\n * @param {string} config.relatedTwitterAccounts - Optional, extra information for sharing on Twitter\n * @param {object[]} config.links - Optional, array of strings of supported social network names that you want rendered\n */\nfunction Share(rootEl, config) {\n\tconst oShare = this;\n\tconst openWindows = {};\n\n\t/**\n\t * Helper function to dispatch namespaced events, namespace defaults to oShare\n\t *\n\t * @param {string} eventName - event to dispatch\n\t * @param {object} data - the payload\n\t * @param {string} namespace - the namespace for the event\n\t * @returns {void}\n\t * @private\n\t */\n\tfunction dispatchCustomEvent(eventName, data = {}, namespace = 'oShare') {\n\t\toShare.rootEl.dispatchEvent(new CustomEvent(namespace + '.' + eventName, {\n\t\t\tdetail: data,\n\t\t\tbubbles: true\n\t\t}));\n\t}\n\n\t/**\n\t * Click event handler that checks the event target is an o-share action\n\t *\n\t * @param {Event} ev - The event to handle\n\t * @returns {undefined}\n\t * @private\n\t */\n\tfunction handleClick(ev) {\n\t\tconst actionEl = ev.target.closest('li.o-share__action');\n\n\t\tif (oShare.rootEl.contains(actionEl) && actionEl.querySelector('a[href]')) {\n\t\t\tev.preventDefault();\n\t\t\tev.stopPropagation();\n\n\t\t\tconst url = actionEl.querySelector('a[href]').href;\n\t\t\tconst shareLocation = oShare.rootEl.dataset.oShareLocation || '';\n\n\t\t\tdispatchCustomEvent('event', {\n\t\t\t\tcategory: 'share',\n\t\t\t\taction: 'click',\n\t\t\t\tbutton: actionEl.textContent.trim().toLowerCase(),\n\t\t\t\tlocation: shareLocation\n\t\t\t}, 'oTracking');\n\n\t\t\tshareSocial(url);\n\t\t}\n\t}\n\n\t/**\n\t * Event handler for social network actions. Opens up a new window for that social network and dispatched the 'oShare.open' event\n\t *\n\t * @private\n\t * @param {string} url - URL to be loaded in the new window\n\t * @returns {undefined}\n\t * @fires \"oShare.open\"\n\t */\n\tfunction shareSocial(url) {\n\t\tif (url) {\n\t\t\tif (openWindows[url] && !openWindows[url].closed) {\n\t\t\t\topenWindows[url].focus();\n\t\t\t} else {\n\t\t\t\topenWindows[url] = window.open(url, '', 'width=646,height=436');\n\t\t\t\topenWindows[url].opener = null;\n\t\t\t}\n\n\t\t\tdispatchCustomEvent('open', {\n\t\t\t\tshare: oShare,\n\t\t\t\taction: \"social\",\n\t\t\t\turl: url\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Transforms the default social urls\n\t *\n\t * @private\n\t * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n\t * @returns {string} - the generated url\n\t */\n\tfunction generateSocialUrl(socialNetwork) {\n\t\tlet templateUrl = socialUrls[socialNetwork];\n\t\ttemplateUrl = templateUrl.replace('{{url}}', encodeURIComponent(config.url))\n\t\t\t.replace('{{title}}', encodeURIComponent(config.title))\n\t\t\t.replace('{{titleExtra}}', encodeURIComponent(config.titleExtra))\n\t\t\t.replace('{{summary}}', encodeURIComponent(config.summary))\n\t\t\t.replace('{{relatedTwitterAccounts}}', encodeURIComponent(config.relatedTwitterAccounts));\n\t\treturn templateUrl;\n\t}\n\n\t/**\n\t * Transforms the descriptive text for social links\n\t *\n\t * @private\n\t * @param {string} socialNetwork - Name of the social network that we support (e.g. twitter, facebook, linkedin, pinterest)\n\t * @returns {string} - A lovely URL\n\t */\n\tfunction generateDesriptiveLinkText (socialNetwork) {\n\t\tlet templateLinkText = descriptiveLinkText[socialNetwork];\n\t\ttemplateLinkText = templateLinkText.replace('{{title}}', config.title);\n\t\treturn templateLinkText;\n\t}\n\n\t/**\n\t * Renders the list of social networks in {@link config.links}\n\t *\n\t * @returns {void}\n\t * @private\n\t */\n\tfunction render() {\n\t\tnormaliseConfig();\n\n\t\tconst ulElement = document.createElement('ul');\n\t\tfor (let i = 0; i < config.links.length; i++) {\n\t\t\tconst liElement = document.createElement('li');\n\t\t\tconst spanElement = document.createElement('span');\n\t\t\tconst aElement = document.createElement('a');\n\n\t\t\tliElement.classList.add('o-share__action', `o-share__action--${config.links[i]}`);\n\n\t\t\tspanElement.classList.add('o-share__text');\n\t\t\tspanElement.innerText = generateDesriptiveLinkText(config.links[i]);\n\n\t\t\taElement.classList.add('o-share__icon', `o-share__icon--${config.links[i]}`);\n\t\t\taElement.href = generateSocialUrl(config.links[i]);\n\t\t\taElement.setAttribute('target', '_blank');\n\t\t\taElement.setAttribute('rel', 'noopener');\n\n\t\t\taElement.appendChild(spanElement);\n\t\t\tliElement.appendChild(aElement);\n\t\t\tulElement.appendChild(liElement);\n\t\t}\n\t\toShare.rootEl.appendChild(ulElement);\n\t}\n\n\t/**\n\t * Normalises any data in the configuration, converting relative URLs to ready-to-share\n\t * absolute versions\n\t *\n\t * @returns {undefined}\n\t * @private\n\t */\n\tfunction normaliseConfig() {\n\t\tconst link = document.createElement('a');\n\t\tlink.href = config.url;\n\t\tconfig.url = link.protocol + '//' + link.host + link.pathname + link.search + link.hash;\n\t}\n\n\t/**\n\t * Initialises the Share class, rendering the o-share element if it's empty with {@link config} options,\n\t * or from corresponding data attributes and sets up dom-delegates.\n\t * Dispatches 'oShare.ready' at the end\n\t *\n\t * @returns {undefined}\n\t * @fires \"oShare.ready\"\n\t */\n\tfunction init() {\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tconst rootDelegate = new DomDelegate(rootEl);\n\t\trootDelegate.on('click', handleClick);\n\t\trootEl.setAttribute('data-o-share--js', '');\n\n\t\toShare.rootDomDelegate = rootDelegate;\n\t\toShare.rootEl = rootEl;\n\n\t\tif (rootEl.children.length === 0) {\n\t\t\tif (!config) {\n\t\t\t\tconfig = {};\n\t\t\t\tconfig.links = rootEl.hasAttribute('data-o-share-links') ?\n\t\t\t\t\trootEl.getAttribute('data-o-share-links').split(' ') : [];\n\t\t\t\tconfig.url = rootEl.getAttribute('data-o-share-url') || '';\n\t\t\t\tconfig.title = rootEl.getAttribute('data-o-share-title') || '';\n\t\t\t\tconfig.titleExtra = rootEl.getAttribute('data-o-share-titleExtra') || '';\n\t\t\t\tconfig.summary = rootEl.getAttribute('data-o-share-summary') || '';\n\t\t\t\tconfig.relatedTwitterAccounts = rootEl.getAttribute('data-o-share-relatedTwitterAccounts') || '';\n\t\t\t}\n\t\t\trender();\n\t\t}\n\n\t\tdispatchCustomEvent('ready', {\n\t\t\tshare: oShare\n\t\t});\n\t}\n\n\tinit();\n}\n\n/**\n * Destroys the Share instance, disables dom-delegates\n *\n * @returns {undefined}\n */\nShare.prototype.destroy = function () {\n\tthis.rootDomDelegate.destroy();\n\t// Should destroy remove its children? Maybe setting .innerHTML to '' is faster\n\tfor (let i = 0; i < this.rootEl.children; i++) {\n\t\tthis.rootEl.removeChild(this.rootEl.children[i]);\n\t}\n\n\tthis.rootEl.removeAttribute('data-o-share--js');\n\tthis.rootEl = undefined;\n};\n\n/**\n * Initialises all o-share components inside the element passed as the first parameter\n *\n * @param {(HTMLElement|string)} rootEl [el=document.body] - Element where to search for o-share components. You can pass an HTMLElement or a selector string\n * @returns {Share|Share[]} - A Share or an array of Shares\n */\nShare.init = function (rootEl = document.body) {\n\tif (!(rootEl instanceof HTMLElement)) {\n\t\trootEl = document.querySelector(rootEl);\n\t}\n\tif (rootEl instanceof HTMLElement && rootEl.matches('[data-o-component=o-share]')) {\n\t\treturn new Share(rootEl);\n\t}\n\treturn Array.from(rootEl.querySelectorAll('[data-o-component=o-share]'), rootEl => new Share(rootEl));\n};\n\nexport default Share;\n","import ftDateFormat from '@financial-times/ft-date-format';\n\nconst updateEventName = 'update';\nlet interval;\n\nfunction ftDateFormatWarning(methodName) {\n\t// eslint-disable-next-line no-console\n\tconsole.warn(`The o-date method \"${methodName}\" is deprecated. Use the \"ft-date-format\" package instead or contact the Origami team for help: https://github.com/Financial-Times/ft-date-format`);\n}\n\n/**\n * Initialise the o-date component.\n *\n * @param {HTMLElement | string} rootElement - The root element or CSS selector to initialise\n */\nclass ODate {\n\n\tconstructor(rootEl) {\n\n\t\tif (!rootEl) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('To initialise all o-date elements on the page use ' +\n\t\t\t\t'the `init` method. Passing no arguments to the constructor ' +\n\t\t\t\t'is deprecated.');\n\t\t}\n\n\t\tif (rootEl && !(rootEl instanceof HTMLElement)) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('Using the constructor to initialise one or more ' +\n\t\t\t\t'o-date elements with a query selector is deprecated. ' +\n\t\t\t\t'Pass a single o-date HTMLElement to initialise or use the ' +\n\t\t\t\t'`init` method.');\n\t\t}\n\n\t\tif (!rootEl) {\n\t\t\trootEl = document.body;\n\t\t} else if (!(rootEl instanceof HTMLElement)) {\n\t\t\trootEl = document.querySelector(rootEl);\n\t\t}\n\n\t\tif (rootEl.getAttribute('data-o-component') === \"o-date\") {\n\t\t\tthis.el = rootEl;\n\t\t} else {\n\t\t\tthis.el = rootEl.querySelector('[data-o-component~=\"o-date\"]');\n\t\t}\n\n\t\tif (this.el) {\n\t\t\tdocument.body.addEventListener(updateEventName, this);\n\n\t\t\tthis.update();\n\t\t\tthis.el.setAttribute('data-o-date-js', '');\n\t\t}\n\n\t\tif (this.el && !interval) {\n\t\t\tinterval = setInterval(function () {\n\t\t\t\tdocument.body.dispatchEvent(new CustomEvent(updateEventName));\n\t\t\t}, 60000);\n\t\t}\n\t}\n\n\t// Use object-level event listener method so a new function doesn't need to be bound for each instance\n\thandleEvent(e) {\n\t\tif (e.type === updateEventName) {\n\t\t\tthis.update();\n\t\t}\n\t}\n\n\t/**\n\t * Re-render the formatted date within the `time` element.\n\t *\n\t * @returns {undefined}\n\t */\n\tupdate() {\n\t\tconst el = this.el;\n\n\t\t// Find the date to render.\n\t\t// Use the current date if the `datetime` attribute is not set and\n\t\t// the o-date `time` element has no text content.\n\t\tconst dateTime = el.getAttribute('datetime');\n\t\tlet date = dateTime ? ftDateFormat.toDate(dateTime) : null;\n\t\tif (!date && this.el.textContent === '') {\n\t\t\tdate = new Date();\n\t\t}\n\n\t\tif (!date) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Find elements to render formatted dates to.\n\t\t// @deprecated - The class `.o-date__printer` is deprecated.\n\t\t// `.o-date__printer` should be removed in the next major.\n\t\t// Use `[data-o-date-printer]` instead of `.o-date__printer`.\n\t\tlet printers = el.querySelectorAll('.o-date__printer,[data-o-date-printer]');\n\t\tprinters = printers.length ? printers : [el];\n\n\t\t// Render the found date in each printer element.\n\t\tfor (const printer of printers) {\n\t\t\tthis._renderDateFor(printer, date);\n\t\t}\n\n\t\t// If no printers result in output, e.g. because the,\n\t\t// format chosen does not output the time after x hours,\n\t\t// then hide the `time` element.\n\t\tif (el.textContent) {\n\t\t\tel.setAttribute('title', ftDateFormat.format(date, 'datetime'));\n\t\t\tel.removeAttribute('aria-hidden');\n\t\t} else {\n\t\t\tel.setAttribute('aria-hidden', true);\n\t\t}\n\t}\n\n\t/**\n\t * Remove o-date from the `time` element i.e. remove event\n\t * listeners and drop references to the element.\n\t *\n\t * @returns {undefined}\n\t */\n\tdestroy() {\n\t\tdocument.body.removeEventListener(updateEventName, this);\n\t\tthis.el = null;\n\t}\n\n\t/**\n\t * Initialise the o-date component.\n\t *\n\t * @param {HTMLElement | string} el - The root element or CSS selector to initialise\n\t * @returns {Array<ODate> | ODate} - An o-date instance or array of o-date instances.\n\t */\n\tstatic init (el) {\n\t\tif (!el) {\n\t\t\tel = document.body;\n\t\t}\n\t\tif (!(el instanceof HTMLElement)) {\n\t\t\tel = document.querySelector(el);\n\t\t}\n\t\t/* If el's data-o-component has \\bo-date\\b in it, ie it is itself a date,\n\t\t return a new o-date */\n\t\tif (/\\bo-date\\b/.test(el.getAttribute('data-o-component'))) {\n\t\t\treturn new ODate(el);\n\t\t}\n\n\t\t// If el contains date components, return o-dates\n\t\tconst dateEls = el.querySelectorAll('[data-o-component~=\"o-date\"]');\n\t\treturn [].map.call(dateEls, function (el) {\n\t\t\treturn new ODate(el);\n\t\t});\n\t}\n\n\t/**\n\t * Render the date to the \"printer\" element in the requested format.\n\t *\n\t * @param {HTMLElement} printer - The element to render the date in\n\t * @param {Date} date - The date to format\n\t * @returns {undefined}\n\t */\n\t_renderDateFor(printer, date) {\n\t\t// Use the printer `data-o-date-format` if found or fallback to the\n\t\t// root element if not found.\n\t\tconst format = printer.getAttribute('data-o-date-format') ||\n\t\t\tthis.el.getAttribute('data-o-date-format');\n\n\t\tlet formattedDate;\n\n\t\tif (format === 'today-or-yesterday-or-nothing') {\n\t\t\tformattedDate = ftDateFormat.asTodayOrYesterdayOrNothing(date);\n\t\t} else if (format === 'date-only') {\n\t\t\tformattedDate = ftDateFormat.format(date, 'date');\n\t\t} else if (format === 'time-ago-limit-4-hours') {\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 4 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-limit-24-hours') {\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 24 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-abbreviated') {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('The o-date format \"time-ago-abbreviated\" is deprecated and the time is no longer abbreviated. Consider using \"time-ago-limit-4-hours\" instead.');\n\t\t\tformattedDate = ftDateFormat.timeAgo(date);\n\t\t} else if (format === 'time-ago-abbreviated-limit-4-hours') {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.warn('The o-date format \"time-ago-abbreviated-limit-4-hours\" is deprecated and the time is no longer abbreviated. Use \"time-ago-limit-4-hours\" instead.');\n\t\t\tformattedDate = ftDateFormat.timeAgo(date, { limit: 4 * ftDateFormat.inSeconds.hour });\n\t\t} else if (format === 'time-ago-no-seconds') {\n\t\t\tformattedDate = ftDateFormat.timeAgoNoSeconds(date);\n\t\t} else if (format !== null) {\n\t\t\tformattedDate = ftDateFormat.format(date, format);\n\t\t} else {\n\t\t\tformattedDate = ftDateFormat.ftTime(date);\n\t\t}\n\n\t\t// To avoid triggering a parent live region unnecessarily\n\t\t// <https://github.com/Financial-Times/o-date/pull/43>\n\t\tconst hasSingleTextNode = printer.childNodes.length === 1 &&\n\t\t\tprinter.firstChild &&\n\t\t\tprinter.firstChild.nodeType === 3;\n\n\t\tif (hasSingleTextNode) {\n\t\t\tprinter.firstChild.nodeValue = formattedDate;\n\t\t} else {\n\t\t\tprinter.innerHTML = formattedDate;\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic toDate() {\n\t\tftDateFormatWarning('toDate');\n\t\treturn ftDateFormat.toDate(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic format() {\n\t\tftDateFormatWarning('format');\n\t\treturn ftDateFormat.format(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic getSecondsBetween() {\n\t\tftDateFormatWarning('getSecondsBetween');\n\t\treturn ftDateFormat.getSecondsBetween(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic ftTime() {\n\t\tftDateFormatWarning('ftTime');\n\t\treturn ftDateFormat.ftTime(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isNearFuture() {\n\t\tftDateFormatWarning('isNearFuture');\n\t\treturn ftDateFormat.isNearFuture(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isFarFuture() {\n\t\tftDateFormatWarning('isFarFuture');\n\t\treturn ftDateFormat.isFarFuture(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isToday() {\n\t\tftDateFormatWarning('isToday');\n\t\treturn ftDateFormat.isToday(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic isYesterday() {\n\t\tftDateFormatWarning('isYesterday');\n\t\treturn ftDateFormat.isYesterday(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic timeAgo() {\n\t\tftDateFormatWarning('timeAgo');\n\t\treturn ftDateFormat.timeAgo(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic asTodayOrYesterdayOrNothing() {\n\t\tftDateFormatWarning('asTodayOrYesterdayOrNothing');\n\t\treturn ftDateFormat.asTodayOrYesterdayOrNothing(...arguments);\n\t}\n\n\t/**\n\t * @deprecated Use [ft-date-format]{@link https://github.com/Financial-Times/ft-date-format} instead.\n\t * @returns {string} - A formatted date or empty string.\n\t */\n\tstatic timeAgoNoSeconds() {\n\t\tftDateFormatWarning('timeAgoNoSeconds');\n\t\treturn ftDateFormat.timeAgoNoSeconds(...arguments);\n\t}\n\n}\n\nexport default ODate;\n","function eventListener(audio, ev) {\n\tconst progress = parseInt(100 * audio.audio.currentTime / audio.audioLength, 10);\n\n\t// Dispatch progress event at around 10%, 25%, 50%, 75% and 100%\n\tif (ev.type === 'timeupdate' && !shouldDispatch(progress)) {\n\t\treturn;\n\t}\n\n\tfireEvent(ev.type, audio);\n}\n\nfunction shouldDispatch(progress) {\n\tconst relevantProgressPoints = [8, 9, 10, 11, 12,\n\t\t23, 24, 25, 26, 27,\n\t\t48, 49, 50, 51, 52,\n\t\t73, 74, 75, 76, 77,\n\t\t100];\n\treturn relevantProgressPoints.includes(progress);\n}\n\nfunction addEvents(audio, events) {\n\tevents.forEach(event => {\n\t\taudio.audio.addEventListener(event, eventListener.bind(this, audio));\n\t});\n}\n\nfunction fireEvent(action, audioObject, extraDetail = {}) {\n\tlet playerType = audioObject.targetObject.classList.contains('g-audio--block') ? 'block' : 'inline';\n\n\tconst playButtonElement = audioObject.targetObject.getElementsByClassName('g-audio--playbutton')[0];\n\tconst contentElement = audioObject.targetObject.getElementsByClassName('g-audio-content')[0];\n\n\t// playButtonHeight equals height of one line\n\tconst playButtonHeight = playButtonElement.offsetHeight;\n\n\t// check if it overflows\n\tconst numLinesOfText = Math.floor(contentElement.offsetHeight / playButtonHeight);\n\n\tif (numLinesOfText > 1) {\n\t\tplayerType = 'inline-multiplelines';\n\t}\n\n\t// log as progress to keep consistency with o-video\n\tif (action === 'timeupdate') {\n\t\taction = 'progress';\n\t}\n\n\tconst event = new CustomEvent('oTracking.event', {\n\t\tdetail: Object.assign({\n\t\t\tcategory: 'audio',\n\t\t\tplayerType,\n\t\t\taction,\n\t\t\tcontentId: audioObject.audioURL,\n\t\t\tprogress: parseInt(100 * audioObject.audio.currentTime / audioObject.audioLength, 10),\n\t\t\tduration: parseInt(audioObject.audioLength, 10),\n\t\t}, extraDetail),\n\t\tbubbles: true,\n\t});\n\t// console.log(playerType, action, parseInt(100 * audioObject.audio.currentTime / audioObject.audioLength, 10), parseInt(audioObject.audioLength, 10));\n\tdocument.body.dispatchEvent(event);\n}\n\nfunction unloadListener() {\n\tthis.updateAmountListened();\n\n\t// console.log('amt listened', +(this.amountListened / 1000).toFixed(2), (((this.amountListened / 1000) / (this.audioLength)) * 100).toFixed(2));\n\tfireEvent('listened', this, {\n\t\tamount: Number(this.amountListened / 1000).toFixed(2),\n\t\tamountPercentage: Number(((this.amountListened / 1000) / (this.audioLength)) * 100).toFixed(2),\n\t});\n}\n\nclass AudioPlayer {\n\tconstructor(targetObject, audioURL) {\n\t\tthis.targetObject = targetObject;\n\t\tthis.audioURL = audioURL;\n\t\tthis.audio = this.targetObject.getElementsByTagName('audio')[0];\n\t\tthis.audioLength = undefined;\n\t\tthis.playStart = null;\n\t\t// amount of the audio, in milliseconds, that has actually been listened to\n\t\tthis.amountListened = 0;\n\t\tthis.dateTimePlayStart = undefined;\n\n\t\t// initialize player\n\t\t// turns on audio player styles\n\t\tthis.targetObject.classList.add('g-audio--initialized');\n\t\tthis.targetObject.innerHTML = `<span class='g-audio-content'>${this.targetObject.innerHTML}</span>`;\n\n\t\t// hide HTML audio player controls\n\t\tthis.targetObject.getElementsByTagName('audio')[0].removeAttribute('controls');\n\t\tthis.targetObject.getElementsByTagName('audio')[0].style.display = 'none';\n\n\t\t// create play button\n\t\tconst playButton = document.createElement('span');\n\t\tplayButton.classList.add('g-audio--playbutton');\n\t\tplayButton.setAttribute('tabindex', 0);\n\t\tconst innerContent = this.targetObject.getElementsByClassName('g-audio-content')[0];\n\t\ttargetObject.insertBefore(playButton, innerContent);\n\n\t\t// event handlers to check for loaded metadata\n\t\t// load length into data objects\n\t\tthis.audio.load();\n\t\tthis.audio.addEventListener('loadedmetadata', () => this.loadMetadata(), false);\n\n\t\t// add event handler to document for pausing all players\n\t\tdocument.addEventListener('g-audio.pauseAllPlayers', this.pause.bind(this, true));\n\t}\n\n\tloadMetadata() {\n\t\tthis.audioLength = this.audio.duration;\n\n\t\t// set event handlers for everything else after metadata loaded\n\t\t// play/pause on click or enter\n\t\tthis.targetObject.getElementsByClassName('g-audio--playbutton')[0].addEventListener('click', () => this.toggleAudio(), false);\n\t\tthis.targetObject.getElementsByClassName('g-audio--playbutton')[0].addEventListener('keypress', (e) => {\n\t\t\tif (e.which === 13 || e.keyCode === 13) {\n\t\t\t\treturn this.toggleAudio();\n\t\t\t}\n\t\t}, false);\n\n\t\t// toggle back to off after clip ends\n\t\tthis.audio.addEventListener('ended', () => this.toggleAudio(), false);\n\n\t\t// skip on click\n\t\tthis.targetObject.getElementsByClassName('g-audio-content')[0].addEventListener('click', (e) => this.jumpTo(e), false);\n\n\t\t// adjust progress bar\n\t\tthis.audio.addEventListener('timeupdate', () => this.adjustProgressBar(), false);\n\n\t\t// add tracking events\n\t\taddEvents(this, ['playing', 'pause', 'seeked', 'timeupdate', 'ended', 'error', 'stalled']);\n\n\t\t// send 'listened' event on page unload\n\t\tconst unloadEventName = ('onbeforeunload' in window) ? 'beforeunload' : 'unload';\n\t\twindow.addEventListener(unloadEventName, unloadListener.bind(this));\n\t}\n\n\ttoggleAudio() {\n\t\tif (this.targetObject.classList.contains('g-audio-pause')) {\n\t\t\t// console.log('go to pause')\n\t\t\tthis.pause();\n\t\t} else {\n\t\t\t// console.log('go to play')\n\t\t\tthis.play();\n\t\t}\n\t}\n\n\tjumpTo(e) {\n\t\tconst contentElement = this.targetObject.getElementsByClassName('g-audio-content')[0];\n\t\tconst playButtonElement = this.targetObject.getElementsByClassName('g-audio--playbutton')[0];\n\n\t\t// playButtonHeight equals height of one line\n\t\tconst playButtonHeight = playButtonElement.offsetHeight;\n\n\t\tconst clickedPositionX = e.pageX - contentElement.getBoundingClientRect().left;\n\n\t\t// check if it overflows\n\t\tconst numLinesOfText = Math.floor(contentElement.offsetHeight / playButtonHeight);\n\n\t\tif (numLinesOfText <= 1) {\n\t\t\tconst clickedPosition = clickedPositionX;\n\t\t\tconst totalWidth = contentElement.offsetWidth;\n\t\t\tconst percentClickedThrough = clickedPosition / totalWidth;\n\t\t\tconst totalDuration = this.audioLength;\n\t\t\tconst goTo = totalDuration * percentClickedThrough;\n\t\t\tthis.playStart = goTo;\n\n\t\t\tthis.play(goTo);\n\t\t} else {\n\t\t\tthis.toggleAudio();\n\t\t}\n\t}\n\n\tplay(playStart=this.playStart) {\n\t\t// stop all other audio instances from playing (pause)\n\t\tdocument.dispatchEvent(new CustomEvent('g-audio.pauseAllPlayers'));\n\n\t\tif (playStart && this.audio.currentTime !== playStart) {\n\t\t\tthis.audio.currentTime = playStart;\n\t\t}\n\t\tthis.audio.play();\n\t\tthis.dateTimePlayStart = Date.now();\n\t\tthis.targetObject.classList.add('g-audio-pause');\n\t}\n\n\tpause() {\n\t\tthis.audio.pause();\n\t\tthis.updateAmountListened();\n\n\t\t// if at the end, then reset play start to 0\n\t\tif (this.audio.currentTime >= this.audioLength) {\n\t\t\tthis.playStart = 0;\n\t\t} else { // otherwise, keep track of when we paused\n\t\t\tthis.playStart = this.audio.currentTime;\n\t\t}\n\n\t\tthis.targetObject.classList.remove('g-audio-pause');\n\t}\n\n\tdestroy() {\n\t\treturn this.targetObject.getElementsByTagName('audio').destroy();\n\t}\n\n\tadjustProgressBar() {\n\t\tconst timeStamp = this.audio.currentTime;\n\t\tconst totalDuration = this.audioLength;\n\n\t\tconst percentPlayed = Math.ceil(timeStamp*100 / totalDuration);\n\t\t// console.log(timeStamp, totalDuration, percentPlayed)\n\n\t\tconst progressBar = this.targetObject.getElementsByClassName('g-audio-content')[0];\n\t\tprogressBar.setAttribute('style', `background : -webkit-linear-gradient(left, rgba(175, 81, 108, 0.35) ${percentPlayed}%, rgba(175, 81, 108, 0.15) ${percentPlayed + 1}%); background : -moz-linear-gradient(left, rgba(175, 81, 108, 0.35) ${percentPlayed}%, rgba(175, 81, 108, 0.15) ${percentPlayed + 1}%); background : -o-linear-gradient(left, rgba(175, 81, 108, 0.35) ${percentPlayed}%, rgba(175, 81, 108, 0.15) ${percentPlayed + 1}%); background : linear-gradient(to right, rgba(175, 81, 108, 0.35) ${percentPlayed}%, rgba(175, 81, 108, 0.15) ${percentPlayed + 1}%); `);\n\t}\n\n\tupdateAmountListened() {\n\t\tif (this.dateTimePlayStart !== undefined) {\n\t\t\tthis.amountListened += Date.now() - this.dateTimePlayStart;\n\t\t\tthis.dateTimePlayStart = undefined;\n\t\t}\n\t}\n\n\t// initialise g-audio components\n\tstatic init (rootElement) {\n\t\tif (!rootElement) {\n\t\t\trootElement = document.body;\n\t\t}\n\t\tif (!(rootElement instanceof HTMLElement)) {\n\t\t\trootElement = document.querySelector(rootElement);\n\t\t}\n\n\t\t/* If the root element has class g-audio, ie it is itself a gAudio component,\n\t\t return a new AudioPlayer */\n\t\tif (rootElement instanceof HTMLElement && rootElement.matches('.g-audio')) {\n\t\t\tconst audioURL = rootElement.getElementsByTagName('source')[0].getAttribute('src');\n\t\t\treturn new AudioPlayer(rootElement, audioURL);\n\t\t}\n\n\t\t// If the root element contains gAudio components, return new AudioPlayers for each one\n\t\tconst audioComponents = rootElement.querySelectorAll('.g-audio');\n\t\treturn [].map.call(audioComponents, el => {\n\t\t\tconst audioURL = el.getElementsByTagName('source')[0].getAttribute('src');\n\t\t\treturn new AudioPlayer(el, audioURL);\n\t\t});\n\t}\n}\n\nexport default AudioPlayer;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\nlet c = 0;\nconst blockSize = 4;\nconst base = 36;\nconst discreteValues = Math.pow(base, blockSize);\n\nconst pad = function pad(num, size) {\n\tconst s = \"000000000\" + num;\n\treturn s.substr(s.length-size);\n};\n\nconst randomBlock = function randomBlock() {\n\treturn pad((Math.random() *\n\t\tdiscreteValues << 0)\n\t\t.toString(base), blockSize);\n};\n\nconst safeCounter = () => {\n\tc = c < discreteValues ? c : 0;\n\tc++; // this is not subliminal\n\treturn c - 1;\n};\n\nconst api = function cuid() {\n\t// Starting with a lowercase letter makes\n\t// it HTML element ID friendly.\n\t// hard-coded allows for sequential access\n\tconst letter = 'c';\n\n\t// timestamp\n\t// warning: this exposes the exact date and time\n\t// that the uid was created.\n\tconst timestamp = new Date().getTime().toString(base);\n\n\n\t// A few chars to generate distinct ids for different\n\t// clients (so different computers are far less\n\t// likely to generate the same id)\n\tconst fingerprint = api.fingerprint();\n\n\t// Grab some more chars from Math.random()\n\tconst random = randomBlock() + randomBlock();\n\n\t// Prevent same-machine collisions.\n\tconst counter = pad(safeCounter().toString(base), blockSize);\n\n\treturn letter + timestamp + counter + fingerprint + random;\n};\n\napi.slug = function slug() {\n\tconst date = new Date().getTime().toString(36);\n\n\tconst print = api.fingerprint().slice(0,1) +\n\t\tapi.fingerprint().slice(-1);\n\n\tconst random = randomBlock().slice(-2);\n\n\tconst counter = safeCounter().toString(36).slice(-4);\n\n\treturn date.slice(-2) +\n\t\tcounter + print + random;\n};\n\napi.globalCount = function globalCount() {\n\t// We want to cache the results of this\n\tconst cache = (function calc() {\n\t\tlet count = 0;\n\n\t\tfor (const i in window) { // eslint-disable-line no-unused-vars, guard-for-in\n\t\t\tcount++;\n\t\t}\n\n\t\treturn count;\n\t}());\n\n\tapi.globalCount = () => cache;\n\treturn cache;\n};\n\napi.fingerprint = function browserPrint() {\n\treturn pad((navigator.mimeTypes.length +\n\t\tnavigator.userAgent.length).toString(36) +\n\t\tapi.globalCount().toString(36), 4);\n};\n\nexport { api };\n","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\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 * Header component\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport OHeader from '@financial-times/o-header';\nimport './styles.scss';\nimport { flagsPropType } from '../shared/proptypes';\n\nconst Header = ({ flags, ...props }) => {\n  const ref = useRef();\n\n  const { dark } = flags;\n\n  const headerClasses = ['o-header', 'o-header--simple', dark && 'o-header--transparent']\n    .filter((i) => i)\n    .join(' ');\n\n  useEffect(() => {\n    (async () => {\n      try {\n        new OHeader(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, []);\n\n  return (\n    <header ref={ref} className={headerClasses} data-o-component=\"o-header\" data-o-header--no-js=\"\">\n      <div className=\"o-header__row o-header__top\">\n        <div className=\"o-header__container\">\n          <div className=\"o-header__top-wrapper\">\n            <div className=\"o-header__top-column o-header__top-column--center\">\n              <a\n                className=\"o-header__top-logo\"\n                href=\"https://www.ft.com/\"\n                title=\"Go to Financial Times homepage\"\n              >\n                <span className=\"o-header__visually-hidden\">Financial Times</span>\n              </a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </header>\n  );\n};\n\nHeader.displayName = 'GHeader';\n\nHeader.propTypes = {\n  flags: flagsPropType,\n};\n\nHeader.defaultProps = {\n  flags: {\n    dark: false,\n  },\n};\n\nexport default Header;\n","import Header from './src/js/header.js';\n\nconst constructAll = () => {\n\tHeader.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Header;\n","import Toggle from '@financial-times/o-toggle';\n\nfunction init (headerEl) {\n\tconst target = headerEl.querySelector('[data-o-header-search]');\n\tconst controls = target && headerEl.querySelectorAll(`[aria-controls=\"${target.id}\"]`);\n\n\tif (controls === null || controls.length === 0) {\n\t\treturn;\n\t}\n\n\tconst opening = [];\n\n\tconst callback = function (state, e) {\n\t\tif (state === 'open') {\n\t\t\t// record the opening control\n\t\t\topening.push(e.currentTarget);\n\t\t\ttarget.querySelector('[name=\"q\"]').focus();\n\t\t} else {\n\t\t\t// re-focus opening control\n\t\t\tif (opening.length) {\n\t\t\t\topening.pop().focus();\n\t\t\t}\n\t\t}\n\t};\n\n\tfor (let i = 0, len = controls.length; i < len; i++) {\n\t\tnew Toggle(controls[i], { target, callback });\n\t}\n}\n\nexport { init };\nexport default { init };\n","class Target {\n\n\tconstructor(toggle){\n\t\tthis.targetEl = toggle.targetEl;\n\t\tthis.toggles = [];\n\t}\n\n\taddToggle(toggle) {\n\t\tthis.toggles.push(toggle);\n\t}\n\n\tremoveToggle(toggle) {\n\t\tconst togglePosition = this.toggles.indexOf(toggle);\n\t\tthis.toggles = this.toggles.slice(0, togglePosition).concat(this.toggles.slice(togglePosition +1));\n\t\tif (this.toggles.length === 0) {\n\t\t\t// If that was the last/only toggle that controlled this target then ensure\n\t\t\t// this target is open so it doesn't get stuck in the closed position\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\topen() {\n\t\tthis.targetEl.setAttribute('aria-hidden', 'false');\n\t\tthis.targetEl.classList.add('o-toggle--active');\n\t\t// Set every toggle that controls this target to be open\n\t\tthis.toggles.forEach((toggle) => {\n\t\t\ttoggle.open();\n\t\t});\n\t}\n\n\tclose() {\n\t\tthis.targetEl.setAttribute('aria-hidden', 'true');\n\t\tthis.targetEl.classList.remove('o-toggle--active');\n\n\t\t// Set every toggle that controls this target to be closed\n\t\tthis.toggles.forEach((toggle) => {\n\t\t\ttoggle.close();\n\t\t});\n\t}\n\n\ttoggle(){\n\t\tif (this.isOpen()){\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tisOpen() {\n\t\treturn this.targetEl.classList.contains('o-toggle--active');\n\t}\n}\n\nexport default Target;\n","const INTENT_ENTER = 300;\nconst INTENT_LEAVE = 400;\n\nconst expanded = [];\n\nfunction addEvents (parent, menu) {\n\tlet timeout;\n\n\tparent.addEventListener('mouseenter', () => {\n\t\tclearTimeout(timeout);\n\n\t\tif (isOpen(menu)) {\n\t\t\treturn;\n\t\t}\n\n\t\ttimeout = setTimeout(() => {\n\t\t\tif (expanded.length) {\n\t\t\t\thide(expanded[0]);\n\t\t\t\tshow(menu, false);\n\t\t\t} else {\n\t\t\t\tshow(menu, true);\n\t\t\t}\n\t\t}, INTENT_ENTER);\n\t});\n\n\n\tconst handleKeydown = (event) => {\n\t\tconst key = event.key || event.keyCode;\n\n\t\t// Internet Explorer 11 incorrectly maps the escape key to `Esc` instead of `Escape`\n\t\tif (key === 'Escape' || key === 'Esc' || key === 27) {\n\t\t\tif (isOpen(menu)) {\n\t\t\t\thide(menu);\n\t\t\t}\n\t\t}\n\t};\n\n\tdocument.addEventListener('keydown', handleKeydown);\n\n\tparent.addEventListener('mouseleave', () => {\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(() => isOpen(menu) && hide(menu), INTENT_LEAVE);\n\t});\n}\n\nfunction isOpen (menu) {\n\treturn expanded.indexOf(menu) !== -1;\n}\n\nfunction show (menu, animate) {\n\tif (animate) {\n\t\tmenu.classList.add('o-header__mega--animation');\n\t}\n\n\tmenu.setAttribute('aria-hidden', 'false');\n\tmenu.setAttribute('aria-expanded', 'true');\n\n\tmenu.dispatchEvent(new CustomEvent('oHeader.MegaMenuShow', { bubbles: true }));\n\n\texpanded.push(menu);\n}\n\nfunction hide (menu) {\n\tmenu.classList.remove('o-header__mega--animation');\n\tmenu.setAttribute('aria-hidden', 'true');\n\tmenu.setAttribute('aria-expanded', 'false');\n\n\tmenu.dispatchEvent(new CustomEvent('oHeader.MegaMenuHide', { bubbles: true }));\n\n\texpanded.splice(expanded.indexOf(menu), 1);\n}\n\nfunction init (headerEl) {\n\tconst menus = Array.from(headerEl.querySelectorAll('[data-o-header-mega]'));\n\tconst parents = menus.map(menu => menu.parentNode);\n\n\tmenus.forEach(menu => {\n\t\tmenu.setAttribute('aria-hidden', 'true');\n\t\tmenu.setAttribute('aria-expanded', 'false');\n\t});\n\n\tparents.forEach((parent, i) => addEvents(parent, menus[i]));\n}\n\nexport { init, show, hide };\nexport default { init, show, hide };\n","import Toggle from '@financial-times/o-toggle';\n\nconst LISTEN_DELAY = 300;\nconst INTENT_DELAY = 1000;\n\nfunction handleCloseEvents (scope, callback, allFocusable) {\n\tlet timeout;\n\n\tconst handleKeydown = (e) => {\n\t\tif (e.keyCode === 27) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tconst handleClick = (e) => {\n\t\tif (!scope.contains(e.target)) {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tconst handleMouseenter = () => {\n\t\tclearTimeout(timeout);\n\t};\n\n\tconst handleMouseleave = () => {\n\t\t// IE 11 mobile fires a mouseleave event when the search box gets focus. This means when the user tries\n\t\t// to use the search box, it disappears because the drawer closes.\n\t\t// Mouseout events should only occur when the drawer takes up less than 100% of the window, so we can ignore\n\t\t// any events triggered if the width of the drawer is equal to or bigger than the window.innerwidth\n\t\tif (window.innerWidth >= scope.offsetWidth) {\n\t\t\ttimeout = setTimeout(callback, INTENT_DELAY);\n\t\t}\n\t};\n\n\tconst handleFocus = (e) => {\n\t\tconst target = e.relatedTarget || e.target;\n\n\t\tif (!scope.contains(target)) {\n\t\t\tscope.focus();\n\t\t}\n\t};\n\n\tconst handleTab = (e) => {\n\t\tif (e.keyCode === 9) {\n\t\t\tconst firstEl = allFocusable[0];\n\t\t\tconst lastEl = allFocusable[allFocusable.length - 1];\n\n\t\t\t// Keep focus within the drawer when tabbing for a11y reasons.\n\t\t\tif (!e.shiftKey && e.target === lastEl) {\n\t\t\t\tfirstEl.focus();\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.shiftKey && e.target === firstEl) { // loop to the bottom when shift+tabbing.\n\t\t\t\tlastEl.focus();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst removeEvents = () => {\n\t\tclearTimeout(timeout);\n\n\t\tscope.removeEventListener('mouseenter', handleMouseenter);\n\t\tscope.removeEventListener('mouseleave', handleMouseleave);\n\t\tdocument.removeEventListener('click', handleClick);\n\t\tdocument.removeEventListener('touchstart', handleClick);\n\t\tdocument.removeEventListener('keydown', handleKeydown);\n\t\tdocument.removeEventListener('focusin', handleFocus);\n\t\tdocument.removeEventListener('focusout', handleFocus);\n\t\tscope.removeEventListener('keydown', handleTab);\n\t};\n\n\tconst addEvents = () => {\n\t\tscope.addEventListener('mouseenter', handleMouseenter);\n\t\tscope.addEventListener('mouseleave', handleMouseleave);\n\t\tdocument.addEventListener('click', handleClick);\n\t\tdocument.addEventListener('touchstart', handleClick);\n\t\tdocument.addEventListener('keydown', handleKeydown);\n\n\t\t// Firefox doesn't support focusin or focusout\n\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t\tdocument.addEventListener('focusin', handleFocus);\n\t\tdocument.addEventListener('focusout', handleFocus);\n\n\t\tscope.addEventListener('keydown', handleTab);\n\t};\n\n\treturn { addEvents, removeEvents, handleMouseleave };\n}\n\nfunction addDrawerToggles (drawerEl, allFocusable) {\n\tconst controls = Array.from(document.body.querySelectorAll(`[aria-controls=\"${drawerEl.id}\"]`));\n\n\tlet handleClose;\n\tlet openingControl;\n\n\tfunction toggleCallback (state, e) {\n\t\tif (state === 'close') {\n\t\t\ttoggleTabbing(drawerEl, false, allFocusable);\n\n\t\t\thandleClose.removeEvents();\n\n\t\t\topeningControl.focus();\n\t\t} else {\n\t\t\ttoggleTabbing(drawerEl, true, allFocusable);\n\n\t\t\t// don't capture the initial click or accidental double taps etc.\n\t\t\t// we could use transitionend but scoping is tricky and it needs prefixing and...\n\t\t\tsetTimeout(handleClose.addEvents, LISTEN_DELAY);\n\n\t\t\t// record the opening control so we can send focus back to it when closing the drawer\n\t\t\topeningControl = e.currentTarget;\n\n\t\t\t// aria-controls is only supported by JAWS.\n\t\t\t// In a setTimeout callback to avoid flickering transitions in Chrome (v54)\n\t\t\tsetTimeout(() => {\n\t\t\t\t// Don't focus on the drawer itself or iOS VoiceOver will miss it\n\t\t\t\t// Focus on the first focusable element\n\t\t\t\tconst firstFocusable = drawerEl.querySelector('a, button, input, select');\n\n\t\t\t\tif (firstFocusable) {\n\t\t\t\t\tfirstFocusable.focus();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdrawerEl.focus();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tdrawerEl.classList.toggle('o-header__drawer--closing', state === 'close');\n\t\tdrawerEl.classList.toggle('o-header__drawer--opening', state === 'open');\n\t}\n\n\tcontrols.forEach((control) => {\n\t\tconst drawerToggle = new Toggle(control, {\n\t\t\ttarget: drawerEl,\n\t\t\tcallback: toggleCallback\n\t\t});\n\n\t\t// Both toggles have the same target, so the toggle function will be the same\n\t\t// If there's a separate handleClose instance for each toggle, removeEvents doesn't work\n\t\t// when the close toggle is clicked\n\t\tif (!handleClose) {\n\t\t\thandleClose = handleCloseEvents(drawerEl, drawerToggle.toggle, allFocusable);\n\t\t}\n\t});\n\n\t// make the drawer programmatically focusable\n\tdrawerEl.tabIndex = -1;\n}\n\nfunction addSubmenuToggles (drawerEl) {\n\tconst submenus = drawerEl.querySelectorAll('[id^=\"o-header-drawer-child-\"]');\n\n\tArray.from(submenus).forEach(submenu => {\n\t\tconst button = drawerEl.querySelector(`[aria-controls=\"${submenu.id}\"]`);\n\n\t\tsubmenu.setAttribute('aria-hidden', 'true');\n\n\t\tnew Toggle(button, {\n\t\t\ttarget: submenu,\n\t\t\tcallback: (state) => {\n\t\t\t\tbutton.textContent = button.textContent.replace(/fewer|more/, state === 'open' ? 'fewer' : 'more');\n\t\t\t}\n\t\t});\n\t});\n}\n\n// This function is to solve accessibility issue\n// when o-header-drawer is closed => tabbing is disabled.\n// when o-header-drawer is open => tabbing is enabled.\nfunction toggleTabbing (drawerEl, isEnabled, allFocusable) {\n\tif (isEnabled) {\n\t\tallFocusable.forEach(el => {\n\t\t\tel.removeAttribute('tabindex');\n\t\t});\n\t} else {\n\t\tallFocusable.forEach(el => {\n\t\t\tel.setAttribute('tabindex', '-1');\n\t\t});\n\t}\n}\n\nfunction init () {\n\tconst drawerEl = document.body.querySelector('[data-o-header-drawer]');\n\tif (!drawerEl) {\n\t\treturn;\n\t}\n\tconst allFocusable = Array.from(drawerEl.querySelectorAll('a, button, input, select'));\n\ttoggleTabbing(drawerEl, false, allFocusable);\n\taddSubmenuToggles(drawerEl);\n\taddDrawerToggles(drawerEl, allFocusable);\n\n\t// Wrap in a timeout to stop page load stall in Chrome v73 on Android\n\t// toggleTabbing and the removal of the no-js attribute spikes the CPU\n\t// and causes the main process to block for around 10 seconds.\n\tsetTimeout(() => {\n\t\tdrawerEl.removeAttribute('data-o-header-drawer--no-js');\n\t\tdrawerEl.setAttribute('data-o-header-drawer--js', 'true');\n\t});\n}\n\nexport default { init, handleCloseEvents };\nexport { init, handleCloseEvents };\n","import * as oUtils from '@financial-times/o-utils';\n\nfunction init(headerEl) {\n\tconst subnav = headerEl.querySelector('[data-o-header-subnav]');\n\n\tif (subnav === null) {\n\t\treturn;\n\t}\n\n\tconst buttons = Array.from(subnav.getElementsByTagName('button'));\n\tconst wrapper = subnav.querySelector('[data-o-header-subnav-wrapper]');\n\n\tlet scrollWidth;\n\tconst wrapperWidth = wrapper.clientWidth;\n\n\tfunction checkCurrentPosition() {\n\t\tconst currentSelection = wrapper.querySelector('[aria-current]');\n\t\tif (currentSelection) {\n\t\t\tconst currentSelectionEnd = currentSelection.getBoundingClientRect().right;\n\n\t\t\t//if the current selection is wider than the end of the wrapper\n\t\t\tif (currentSelectionEnd > wrapperWidth) {\n\t\t\t\t// check by how much\n\t\t\t\tlet diff = currentSelectionEnd - wrapperWidth;\n\t\t\t\t// if the difference is greater than half of the wrapper, scroll to the end of the current selection.\n\t\t\t\tdiff = diff > wrapperWidth / 2 ? currentSelectionEnd : wrapperWidth / 2;\n\n\t\t\t\twrapper.scrollTo(diff, 0);\n\t\t\t}\n\t\t}\n\t\tscrollable();\n\t}\n\n\tfunction direction(button) {\n\t\treturn button.className.match(/left|right/).pop();\n\t}\n\n\tfunction scrollable() {\n\t\tscrollWidth = wrapper.scrollWidth;\n\n\t\tbuttons.forEach(button => {\n\t\t\tif (direction(button) === 'left') {\n\t\t\t\tbutton.disabled = wrapper.scrollLeft === 0;\n\t\t\t} else {\n\t\t\t\tconst remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n\t\t\t\t// Allow a little difference as scrollWidth is fast, not accurate.\n\t\t\t\tbutton.disabled = remaining <= 1;\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction scroll(e) {\n\t\tlet distance = 100;\n\n\t\tif (direction(e.currentTarget) === 'left') {\n\t\t\tdistance = (wrapper.scrollLeft > distance ? distance : wrapper.scrollLeft) * -1;\n\t\t} else {\n\t\t\tconst remaining = scrollWidth - wrapperWidth - wrapper.scrollLeft;\n\t\t\tdistance = remaining > distance ? distance : remaining;\n\t\t}\n\n\t\twrapper.scrollLeft = wrapper.scrollLeft + distance;\n\n\t\tscrollable();\n\t}\n\n\twrapper.addEventListener('scroll', oUtils.throttle(scrollable, 100));\n\twindow.addEventListener('oViewport.resize', scrollable);\n\n\tbuttons.forEach(button => {\n\t\tbutton.onclick = scroll;\n\t});\n\n\tcheckCurrentPosition();\n}\n\nexport { init };\nexport default { init };\n","import { debounce } from '@financial-times/o-utils';\n\nfunction init (headerEl) {\n\tif (!headerEl.hasAttribute('data-o-header--sticky')) {\n\t\treturn;\n\t}\n\n\tlet viewportOffset;\n\tlet lastScrollDepth;\n\tlet lastAnimationFrame;\n\tlet lastStickyState;\n\n\tfunction handleFrame () {\n\t\t// sticky el will appear when scrolled down from page top to\n\t\t// (arbitrarily) > half the viewport height\n\t\tconst scrollDepth = window.pageYOffset || window.scrollY;\n\t\tconst isActive = scrollDepth > viewportOffset;\n\n\t\theaderEl.classList.toggle('o-header--sticky-active', isActive);\n\n\t\tif (isActive !== lastStickyState) {\n\t\t\tlastStickyState = isActive;\n\t\t\theaderEl.dispatchEvent(new CustomEvent('oHeader.Sticky', { bubbles: true, detail: { isActive }}));\n\t\t}\n\n\t\t// allow a little wiggling room so we don't get too hasty toggling up/down state\n\t\tif (Math.abs(scrollDepth - lastScrollDepth) > 20) {\n\t\t\tconst isScrollingDown = lastScrollDepth < scrollDepth;\n\t\t\theaderEl.classList.toggle('o-header--sticky-scroll-down', isActive && isScrollingDown);\n\t\t\theaderEl.classList.toggle('o-header--sticky-scroll-up', isActive && !isScrollingDown);\n\t\t}\n\n\t\tlastScrollDepth = scrollDepth;\n\t}\n\n\tfunction startLoop () {\n\t\tviewportOffset = window.innerHeight / 2;\n\n\t\tlastAnimationFrame = window.requestAnimationFrame(() => {\n\t\t\thandleFrame();\n\t\t\tstartLoop();\n\t\t});\n\t}\n\n\tfunction stopLoop () {\n\t\tif (lastAnimationFrame) {\n\t\t\twindow.cancelAnimationFrame(lastAnimationFrame);\n\t\t}\n\t}\n\n\tfunction scrollStart () {\n\t\twindow.removeEventListener('scroll', scrollStart);\n\t\twindow.addEventListener('scroll', debouncedScrollEnd);\n\t\tstartLoop();\n\t}\n\n\tfunction scrollEnd () {\n\t\tstopLoop();\n\t\twindow.removeEventListener('scroll', debouncedScrollEnd);\n\t\twindow.addEventListener('scroll', scrollStart);\n\t}\n\n\tconst debouncedScrollEnd = debounce(scrollEnd, 300);\n\n\twindow.addEventListener('scroll', scrollStart);\n\n\thandleFrame();\n}\n\nexport { init };\nexport default { init };\n","/**\n * @file\n * Analytics code\n */\n\nimport React, { Fragment, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport * as nTracking from '@financial-times/n-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, scrollDepthTarget }) => {\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        const appContext = {\n          product: properties.product || 'IG',\n          ...pageData,\n        }\n\n        // n-tracking's init function sets up page view and click event tracking\n        const oTracking = nTracking.init({\n          appContext,\n        });\n\n        // Attention tracking\n        nTracking.trackers.pageAttention({ target: scrollDepthTarget });\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  scrollDepthTarget: PropTypes.string,\n};\n\nAnalytics.defaultProps = {\n  tracking: {\n    micrositeName: undefined,\n  },\n  scrollDepthTarget: '.article-body'\n};\n\nexport default Analytics;\n","import Delegate from 'ftdomdelegate';\nimport core from '../core.js';\nimport {sanitise, assignIfUndefined, merge } from '../utils.js';\nimport {get as getSetting} from '../core/settings.js';\nimport {getTrace} from '../../libs/get-trace.js';\nimport { Queue } from '../core/queue.js';\n\nlet delegate;\n\nconst eventPropertiesToCollect = [\n\t\"ctrlKey\",\n\t\"altKey\",\n\t\"shiftKey\",\n\t\"metaKey\",\n];\n\n// Get properties for the event (as opposed to properties of the clicked element)\n// Available properties include mouse x- and y co-ordinates, for example.\nconst getEventProperties = event => {\n\tconst eventProperties = {};\n\tfor (const property of eventPropertiesToCollect) {\n\t\tif (event[property]) {\n\t\t\ttry {\n\t\t\t\teventProperties[property] = sanitise(event[property]);\n\t\t\t} catch (e) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(e);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn eventProperties;\n};\n\n// Controller for handling click events\nconst handleClickEvent = eventData => (clickEvent, clickElement) => {\n\t//we don't want to track clicks to anonymous services like securedrop\n\tif (clickElement.getAttribute(\"data-o-tracking-do-not-track\") === \"true\") {return;}\n\tconst context = getEventProperties(clickEvent);\n\tconst { trace, customContext} = getTrace(clickElement);\n\tcontext.domPathTokens = trace;\n\tcontext.url = window.document.location.href || null;\n\t// source_id is a field that is currently being used in some data analytics\n\t// before removing this field - check with the data analytics team first to see if it is still being used\n\tcontext.source_id = core.getRootID();\n\n\tassignIfUndefined(customContext, context);\n\n\teventData.context = context;\n\n\t// Merge the event data into the \"parent\" config data\n\tconst config = merge(getSetting('config'), eventData);\n\tcore.track(config);\n};\n\n/**\n * Listen for click events.\n *\n * @alias click#init\n * @param {string} category - The event category for clicks.\n * @param {string} elementsToTrack - A query selector string to select elements to track links on {@link https://github.com/ftlabs/ftdomdelegate#selector-string}.\n * @returns {void}\n */\nconst init = (category, elementsToTrack) => {\n\telementsToTrack = elementsToTrack || 'a, button, input, [role=\"button\"]'; // See https://github.com/ftlabs/ftdomdelegate#selector-string\n\n\t// Note: `context` is the term o-tracking uses for the data that is sent to spoor\n\tconst eventData = {\n\t\taction: 'click',\n\t\tcategory: category || 'o-tracking'\n\t};\n\n\t// Activate the click event listener\n\tdelegate = delegate || new Delegate(document.body);\n\tdelegate.on('click', elementsToTrack, handleClickEvent(eventData), true);\n\n\t// Fire all click events that were stored in the old queue used by o-tracking v2\n\tconst clickQueue = new Queue('clicks');\n\tsendAllEventsFromQueue(clickQueue);\n};\n\nfunction sendAllEventsFromQueue(queue) {\n\tconst nextLink = queue.shift();\n\tif (nextLink) {\n\t\tcore.track(nextLink, () => sendAllEventsFromQueue(queue));\n\t}\n}\n\nconst click = {\n\tinit\n};\n\nexport { click };\n","/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n\n\t/**\n\t * Maintain a map of listener\n\t * lists, keyed by event name.\n\t *\n\t * @type Object\n\t */\n\tthis.listenerMap = [{}, {}];\n\tif (root) {\n\t\tthis.root(root);\n\t}\n\n\t/** @type function() */\n\tthis.handle = Delegate.prototype.handle.bind(this);\n\n\t// Cache of event listeners removed during an event cycle\n\tthis._removedListeners = [];\n}\n\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\nDelegate.prototype.root = function (root) {\n\tconst listenerMap = this.listenerMap;\n\tlet eventType;\n\n\t// Remove master event listeners\n\tif (this.rootElement) {\n\t\tfor (eventType in listenerMap[1]) {\n\t\t\tif (listenerMap[1].hasOwnProperty(eventType)) {\n\t\t\t\tthis.rootElement.removeEventListener(eventType, this.handle, true);\n\t\t\t}\n\t\t}\n\t\tfor (eventType in listenerMap[0]) {\n\t\t\tif (listenerMap[0].hasOwnProperty(eventType)) {\n\t\t\t\tthis.rootElement.removeEventListener(eventType, this.handle, false);\n\t\t\t}\n\t\t}\n\t}\n\n\t// If no root or root is not\n\t// a dom node, then remove internal\n\t// root reference and exit here\n\tif (!root || !root.addEventListener) {\n\t\tif (this.rootElement) {\n\t\t\tdelete this.rootElement;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * The root node at which\n\t * listeners are attached.\n\t *\n\t * @type Node\n\t */\n\tthis.rootElement = root;\n\n\t// Set up master event listeners\n\tfor (eventType in listenerMap[1]) {\n\t\tif (listenerMap[1].hasOwnProperty(eventType)) {\n\t\t\tthis.rootElement.addEventListener(eventType, this.handle, true);\n\t\t}\n\t}\n\tfor (eventType in listenerMap[0]) {\n\t\tif (listenerMap[0].hasOwnProperty(eventType)) {\n\t\t\tthis.rootElement.addEventListener(eventType, this.handle, false);\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/**\n * @param {string} eventType\n * @returns boolean\n */\nDelegate.prototype.captureForType = function (eventType) {\n\treturn ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n\tlet root;\n\tlet listenerMap;\n\tlet matcher;\n\tlet matcherParam;\n\n\tif (!eventType) {\n\t\tthrow new TypeError('Invalid event type: ' + eventType);\n\t}\n\n\t// handler can be passed as\n\t// the second or third argument\n\tif (typeof selector === 'function') {\n\t\tuseCapture = handler;\n\t\thandler = selector;\n\t\tselector = null;\n\t}\n\n\t// Fallback to sensible defaults\n\t// if useCapture not set\n\tif (useCapture === undefined) {\n\t\tuseCapture = this.captureForType(eventType);\n\t}\n\n\tif (typeof handler !== 'function') {\n\t\tthrow new TypeError('Handler must be a type of Function');\n\t}\n\n\troot = this.rootElement;\n\tlistenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n\t// Add master handler for type if not created yet\n\tif (!listenerMap[eventType]) {\n\t\tif (root) {\n\t\t\troot.addEventListener(eventType, this.handle, useCapture);\n\t\t}\n\t\tlistenerMap[eventType] = [];\n\t}\n\n\tif (!selector) {\n\t\tmatcherParam = null;\n\n\t\t// COMPLEX - matchesRoot needs to have access to\n\t\t// this.rootElement, so bind the function to this.\n\t\tmatcher = matchesRoot.bind(this);\n\n\t\t// Compile a matcher for the given selector\n\t} else if (/^[a-z]+$/i.test(selector)) {\n\t\tmatcherParam = selector;\n\t\tmatcher = matchesTag;\n\t} else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n\t\tmatcherParam = selector.slice(1);\n\t\tmatcher = matchesId;\n\t} else {\n\t\tmatcherParam = selector;\n\t\tmatcher = Element.prototype.matches;\n\t}\n\n\t// Add to the list of listeners\n\tlistenerMap[eventType].push({\n\t\tselector: selector,\n\t\thandler: handler,\n\t\tmatcher: matcher,\n\t\tmatcherParam: matcherParam\n\t});\n\n\treturn this;\n};\n\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n\tlet i;\n\tlet listener;\n\tlet listenerMap;\n\tlet listenerList;\n\tlet singleEventType;\n\n\t// Handler can be passed as\n\t// the second or third argument\n\tif (typeof selector === 'function') {\n\t\tuseCapture = handler;\n\t\thandler = selector;\n\t\tselector = null;\n\t}\n\n\t// If useCapture not set, remove\n\t// all event listeners\n\tif (useCapture === undefined) {\n\t\tthis.off(eventType, selector, handler, true);\n\t\tthis.off(eventType, selector, handler, false);\n\t\treturn this;\n\t}\n\n\tlistenerMap = this.listenerMap[useCapture ? 1 : 0];\n\tif (!eventType) {\n\t\tfor (singleEventType in listenerMap) {\n\t\t\tif (listenerMap.hasOwnProperty(singleEventType)) {\n\t\t\t\tthis.off(singleEventType, selector, handler);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tlistenerList = listenerMap[eventType];\n\tif (!listenerList || !listenerList.length) {\n\t\treturn this;\n\t}\n\n\t// Remove only parameter matches\n\t// if specified\n\tfor (i = listenerList.length - 1; i >= 0; i--) {\n\t\tlistener = listenerList[i];\n\n\t\tif ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n\t\t\tthis._removedListeners.push(listener);\n\t\t\tlistenerList.splice(i, 1);\n\t\t}\n\t}\n\n\t// All listeners removed\n\tif (!listenerList.length) {\n\t\tdelete listenerMap[eventType];\n\n\t\t// Remove the main handler\n\t\tif (this.rootElement) {\n\t\t\tthis.rootElement.removeEventListener(eventType, this.handle, useCapture);\n\t\t}\n\t}\n\n\treturn this;\n};\n\n\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\nDelegate.prototype.handle = function (event) {\n\tlet i;\n\tlet l;\n\tconst type = event.type;\n\tlet root;\n\tlet phase;\n\tlet listener;\n\tlet returned;\n\tlet listenerList = [];\n\tlet target;\n\tconst eventIgnore = 'ftLabsDelegateIgnore';\n\n\tif (event[eventIgnore] === true) {\n\t\treturn;\n\t}\n\n\ttarget = event.target;\n\n\t// Hardcode value of Node.TEXT_NODE\n\t// as not defined in IE8\n\tif (target.nodeType === 3) {\n\t\ttarget = target.parentNode;\n\t}\n\n\t// Handle SVG <use> elements in IE\n\tif (target.correspondingUseElement) {\n\t\ttarget = target.correspondingUseElement;\n\t}\n\n\troot = this.rootElement;\n\n\tphase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2);\n\n\t// eslint-disable-next-line default-case\n\tswitch (phase) {\n\t\tcase 1: //Event.CAPTURING_PHASE:\n\t\t\tlistenerList = this.listenerMap[1][type];\n\t\t\tbreak;\n\t\tcase 2: //Event.AT_TARGET:\n\t\t\tif (this.listenerMap[0] && this.listenerMap[0][type]) {\n\t\t\t\tlistenerList = listenerList.concat(this.listenerMap[0][type]);\n\t\t\t}\n\t\t\tif (this.listenerMap[1] && this.listenerMap[1][type]) {\n\t\t\t\tlistenerList = listenerList.concat(this.listenerMap[1][type]);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 3: //Event.BUBBLING_PHASE:\n\t\t\tlistenerList = this.listenerMap[0][type];\n\t\t\tbreak;\n\t}\n\n\tlet toFire = [];\n\n\t// Need to continuously check\n\t// that the specific list is\n\t// still populated in case one\n\t// of the callbacks actually\n\t// causes the list to be destroyed.\n\tl = listenerList.length;\n\twhile (target && l) {\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tlistener = listenerList[i];\n\n\t\t\t// Bail from this loop if\n\t\t\t// the length changed and\n\t\t\t// no more listeners are\n\t\t\t// defined between i and l.\n\t\t\tif (!listener) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttarget.tagName &&\n\t\t\t\t[\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 &&\n\t\t\t\ttarget.hasAttribute(\"disabled\")\n\t\t\t) {\n\t\t\t\t// Remove things that have previously fired\n\t\t\t\ttoFire = [];\n\t\t\t}\n\t\t\t// Check for match and fire\n\t\t\t// the event if there's one\n\t\t\t//\n\t\t\t// TODO:MCG:20120117: Need a way\n\t\t\t// to check if event#stopImmediatePropagation\n\t\t\t// was called. If so, break both loops.\n\t\t\telse if (listener.matcher.call(target, listener.matcherParam, target)) {\n\t\t\t\ttoFire.push([event, target, listener]);\n\t\t\t}\n\t\t}\n\n\t\t// TODO:MCG:20120117: Need a way to\n\t\t// check if event#stopPropagation\n\t\t// was called. If so, break looping\n\t\t// through the DOM. Stop if the\n\t\t// delegation root has been reached\n\t\tif (target === root) {\n\t\t\tbreak;\n\t\t}\n\n\t\tl = listenerList.length;\n\n\t\t// Fall back to parentNode since SVG children have no parentElement in IE\n\t\ttarget = target.parentElement || target.parentNode;\n\n\t\t// Do not traverse up to document root when using parentNode, though\n\t\tif (target instanceof HTMLDocument) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tlet ret;\n\n\tfor (i = 0; i < toFire.length; i++) {\n\t\t// Has it been removed during while the event function was fired\n\t\tif (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n\t\t\tcontinue;\n\t\t}\n\t\treturned = this.fire.apply(this, toFire[i]);\n\n\t\t// Stop propagation to subsequent\n\t\t// callbacks if the callback returned\n\t\t// false\n\t\tif (returned === false) {\n\t\t\ttoFire[i][0][eventIgnore] = true;\n\t\t\ttoFire[i][0].preventDefault();\n\t\t\tret = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\nDelegate.prototype.fire = function (event, target, listener) {\n\treturn listener.handler.call(target, event, target);\n};\n\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\nfunction matchesTag(tagName, element) {\n\treturn tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\nfunction matchesRoot(selector, element) {\n\tif (this.rootElement === window) {\n\t\treturn (\n\t\t\t// Match the outer document (dispatched from document)\n\t\t\telement === document ||\n\t\t\t// The <html> element (dispatched from document.body or document.documentElement)\n\t\t\telement === document.documentElement ||\n\t\t\t// Or the window itself (dispatched from window)\n\t\t\telement === window\n\t\t);\n\t}\n\treturn this.rootElement === element;\n}\n\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\nfunction matchesId(id, element) {\n\treturn id === element.id;\n}\n\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\nDelegate.prototype.destroy = function () {\n\tthis.off();\n\tthis.root();\n};\n\nexport default Delegate;\n","import core from '../core.js';\nimport {getTrace} from '../../libs/get-trace.js';\nimport {assignIfUndefined, filterProperties} from '../utils.js';\n\nconst TRACKING_ATTRIBUTES = [\n\t'componentContentId',\n\t'type',\n\t'subtype',\n\t'component',\n];\n\nconst decorateEventData = (eventData, viewedEl, opts) => {\n\n\tconst { trace, customContext } = getTrace(viewedEl);\n\tlet context;\n\n\tif (opts.getContextData) {\n\t\tif (typeof opts.getContextData !== 'function') {\n\t\t\tthrow new Error('opts.getContextData is not a function');\n\t\t}\n\n\t\tconst contextData = opts.getContextData(viewedEl);\n\n\t\tif (typeof contextData !== 'object') {\n\t\t\tthrow new Error('opts.getContextData function should return {object}');\n\t\t}\n\n\t\tcontext = filterProperties(contextData, TRACKING_ATTRIBUTES);\n\t} else {\n\t\tcontext = {};\n\t}\n\n\tcontext.domPathTokens = trace;\n\tcontext.url = window.document.location.href || null;\n\n\tassignIfUndefined(customContext, context);\n\n\teventData.context = context;\n};\n\n/**\n * Listen for view events.\n *\n * @alias view#init\n * @param {object} opts - To set custom category[String], selector[String], getContextData[Function]\n * @returns {undefined}\n */\nconst init = (opts = {}) => {\n\tif(!window.IntersectionObserver) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn('o-tracking: Unable to track component view events as \"window.IntersectionObserver\" is not supported.');\n\t\treturn;\n\t}\n\n\tconst selector = opts.selector || '[data-o-tracking-view]';\n\tconst elementsToTrack = [...document.querySelectorAll(selector)];\n\n\tif (!elementsToTrack.length) {\n\t\treturn;\n\t}\n\n\tfunction onChange (changes) {\n\t\tchanges.forEach(change => {\n\t\t\tif(change.isIntersecting || change.intersectionRatio > 0) {\n\t\t\t\tconst eventData = {\n\t\t\t\t\taction: opts.action || 'view',\n\t\t\t\t\tcategory: opts.category || 'component'\n\t\t\t\t};\n\t\t\t\tconst viewedEl = change.target;\n\n\t\t\t\tdecorateEventData(eventData, viewedEl, opts);\n\t\t\t\tcore.track(eventData);\n\t\t\t\tobserver.unobserve(viewedEl);\n\t\t\t}\n\t\t});\n\t}\n\n\tconst observer = new IntersectionObserver(onChange, { threshold: [ 1.0 ] });\n\n\telementsToTrack.forEach(el => observer.observe(el));\n};\n\nconst view = {\n\tinit\n};\n\nexport { view };\n\n\n","\"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 = [...Object.entries(layouts), ['default', '240px']].sort((a, b) => parseFloat(a[1]) - parseFloat(b[1]));\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    var decr1 = val => \"\".concat(Number(val.replace('px', '') - 1), \"px\");\n\n    for (var index = 0; index < breakpoints.length; index++) {\n      var [layoutName, layoutWidth] = breakpoints[index];\n      var isLast = index === breakpoints.length - 1;\n\n      if (isLast) {\n        setupQuery(\"(min-width: \".concat(layoutWidth, \")\"), layoutName);\n        continue;\n      }\n\n      var [, nextLayoutWidth] = breakpoints[index + 1];\n      setupQuery(\"(min-width: \".concat(layoutWidth, \") and (max-width: \").concat(decr1(nextLayoutWidth), \")\"), layoutName);\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;","\"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;","var e={capture:!0,once:!0,passive:!0},t=function(){return\"interactive\"===document.readyState||\"complete\"===document.readyState},n=function(e,n){return!(!function(e){return document.readyState===e}(e)&&!t())&&(n(e),!0)},r=function(){return new Promise(function(t){n(\"loading\",t)||document.addEventListener(\"readystatechange\",function(){\"loading\"===document.readyState&&t(\"loading\")},e)})},o=function(){return new Promise(function(t){n(\"interactive\",t)||document.addEventListener(\"readystatechange\",function(){\"interactive\"===document.readyState&&t(\"interactive\")},e)})},u=function(){return new Promise(function(t){n(\"complete\",t)||document.addEventListener(\"readystatechange\",function(){\"complete\"===document.readyState&&t(\"complete\")},e)})},i=function(){return new Promise(function(t){n(\"domready\",t)||document.addEventListener(\"DOMContentLoaded\",function(){t(\"domready\")},e)})},c=function(){return new Promise(function(t){n(\"load\",t)||window.addEventListener(\"load\",function(){t(\"load\")},e)})},d={};Object.defineProperties(d,{state:{get:function(){return document.readyState}},loading:{get:function(){return r()}},interactive:{get:function(){return o()}},complete:{get:function(){return u()}},window:{get:function(){return c()}},load:{get:function(){return c()}},domready:{get:function(){return i()}},dom:{get:function(){return i()}},ready:{get:function(){return t()}}});export default d;export{r as loading,o as interactive,u as complete,i as domready,c as load};\n//# sourceMappingURL=ready-state.es.js.map\n","module.exports = function(md, options) {\n  options = options || {};\n  options.listUnicodeChar = options.hasOwnProperty('listUnicodeChar') ? options.listUnicodeChar : false;\n  options.stripListLeaders = options.hasOwnProperty('stripListLeaders') ? options.stripListLeaders : true;\n  options.gfm = options.hasOwnProperty('gfm') ? options.gfm : true;\n  options.useImgAltText = options.hasOwnProperty('useImgAltText') ? options.useImgAltText : true;\n\n  var output = md || '';\n\n  // Remove horizontal rules (stripListHeaders conflict with this rule, which is why it has been moved to the top)\n  output = output.replace(/^(-\\s*?|\\*\\s*?|_\\s*?){3,}\\s*$/gm, '');\n\n  try {\n    if (options.stripListLeaders) {\n      if (options.listUnicodeChar)\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, options.listUnicodeChar + ' $1');\n      else\n        output = output.replace(/^([\\s\\t]*)([\\*\\-\\+]|\\d+\\.)\\s+/gm, '$1');\n    }\n    if (options.gfm) {\n      output = output\n        // Header\n        .replace(/\\n={2,}/g, '\\n')\n        // Fenced codeblocks\n        .replace(/~{3}.*\\n/g, '')\n        // Strikethrough\n        .replace(/~~/g, '')\n        // Fenced codeblocks\n        .replace(/`{3}.*\\n/g, '');\n    }\n    output = output\n      // Remove HTML tags\n      .replace(/<[^>]*>/g, '')\n      // Remove setext-style headers\n      .replace(/^[=\\-]{2,}\\s*$/g, '')\n      // Remove footnotes?\n      .replace(/\\[\\^.+?\\](\\: .*?$)?/g, '')\n      .replace(/\\s{0,2}\\[.*?\\]: .*?$/g, '')\n      // Remove images\n      .replace(/\\!\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, options.useImgAltText ? '$1' : '')\n      // Remove inline links\n      .replace(/\\[(.*?)\\][\\[\\(].*?[\\]\\)]/g, '$1')\n      // Remove blockquotes\n      .replace(/^\\s{0,3}>\\s?/g, '')\n      // Remove reference-style links?\n      .replace(/^\\s{1,2}\\[(.*?)\\]: (\\S+)( \".*?\")?\\s*$/g, '')\n      // Remove atx-style headers\n      .replace(/^(\\n)?\\s{0,}#{1,6}\\s+| {0,}(\\n)?\\s{0,}#{0,} {0,}(\\n)?\\s{0,}$/gm, '$1$2$3')\n      // Remove emphasis (repeat the line to remove double emphasis)\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      .replace(/([\\*_]{1,3})(\\S.*?\\S{0,1})\\1/g, '$2')\n      // Remove code blocks\n      .replace(/(`{3,})(.*?)\\1/gm, '$2')\n      // Remove inline code\n      .replace(/`(.+?)`/g, '$1')\n      // Replace two or more newlines with exactly two? Not entirely sure this belongs here...\n      .replace(/\\n{2,}/g, '\\n\\n');\n  } catch(e) {\n    console.error(e);\n    return md;\n  }\n  return output;\n};\n","/**\n * @file\n * Various ad sizes\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport './styles.scss';\n\nexport const Ad = ({\n  name,\n  targeting,\n  background,\n  reserve,\n  showAdsLabel,\n  defaultFormat,\n  smallFormat,\n  mediumFormat,\n  largeFormat,\n  extraFormat,\n}) => {\n  return (\n    <div\n      className={`o-ads o-ads--center o-ads--${\n        background === 'slate' ? 'slate-' : ''\n      }background o-ads--reserve-${reserve} ${showAdsLabel ? 'o-ads--label-left' : ''}`}\n      data-o-ads-name={name}\n      data-o-ads-targeting={targeting}\n      data-o-ads-formats-default={defaultFormat}\n      data-o-ads-formats-small={smallFormat}\n      data-o-ads-formats-medium={mediumFormat}\n      data-o-ads-formats-large={largeFormat}\n      data-o-ads-formats-extra={extraFormat}\n      aria-hidden=\"true\"\n    />\n  );\n};\n\nAd.displayName = 'GAd';\n\nexport const TopAd = () => (\n  <Ad\n    name=\"top-ad\"\n    targeting=\"pos=top;\"\n    reserve=\"90\"\n    defaultFormat={false}\n    smallFormat={false}\n    mediumFormat=\"Leaderboard,Responsive\"\n    largeFormat=\"SuperLeaderboard,Leaderboard,Responsive\"\n    extraFormat=\"Billboard,SuperLeaderboard,Leaderboard,Responsive\"\n  />\n);\n\nTopAd.displayName = 'GTopAd';\n\nexport const MiddleAd = () => (\n  <Ad\n    name=\"mid-ad\"\n    targeting=\"pos=mid;\"\n    reserve=\"250\"\n    showAdsLabel\n    defaultFormat=\"Responsive\"\n    smallFormat=\"MediumRectangle,Responsive\"\n    mediumFormat=\"MediumRectangle,Responsive\"\n    largeFormat=\"MediumRectangle,Responsive\"\n    extraFormat=\"MediumRectangle,Responsive\"\n  />\n);\n\nMiddleAd.displayName = 'GMiddleAd';\n\nAd.propTypes = {\n  name: PropTypes.string,\n  targeting: PropTypes.string,\n  background: PropTypes.oneOf(['default', 'slate']),\n  reserve: PropTypes.oneOf(['90', '250']), // creates placeholder of height to prevent page from jumping when ad loads\n  showAdsLabel: PropTypes.bool,\n  defaultFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  smallFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  mediumFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  largeFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  extraFormat: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n};\n\n// defaults to top ad configuration\nAd.defaultProps = {\n  name: 'top-ad',\n  targeting: 'pos=top',\n  background: 'default',\n  reserve: '90',\n  showAdsLabel: false,\n  defaultFormat: false,\n  smallFormat: false,\n  mediumFormat: 'Leaderboard,Responsive',\n  largeFormat: 'SuperLeaderboard,Leaderboard,Responsive',\n  extraFormat: 'Billboard,SuperLeaderboard,Leaderboard,Responsive',\n};\n","/**\n * @file\n * OnwardJourney component\n */\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeCancelable } from '../shared/helpers';\nimport './styles.scss';\n\nconst OnwardJourney = ({ urlBase, layout, relatedContent }) => {\n  const [sections, setSections] = useState([]);\n  const sectionP = useRef();\n\n  useEffect(() => {\n    (async () => {\n      sectionP.current = makeCancelable(\n        Promise.all(\n          relatedContent.map(({ list, rows = 1 }) => {\n            const limit = rows * 4;\n            const url = `${urlBase}${list}/html/${layout}?limit=${limit}`;\n            return fetch(url).then(res => res.text());\n          }),\n        ),\n      );\n\n      try {\n        const sections = await sectionP.current.promise;\n        setSections(sections);\n      } catch (e) {\n        if (e.isCanceled) return;\n        console.error(e); // eslint-disable-line no-console\n      }\n    })();\n\n    // Cleanup\n    return () => {\n      sectionP.current.cancel();\n    };\n  }, [layout, relatedContent, urlBase]);\n\n  return sections.map((section, idx) => (\n    <section\n      key={idx} // eslint-disable-line react/no-array-index-key\n      className=\"onward-journey__section\"\n      data-g-component=\"onward-journey\"\n      dangerouslySetInnerHTML={{ __html: section }} // eslint-disable-line react/no-danger\n    />\n  ));\n};\n\nOnwardJourney.displayName = 'GOnwardJourney';\n\nOnwardJourney.propTypes = {\n  relatedContent: PropTypes.arrayOf(\n    PropTypes.shape({\n      rows: PropTypes.number.isRequired,\n      list: PropTypes.string,\n    }),\n  ),\n  urlBase: PropTypes.string,\n  layout: PropTypes.string,\n};\n\nOnwardJourney.defaultProps = {\n  relatedContent: [],\n  urlBase: 'https://ig.ft.com/onwardjourney/v3/',\n  layout: '',\n};\n\nexport default OnwardJourney;\n","/**\n * @file\n * Comments component\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport OComments from '@financial-times/o-comments';\nimport { flagsPropType } from '../shared/proptypes';\nimport './styles.scss';\n\nconst Comments = ({ id, url, linkPageUrl, flags }) => {\n  const ref = useRef();\n\n  const { dark } = flags;\n\n  useEffect(() => {\n    if ((id && linkPageUrl) || (id && url)) {\n      new OComments(ref.current, {\n        // eslint-disable-line no-new\n        articleUrl: linkPageUrl || url,\n        articleId: id,\n        title: id,\n      });\n    }\n  }, [id, url, linkPageUrl]);\n\n  const comments = (\n    <div className=\"o-grid-container\">\n      <div className=\"o-grid-row\">\n        <div data-o-grid-colspan=\"12 S11 Scenter M9 L8 XL7\">\n          <div ref={ref} data-o-component=\"o-comments\" id=\"comments\">\n            <div className=\"o--if-no-js\">\n              To participate in this chat, you need to upgrade to a newer web browser.{' '}\n              <a href=\"https://help.ft.com/tools-services/browser-compatibility/\">Learn more.</a>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n\n  if (dark) {\n    return <div className=\"pink\">{comments}</div>;\n  }\n\n  return comments;\n};\n\nComments.displayName = 'GComments';\n\nComments.propTypes = {\n  title: PropTypes.string,\n  id: PropTypes.string.isRequired,\n  url: PropTypes.string.isRequired,\n  flags: flagsPropType,\n};\n\nComments.defaultProps = {\n  title: 'Comments',\n  flags: {\n    dark: false,\n  },\n};\n\nexport default Comments;\nComments.displayName = 'GComments';\n","import Comments from './src/js/comments.js';\n\nconst constructAll = function () {\n\tComments.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Comments;\n","import events from './utils/events.js';\nimport displayName from './utils/display-name.js';\nimport auth from './utils/auth.js';\nimport purgeJwtCache from './utils/purge-jwt-cache.js';\n\nclass Stream {\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {HTMLElement} [streamEl] - The component element in the DOM\n\t * @param {object} [opts={}] - An options object for configuring the component\n\t */\n\tconstructor (streamEl, opts = {}) {\n\t\tthis.streamEl = streamEl || document;\n\t\tthis.options = opts;\n\t\tthis.eventSeenTimes = {};\n\t\tthis.useStagingEnvironment = Boolean(opts.useStagingEnvironment);\n\t}\n\n\tinit () {\n\t\tconst renderAndAuthenticate = (displayName) => {\n\t\t\treturn Promise.all([this.renderComments(), this.authenticateUser(displayName)])\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.login();\n\t\t\t\t});\n\t\t};\n\n\t\treturn displayName.validation(this.options.displayName)\n\t\t\t.then(displayName => renderAndAuthenticate(displayName))\n\t\t\t.catch(() => renderAndAuthenticate());\n\t}\n\n\tlogin () {\n\t\tif (this.authenticationToken) {\n\t\t\tthis.embed.login(this.authenticationToken);\n\n\t\t\tif (this.displayName) {\n\t\t\t\tthis.renderSignedInMessage();\n\t\t\t}\n\t\t}\n\t}\n\n\tauthenticateUser (displayName) {\n\t\tconst fetchOptions = {\n\t\t\tuseStagingEnvironment: this.useStagingEnvironment\n\t\t};\n\n\t\tif (displayName) {\n\t\t\tfetchOptions.displayName = displayName;\n\t\t}\n\n\t\treturn auth.fetchJsonWebToken(fetchOptions)\n\t\t\t.then(response => {\n\t\t\t\tthis.displayName = response.displayName;\n\n\t\t\t\tif (response.token) {\n\t\t\t\t\tthis.authenticationToken = response.token;\n\t\t\t\t} else {\n\t\t\t\t\tthis.userHasValidSession = response.userHasValidSession;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\treturn false;\n\t\t\t});\n\t}\n\n\trenderComments () {\n\t\treturn new Promise((resolve) => {\n\t\t\ttry {\n\t\t\t\t/*global Coral*/\n\t\t\t\tconst cacheBuster = 'cachebust=20210806';\n\t\t\t\tconst rootUrl = this.useStagingEnvironment\n\t\t\t\t\t? 'https://ft.staging.coral.coralproject.net'\n\t\t\t\t\t: 'https://ft.coral.coralproject.net';\n\n\t\t\t\tconst scriptElement = document.createElement('script');\n\t\t\t\tscriptElement.src = `${rootUrl}/assets/js/embed.js?${cacheBuster}`;\n\n\t\t\t\tscriptElement.onload = () => {\n\t\t\t\t\tthis.embed = Coral.createStreamEmbed(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: this.streamEl.id,\n\t\t\t\t\t\t\tstoryURL: this.options.articleUrl,\n\t\t\t\t\t\t\tstoryID: this.options.articleId,\n\t\t\t\t\t\t\trootURL: rootUrl,\n\t\t\t\t\t\t\tautoRender: true,\n\t\t\t\t\t\t\tevents: (events) => {\n\t\t\t\t\t\t\t\tevents.onAny((name, data) => {\n\t\t\t\t\t\t\t\t\tthis.publishEvent({name, data});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t\tthis.streamEl.parentNode.appendChild(scriptElement);\n\n\t\t\t\tif (this.useStagingEnvironment) {\n\t\t\t\t\tconst stagingWarning = document.createElement('div');\n\t\t\t\t\tstagingWarning.innerHTML = `\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"o-comments__staging-message-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"o-comments__staging-message-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"o-comments__staging-message\">You are on the staging environment for Comments</p>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>`;\n\t\t\t\t\tthis.streamEl.parentNode.insertBefore(stagingWarning, this.streamEl);\n\t\t\t\t}\n\n\t\t\t\tdocument.dispatchEvent(new Event('oCommentsReady'));\n\t\t\t} catch (error) {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t});\n\t}\n\n\tdisplayNamePrompt ({purgeCacheAfterCompletion = false} = {}) {\n\t\tconst overlay = displayName.prompt();\n\n\t\tconst onOverlayReady = (event) => {\n\t\t\tconst sourceOverlay = event.srcElement;\n\t\t\tconst displayNameForm = sourceOverlay.querySelector('#o-comments-displayname-form');\n\n\t\t\tif (displayNameForm) {\n\t\t\t\tdisplayNameForm.addEventListener('submit', (event) => {\n\t\t\t\t\tdisplayName.promptValidation(event)\n\t\t\t\t\t\t.then(displayName => {\n\t\t\t\t\t\t\toverlay.close();\n\t\t\t\t\t\t\tthis.authenticateUser(displayName)\n\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\tthis.login();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (purgeCacheAfterCompletion) {\n\t\t\t\t\t\t\t\tpurgeJwtCache();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener('oOverlay.ready', onOverlayReady);\n\n\t\tconst onOverlayClosed = () => {\n\t\t\toverlay.context.removeEventListener('oLayers.close', onOverlayClosed);\n\t\t\tdocument.removeEventListener('oOverlay.ready', onOverlayReady);\n\t\t\toverlay.destroy();\n\t\t};\n\t\toverlay.context.addEventListener('oLayers.close', onOverlayClosed);\n\t}\n\n\t/**\n\t * Emits events that have a valid o-comment event name.\n\t *\n\t * @param {object} args - The args object\n\t * @param {string} args.name - The event name\n\t * @param {object} args.data - The event payload\n\t * @returns {void}\n\t */\n\tpublishEvent ({name, data = {}}) {\n\t\tconst {\n\t\t\tsuccess: {\n\t\t\t\tstatus\n\t\t\t} = {},\n\t\t\terror\n\t\t} = data;\n\n\t\tif (name === 'loginPrompt' && this.userHasValidSession) {\n\t\t\treturn this.displayNamePrompt();\n\t\t}\n\n\t\tconst mappedEvent = events.coralEventMap.get(name);\n\n\t\tif (mappedEvent) {\n\t\t\tconst now = Number(new Date);\n\t\t\tconst delayInMilliseconds = 100;\n\t\t\tconst eventHasntBeenSeenRecently = !this.eventSeenTimes[mappedEvent.oComments] ||\n\t\t\t\tnow > this.eventSeenTimes[mappedEvent.oComments] + delayInMilliseconds;\n\n\t\t\tif (eventHasntBeenSeenRecently) {\n\t\t\t\tthis.eventSeenTimes[mappedEvent.oComments] = now;\n\n\t\t\t\tconst oCommentsEventOptions = { bubbles: true };\n\t\t\t\tif (error) {\n\t\t\t\t\toCommentsEventOptions.detail = { error };\n\t\t\t\t}\n\n\t\t\t\tconst oCommentsEvent = new CustomEvent(mappedEvent.oComments, oCommentsEventOptions);\n\t\t\t\tthis.streamEl.dispatchEvent(oCommentsEvent);\n\n\t\t\t\tif (mappedEvent.oTracking && !this.options.disableOTracking) {\n\t\t\t\t\tconst oTrackingEventOptions = {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\tcategory: 'comment',\n\t\t\t\t\t\t\taction: mappedEvent.oTracking,\n\t\t\t\t\t\t\tcoral: true,\n\t\t\t\t\t\t\tisWithheld: status === 'SYSTEM_WITHHELD'\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\toTrackingEventOptions.detail.error = error;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst oTrackingEvent = new CustomEvent('oTracking.event', oTrackingEventOptions);\n\t\t\t\t\tdocument.body.dispatchEvent(oTrackingEvent);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\trenderSignedInMessage () {\n\t\tconst editButtonId = `o-comments-edit-button--${this.streamEl.id}`;\n\t\tconst signedInMessage = document.createElement('div');\n\t\tsignedInMessage.classList.add('o-comments__signed-in-container');\n\t\tsignedInMessage.innerHTML = `\n\t\t\t\t\t\t\t\t\t<p class=\"o-comments__signed-in-text\">Signed in as\n\t\t\t\t\t\t\t\t\t\t<span class=\"o-comments__signed-in-inner-text\"></span>\n\t\t\t\t\t\t\t\t\t\t<button id=\"${editButtonId}\" class=\"o-comments__edit-display-name\">\n\t\t\t\t\t\t\t\t\t\t\tEdit <span class=\"o-comments__edit-display-name-descriptive\">commenting display name</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</p>`;\n\t\tsignedInMessage.querySelector('.o-comments__signed-in-inner-text').innerText = this.displayName;\n\n\t\tconst oldSignedInMessage = this.streamEl.parentNode.querySelector('.o-comments__signed-in-container');\n\t\tif (oldSignedInMessage) {\n\t\t\toldSignedInMessage.remove();\n\t\t}\n\n\t\tthis.streamEl.parentNode.insertBefore(signedInMessage, this.streamEl);\n\n\t\tdocument.getElementById(editButtonId).onclick = () => {\n\t\t\tthis.displayNamePrompt({purgeCacheAfterCompletion: true});\n\t\t};\n\t}\n}\n\nexport default Stream;\n","const coralEventMap = new Map([\n\t['ready',\n\t\t{\n\t\t\toComments: 'oComments.ready',\n\t\t\toTracking: 'ready'\n\t\t}\n\t],\n\t['loginPrompt',\n\t\t{\n\t\t\toComments: 'oComments.loginPrompt'\n\t\t}\n\t],\n\t['createComment.success',\n\t\t{\n\t\t\toComments: 'oComments.postComment',\n\t\t\toTracking: 'post'\n\t\t}\n\t],\n\t['createComment.error',\n\t\t{\n\t\t\toComments: 'oComments.errorComment',\n\t\t\toTracking: 'post-error'\n\t\t}\n\t],\n\t['createCommentReply.success',\n\t\t{\n\t\t\toComments: 'oComments.replyComment',\n\t\t\toTracking: 'reply'\n\t\t}\n\t],\n\t['editComment.success',\n\t\t{\n\t\t\toComments: 'oComments.editComment',\n\t\t\toTracking: 'edit'\n\t\t}\n\t],\n\t['createCommentReaction.success',\n\t\t{\n\t\t\toComments: 'oComments.likeComment',\n\t\t\toTracking: 'like'\n\t\t}\n\t],\n\t['reportComment.success',\n\t\t{\n\t\t\toComments: 'oComments.reportComment',\n\t\t\toTracking: 'report'\n\t\t}\n\t],\n\t['ignoreUser.success',\n\t\t{\n\t\t\toComments: 'oComments.ignoreUser',\n\t\t\toTracking: 'ignore-user'\n\t\t}\n\t]\n]);\n\nexport default {\n\tcoralEventMap\n};\n","\nimport Overlay from './src/js/overlay.js';\n\nconst constructAll = function() {\n\tOverlay.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Overlay;\n","module.exports = 'a[href], area[href], input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex=\"0\"], [contenteditable], audio[controls], video[controls], summary, [tabindex^=\"0\"], [tabindex^=\"1\"], [tabindex^=\"2\"], [tabindex^=\"3\"], [tabindex^=\"4\"], [tabindex^=\"5\"], [tabindex^=\"6\"], [tabindex^=\"7\"], [tabindex^=\"8\"], [tabindex^=\"9\"]'\n","export default {\n\tfetchJsonWebToken: function fetchJsonWebToken (options = {}) {\n\t\tconst url = new URL('https://comments-api.ft.com/user/auth/');\n\n\t\tif (options.displayName) {\n\t\t\turl.searchParams.append('displayName', options.displayName);\n\t\t}\n\n\t\tif (options.useStagingEnvironment) {\n\t\t\turl.searchParams.append('staging', '1');\n\t\t}\n\n\t\treturn fetch(url, { credentials: 'include' }).then(response => {\n\t\t// user is signed in and has a pseudonym\n\t\t\tif (response.ok) {\n\t\t\t\treturn response.json();\n\t\t\t} else {\n\t\t\t// user is signed in but has no display name\n\t\t\t\tif (response.status === 409) {\n\t\t\t\t\treturn { userHasValidSession: true };\n\t\t\t\t}\n\n\t\t\t\t// user is not signed in or session token is invalid\n\t\t\t\t// or error in comments api\n\t\t\t\treturn { userHasValidSession: false };\n\t\t\t}\n\t\t});\n\t}\n};\n","export default function purgeJwtCache() {\n\tconst url = `https://comments-api.ft.com/user/auth`;\n\treturn fetch(url, {\n\t\tmethod: 'PURGE',\n\t\tcredentials: 'include'\n\t});\n}\n","/**\n * @file\n * Footer component\n */\nimport React, { useEffect, useRef } from 'react';\nimport OFooter from '@financial-times/o-footer';\nimport './styles.scss';\n\nconst Footer = () => {\n  const ref = useRef();\n\n  useEffect(() => {\n    (async () => {\n      try {\n        new OFooter(ref.current);\n      } catch (e) {\n        console.error(e);\n      }\n    })();\n  }, []);\n\n  return (\n    <footer\n      ref={ref}\n      data-o-footer--no-js=\"\"\n      className=\"o-footer o-footer--theme-dark\"\n      data-o-component=\"o-footer\"\n    >\n      <div className=\"o-footer__container\">\n        <div className=\"o-footer__row\">\n          <nav className=\"o-footer__matrix\" role=\"navigation\" aria-label=\"Useful links\">\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\">Support</h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-0\">\n                <div className=\"o-footer__matrix-column\">\n                  <a className=\"o-footer__matrix-link\" href=\"/tour\" data-trackable=\"View Site Tips\">\n                    <span className=\"o-footer__matrix-link__copy\">View Site Tips</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com\"\n                    data-trackable=\"Help Centre\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Help Centre</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://aboutus.ft.com/contact-us\"\n                    data-trackable=\"Contact Us\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Contact Us</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/aboutus\"\n                    data-trackable=\"About Us\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">About Us</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/accessibility\"\n                    data-trackable=\"Accessibility\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Accessibility</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/tour/myft\"\n                    data-trackable=\"myFT Tour\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">myFT Tour</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://aboutus.ft.com/en-gb/careers/\"\n                    data-trackable=\"Careers\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Careers</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\">Legal &amp; Privacy</h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-1\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/terms-conditions/\"\n                    data-trackable=\"Terms &amp; Conditions\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Terms &amp; Conditions</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/privacy/\"\n                    data-trackable=\"Privacy Policy\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Privacy Policy</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/cookies/\"\n                    data-trackable=\"Cookies\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Cookies</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\"\n                    data-trackable=\"Copyright\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Copyright</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://help.ft.com/help/legal/slavery-statement/\"\n                    data-trackable=\"Slavery Statement &amp; Policies\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Slavery Statement &amp; Policies</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-2\">\n                Services\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-2\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/securedrop\"\n                    data-trackable=\"Share News Tips Securely\"\n                    data-o-tracking-do-not-track=\"true\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Share News Tips Securely</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/products\"\n                    data-trackable=\"Individual Subscriptions\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Individual Subscriptions</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/group-subscriptions/group-contact-us/?segmentId=383c7f63-abf4-b62d-cb33-4c278e6fdf61&amp;cpccampaign=B2B_link_ft.com_footer\"\n                    data-trackable=\"Group Subscriptions\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Group Subscriptions</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/republishing/\"\n                    data-trackable=\"Republishing\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Republishing</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.businessesforsale.com/ft2/notices\"\n                    data-trackable=\"Contracts &amp; Tenders\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Contracts &amp; Tenders</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.exec-appointments.com/\"\n                    data-trackable=\"Executive Job Search\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Executive Job Search</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://fttoolkit.co.uk/\"\n                    data-trackable=\"Advertise with the FT\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Advertise with the FT</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://twitter.com/financialtimes\"\n                    data-trackable=\"Follow the FT on Twitter\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Follow the FT on Twitter</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://transact.ft.com/\"\n                    data-trackable=\"FT Transact\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Transact</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://enterprise.ft.com/en-gb/services/group-subscriptions/education/\"\n                    data-trackable=\"Secondary Schools\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Secondary Schools</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-3\">\n                Tools\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-3\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/data/portfolio/dashboard\"\n                    data-trackable=\"Portfolio\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Portfolio</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/todaysnewspaper\"\n                    data-trackable=\"Today's Newspaper (ePaper)\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Today's Newspaper (ePaper)</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/data/alerts/\"\n                    data-trackable=\"Alerts Hub\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Alerts Hub</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://rankings.ft.com\"\n                    data-trackable=\"Business School Rankings\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Business School Rankings</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://kat.ft.com/\"\n                    data-trackable=\"Enterprise Tools\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Enterprise Tools</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/news-feed\"\n                    data-trackable=\"News feed\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">News feed</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/newsletters\"\n                    data-trackable=\"Newsletters\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Newsletters</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://markets.ft.com/research/Markets/Currencies?segid=70113\"\n                    data-trackable=\"Currency Converter\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Currency Converter</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title\" aria-controls=\"o-footer-section-4\">\n                Community &amp; Events\n              </h3>\n              <div className=\"o-footer__matrix-content\" id=\"o-footer-section-4\">\n                <div className=\"o-footer__matrix-column\">\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://www.ft.com/tour/community\"\n                    data-trackable=\"FT Community\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Community</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://live.ft.com/\"\n                    data-trackable=\"FT Live\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Live</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://forums.ft.com\"\n                    data-trackable=\"FT Forums\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">FT Forums</span>\n                  </a>\n                  <a\n                    className=\"o-footer__matrix-link\"\n                    href=\"https://bdp.ft.com\"\n                    data-trackable=\"Board Director Programme\"\n                  >\n                    <span className=\"o-footer__matrix-link__copy\">Board Director Programme</span>\n                  </a>\n                </div>\n              </div>\n            </div>\n            <div className=\"o-footer__matrix-group o-footer__matrix-group--1\">\n              <h3 className=\"o-footer__matrix-title o-footer__matrix-title--link\">\n                <a className='o-footer__matrix-link o-footer__matrix-link--more' id=\"o-footer-section-5\" href=\"https://ft.com/more-from-ft-group\">\n                  <span className=\"o-footer__matrix-link__copy\">More from the FT Group</span>\n                </a>\n              </h3>\n            </div>\n          </nav>\n        </div>\n        <div className=\"o-footer__copyright\" role=\"contentinfo\">\n          <small>\n            Markets data delayed by at least 15 minutes. &#xA9; THE FINANCIAL TIMES LTD{' '}\n            {new Date().getFullYear()}\n            {'. '}\n            <abbr title=\"Financial Times\" aria-label=\"F T\">\n              FT\n            </abbr>{' '}\n            and &#x2018;Financial Times&#x2019; are trademarks of The Financial Times Ltd.\n            <br />\n            The Financial Times and its journalism are subject to a self-regulation regime under the{' '}\n            <a\n              href=\"https://aboutus.ft.com/en-gb/ft-editorial-code/\"\n              aria-label=\"F T Editorial Code of Practice\"\n            >\n              FT Editorial Code of Practice\n            </a>\n            .\n          </small>\n        </div>\n      </div>\n      <div className=\"o-footer__brand\">\n        <div className=\"o-footer__container\">\n          <div className=\"o-footer__brand-logo\" />\n        </div>\n      </div>\n    </footer>\n  );\n};\n\nFooter.displayName = 'GFooter';\n\nexport default Footer;\n","import Footer from './src/js/footer.js';\n\nconst constructAll = () => {\n\tFooter.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Footer;\n","import oGrid from '@financial-times/o-grid';\nimport oViewport from '@financial-times/o-viewport';\n\nexport default function init (callback) {\n\toViewport.listenTo('resize');\n\n\tlet lastBreakpoint = oGrid.getCurrentLayout();\n\n\tdocument.body.addEventListener('oViewport.resize', () => {\n\t\tconst breakpoint = oGrid.getCurrentLayout();\n\n\t\tif (breakpoint !== lastBreakpoint) {\n\t\t\tcallback(breakpoint);\n\t\t\tlastBreakpoint = breakpoint;\n\t\t}\n\t});\n\n\tcallback(lastBreakpoint);\n}\n","import oViewport from '@financial-times/o-viewport';\n\n/**\n * Utility methods for o-ads events. Methods defined here are added to the utils object not the utils.event object.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils/events\n * @see utils\n */\n// Creates a timestamp in the browser's performance entry buffer\n// for later use\nconst perfMark = name => {\n  /* istanbul ignore next */\n  const performance = window.LUX || window.performance || window.msPerformance || window.webkitPerformance || window.mozPerformance;\n\n  if (performance && performance.mark) {\n    performance.clearMarks(name);\n    performance.mark(name);\n  }\n}; // Creates a suffix for an event's performance mark based on some of the attributes on\n// the event payload which help identify unequivocally the slot that originated the event\n\nfunction buildPerfmarkSuffix(eventDetailsObj) {\n  let suffix = '';\n\n  if (eventDetailsObj && typeof eventDetailsObj === 'object' && 'pos' in eventDetailsObj && 'name' in eventDetailsObj) {\n    suffix = '__' + [eventDetailsObj.pos, eventDetailsObj.name, eventDetailsObj.size, eventDetailsObj.creativeId].join('__');\n  }\n\n  return suffix;\n}\n/**\n* Broadscasts an o-ads event\n* @param {string} name The name of the event\n* @param {object} data The data to send as event detail\n* @param {HTMLElement} target The element to attach the event listener to\n*/\n\nfunction broadcast(eventName, data, target) {\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n  target = target || document.body || document.documentElement;\n  eventName = `oAds.${eventName}`;\n  const opts = {\n    bubbles: true,\n    cancelable: true,\n    detail: data\n  };\n  const isSlotEvent = typeof data === 'object' && 'pos' in data;\n  const evDetails = isSlotEvent ? {\n    pos: data.pos,\n    name: data.name,\n    size: data.size && data.size.length ? data.size.toString() : '',\n    creativeId: data.creativeId\n  } : {};\n  const suffix = buildPerfmarkSuffix(evDetails);\n  const markName = eventName + suffix;\n  perfMark(markName);\n  target.dispatchEvent(new CustomEvent(eventName, opts));\n}\n/**\n* Sets an event listener for an oAds event\n* @param {string} name The name of the event\n* @param {EventListenerOrEventListenerObject} callback The function to execute on the event\n* @param {HTMLElement} [target] The element to attach the event listener to\n*/\n\nfunction on(name, callback, target) {\n  name = `oAds.${name}`;\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n\n  target = target || document.body || document.documentElement;\n  target.addEventListener(name, callback);\n}\n/**\n* Removes an event listener for an oAds event\n* @param {string} name The name of the event\n* @param {function} callback The function on the event to be removed\n* @param {HTMLElement} target The element the event listener is attached to\n*/\n\nfunction off(name, callback, target) {\n  name = `oAds.${name}`;\n  /* istanbul ignore next: ignore the final fallback as hard trigger */\n\n  target = target || document.body || document.documentElement;\n  target.removeEventListener(name, callback);\n}\n/**\n* Sets a one time event listener for an oAds event\n* @param {string} name The name of the event\n* @param {function} callback The function to execute on the event\n* @param {HTMLElement} [target] The element to attach the event listener to\n*/\n\nfunction once(name, callback, target) {\n  const handler = function (event) {\n    /* istanbul ignore next: ignore the final fallback as hard trigger */\n    const targ = event.target || event.srcElement;\n    targ.removeEventListener(name = `oAds.${name}`, callback);\n\n    if (callback) {\n      callback(event); // we set callback to null so if for some reason the listener isn't removed the callback will still only be called once\n\n      callback = null;\n    }\n  };\n\n  on(name, handler, target);\n}\n\nfunction getMarksForEvents(events, suffix) {\n  const markNames = events.map(eventName => 'oAds.' + eventName + suffix);\n\n  if (!performance || !performance.getEntriesByName) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  const marks = {};\n  markNames.forEach(function (mName) {\n    const pMarks = performance.getEntriesByName(mName);\n    const markName = mName.replace('oAds.', '').replace(suffix, '');\n\n    if (pMarks && pMarks.length) {\n      // We don't need sub-millisecond precision\n      marks[markName] = Math.round(pMarks[0].startTime);\n      return;\n    } // If no mark has been found, we might be looking for a page-level\n    // mark name, i.e. one without a suffix\n\n\n    if (suffix) {\n      const mNameNoSuffix = mName.replace(suffix, '');\n      const pMarks2 = performance.getEntriesByName(mNameNoSuffix);\n\n      if (pMarks2 && pMarks2.length) {\n        marks[markName] = Math.round(pMarks2[0].startTime);\n      }\n    }\n  });\n  return marks;\n}\nfunction clearPerfMarks(metricsDefinitions, groupsToClear) {\n  if (!performance || !performance.getEntriesByType) {\n    return;\n  }\n\n  const relevantGroups = metricsDefinitions.filter(group => groupsToClear.includes(group.spoorAction));\n  const relevantGroupsMarks = relevantGroups.map(group => group.marks); // Because relevantGroupsMarks is a 2D array ...\n\n  const eventsToClear = [].concat(...relevantGroupsMarks);\n  const perfMarks = performance.getEntriesByType('mark');\n  perfMarks.forEach(({\n    name\n  }) => {\n    eventsToClear.forEach(eventName => {\n      if (name.match(`oAds.${eventName}`)) {\n        performance.clearMarks(name);\n      }\n    });\n  });\n}\n/* istanbul ignore next */\n\nfunction getNavigationPerfMarks(desiredMarks) {\n  if (!performance || !performance.getEntriesByType || !utils.isArray(desiredMarks)) {\n    /* istanbul ignore next  */\n    return {};\n  }\n\n  const navMarksArray = performance.getEntriesByType('navigation');\n  const navMarks = utils.isArray(navMarksArray) && navMarksArray[0] || {};\n  const marks = {};\n  desiredMarks.forEach(function (markName) {\n    marks[markName] = typeof navMarks[markName] === 'number' ? Math.round(navMarks[markName]) : 0;\n  });\n  return marks;\n}\n\nfunction setupMetrics(definitions, callback, disableSampling) {\n  if (!Array.isArray(definitions)) {\n    this.log.warn('Metrics definitions should be an array. o-Ads will not record any metrics.');\n    return;\n  }\n\n  definitions.forEach(function (eDef) {\n    if (disableSampling || utils.inSample(eDef.sampleSize)) {\n      const triggers = Array.isArray(eDef.triggers) ? eDef.triggers : [];\n      triggers.forEach(function (trigger) {\n        sendMetricsOnEvent('oAds.' + trigger, eDef, callback);\n      });\n    }\n  });\n}\n\nfunction sendMetricsOnEvent(eventName, eMarkMap, callback) {\n  document.addEventListener(eventName, function listenOnInitialised(event) {\n    sendMetrics(eMarkMap, event.detail, callback);\n\n    if (!eMarkMap.multiple) {\n      document.removeEventListener(eventName, listenOnInitialised);\n    }\n  });\n}\n\nfunction sendMetrics(eMarkMap, eventDetails, callback) {\n  const suffix = utils.buildPerfmarkSuffix(eventDetails);\n  const marks = getMarksForEvents(eMarkMap.marks, suffix);\n\n  if (eMarkMap.navigation) {\n    const navMarks = getNavigationPerfMarks(eMarkMap.navigation);\n    Object.assign(marks, navMarks);\n  }\n\n  const eventPayload = {\n    category: 'ads',\n    action: eMarkMap.spoorAction,\n    timings: {\n      marks: marks\n    }\n  };\n  eventPayload.advert = {\n    correlator: window.oAds.gpt.getCorrelator()\n  };\n\n  if (eventDetails && 'pos' in eventDetails) {\n    eventPayload.creative = {\n      name: eventDetails.name,\n      pos: eventDetails.pos,\n      size: eventDetails.size && eventDetails.size.toString(),\n      creativeId: eventDetails.creativeId || 0\n    };\n\n    if (typeof eventDetails.isEmpty === 'boolean') {\n      eventPayload.creative.isEmpty = eventDetails.isEmpty;\n    }\n  }\n\n  callback(eventPayload);\n}\n\nfunction markPageChange(definitions, groupsToClear) {\n  clearPerfMarks(definitions, groupsToClear);\n  utils.broadcast('pageChange');\n}\n\n/**\n * Utility methods for postMessage api.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\nvar messenger = {\n  post: function (message, source) {\n    message = typeof message === 'string' ? message : JSON.stringify(message);\n    source = arguments[1] || window.top;\n    source.postMessage(message, '*');\n  },\n  parse: function (message) {\n    // Check whether the message looks like an object before trying to parse it\n    if (typeof message !== 'string' || message[0] !== '{') {\n      return message;\n    } // try returning the parsed object\n\n\n    try {\n      return JSON.parse(message);\n    } // return the original message\n    catch (e) {\n      return message;\n    }\n  }\n};\n\nlet callback;\nlet breakpoints$1;\nlet current;\n\nfunction getNearestBreakpoint() {\n  let winner;\n  const dims = oViewport.getSize(true);\n\n  function findCurrentBreakpoint(breakpoint) {\n    const breakpointDims = breakpoints$1[breakpoint];\n\n    if (dims.width >= breakpointDims[0] && dims.height >= breakpointDims[1]) {\n      if (!winner || breakpointDims[0] >= breakpoints$1[winner][0]) {\n        winner = breakpoint;\n      }\n    }\n  }\n\n  Object.keys(breakpoints$1).forEach(findCurrentBreakpoint);\n  return winner;\n}\n\nfunction fire() {\n  const winner = getNearestBreakpoint();\n\n  if (current !== winner) {\n    setCurrent(winner);\n    callback(winner);\n  }\n}\n\nfunction setCurrent(name) {\n  current = name;\n}\n\nfunction getCurrent() {\n  return current;\n}\nfunction init$2(brps, cb) {\n  if (!utils.isFunction(cb)) {\n    // must have a call back function\n    return false;\n  }\n\n  breakpoints$1 = brps;\n  callback = cb;\n  setCurrent(getNearestBreakpoint());\n  document.body.addEventListener('oViewport.orientation', fire);\n  document.body.addEventListener('oViewport.resize', fire);\n  oViewport.listenTo('orientation');\n  oViewport.listenTo('resize');\n  return getCurrent();\n}\noViewport.setThrottleInterval;\n\n/* eslint no-console: 0 */\n/**\n * Utility methods for logging.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils/log\n * @see utils\n */\n\n/* jshint devel: true */\n\n/**\n * Safe logger for the browser\n * @exports utils/log\n * @param {string} type Sets the type of log message log, warn, error or info, if not set to one of these values log will be used\n * @param {any} args the arguments to be passed to console[type]\n */\n\nfunction log() {\n  let type;\n  let argsIndex;\n\n  if ('log warn error info'.indexOf(arguments[0]) === -1) {\n    type = 'log';\n    argsIndex = 0;\n  } else {\n    type = arguments[0];\n    argsIndex = 1;\n  }\n\n  const args = [].slice.call(arguments, argsIndex);\n\n  if (log.isOn(type)) {\n    window.console[type].apply(window.console, args);\n  }\n}\n/**\n * Determine if debug logging is on and if the type if supported\n * @param {string} type\n */\n\nconst isOn = function (type) {\n  /* istanbul ignore else  */\n  const debug = localStorage && localStorage.getItem('oAds') || location.search.indexOf('DEBUG=OADS') !== -1;\n  return debug && window.console && window.console[type];\n};\n/**\n * Log a warning message\n */\n\nconst warn = function () {\n  const args = ['warn'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an error message\n */\n\nconst error = function () {\n  const args = ['error'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Log an info message\n */\n\nconst info = function () {\n  const args = ['info'].concat([].slice.call(arguments, 0));\n  log.apply(null, args);\n};\n/**\n * Start a collapsed group\n * @param {string} group the name of the group, defaults to o-ads\n */\n\nconst start = function (group) {\n  if (!log.isOn('groupCollapsed')) {\n    return;\n  }\n\n  window.console.groupCollapsed(group || 'o-ads');\n};\n/**\n * End a collapsed group\n */\n\nconst end = function () {\n  if (!log.isOn('groupEnd')) {\n    return;\n  }\n\n  window.console.groupEnd();\n};\nconst table = function (data, columns) {\n  if (log.isOn('log') && window.console) {\n    if (console.table) {\n      console.table(data, columns);\n    } else {\n      console.log(data);\n    }\n  }\n};\nconst attributeTable = function (object, columns) {\n  if (log.isOn('log') && window.console) {\n    if (object && console.table) {\n      const data = Object.keys(object).map(item => {\n        let val;\n\n        if (isArray(object[item]) || isObject(object[item])) {\n          val = JSON.stringify(object[item]);\n        } else {\n          val = object[item];\n        }\n\n        return {\n          key: item,\n          value: val\n        };\n      });\n      console.table(data, columns);\n    } else {\n      console.log(object);\n    }\n  }\n};\n\n// generated by genversion\nvar version = '18.3.3';\n\n/**\n * Utility methods for the advertising library.\n * @author Origami Advertising, origami.advertising@ft.com\n * @module utils\n */\n\nconst hop = Object.prototype.hasOwnProperty;\ninit$2.getCurrent = getCurrent;\nlog.start = start;\nlog.end = end;\nlog.isOn = isOn;\nlog.info = info;\nlog.warn = warn;\nlog.error = error;\nlog.table = table;\nlog.attributeTable = attributeTable;\n/**\n * Uses object prototype toString method to get at the type of object we are dealing,\n * IE returns [object Object] for null and undefined so we need to filter those\n * http://es5.github.com/#x15.2.4.2\n * @private\n * @param {object} Any javascript object\n * @returns The type of the object e.g Array, String, Object\n */\n\nfunction is(object) {\n  const type = Object.prototype.toString.call(object).match(/^\\[object\\s(.*)\\]$/)[1];\n\n  if (object === null) {\n    return 'Null';\n  } else if (object === undefined) {\n    return 'Undefined';\n  } else {\n    return type;\n  }\n}\n/**\n * Test if an object is an Array\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Array, otherwise false\n */\n\n\nconst isArray = function (obj) {\n  return is(obj) === 'Array';\n};\n/**\n * Test if an object is a String\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type String, otherwise false\n */\n\nconst isString = function (obj) {\n  return is(obj) === 'String';\n};\n/**\n * Test if an object is a Function\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Function, otherwise false\n */\n\nconst isFunction = function (obj) {\n  return is(obj) === 'Function';\n};\n/**\n * Test if an object is a Storage object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Storage, otherwise false\n */\n\nconst isStorage = function (obj) {\n  return is(obj) === 'Storage';\n};\n/**\n * Test if an object is an Object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is of type Object, otherwise false\n */\n\nconst isObject = function (obj) {\n  return is(obj) === 'Object';\n};\n/**\n * Test if an object is the global window object\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is the window obj, otherwise false\n */\n\nconst isWindow = function (obj) {\n  return obj && obj !== null && obj === window;\n};\n/**\n * Test if an object inherits from any other objects, used in extend\n * to protect against deep copies running out of memory and constructors\n * losing there prototypes when cloned\n * @param {object} obj The object to be tested\n * @returns {boolean} true if the object is plain false otherwise\n */\n\nconst isPlainObject = function (obj) {\n  const hop = Object.prototype.hasOwnProperty; // Must be an Object.\n  // Because of IE, we also have to check the presence of the constructor property.\n  // Make sure that DOM nodes and window objects don't pass through, as well\n\n  if (!obj || !isObject(obj) || obj.nodeType || isWindow(obj)) {\n    return false;\n  }\n\n  try {\n    // Not own constructor property must be Object\n    if (obj.constructor && !hop.call(obj, 'constructor') && !hop.call(obj.constructor.prototype, 'isPrototypeOf')) {\n      return false;\n    }\n  } catch (e) {\n    /* istanbul ignore next  */\n    // IE8,9 Will throw exceptions on certain host objects\n    return false;\n  } // Own properties are enumerated firstly, so to speed up,\n  // if last one is own, then all properties are own.\n\n\n  let key;\n\n  for (key in obj) {// empty\n  }\n\n  return key === undefined || hop.call(obj, key);\n};\n/**\n * Test if an object is a string with a length\n * @param {object} str The object to be tested\n * @returns {boolean} true if the object is a string with a length greater than 0\n */\n\nconst isNonEmptyString = function (str) {\n  return isString(str) && Boolean(str.length);\n};\nconst isElement = function (element) {\n  return element && element.nodeType === 1 && element.tagName || false;\n};\nfunction extend() {\n  /* jshint forin: false */\n\n  /* when doing a deep copy we want to copy prototype properties */\n  let options;\n  let src;\n  let copy;\n  let copyIsArray;\n  let clone;\n  let target = arguments[0] || {};\n  const length = arguments.length;\n  let deep = false;\n  let i = 1; // Handle a deep copy situation\n\n  if (typeof target === 'boolean') {\n    deep = target;\n    target = arguments[1] || {}; // skip the boolean and the target\n\n    i = 2;\n  } // Handle case when target is a string or something (possible in deep copy)\n\n  /* istanbul ignore else  */\n\n\n  if (typeof target !== 'object' && !isFunction(target)) {\n    target = {};\n  } // do nothing if only one argument is passed (or 2 for a deep copy)\n\n  /* istanbul ignore else  */\n\n\n  if (length === i) {\n    return target;\n  }\n\n  for (; i < length; i++) {\n    // Only deal with non-null/undefined values\n    if ((options = arguments[i]) !== null) {\n      // Extend the base object\n      for (const name in options) {\n        /* istanbul ignore next */\n        if (options.hasOwnProperty(name)) {\n          src = target[name];\n          copy = options[name]; // Prevent never-ending loop\n\n          if (target === copy) {\n            continue;\n          } // Recurse if we're merging arrays\n\n\n          if (deep && copy && (isPlainObject(copy) || isArray(copy))) {\n            copyIsArray = isArray(copy);\n\n            if (copyIsArray) {\n              copyIsArray = false;\n              clone = src && isArray(src) ? src : [];\n            } else {\n              clone = src && isObject(src) ? src : {};\n            } // Never move original objects, clone them\n\n\n            target[name] = extend(deep, clone, copy); // Don't bring in undefined values\n          } else if (copy !== undefined) {\n            target[name] = copy;\n          }\n        }\n      }\n    }\n  } // Return the modified object\n\n\n  return target;\n}\n/**\n * Create an object hash from a delimited string\n * Beware all properties on the resulting object will have string values.\n * @param {string}        str       The string to transform\n * @param {string|regexp} delimiter The character that delimits each name/value pair\n * @param {string}        pairing   The character that separates the name from the value\n * @return {object}\n *\n */\n\nconst hash = function (str, delimiter, pairing) {\n  let pair;\n  let value;\n  const hashObj = {};\n\n  if (str && str.split) {\n    str = str.split(delimiter);\n\n    for (let idx = 0, l = str.length; idx < l; idx += 1) {\n      value = str[idx];\n      pair = value.split(pairing);\n\n      if (pair.length > 1) {\n        hashObj[pair[0].trim()] = pair.slice(1).join(pairing);\n      }\n    }\n  }\n\n  return hashObj;\n};\n/**\n * Takes a script URL as a string value, creates a new script element, sets the src and attaches to the page\n * The async value of the script can be set by the seccond parameter, which is a boolean\n * Note, we should use protocol-relative URL paths to ensure we don't run into http/https issues\n * @param {string} scriptUrl The url to the script file to be added\n * @param {boolean} async Set the async attribute on the script tag\n * @param {function} callback A function to run when the script loads\n * @param {function} errorcb A function to run if the script fails to load\n * @returns {HTMLElement} the created script tag\n */\n\nconst attach = function (scriptUrl, async, callback, errorcb, autoRemove) {\n  const tag = document.createElement('script');\n  const node = document.getElementsByTagName('script')[0];\n  let hasRun = false;\n\n  function processCallback(callback) {\n    /* istanbul ignore else  */\n    if (!hasRun) {\n      callback.call();\n      hasRun = true;\n      /* istanbul ignore else  */\n\n      if (autoRemove) {\n        tag.parentElement.removeChild(tag);\n      }\n    }\n  }\n\n  tag.setAttribute('src', scriptUrl);\n  tag.setAttribute('o-ads', '');\n  /* istanbul ignore else */\n\n  if (async) {\n    tag.async = 'true';\n  }\n  /* istanbul ignore else  */\n\n\n  if (isFunction(callback)) {\n    /* istanbul ignore if - legacy IE code, won't test */\n    if (hop.call(tag, 'onreadystatechange')) {\n      tag.onreadystatechange = function () {\n        if (tag.readyState === 'loaded') {\n          processCallback(callback);\n        }\n      };\n    } else {\n      tag.onload = function () {\n        processCallback(callback);\n      };\n    }\n  }\n  /* istanbul ignore else  */\n\n\n  if (isFunction(errorcb)) {\n    tag.onerror = function () {\n      processCallback(errorcb);\n    };\n  } // Use insert before, append child has issues with script tags in some browsers.\n\n\n  node.parentNode.insertBefore(tag, node);\n  return tag;\n};\n/**\n * return the current documents referrer or an empty string if non exists\n * This method enables us to mock the referrer in our tests reliably and doesn't really serve any other purpose\n * @returns {string} document.referrer\n */\n\n/* istanbul ignore next - cannot reliably test value of referer */\n\nconst getReferrer = function () {\n  return document.referrer || '';\n};\n/**\n * Remove hyphens from a string and upper case the following letter\n * @param {string} string the string to parse\n * @returns {string}\n */\n\nconst dehyphenise = function (string) {\n  return string.replace(/(-)([a-z])/g, function (match, hyphen, letter) {\n    return letter.toUpperCase();\n  });\n};\n/**\n * remove prefixes from o-ads data attributes and dehyphenise the name\n * @param {string|} name the name of the attribute to parse\n * @returns {string}\n */\n\nconst parseAttributeName = function (attribute) {\n  const name = isString(attribute) ? attribute : attribute.name;\n  return dehyphenise(name.replace(/(data-)?o-ads-/, ''));\n};\n/**\n * return the current documents url or an empty string if non exists\n * This method enables us to mock the document location string in our tests reliably and doesn't really serve any other purpose\n * @returns {string}\n */\n\n/* istanbul ignore next - cannot reliably test value of location */\n\nconst getLocation = function () {\n  return document.location.href || '';\n};\n/**\n * return the current documents search or an empty string if non exists\n * also strips the initial ? from the search string for easier parsing\n * This method enables us to mock the search string in our tests reliably and doesn't really serve any other purpose\n * @returns {string}\n */\n\nconst getQueryString = function () {\n  return document.location.search.substring(1) || '';\n};\n/**\n * Get a query string parameter by name from a url\n * @param name\n * @param url\n * @returns {string | null}\n */\n\nconst getQueryParamByName = function (name, url) {\n  url = url || window.location.href;\n  name = name.replace(/[[\\]]/g, '\\\\$&');\n  const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');\n  const results = regex.exec(url);\n\n  if (!results) {\n    return null;\n  }\n\n  if (!results[2]) {\n    return '';\n  }\n\n  return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n};\n/**\n * returns a timestamp of the current date/time in the format YYYYMMDDHHMMSS\n * @returns {string}\n */\n\nconst getTimestamp = function () {\n  const now = new Date();\n  return [now.getFullYear(), `0${now.getMonth() + 1}`.slice(-2), `0${now.getDate()}`.slice(-2), `0${now.getHours()}`.slice(-2), `0${now.getMinutes()}`.slice(-2), `0${now.getSeconds()}`.slice(-2)].join('');\n};\n/**\n * Given the window object of an iframe this method returns the o-ads slot name\n * that rendered the iframe, if the iframe was not rendered by o-ads this will\n * return false\n * @param {window}  a window object\n * @returns {String|Boolean}\n */\n\nconst iframeToSlotName = function (iframeWindow) {\n  // capture all iframes in the page in a live node list\n  const iframes = document.getElementsByTagName('iframe');\n  let slotName;\n  let node;\n  let i = iframes.length; // Figure out which iframe DOM node we have the window for\n\n  while (i--) {\n    /* istanbul ignore else  */\n    if (iframes[i].contentWindow === iframeWindow) {\n      node = iframes[i];\n      break;\n    }\n  }\n  /* istanbul ignore else  */\n\n\n  if (node) {\n    // find the closest parent with a data-o-ads-name attribute, that's our slot name\n    while (node.parentNode) {\n      slotName = node.getAttribute('data-o-ads-name');\n      /* istanbul ignore else  */\n\n      if (slotName) {\n        return slotName;\n      }\n\n      node = node.parentNode;\n    }\n  }\n\n  return false;\n};\nconst buildObjectFromArray = function buildObjectFromArray(targetObject) {\n  return targetObject.reduce((prev, data) => {\n    prev[data.key] = data.value;\n    return prev;\n  }, {});\n};\nconst cookie = function (name) {\n  const val = document.cookie.match(`(^|;)\\\\s*${name}\\\\s*=\\\\s*([^;]+)`);\n  return val ? val.pop() : null;\n};\nconst getVersion = () => version ;\nconst metricsSampleThreshold = Math.random();\nfunction inSample(sampleSize) {\n  return typeof sampleSize === 'undefined' || sampleSize > metricsSampleThreshold;\n}\nvar utils = {\n  on,\n  off,\n  once,\n  broadcast,\n  messenger,\n  responsive: init$2,\n  log,\n  isArray,\n  isString,\n  isFunction,\n  isStorage,\n  isObject,\n  isWindow,\n  isPlainObject,\n  isNonEmptyString,\n  isElement,\n  extend,\n  hash,\n  attach,\n  getReferrer,\n  dehyphenise,\n  parseAttributeName,\n  getLocation,\n  getQueryString,\n  getQueryParamByName,\n  getTimestamp,\n  iframeToSlotName,\n  buildObjectFromArray,\n  cookie,\n  getVersion,\n  setupMetrics,\n  clearPerfMarks,\n  markPageChange,\n  inSample,\n  perfMark,\n  buildPerfmarkSuffix\n};\n\n//TODO remove all ft.com specific stuff so we can remove this as a global\n/**\n* Default configuration set in the constructor.\n*/\n\nconst defaults = {\n  formats: {\n    PartnerContent: {\n      sizes: ['fluid']\n    },\n    MediumRectangle: {\n      sizes: [300, 250]\n    },\n    Rectangle: {\n      sizes: [180, 50]\n    },\n    WideSkyscraper: {\n      sizes: [160, 600]\n    },\n    Leaderboard: {\n      sizes: [728, 90]\n    },\n    SuperLeaderboard: {\n      sizes: [[970, 90], [970, 66]]\n    },\n    HalfPage: {\n      sizes: [300, 600]\n    },\n    Billboard: {\n      sizes: [970, 250]\n    },\n    Portrait: {\n      sizes: [300, 1050]\n    },\n    AdhesionBanner: {\n      sizes: [320, 50]\n    },\n    MicroBar: {\n      sizes: [88, 31]\n    },\n    Button2: {\n      sizes: [120, 60]\n    },\n    Responsive: {\n      sizes: [2, 2]\n    }\n  },\n  responsive: {\n    extra: [1025, 0],\n    //Reasonable width to show a Billboard (desktop)\n    large: [1000, 0],\n    //reasonable width to show SuperLeaderboard (tablet landscape)\n    medium: [760, 0],\n    //reasonable width to show a leaderboard (tablet portrait)\n    small: [0, 0] //Mobile\n\n  },\n  flags: {\n    refresh: true,\n    inview: true\n  },\n  displayLabelWithBorders: false\n};\n\nfunction fetchDeclaritiveConfig() {\n  let results = {};\n  const scripts = Array.from(document.querySelectorAll('script[data-o-ads-config]'));\n  scripts.forEach(script => {\n    results = window.JSON ? utils.extend(results, JSON.parse(script.innerHTML)) : 'UNSUPPORTED';\n  });\n  return results;\n}\n/**\n* @private\n* @function\n* fetchCanonicalURL Grabs the canonical URL from the page meta if it exists.\n*/\n\n\nfunction fetchCanonicalURL() {\n  let canonical;\n  const canonicalTag = document.querySelector('link[rel=\"canonical\"]');\n\n  if (canonicalTag) {\n    canonical = canonicalTag.href;\n  }\n\n  return {\n    canonical: canonical\n  };\n}\n/**\n* Defines a store for configuration information and returns a getter/setter method for access.\n* @class\n* @constructor\n*/\n\n\nfunction Config() {\n  this.store = {};\n}\n\nConfig.prototype.access = function (k, v) {\n  let result;\n\n  if (utils.isPlainObject(k)) {\n    utils.extend(true, this.store, k);\n    result = this.store;\n  } else if (typeof v === 'undefined') {\n    if (typeof k === 'undefined') {\n      result = this.store;\n    } else {\n      result = this.store[k];\n    }\n  } else {\n    this.store[k] = v;\n    result = v;\n  }\n\n  return result;\n};\n\nConfig.prototype.clear = function (key) {\n  if (key) {\n    delete this.store[key];\n  } else {\n    this.store = {};\n  }\n};\n\nConfig.prototype.init = function () {\n  this.store = utils.extend(true, {}, defaults, fetchCanonicalURL(), fetchDeclaritiveConfig());\n  return this.store;\n};\n\nconst config = new Config();\nvar config$1 = config.access.bind(config);\nconst init$1 = config.init.bind(config);\nconst clear = config.clear.bind(config);\n\nconst VALID_SIZE_STRINGS = ['fluid'];\nconst VALID_COLLAPSE_MODES = ['before', 'after', 'never'];\nconst attributeParsers = {\n  sizes: function (value, sizes) {\n    if (value === false || value === 'false') {\n      return false;\n    }\n    /* istanbul ignore else  */\n    else if (utils.isArray(sizes)) {\n      const regex = /(\\d+)x(\\d+)/;\n      value.split(',').filter(size => size.length).forEach(size => {\n        if (regex.test(size)) {\n          size.replace(regex, function (match, width, height) {\n            sizes.push([parseInt(width, 10), parseInt(height, 10)]);\n          });\n        } else if (VALID_SIZE_STRINGS.indexOf(size) >= 0) {\n          sizes.push(size);\n        }\n      });\n    }\n\n    return sizes;\n  },\n  formats: function (value, sizes) {\n    if (value === false || value === 'false') {\n      sizes = false;\n    } else {\n      const mapping = config$1().formats;\n      const formats = utils.isArray(value) ? value : value.split(',');\n      formats.forEach(format => {\n        if (mapping && mapping[format]) {\n          format = mapping[format];\n\n          if (utils.isArray(format.sizes[0]) || VALID_SIZE_STRINGS.indexOf(format.sizes[0]) >= 0) {\n            format.sizes.forEach(size => {\n              sizes.push(size);\n            });\n          } else {\n            sizes.push(format.sizes);\n          }\n        } else {\n          utils.log.error(`Slot configured with unknown format ${format}`);\n        }\n      });\n    }\n\n    return sizes;\n  },\n  responsiveSizes: function (name, value, sizes) {\n    const screenName = name.replace(/^sizes/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!utils.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.sizes(value, sizes[screenName] || []);\n    return sizes;\n  },\n  responsiveFormats: function (name, value, sizes) {\n    const screenName = name.replace(/^formats/, '').toLowerCase();\n    /* istanbul ignore else\t*/\n\n    if (!utils.isPlainObject(sizes)) {\n      sizes = {};\n    }\n\n    sizes[screenName] = attributeParsers.formats(value, []);\n    return sizes;\n  },\n  lazyLoadThreshold: function (value) {\n    return value.split(',').map(Number);\n  },\n  targeting: function (value, targeting) {\n    value = utils.hash(value, ';', '=');\n    utils.extend(targeting, value);\n    return targeting;\n  },\n  base: function (value) {\n    /* istanbul ignore else\t*/\n    if (value === '' || value === 'true') {\n      value = true;\n    } else if (value === 'false') {\n      value = false;\n    }\n\n    return value;\n  },\n  collapseEmpty: function (value) {\n    const isUnknownAttribute = VALID_COLLAPSE_MODES.indexOf(value) === -1;\n\n    if (isUnknownAttribute) {\n      utils.log.warn(`Invalid attribute ${value} used for collapse-empty attribute, please use 'before', 'after' or 'never'`);\n      return undefined;\n    }\n\n    return value;\n  }\n};\n\nconst convertLazyLoadBooleanToObject = obj => {\n  if (obj.lazyLoad === true) {\n    obj.lazyLoad = {};\n  }\n};\n\nconst onChangeBreakpoint = event => {\n  const slot = event.detail.slot;\n  slot.screensize = event.detail.screensize;\n\n  if (slot.hasValidSize()) {\n    slot.uncollapse();\n  } else {\n    slot.collapse();\n    slot.clear();\n  }\n};\n/**\n * The Slot class.\n * @class\n * @constructor\n */\n\n\nfunction Slot(container, screensize, initLazyLoading) {\n  const renderEvent = 'slotRenderStart';\n  const cfg = config$1();\n  let slotConfig = config$1('slots') || {}; // store the container\n\n  this.container = container; // the current responsive screensize\n\n  /* istanbul ignore else\t*/\n\n  if (screensize) {\n    this.screensize = screensize;\n  } // init slot dom structure\n\n\n  this.outer = this.addContainer(container, {\n    'class': 'o-ads__outer',\n    'aria-hidden': 'true',\n    'tabindex': '-1'\n  });\n  this.inner = this.addContainer(this.outer, {\n    'class': 'o-ads__inner'\n  }); // make sure the slot has a name\n\n  this.setName();\n  slotConfig = slotConfig[this.name] || {}; // default configuration properties\n\n  this.server = 'gpt';\n  this.defer = false; // global slots configuration\n\n  this.targeting = slotConfig.targeting || {};\n  this.sizes = slotConfig.sizes || [];\n  this.center = slotConfig.center || false;\n  this.label = slotConfig.label || false;\n  this.outOfPage = slotConfig.outOfPage || false;\n  this.companion = slotConfig.companion === false ? false : true;\n  this.collapseEmpty = slotConfig.collapseEmpty;\n  /* istanbul ignore else */\n\n  if (utils.isArray(slotConfig.formats)) {\n    attributeParsers.formats(slotConfig.formats, this.sizes);\n  } else if (utils.isPlainObject(slotConfig.formats)) {\n    this.sizes = {};\n    Object.keys(slotConfig.formats).forEach(screenName => {\n      this.sizes[screenName] = attributeParsers.formats(slotConfig.formats[screenName], []);\n    });\n  }\n\n  if (typeof slotConfig.lazyLoad !== 'undefined') {\n    this.lazyLoad = slotConfig.lazyLoad;\n  } else {\n    this.lazyLoad = config$1('lazyLoad') || false;\n  }\n\n  const outerEl = container.querySelector('.o-ads__outer');\n\n  if (outerEl && cfg.displayLabelWithBorders && this.container.getAttribute('data-o-ads-label')) {\n    const allowedLabels = ['left', 'center', 'right'];\n    const adsLabelPos = this.container.getAttribute('data-o-ads-label');\n    utils.once(renderEvent, () => {\n      const modifier = allowedLabels.indexOf(adsLabelPos) ? adsLabelPos : \"left\";\n      outerEl.classList.add('o-ads--label-with-borders', `o-ads--label-with-borders--${modifier}`);\n    });\n  } // extend with imperative configuration options\n\n\n  this.parseAttributeConfig();\n  /* istanbul ignore else\t*/\n\n  if (!this.sizes.length && !utils.isPlainObject(this.sizes)) {\n    utils.log.error('slot %s has no configured sizes!', this.name);\n    return false;\n  } // Either retrieve the existing IntersectionObserver, or tell slots.js to create a new one.\n\n\n  this.lazyLoadObserver = initLazyLoading(this.lazyLoad);\n  this.initLazyLoad();\n  this.centerContainer();\n  this.labelContainer();\n  this.initResponsive();\n}\n/**\n * parse slot attribute config\n */\n\n\nSlot.prototype.parseAttributeConfig = function () {\n  Array.from(this.container.attributes).forEach(attribute => {\n    const name = utils.parseAttributeName(attribute.name);\n    const value = attribute.value;\n\n    if (name === 'formats') {\n      this[name] = attributeParsers[name](value, this.sizes);\n    } else if (name === 'collapseEmpty') {\n      this.collapseEmpty = attributeParsers.collapseEmpty(value);\n    } else if (name === 'lazyLoadThreshold' && this.lazyLoad) {\n      convertLazyLoadBooleanToObject(this);\n      this.lazyLoad.threshold = attributeParsers.lazyLoadThreshold(value);\n    } else if (name === 'lazyLoadViewportMargin' && this.lazyLoad) {\n      convertLazyLoadBooleanToObject(this);\n      this.lazyLoad.viewportMargin = attributeParsers.base(value);\n    } else if (attributeParsers[name]) {\n      this[name] = attributeParsers[name](value, this[name]);\n    } else if (/^formats\\w*/.test(name)) {\n      this.sizes = attributeParsers.responsiveFormats(name, value, this.sizes);\n    } else if (/^sizes\\w*/.test(name)) {\n      this.sizes = attributeParsers.responsiveSizes(name, value, this.sizes);\n    } else if (this.hasOwnProperty(name)) {\n      this[name] = attributeParsers.base(value);\n    }\n  });\n};\n\nSlot.prototype.getAttributes = function () {\n  const attributes = {};\n  Array.from(this.container.attributes).forEach(attribute => {\n    attributes[utils.parseAttributeName(attribute)] = attribute.value;\n  });\n  this.attributes = attributes;\n  return this;\n};\n/**\n *\tLoad a slot when it appears in the viewport\n */\n\n\nSlot.prototype.initLazyLoad = function () {\n  /* istanbul ignore else  */\n  if (this.lazyLoadObserver && this.lazyLoad) {\n    this.defer = true;\n    this.lazyLoadObserver.observe(this.container); //Master/Companion ads don't work with lazy loading, so if a master ad loads trigger\n\n    /* istanbul ignore else */\n\n    if (this.companion) {\n      utils.once('masterLoaded', () => {\n        if (this.hasValidSize()) {\n          this.render();\n        }\n      }, this.container);\n    }\n  }\n\n  return this;\n};\n\nSlot.prototype.render = function () {\n  this.fire('slotCanRender');\n  /* istanbul ignore else  */\n\n  if (this.lazyLoadObserver) {\n    this.lazyLoadObserver.unobserve(this.container);\n  }\n};\n/**\n *\tListen to responsive breakpoints and collapse slots\n * where the configured size is set to false\n */\n\n\nSlot.prototype.initResponsive = function () {\n  /* istanbul ignore else */\n  if (utils.isPlainObject(this.sizes)) {\n    /* istanbul ignore else */\n    if (!this.hasValidSize()) {\n      this.collapse();\n    }\n\n    utils.on('breakpoint', onChangeBreakpoint, this.container);\n  }\n\n  return this;\n};\n/**\n * Maximise the slot when size is 100x100\n */\n\n\nSlot.prototype.maximise = function (size) {\n  if (size && Number(size[0]) === 100 && Number(size[1]) === 100) {\n    this.fire('resize', {\n      size: ['100%', '100%']\n    });\n  }\n};\n/**\n *\tIf the slot doesn't have a name give it one\n */\n\n\nSlot.prototype.setName = function () {\n  this.name = this.container.getAttribute('data-o-ads-name') || this.container.getAttribute('o-ads-name');\n\n  if (!this.name) {\n    this.name = `o-ads-slot-${Math.floor(Math.random() * 10000)}`;\n    this.container.setAttribute('data-o-ads-name', this.name);\n  }\n\n  return this;\n};\n/**\n * add the empty class to the slot\n */\n\n\nSlot.prototype.collapse = function () {\n  this.container.classList.add('o-ads--empty');\n  this.setFormatLoaded(false);\n  document.body.classList.add(`o-ads-no-${this.name}`);\n  utils.broadcast('collapsed', this);\n  return this;\n};\n/**\n * add the additional class to the slot\n */\n\n\nSlot.prototype.addClass = function (className) {\n  this.container.classList.add(`o-ads-${className}`);\n  utils.broadcast('slotClassAdded', this);\n  return this;\n};\n/**\n * sets a classname of the format\n */\n\n\nSlot.prototype.setFormatLoaded = function (format) {\n  this.container.setAttribute('data-o-ads-loaded', format);\n  return this;\n};\n/**\n * remove the empty class from the slot\n */\n\n\nSlot.prototype.uncollapse = function () {\n  this.container.classList.remove('o-ads--empty');\n  document.body.classList.remove(`o-ads-no-${this.name}`);\n  return this;\n};\n/**\n * call the ad server clear method on the slot if one exists\n */\n\n\nSlot.prototype.clear = function () {\n  /* istanbul ignore else  */\n  if (utils.isFunction(this['clearSlot'])) {\n    this.clearSlot();\n  }\n\n  return this;\n};\n/**\n * call the ad server destroySlot method on the slot if one exists\n */\n\n\nSlot.prototype.destroy = function () {\n  /* istanbul ignore else  */\n  if (utils.isFunction(this['destroySlot'])) {\n    utils.off('breakpoint', onChangeBreakpoint, this.container);\n    this.destroySlot();\n\n    if (this.outer.parentElement === this.container) {\n      this.container.removeChild(this.outer);\n    } else {\n      console.error('Error destroying ad slot. The parent node has already been removed.'); // eslint-disable-line no-console\n    }\n  }\n\n  return this;\n};\n/**\n * call the ad server impression URL for an out of page slot if it has been configured correctly for delayed impressions\n */\n\n\nSlot.prototype.submitImpression = function () {\n  /* istanbul ignore else  */\n  if (utils.isFunction(this['submitGptImpression'])) {\n    this.submitGptImpression();\n  }\n\n  return this;\n};\n/**\n *\tfire an event on the slot\n */\n\n\nSlot.prototype.fire = function (name, data) {\n  const gpt = this.gpt || {};\n  const details = {\n    name: this.name || '',\n    pos: this.targeting && this.targeting.pos || '',\n    size: gpt.size || '',\n    creativeId: gpt.creativeId || '',\n    slot: this\n  };\n\n  if (typeof gpt.isEmpty === 'boolean') {\n    details.isEmpty = gpt.isEmpty;\n  }\n\n  if (utils.isPlainObject(data)) {\n    utils.extend(details, data);\n  }\n\n  utils.broadcast(name, details, this.container);\n  return this;\n};\n/**\n *\tadd a div tag into the current slot container\n **/\n\n\nSlot.prototype.addContainer = function (node, attrs) {\n  let container = '<div ';\n  /* istanbul ignore else  */\n\n  if (attrs) {\n    Object.keys(attrs).forEach(function (attr) {\n      const value = attrs[attr];\n      container += `${attr}=${value} `;\n    });\n  }\n\n  container += '></div>';\n  node.insertAdjacentHTML('beforeend', container);\n  return node.lastChild;\n};\n\nSlot.prototype.hasValidSize = function (screensize) {\n  screensize = screensize || this.screensize;\n\n  if (screensize && utils.isPlainObject(this.sizes)) {\n    return this.sizes[screensize] !== false;\n  }\n\n  return true;\n};\n/**\n * Add a center class to the main container\n */\n\n\nSlot.prototype.centerContainer = function () {\n  if (this.center) {\n    this.container.classList.add('o-ads--center');\n  }\n\n  return this;\n};\n/**\n * Add a label class to the main container\n */\n\n\nSlot.prototype.labelContainer = function () {\n  let className;\n\n  if (this.label === true || this.label === 'left') {\n    className = 'label-left';\n  } else if (this.label === 'right') {\n    className = 'label-right';\n  }\n\n  if (className && !config$1('displayLabelWithBorders')) {\n    this.container.classList.add(`o-ads--${className}`);\n  }\n\n  return this;\n};\n\n/** @typedef {import(\"$typings/index\")} Advertising */\n\n/**\n * @param {Advertising.Slot} slot\n * @returns {string}\n */\nfunction getSlotSizes(slot) {\n  if (!Array.isArray(slot.sizes)) return \"responsive slot\";\n  const sizes = [];\n\n  for (const size of slot.sizes) {\n    sizes.push(Array.isArray(size) ? size.join(\"×\") : size);\n  }\n\n  return sizes.join(\", \");\n}\n/**\n * @param {Advertising.Slot} slot\n * @returns {string}\n */\n\n\nfunction getSlotTargeting({\n  targeting\n}) {\n  const params = [];\n\n  for (const [key, val] of Object.entries(targeting)) {\n    params.push(`${key}=${val}`);\n  }\n\n  return params.join(\", \");\n}\n/**\n * @param {Advertising.Slot} slot\n * @returns {string}\n */\n\n\nfunction getSlotGPTSize({\n  gpt\n}) {\n  if (gpt.isEmpty) return \"empty\";\n  if (!Array.isArray(gpt.size)) return \"N/A\";\n  return gpt.size.join(\"×\");\n}\n/**\n * Use a type predicate to distinguish between the `Slots` instance's properties\n * @type {(o: Advertising.Slot | IntersectionObserver) => o is Advertising.Slot }\n */\n\n\nconst isSlot = o => \"name\" in o;\n/**\n * @param {(Advertising.Slot | IntersectionObserver)[]} slots\n */\n\n\nfunction debug$1(slots) {\n  const data = [];\n\n  for (const slot of slots) {\n    if (isSlot(slot)) {\n      const row = {\n        name: slot.name,\n        \"unit name\": slot.gpt.unitName,\n        \"creative id\": slot.gpt.creativeId || \"N/A\",\n        \"line item id\": slot.gpt.lineItemId || \"N/A\",\n        size: getSlotGPTSize(slot),\n        sizes: getSlotSizes(slot),\n        targeting: getSlotTargeting(slot)\n      };\n      data.push(row);\n    }\n  }\n\n  console.group(\"Creatives\");\n  console.table(data);\n  console.groupEnd();\n  return data;\n}\n\n/* eslint no-inner-declarations: 1 */\nlet screensize = null;\n/**\n * The Slots instance tracks all ad slots on the page\n * configures global page events used by a slot and\n * provides utlity methods that act on all slots\n * @constructor\n */\n\nfunction Slots() {//eslint-disable-line no-empty\n}\n\nfunction invokeMethodOnSlots(names, method, callback) {\n  let slots = [];\n  names = names || Object.keys(this);\n  /* istanbul ignore else\t*/\n\n  if (utils.isNonEmptyString(names)) {\n    slots.push(names);\n  } else if (utils.isArray(names)) {\n    slots = names;\n  }\n\n  slots.forEach(run.bind(null, this, method));\n\n  if (utils.isFunction(callback)) {\n    callback.call(this, slots);\n  }\n\n  return this;\n}\n/*\n * Either run a method or fire an event on the named slot.\n * @private\n * @param slots the slots object\n */\n\n\nfunction run(slots, action, name) {\n  const slot = slots[name];\n\n  if (slot) {\n    if (utils.isFunction(slot[action])) {\n      slot[action]();\n    } else {\n      if (utils.isFunction(slot.fire)) {\n        slot.fire(action);\n      } else {\n        utils.log.warn(\"Attempted to %s on a non-slot %s\", action, name);\n      }\n    }\n  } else {\n    utils.log.warn(\"Attempted to %s non-existant slot %s\", action, name);\n  }\n}\n\nfunction findFormatBySize(size) {\n  if (!size) {\n    return false;\n  }\n\n  const formats = config$1(\"formats\");\n\n  for (const prop in formats) {\n    /* istanbul ignore else\t*/\n    if (formats.hasOwnProperty(prop)) {\n      let sizes = formats[prop].sizes;\n      sizes = utils.isArray(sizes[0]) ? sizes : [sizes];\n      const match = sizes.filter(function (s) {\n        return s[0] === parseInt(size[0], 10) && s[1] === parseInt(size[1], 10);\n      });\n\n      if (match.length) {\n        return prop;\n      }\n    }\n  }\n}\n/**\n * Given a slot name or an array of slot names will collapse the slots using the collapse method on the slot\n */\n\n\nSlots.prototype.collapse = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"collapse\");\n};\n/**\n * Given a slot name or an array of slot names will uncollapse the slots using the uncollapse method on the slot\n */\n\n\nSlots.prototype.uncollapse = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"uncollapse\");\n};\n/**\n * Given a slot name or an array of slot names of slotnames will refresh the slots using the refresh method on the slot\n */\n\n\nSlots.prototype.refresh = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"refresh\");\n};\n/**\n * Given a slot name or an array of slot names will clear the slots using the clear method on the slot\n */\n\n\nSlots.prototype.clear = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"clear\");\n};\n/**\n * Given a slot name or an array of slot names will destroy the slots using the destroySlot method on the slot and remove the reference to the slot\n */\n\n\nSlots.prototype.destroy = function (names) {\n  return invokeMethodOnSlots.call(this, names, \"destroy\", function (names) {\n    names.forEach(name => {\n      this[name] = null;\n      delete this[name];\n    });\n  });\n};\n/**\n * Given a slot name will submit a delayed impression for the slot\n */\n\n\nSlots.prototype.submitImpression = function (name) {\n  return invokeMethodOnSlots.call(this, name, \"submitImpression\");\n};\n/**\n * Confirms a container in the page exists and creates a Slot object\n */\n\n\nSlots.prototype.initSlot = function (container) {\n  // if container is a string this is a legacy implementation using ids\n  // find the element and remove the ID in favour of a data attribute\n  if (utils.isString(container)) {\n    container = document.getElementById(container) || document.querySelector(`[data-o-ads-name=\"${container}\"]`);\n\n    if (container && container.id) {\n      container.setAttribute(\"data-o-ads-name\", container.id);\n      container.removeAttribute(\"id\");\n    }\n  } // if not an element or we can't find it in the DOM exit\n\n\n  if (!utils.isElement(container)) {\n    utils.log.error(\"slot container must be an element!\", container);\n    return false;\n  } // add the aria hidden attribute\n\n\n  container.setAttribute(\"aria-hidden\", \"true\"); // pass the method to retrieve or create the single IntersectionObserver instance\n\n  const slot = new Slot(container, screensize, this.initLazyLoading.bind(this));\n  /* istanbul ignore else\t*/\n\n  if (slot && !this[slot.name]) {\n    this[slot.name] = slot;\n    slot.fire(\"slotReady\");\n  } else if (this[slot.name]) {\n    utils.log.error(\"slot %s is already defined!\", slot.name);\n  }\n\n  return slot;\n};\n\nSlots.prototype.initRefresh = function () {\n  if (config$1(\"flags\").refresh && config$1(\"refresh\")) {\n    const data = config$1(\"refresh\");\n    this.refreshCount = 0;\n    /* istanbul ignore else\t*/\n\n    if (data.time && !data.inview) {\n      const refresh = () => {\n        /* istanbul ignore else */\n        if (!data.max || this.refreshCount++ < data.max) {\n          this.refresh();\n        } else if (this.refreshCount >= data.max) {\n          clearInterval(refresh);\n        }\n      };\n\n      setInterval(refresh, (parseFloat(data.time) || 1) * 1000);\n    }\n  }\n\n  return this;\n};\n/*\n *\tlistens for the rendered event from a slot and fires the slotExpand event,\n * after extending the slot with information from the server.\n */\n\n\nSlots.prototype.initRendered = function () {\n  utils.on(\"slotRenderStart\", function (slots, event) {\n    const slot = slots[event.detail.name];\n    /* istanbul ignore else\t*/\n\n    if (slot) {\n      utils.extend(slot[slot.server], event.detail[slot.server]);\n      const size = event.detail.gpt.size;\n      const format = findFormatBySize(size);\n      slot.setFormatLoaded(format);\n      slot.maximise(size);\n      slot.fire(\"slotExpand\", event.detail);\n    }\n  }.bind(null, this));\n  return this;\n};\n/*\n * if responsive configuration exists listen for breakpoint changes\n */\n\n\nSlots.prototype.initResponsive = function () {\n  const breakpoints = config$1(\"responsive\");\n  /* istanbul ignore else\t*/\n\n  if (utils.isObject(breakpoints)) {\n    screensize = utils.responsive(breakpoints, onBreakpointChange.bind(null, this));\n  }\n\n  return this;\n};\n/*\n * called when a responsive breakpoint is crossed though window resizing or orientation change.\n */\n\n\nfunction onBreakpointChange(slots, screensize) {\n  slots.forEach(function (slot) {\n    /* istanbul ignore else\t*/\n    if (slot) {\n      // ADS-766 if format name is Responsive then we have requested a responsive creative and do not want to request new ads at different breakpoints\n\n      /* istanbul ignore else\t*/\n      const isCurrentlyResponsive = slot.container && slot.container.getAttribute(\"data-o-ads-loaded\") === \"Responsive\";\n      const stillWantsResponsive = slot.sizes[screensize] && slot.sizes[screensize].filter(size => findFormatBySize(size) === \"Responsive\").length > 0;\n\n      if (isCurrentlyResponsive && stillWantsResponsive) {\n        return false;\n      }\n\n      slot.screensize = screensize;\n      slot.fire(\"breakpoint\", {\n        screensize: screensize\n      });\n    }\n  });\n}\n/*\n * Initialise the postMessage API\n */\n\n\nSlots.prototype.initPostMessage = function () {\n  // Listen for messages coming from ads\n  window.addEventListener(\"message\", pmHandler.bind(null, this), false);\n\n  function pmHandler(slots, event) {\n    const data = utils.messenger.parse(event.data);\n    /* istanbul ignore else\tdon't process messages with a non oAds type*/\n\n    if (data.type && (/^oAds\\./.test(data.type) || /^touch/.test(data.type))) {\n      const type = data.type.replace(\"oAds.\", \"\"); // Make sure the message is coming from an identified ad slot\n\n      const slotName = utils.iframeToSlotName(event.source.window);\n      const slot = slots[slotName] || false;\n\n      if (!slot) {\n        utils.log.error(\"Message received from unidentified slot\");\n        return;\n      } // TODO: Remove adIframeLoaded once we can tag onto GPTs `slotRenderEnded` event\n\n\n      if (type === \"adIframeLoaded\") {\n        slot.fire(\"slotRenderEnded\");\n      } else if (type === \"slotClass\" && data.slotClass) {\n        slot.addClass(data.slotClass);\n      } // Received message to Collapse ad slot.\n      else if (type === \"collapse\") {\n        slot.fire(\"slotCollapsed\");\n        slot.collapse();\n      } // Received touch events from ad slot iframe\n\n      /* istanbul ignore else*/\n      else if (/^touch/.test(data.type)) {\n        slot.fire(\"touch\", data);\n      } else {\n        utils.log.error(\"Unknown message received from o-ads-embed\");\n      }\n    }\n  }\n}; // remove any observers tied to elements no longer in the DOM\n// e.g. app page has been swiped out from the gallery\n\n\nSlots.prototype.flushLazyLoading = function () {\n  this.lazyLoadingObservers = this.lazyLoadingObservers.filter(observer => {\n    return Boolean(!observer.root || document.contains(observer.root));\n  });\n};\n\nSlots.prototype.initLazyLoading = function (slotConfig) {\n  const lazyLoadingConfig = config$1(\"lazyLoad\") || slotConfig | {};\n  this.lazyLoadingObservers = this.lazyLoadingObservers || [];\n  this.flushLazyLoading(); // find any pre-existing observers\n\n  let lazyLoadingObserver = this.lazyLoadingObservers.find(observer => {\n    // deliberately double-equals to match null and undefined where the viewport is being observed\n    return lazyLoadingConfig.root == observer.root; // eslint-disable-line eqeqeq\n  });\n\n  function onChange(changes) {\n    //Execute the changes in the order they appear on the page. This is because the top slot often determines what the lower slots display.\n\n    /* istanbul ignore next */\n    changes.filter(a => a.intersectionRect.height || a.intersectionRect.width || a.intersectionRect.top || a.intersectionRect.left).sort((a, b) => a.intersectionRect.top - b.intersectionRect.top).forEach(change => {\n      const slotName = change.target.getAttribute(\"data-o-ads-name\");\n      /* istanbul ignore else */\n\n      if (slotName) {\n        invokeMethodOnSlots.call(this, slotName, \"render\");\n      }\n    });\n  } // If we don't already have an instance of the observer, and it is enabled globally or on a slot (force), then create one.\n\n  /* istanbul ignore else\t*/\n\n\n  if (\"IntersectionObserver\" in window && !lazyLoadingObserver && Boolean(lazyLoadingConfig)) {\n    const options = {};\n    /* istanbul ignore else\t*/\n\n    if (typeof lazyLoadingConfig === \"object\") {\n      /* istanbul ignore else\t*/\n      if (lazyLoadingConfig.viewportMargin) {\n        options.rootMargin = lazyLoadingConfig.viewportMargin;\n      }\n      /* istanbul ignore else\t*/\n\n\n      if (lazyLoadingConfig.threshold) {\n        options.threshold = lazyLoadingConfig.threshold;\n      }\n\n      options.root = lazyLoadingConfig.root || null;\n    }\n\n    lazyLoadingObserver = new IntersectionObserver(onChange.bind(this), options);\n    this.lazyLoadingObservers.push(lazyLoadingObserver);\n  }\n\n  return lazyLoadingObserver;\n};\n\nSlots.prototype.forEach = function (fn) {\n  Object.keys(this).forEach(name => {\n    const slot = this[name];\n    /* istanbul ignore else\t*/\n\n    if (slot instanceof Slot) {\n      fn.call(this, slot);\n    }\n  });\n  return this;\n};\n/*\n * Initialise slots\n */\n\n\nSlots.prototype.init = function () {\n  this.initRefresh();\n  this.initRendered();\n  this.initResponsive();\n  this.initPostMessage();\n  this.initLazyLoading();\n};\n\nSlots.prototype.debug = function () {\n  debug$1(Object.values(this));\n};\n\nvar slots = new Slots();\n\nlet parameters = {};\n\nfunction Targeting() {} //eslint-disable-line no-empty-function\n\n\nTargeting.prototype.get = function () {\n  const methods = {\n    socialReferrer: this.getSocialReferrer,\n    timestamp: this.timestamp,\n    responsive: this.responsive\n  };\n  utils.extend(parameters, this.socialFlow(), this.getVersion());\n\n  for (const item in methods) {\n    /* istanbul ignore else  */\n    if (methods.hasOwnProperty(item)) {\n      utils.extend(parameters, methods[item]());\n    }\n  }\n\n  return parameters;\n};\n\nTargeting.prototype.add = function (obj) {\n  /* istanbul ignore else  */\n  if (utils.isPlainObject(obj)) {\n    utils.extend(parameters, obj);\n  }\n};\n\nTargeting.prototype.remove = function (key) {\n  /* istanbul ignore else */\n  if (parameters[key]) {\n    delete parameters[key];\n  }\n};\n\nTargeting.prototype.clear = function () {\n  parameters = {};\n};\n\nTargeting.prototype.getVersion = function () {\n  if (config$1('passOAdsVersion')) {\n    return {\n      OADS_VERSION: utils.getVersion()\n    };\n  }\n};\n/**\n * If there is a query parameter called socialflow=xxx, we need to add it\n * as a tag\n */\n\n\nTargeting.prototype.socialFlow = function () {\n  const sf = utils.getQueryParamByName('socialflow');\n\n  if (sf) {\n    return {\n      socialflow: sf\n    };\n  }\n};\n\nTargeting.prototype.getSocialReferrer = function () {\n  let codedValue;\n  const referrer = utils.getReferrer(); // TODO: add on.ft.com\n\n  const lookup = {\n    't.co': 'twi',\n    'facebook.com': 'fac',\n    'linkedin.com': 'lin',\n    'drudgereport.com': 'dru',\n    'dianomi.com': 'dia',\n    google: 'goo'\n  };\n  Object.keys(lookup).forEach(url => {\n    const refererRegex = new RegExp(`^http(|s)://(www.)*(${url})`);\n    /* istanbul ignore else  */\n\n    if (refererRegex.test(referrer)) {\n      codedValue = lookup[url];\n    }\n  });\n  return codedValue && {\n    socref: codedValue\n  } || {};\n};\n\nTargeting.prototype.searchTerm = function () {\n  const qs = utils.hash(utils.getQueryString(), /&|;/, '=');\n  let keywords = qs.q || qs.s || qs.query || qs.queryText || qs.searchField || undefined;\n  /* istanbul ignore else\t*/\n\n  if (keywords && keywords !== '') {\n    keywords = unescape(keywords).toLowerCase().replace(/[';^+]/g, ' ').replace(/\\s+/g, ' ').trim();\n  }\n\n  return {\n    kw: keywords\n  };\n};\n\nTargeting.prototype.timestamp = function () {\n  return {\n    ts: utils.getTimestamp()\n  };\n};\n\nTargeting.prototype.responsive = function () {\n  return config$1('responsive') ? {\n    res: utils.responsive.getCurrent()\n  } : {};\n};\n\nTargeting.prototype.debug = function () {\n  const log = utils.log;\n  const parameters = this.get();\n  /* istanbul ignore else  */\n\n  if (Object.keys(parameters).length !== 0) {\n    log.start('Targeting');\n    log.attributeTable(this.get());\n    log.end();\n  }\n};\n\nvar targeting = new Targeting();\n\nconst SEARCH_PARAMS = ['q', 'kw'];\n/**\n * @typedef {{ [key: string]: string[] }} FilterDict\n */\n\n/**\n * Remove unwanted params from nested query strings\n *\n * @param   {string}   nestedParams the URIencoded nested params\n * @param   {string[]} keysToStrip  the parameters to remove\n *\n * @return  {string}               [return description]\n */\n\nfunction filterNestedParams(nestedParams, keysToStrip) {\n  if (!keysToStrip || keysToStrip.length < 1) {\n    return nestedParams;\n  }\n\n  const childParams = new URLSearchParams(nestedParams);\n\n  for (const key of keysToStrip) {\n    childParams.delete(key);\n  }\n\n  return childParams.toString();\n}\n/**\n * Purge a URL of sensitive data in query strings\n *\n * Given the URL\n * ```url\n * https://www.ft.com/search?q=goog&cust_params=a%3D1%26b%3D2%26c%3D3%26d%3D4\n * ```\n * Supplying an object in the form\n * ```\n * {\n *   root: ['q', 'kw'],\n *   cust_params: ['a', 'c']\n * }\n * ```\n * will remove `q` from the main query string and `a`, `c` from the nested params\n * under `cust_params`:\n * ```url\n * https://www.ft.com/search?cust_params=b=2%26d%3D4\n * ```\n *\n * @param   {Object}  params\n * @param   {string | Location}  params.href     The base URL or `window.location`\n * @param   {FilterDict}         params.filters  The dictionary of params to be removed\n *\n * @return  {string}              A URL that has been stripped of the supplied params\n */\n\nfunction stripUrlParams({\n  href,\n  filters\n}) {\n  // @ts-ignore: URL absolutely accepts Location!\n  const url = new URL(href);\n\n  for (const [param, filter] of Object.entries(filters)) {\n    if (param === 'root') {\n      // Strip parameters from the main query string\n      for (const key of filter) {\n        url.searchParams.delete(key);\n      }\n    } else {\n      // Handle nested parameters\n      const nestedParams = url.searchParams.get(param);\n\n      if (nestedParams) {\n        url.searchParams.set(param, filterNestedParams(nestedParams, filter));\n      }\n    }\n  }\n\n  return url.href;\n}\n\n/*globals googletag: true */\nconst DEFAULT_LAZY_LOAD = {\n  fetchMarginPercent: 500,\n  renderMarginPercent: 200,\n  mobileScaling: 2.0\n};\nconst DEFAULT_COLLAPSE_MODE = 'never';\nlet breakpoints = false;\n/*\n//###########################\n// Initialisation handlers ##\n//###########################\n*/\n\n/*\n * Initialise Google publisher tags functionality\n */\n\nfunction init() {\n  const gptConfig = config$1('gpt') || {};\n  breakpoints = config$1('responsive');\n  loadGPT();\n  utils.on('slotReady', onReady.bind(null, slotMethods));\n  utils.on('slotCanRender', onRender);\n  utils.on('refresh', onRefresh);\n  utils.on('resize', onResize);\n  googletag.cmd.push(setup.bind(null, gptConfig));\n}\n/*\n * initalise the googletag global namespace and add the google publish tags library to the page\n */\n\n\nfunction loadGPT() {\n  if (!window.googletag) {\n    // set up a place holder for the gpt code downloaded from google\n    window.googletag = {}; // this is a command queue used by GPT any methods added to it will be\n    // executed when GPT code is available, if GPT is already available they\n    // will be executed immediately\n\n    window.googletag.cmd = [];\n  }\n\n  utils.attach('//securepubads.g.doubleclick.net/tag/js/gpt.js', true, () => {\n    utils.broadcast('serverScriptLoaded');\n  }, err => {\n    utils.broadcast('adServerLoadError', err);\n  });\n}\n/*\n//#################################\n// Global configuration handlers ##\n//#################################\n*/\n\n/*\n * Configure the GPT library for the current page\n * this method is pushed onto the googletag command queue and run\n * when the library is available\n */\n\n\nfunction setup(gptConfig) {\n  const nonPersonalized = config$1('nonPersonalized') ? 1 : 0;\n  googletag.pubads().addEventListener('slotRenderEnded', onRenderEnded);\n  enableCompanions(gptConfig);\n  setRenderingMode(gptConfig);\n  setPageTargeting(targeting.get());\n  setPageCollapseEmpty();\n\n  if (gptConfig.hasOwnProperty('enableLazyLoad')) {\n    enableLazyLoad(gptConfig.enableLazyLoad);\n  }\n\n  const url = stripUrlParams({\n    href: window.location.href,\n    filters: {\n      root: SEARCH_PARAMS\n    }\n  });\n  googletag.enableServices();\n  googletag.pubads().setTargeting('url', url);\n  googletag.pubads().setRequestNonPersonalizedAds(nonPersonalized);\n  return true;\n}\n/**\n * Enables GPT's Lazy Loading for serving ads only when it's necessary.\n * \t\tThe lazy load config ooptions are:\n *\n * \t\t\t- fetchMarginPercent,\t\tminimum distance from the current viewport a slot\n * \t\t\t\t\tmust be before we fetch the ad as a percentage of viewport size.\n * \t\t\t\t\t0 means \"when the slot enters the viewport\",\n * \t\t\t\t\t100 means \"when the ad is 1 viewport away\"\n *\n * \t\t\t- renderMarginPercent,\tminimum distance from the current viewport a slot\n * \t\t\t\t\tmust be before we render an ad.\n * \t\t\t\t\tThis allows for prefetching the ad, but waiting to render and\n * \t\t\t\t\tdownload other subresources. The value works just like\n * \t\t\t\t\tfetchMarginPercent as a percentage of viewport.\n *\n * \t\t\t- mobileScaling,\t\t\t\ta multiplier applied to margins on mobile devices.\n * \t\t\t\t\tThis allows varying margins on mobile vs. desktop. For example,\n * \t\t\t\t\ta mobileScaling of 2.0 will multiply all margins by 2 on mobile\n * \t\t\t\t\tdevices, increasing the minimum distance a slot can be before\n * \t\t\t\t\tfetching and rendering.\n *\n * @param {object|boolean} lazyLoadConf The lazy load config object or a boolean.\n * @returns {boolean} true if the object is of type Array, otherwise false\n */\n\n\nfunction enableLazyLoad(lazyLoadConf) {\n  if (lazyLoadConf && (typeof lazyLoadConf === 'object' || typeof lazyLoadConf === 'boolean')) {\n    const opts = Object.assign({}, DEFAULT_LAZY_LOAD, typeof lazyLoadConf === 'object' ? lazyLoadConf : {});\n    window.googletag.pubads().enableLazyLoad(opts);\n  } else {\n    utils.log.warn('lazyLoadConf must be either an object or a boolean', lazyLoadConf);\n  }\n}\n/*\n * set the gpt rendering mode to either sync or async\n * default is async\n */\n\n\nfunction setRenderingMode(gptConfig) {\n  const rendering = gptConfig.rendering;\n\n  if (rendering === 'sync') {\n    googletag.pubads().enableSyncRendering();\n  } else if (rendering === 'sra') {\n    googletag.pubads().enableSingleRequest();\n  } else {\n    googletag.pubads().enableAsyncRendering();\n  }\n}\n/**\n * Adds page targeting to GPT ad calls\n * @name setPageTargeting\n * @memberof GPT\n * @lends GPT\n */\n\n\nfunction setPageTargeting(targetingData) {\n  if (utils.isPlainObject(targetingData)) {\n    googletag.cmd.push(() => {\n      const pubads = googletag.pubads();\n      Object.keys(targetingData).forEach(key => {\n        // Convert to string as boolean values are invalid arguments for GPT setTargeting()\n        pubads.setTargeting(key, String(targetingData[key]));\n      });\n    });\n  } else {\n    /* istanbul ignore next  */\n    utils.log.warn('invalid targeting object passed', targetingData);\n  }\n\n  return targetingData;\n}\n/**\n * Removes page targeting for a specified key from GPT ad calls\n */\n\n\nfunction clearPageTargetingForKey(key) {\n  if (!window.googletag) {\n    utils.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n    return;\n  }\n\n  if (!key) {\n    utils.log.warn('Refusing to unset all keys - a key must be specified');\n    return;\n  }\n\n  googletag.cmd.push(() => {\n    googletag.pubads().clearTargeting(key);\n  });\n}\n/**\n * Sets behaviour of empty slots can be 'after', 'before' or 'never'\n * * 'after' collapse slots that return an empty ad\n * * 'before' collapses all slots and only displays them when an ad is found\n * * 'never' does not collapse any empty slot, the collapseEmptyDivs method is not called in that case\n */\n\n\nfunction setPageCollapseEmpty() {\n  const mode = config$1('collapseEmpty');\n\n  if (mode === 'before') {\n    googletag.pubads().collapseEmptyDivs(true);\n  }\n\n  if (mode === 'after') {\n    googletag.pubads().collapseEmptyDivs(false);\n  }\n}\n/**\n * When companions are enabled we delay the rendering of ad slots until\n * either a master is returned or all slots are returned without a master\n */\n\n\nfunction enableCompanions(gptConfig) {\n  if (gptConfig.companions) {\n    googletag.pubads().disableInitialLoad();\n    googletag.companionAds().setRefreshUnfilledSlots(true);\n  }\n}\n/*\n//##################\n// Event handlers ##\n//##################\n*/\n\n/*\n * Event handler for when a slot is ready for an ad to rendered\n */\n\n\nfunction onReady(slotMethods, event) {\n  const slot = event.detail.slot;\n  /* istanbul ignore else  */\n\n  if (slot.server === 'gpt') {\n    slot.gpt = {}; // extend the slot with gpt methods\n\n    utils.extend(slot, slotMethods); // setup the gpt configuration the ad\n\n    googletag.cmd.push(() => {\n      slot.defineSlot().addServices().setCollapseEmpty().setTargeting().setURL();\n\n      if (!slot.defer && slot.hasValidSize()) {\n        slot.display();\n      }\n    });\n  }\n}\n/*\n * Render is called when a slot is not rendered when the ready event fires\n */\n\n\nfunction onRender(event) {\n  const slot = event.detail.slot;\n  /* istanbul ignore else  */\n\n  if (utils.isFunction(slot.display)) {\n    slot.display();\n  }\n}\n/*\n * refresh is called when a slot requests the ad be flipped\n */\n\n\nfunction onRefresh(event) {\n  window.googletag.cmd.push(() => {\n    const targeting = event.detail.targeting;\n\n    if (utils.isPlainObject(targeting)) {\n      Object.keys(targeting).forEach(name => {\n        event.detail.slot.gpt.slot.setTargeting(name, targeting[name]);\n      });\n    }\n\n    googletag.pubads().refresh([event.detail.slot.gpt.slot]);\n  });\n  return this;\n}\n\nfunction onResize(event) {\n  const iframe = event.detail.slot.gpt.iframe;\n  const size = event.detail.size;\n  iframe.width = size[0];\n  iframe.height = size[1];\n}\n/*\n * function passed to the gpt library that is run when an ad completes rendering\n */\n\n\nfunction onRenderEnded(event) {\n  const data = {\n    gpt: {}\n  };\n  const gptSlotId = event.slot.getSlotId();\n  const domId = gptSlotId.getDomId().split('-');\n  const iframeId = `google_ads_iframe_${gptSlotId.getId()}`;\n  data.type = domId.pop();\n  data.name = domId.join('-');\n  data.size = event.size && event.size.length ? event.size.join() : '';\n  data.creativeId = event.creativeId;\n  const slotTargeting = event.slot.getTargetingMap && event.slot.getTargetingMap();\n\n  if (slotTargeting && slotTargeting.pos) {\n    data.pos = slotTargeting.pos.length ? slotTargeting.pos.join() : '';\n  }\n\n  const detail = data.gpt;\n  detail.isEmpty = event.isEmpty;\n  detail.size = event.size;\n  detail.creativeId = event.creativeId;\n  detail.lineItemId = event.lineItemId;\n  detail.serviceName = event.serviceName;\n  const iFrameEl = document.getElementById(iframeId);\n\n  if (iFrameEl) {\n    iFrameEl.setAttribute('tabindex', '-1');\n    iFrameEl.setAttribute('aria-hidden', 'true');\n    iFrameEl.setAttribute('role', 'presentation');\n    iFrameEl.setAttribute('title', 'Advertisement');\n    detail.iframe = iFrameEl;\n  } else {\n    /* istanbul ignore next */\n    utils.log.warn('No iFrame found matching GPT SlotID');\n  }\n\n  utils.broadcast('slotRenderStart', data);\n}\n/*\n//################\n// Slot methods ##\n//################\n* Set of methods extended on to the slot constructor for GPT served slots\n*/\n\n\nconst slotMethods = {\n  /**\n   * define a GPT slot\n   */\n  defineSlot: function () {\n    window.googletag.cmd.push(() => {\n      this.gpt.id = `${this.name}-gpt`;\n      this.inner.setAttribute('id', this.gpt.id);\n      this.setUnitName();\n\n      if (!this.outOfPage) {\n        if (breakpoints && utils.isObject(this.sizes)) {\n          this.initResponsive();\n          this.gpt.slot = googletag.defineSlot(this.gpt.unitName, [0, 0], this.gpt.id).defineSizeMapping(this.gpt.sizes);\n        } else {\n          this.gpt.slot = googletag.defineSlot(this.gpt.unitName, this.sizes, this.gpt.id);\n        }\n      } else {\n        this.gpt.slot = googletag.defineOutOfPageSlot(this.gpt.unitName, this.gpt.id);\n      }\n    });\n    return this;\n  },\n  clearSlot: function (gptSlot) {\n    if (window.googletag.pubadsReady && window.googletag.pubads) {\n      gptSlot = gptSlot || this.gpt.slot;\n      return googletag.pubads().clear([gptSlot]);\n    } else {\n      return false;\n    }\n  },\n  initResponsive: function () {\n    window.googletag.cmd.push(() => {\n      utils.on('breakpoint', event => {\n        const slot = event.detail.slot;\n        const screensize = event.detail.screensize;\n        updatePageTargeting({\n          res: screensize\n        });\n\n        if (slot.hasValidSize(screensize)) {\n          /* istanbul ignore else  */\n          if (slot.gpt.iframe) {\n            slot.fire('refresh');\n          } else if (!this.defer) {\n            slot.display();\n          }\n        }\n      }, this.container);\n      const mapping = googletag.sizeMapping();\n      Object.keys(breakpoints).forEach(breakpoint => {\n        if (this.sizes[breakpoint]) {\n          mapping.addSize(breakpoints[breakpoint], this.sizes[breakpoint]);\n        }\n      });\n      this.gpt.sizes = mapping.build();\n    });\n    return this;\n  },\n\n  /**\n   * Tell gpt to destroy the slot and its metadata\n   */\n  destroySlot: function (gptSlot) {\n    if (window.googletag.pubadsReady && window.googletag.pubads) {\n      gptSlot = gptSlot || this.gpt.slot;\n      return googletag.destroySlots([gptSlot]);\n    } else {\n      return false;\n    }\n  },\n\n  /*\n   *\tTell gpt to request an ad\n   */\n  display: function () {\n    window.googletag.cmd.push(() => {\n      this.fire('slotGoRender');\n      googletag.display(this.gpt.id);\n    });\n    return this;\n  },\n\n  /**\n   * Set the DFP unit name for the slot.\n   */\n  setUnitName: function () {\n    window.googletag.cmd.push(() => {\n      let unitName;\n      const gpt = config$1('gpt') || {};\n      const attr = this.container.getAttribute('data-o-ads-gpt-unit-name');\n\n      if (utils.isNonEmptyString(attr)) {\n        unitName = attr;\n      } else if (utils.isNonEmptyString(gpt.unitName)) {\n        unitName = gpt.unitName;\n      } else {\n        const network = gpt.network;\n        const site = gpt.site;\n        const zone = gpt.zone;\n        unitName = `/${network}`;\n        unitName += utils.isNonEmptyString(site) ? `/${site}` : '';\n        unitName += utils.isNonEmptyString(zone) ? `/${zone}` : '';\n      }\n\n      this.gpt.unitName = unitName;\n    });\n    return this;\n  },\n\n  /**\n   * Add the slot to the pub ads service and add a companion service if configured\n   */\n  addServices: function (gptSlot) {\n    window.googletag.cmd.push(() => {\n      const gpt = config$1('gpt') || {};\n      gptSlot = gptSlot || this.gpt.slot;\n      gptSlot.addService(googletag.pubads());\n\n      if (gpt.companions && this.companion !== false) {\n        gptSlot.addService(googletag.companionAds());\n      }\n    });\n    return this;\n  },\n\n  /**\n   * Sets the GPT collapse empty mode for a given slot\n   * values can be 'after', 'before', 'never'\n   */\n  setCollapseEmpty: function () {\n    window.googletag.cmd.push(() => {\n      const mode = this.collapseEmpty || config$1('collapseEmpty') || DEFAULT_COLLAPSE_MODE;\n\n      if (mode === 'before') {\n        this.gpt.slot.setCollapseEmptyDiv(true, true);\n      } else if (mode === 'after') {\n        this.gpt.slot.setCollapseEmptyDiv(true);\n      } else if (mode === 'never') {\n        this.gpt.slot.setCollapseEmptyDiv(false);\n      }\n    });\n    return this;\n  },\n  submitGptImpression: function () {\n    /* istanbul ignore next  */\n    function getImpressionURL(iframe) {\n      const trackingUrlElement = iframe.contentWindow.document.querySelector('[data-o-ads-impression-url]');\n\n      if (trackingUrlElement) {\n        return trackingUrlElement.dataset.oAdsImpressionUrl;\n      } else {\n        utils.log.warn('Impression URL not found, this is set via a creative template.');\n        return false;\n      }\n    }\n\n    if (this.outOfPage && this.gpt.iframe) {\n      const impressionURL = getImpressionURL(this.gpt.iframe);\n      /* istanbul ignore next  */\n\n      if (impressionURL) {\n        utils.attach(impressionURL, true, () => {\n          utils.log.info('Impression Url requested');\n        }, () => {\n          utils.log.info('CORS request to submit an impression failed');\n        }, true);\n      }\n    } else {\n      utils.log.warn('Attempting to call submitImpression on a non-oop slot');\n    }\n  },\n\n  /**\n   * Sets page url to be sent to google\n   * prevents later url changes via javascript from breaking the ads\n   */\n  setURL: function (gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      const canonical = config$1('canonical');\n      gptSlot.set('page_url', canonical ? canonical : utils.getLocation());\n    });\n    return this;\n  },\n\n  /**\n   * Adds key values from a given object to the slot targeting\n   */\n  setTargeting: function (gptSlot) {\n    window.googletag.cmd.push(() => {\n      gptSlot = gptSlot || this.gpt.slot;\n      /* istanbul ignore else  */\n\n      if (utils.isPlainObject(this.targeting)) {\n        Object.keys(this.targeting).forEach(param => {\n          gptSlot.setTargeting(param, this.targeting[param]);\n        });\n      }\n    });\n    return this;\n  }\n};\n/*\n//####################\n// External methods ##\n//####################\n*/\n\n/**\n * The correlator is a random number added to ad calls.\n * It is used by the ad server to determine which impressions where served to the same page\n * Updating is used to tell the ad server to treat subsequent ad calls as being on a new page\n */\n\nfunction updateCorrelator() {\n  utils.log.warn('[DEPRECATED]: Updatecorrelator is being phased out by google and removed from o-ads in future releases.');\n  googletag.cmd.push(() => {\n    googletag.pubads().updateCorrelator();\n  });\n}\n\nfunction getCorrelator() {\n  if (window.googletag && window.googletag.pubads) {\n    return googletag.pubads().getCorrelator();\n  }\n}\n\nfunction clearPageTargeting() {\n  if (window.googletag) {\n    googletag.cmd.push(() => {\n      googletag.pubads().clearTargeting();\n    });\n  } else {\n    utils.log.warn('Attempting to clear page targeting before the GPT library has initialized');\n  }\n}\n\nfunction updatePageTargeting(override) {\n  if (window.googletag) {\n    const params = utils.isPlainObject(override) ? override : targeting.get();\n    setPageTargeting(params);\n  } else {\n    utils.log.warn('Attempting to set page targeting before the GPT library has initialized');\n  }\n} //https://developers.google.com/doubleclick-gpt/common_implementation_mistakes#scenario-2:-checking-the-googletag-object-to-know-whether-gpt-is-ready\n\n\nfunction hasGPTLoaded() {\n  if (window.googletag && window.googletag.apiReady) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nfunction debug() {\n  const log = utils.log;\n  const conf = config$1('gpt');\n\n  if (!conf) {\n    return;\n  }\n\n  log.start('gpt');\n  log.attributeTable(conf);\n  log.end();\n}\n\nvar gpt = {\n  init,\n  setup,\n  updateCorrelator,\n  getCorrelator,\n  updatePageTargeting,\n  clearPageTargeting,\n  clearPageTargetingForKey,\n  hasGPTLoaded,\n  loadGPT,\n  debug\n};\n\n/* eslint valid-jsdoc: 0 */\n\nfunction Ads() {\n  addDOMEventListener();\n\n  if (window && !window.oAds) {\n    window.oAds = this;\n  }\n}\n\nconfig$1.init = init$1;\nconfig$1.clear = clear; // bung all our modules on the protoype\n\nAds.prototype.config = config$1;\nAds.prototype.slots = slots;\nAds.prototype.gpt = gpt;\nAds.prototype.targeting = targeting;\nAds.prototype.utils = utils;\n/**\n* Initialises the ads library and all sub modules\n* @param options {object} a JSON object containing configuration for the current page\n*/\n\nAds.prototype.init = function (options) {\n  options = options || {};\n  this.config.init();\n  const configOptions = Object.assign(options, {\n    nonPersonalized: !options.disableConsentCookie\n  });\n  this.config(configOptions);\n\n  if (options.disableConsentCookie) {\n    this.consents = {\n      behavioral: true\n    };\n  } else {\n    this.consents = getConsents();\n  }\n\n  if (this.consents.behavioral) {\n    this.utils.broadcast('consentBehavioral');\n  }\n\n  if (this.consents.programmatic) {\n    this.utils.broadcast('consentProgrammatic');\n  }\n\n  this.utils.broadcast('initialising');\n  this.targeting.add(this.config().targeting);\n  return Promise.resolve(this.initLibrary());\n};\n/**\n * Update page level targeting data in o-ads and GPT\n */\n\n\nAds.prototype.updateTargeting = function (data) {\n  this.targeting.add(data);\n  this.gpt.updatePageTargeting(this.targeting.get());\n};\n\nAds.prototype.initLibrary = function () {\n  this.slots.init();\n\n  if (this.consents.programmatic) {\n    this.config({\n      'nonPersonalized': false\n    });\n    this.targeting.add({\n      \"cc\": \"y\"\n    });\n  }\n\n  this.gpt.init();\n  this.utils.on('debug', this.debug.bind(this));\n  this.isInitialised = true;\n  this.utils.broadcast('initialised', this);\n  removeDOMEventListener();\n  return this;\n};\n\nAds.prototype.debug = function () {\n  let remove = true;\n\n  if (localStorage.getItem('oAds')) {\n    remove = false;\n  } else {\n    localStorage.setItem('oAds', true);\n  }\n\n  this.gpt.debug();\n  this.slots.debug();\n  this.targeting.debug();\n\n  if (remove) {\n    localStorage.removeItem('oAds');\n  }\n};\n\nAds.prototype.version = function () {\n  this.utils.log.warn('DEPRECATION NOTICE: Ads.version() will be deprecated in favour of Ads.getVersion()');\n  this.utils.log(`o-ads version: ${this.utils.getVersion()}`);\n};\n\nAds.prototype.getVersion = function () {\n  return this.utils.getVersion();\n};\n\nconst initAll = function () {\n  return ads.init().then(() => {\n    const slots = Array.from(document.querySelectorAll('.o-ads, [data-o-ads-name]'));\n    slots.forEach(ads.slots.initSlot.bind(ads.slots));\n  });\n};\n\nAds.prototype.initAll = initAll;\n\nfunction getConsents() {\n  // derive consent options from ft consent cookie\n  const re = /FTConsent=([^;]+)/;\n  const match = document.cookie.match(re);\n\n  if (!match) {\n    // cookie stasis or no consent cookie found\n    return {\n      behavioral: false,\n      programmatic: false\n    };\n  }\n\n  const consentCookie = decodeURIComponent(match[1]);\n  return {\n    behavioral: consentCookie.indexOf('behaviouraladsOnsite:on') !== -1,\n    programmatic: consentCookie.indexOf('programmaticadsOnsite:on') !== -1\n  };\n}\n\nfunction addDOMEventListener() {\n  document.addEventListener('o.DOMContentLoaded', initAll);\n}\n\nfunction removeDOMEventListener() {\n  document.removeEventListener('o.DOMContentLoaded', initAll);\n}\n\nconst ads = new Ads();\n\nexport { ads as default };\n","/**\n * @file\n * Top of a story\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  bylinesPropType,\n  topicPropType,\n  flagsPropType,\n} from '../shared/proptypes';\nimport './styles.scss';\n\nconst StoryTopper = ({\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  ...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=\"story-topper\">\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      {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\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      {flags.shareButtons && (\n        <Share\n          url={url}\n          text={socialHeadline || headline}\n          textTwitter={tweetText || twitterHeadline}\n          textFacebook={facebookHeadline}\n          dark={flags.dark}\n        />\n      )}\n\n      {flags.bylines && bylines && <Bylines names={bylines} date={publishedDate} />}\n    </div>\n  );\n};\n\nStoryTopper.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};\n\nStoryTopper.displayName = 'GStoryTopper';\n\nexport default StoryTopper;\n","/**\n * @file\n * Sharing buttons\n */\n\nimport React, { useEffect, useRef } from 'react';\nimport OShare from '@financial-times/o-share';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport './styles.scss';\n\nconst Share = ({\n  url,\n  text,\n  textTwitter,\n  textFacebook,\n  textLinkedIn,\n  textWhatsApp,\n  separated,\n  dark,\n  size,\n}) => {\n  const ref = useRef();\n\n  useEffect(() => {\n    (async () => {\n      new OShare(ref.current); // eslint-disable-line no-new\n    })();\n  }, []);\n\n  const services = [\n    {\n      name: 'Twitter',\n      link:\n        'https://twitter.com/intent/tweet' +\n        `?url=${url}` +\n        `&text=${textTwitter || text}` +\n        '&via=FinancialTimes',\n    },\n    {\n      name: 'Facebook',\n      link: 'https://www.facebook.com/sharer.php' + `?u=${url}` + `&t=${textFacebook || text}`,\n    },\n    {\n      name: 'LinkedIn',\n      link:\n        'https://www.linkedin.com/shareArticle' +\n        '?mini=true' +\n        `&url=${url}` +\n        `&title=${textLinkedIn || text}` +\n        `&source=Financial+Times`,\n    },\n    {\n      name: 'WhatsApp',\n      link: `whatsapp://send?text=${textWhatsApp || text} - ${url}`,\n    },\n  ];\n\n  return (\n    <div className={classnames('g-share', separated && 'g-share--separated', `g-share--${size}`)}>\n      <div className={classnames('o-share', dark && 'o-share--inverse')} data-o-component=\"o-share\">\n        <ul>\n          {services.map(({ name, link }) => (\n            <li key={name} className=\"o-share__action\">\n              <a\n                className={`o-share__icon o-share__icon--${name.toLowerCase()}`}\n                href={link}\n                rel=\"noopener\"\n              >\n                <span className=\"o-share__text\">Share on {name}. Opens in a new window.</span>\n              </a>\n            </li>\n          ))}\n        </ul>\n      </div>\n    </div>\n  );\n};\n\nShare.propTypes = {\n  url: PropTypes.string.isRequired,\n  text: PropTypes.string.isRequired,\n  textTwitter: PropTypes.string,\n  textFacebook: PropTypes.string,\n  textLinkedIn: PropTypes.string,\n  textWhatsApp: PropTypes.string,\n  separated: PropTypes.bool,\n  dark: PropTypes.bool,\n  size: PropTypes.oneOf(['default', 'small']),\n};\n\nShare.displayName = 'GShare';\n\nexport default Share;\n","import Share from './src/js/share.js';\n\nconst constructAll = function() {\n\tShare.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default Share;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * DOM event delegator\n *\n * The delegator will listen\n * for events that bubble up\n * to the root node.\n *\n * @constructor\n * @param {Node|string} [root] The root node or a selector string matching the root node\n */\nfunction Delegate(root) {\n  /**\n   * Maintain a map of listener\n   * lists, keyed by event name.\n   *\n   * @type Object\n   */\n  this.listenerMap = [{}, {}];\n\n  if (root) {\n    this.root(root);\n  }\n  /** @type function() */\n\n\n  this.handle = Delegate.prototype.handle.bind(this); // Cache of event listeners removed during an event cycle\n\n  this._removedListeners = [];\n}\n/**\n * Start listening for events\n * on the provided DOM element\n *\n * @param  {Node|string} [root] The root node or a selector string matching the root node\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.root = function (root) {\n  var listenerMap = this.listenerMap;\n  var eventType; // Remove master event listeners\n\n  if (this.rootElement) {\n    for (eventType in listenerMap[1]) {\n      if (listenerMap[1].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, true);\n      }\n    }\n\n    for (eventType in listenerMap[0]) {\n      if (listenerMap[0].hasOwnProperty(eventType)) {\n        this.rootElement.removeEventListener(eventType, this.handle, false);\n      }\n    }\n  } // If no root or root is not\n  // a dom node, then remove internal\n  // root reference and exit here\n\n\n  if (!root || !root.addEventListener) {\n    if (this.rootElement) {\n      delete this.rootElement;\n    }\n\n    return this;\n  }\n  /**\n   * The root node at which\n   * listeners are attached.\n   *\n   * @type Node\n   */\n\n\n  this.rootElement = root; // Set up master event listeners\n\n  for (eventType in listenerMap[1]) {\n    if (listenerMap[1].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, true);\n    }\n  }\n\n  for (eventType in listenerMap[0]) {\n    if (listenerMap[0].hasOwnProperty(eventType)) {\n      this.rootElement.addEventListener(eventType, this.handle, false);\n    }\n  }\n\n  return this;\n};\n/**\n * @param {string} eventType\n * @returns boolean\n */\n\n\nDelegate.prototype.captureForType = function (eventType) {\n  return ['blur', 'error', 'focus', 'load', 'resize', 'scroll'].indexOf(eventType) !== -1;\n};\n/**\n * Attach a handler to one\n * event for all elements\n * that match the selector,\n * now or in the future\n *\n * The handler function receives\n * three arguments: the DOM event\n * object, the node that matched\n * the selector while the event\n * was bubbling and a reference\n * to itself. Within the handler,\n * 'this' is equal to the second\n * argument.\n *\n * The node that actually received\n * the event can be accessed via\n * 'event.target'.\n *\n * @param {string} eventType Listen for these events\n * @param {string|undefined} selector Only handle events on elements matching this selector, if undefined match root element\n * @param {function()} handler Handler function - event data passed here will be in event.data\n * @param {boolean} [useCapture] see 'useCapture' in <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener>\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.on = function (eventType, selector, handler, useCapture) {\n  var root;\n  var listenerMap;\n  var matcher;\n  var matcherParam;\n\n  if (!eventType) {\n    throw new TypeError('Invalid event type: ' + eventType);\n  } // handler can be passed as\n  // the second or third argument\n\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // Fallback to sensible defaults\n  // if useCapture not set\n\n\n  if (useCapture === undefined) {\n    useCapture = this.captureForType(eventType);\n  }\n\n  if (typeof handler !== 'function') {\n    throw new TypeError('Handler must be a type of Function');\n  }\n\n  root = this.rootElement;\n  listenerMap = this.listenerMap[useCapture ? 1 : 0]; // Add master handler for type if not created yet\n\n  if (!listenerMap[eventType]) {\n    if (root) {\n      root.addEventListener(eventType, this.handle, useCapture);\n    }\n\n    listenerMap[eventType] = [];\n  }\n\n  if (!selector) {\n    matcherParam = null; // COMPLEX - matchesRoot needs to have access to\n    // this.rootElement, so bind the function to this.\n\n    matcher = matchesRoot.bind(this); // Compile a matcher for the given selector\n  } else if (/^[a-z]+$/i.test(selector)) {\n    matcherParam = selector;\n    matcher = matchesTag;\n  } else if (/^#[a-z0-9\\-_]+$/i.test(selector)) {\n    matcherParam = selector.slice(1);\n    matcher = matchesId;\n  } else {\n    matcherParam = selector;\n    matcher = Element.prototype.matches;\n  } // Add to the list of listeners\n\n\n  listenerMap[eventType].push({\n    selector: selector,\n    handler: handler,\n    matcher: matcher,\n    matcherParam: matcherParam\n  });\n  return this;\n};\n/**\n * Remove an event handler\n * for elements that match\n * the selector, forever\n *\n * @param {string} [eventType] Remove handlers for events matching this type, considering the other parameters\n * @param {string} [selector] If this parameter is omitted, only handlers which match the other two will be removed\n * @param {function()} [handler] If this parameter is omitted, only handlers which match the previous two will be removed\n * @returns {Delegate} This method is chainable\n */\n\n\nDelegate.prototype.off = function (eventType, selector, handler, useCapture) {\n  var i;\n  var listener;\n  var listenerMap;\n  var listenerList;\n  var singleEventType; // Handler can be passed as\n  // the second or third argument\n\n  if (typeof selector === 'function') {\n    useCapture = handler;\n    handler = selector;\n    selector = null;\n  } // If useCapture not set, remove\n  // all event listeners\n\n\n  if (useCapture === undefined) {\n    this.off(eventType, selector, handler, true);\n    this.off(eventType, selector, handler, false);\n    return this;\n  }\n\n  listenerMap = this.listenerMap[useCapture ? 1 : 0];\n\n  if (!eventType) {\n    for (singleEventType in listenerMap) {\n      if (listenerMap.hasOwnProperty(singleEventType)) {\n        this.off(singleEventType, selector, handler);\n      }\n    }\n\n    return this;\n  }\n\n  listenerList = listenerMap[eventType];\n\n  if (!listenerList || !listenerList.length) {\n    return this;\n  } // Remove only parameter matches\n  // if specified\n\n\n  for (i = listenerList.length - 1; i >= 0; i--) {\n    listener = listenerList[i];\n\n    if ((!selector || selector === listener.selector) && (!handler || handler === listener.handler)) {\n      this._removedListeners.push(listener);\n\n      listenerList.splice(i, 1);\n    }\n  } // All listeners removed\n\n\n  if (!listenerList.length) {\n    delete listenerMap[eventType]; // Remove the main handler\n\n    if (this.rootElement) {\n      this.rootElement.removeEventListener(eventType, this.handle, useCapture);\n    }\n  }\n\n  return this;\n};\n/**\n * Handle an arbitrary event.\n *\n * @param {Event} event\n */\n\n\nDelegate.prototype.handle = function (event) {\n  var i;\n  var l;\n  var type = event.type;\n  var root;\n  var phase;\n  var listener;\n  var returned;\n  var listenerList = [];\n  var target;\n  var eventIgnore = 'ftLabsDelegateIgnore';\n\n  if (event[eventIgnore] === true) {\n    return;\n  }\n\n  target = event.target; // Hardcode value of Node.TEXT_NODE\n  // as not defined in IE8\n\n  if (target.nodeType === 3) {\n    target = target.parentNode;\n  } // Handle SVG <use> elements in IE\n\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  }\n\n  root = this.rootElement;\n  phase = event.eventPhase || (event.target !== event.currentTarget ? 3 : 2); // eslint-disable-next-line default-case\n\n  switch (phase) {\n    case 1:\n      //Event.CAPTURING_PHASE:\n      listenerList = this.listenerMap[1][type];\n      break;\n\n    case 2:\n      //Event.AT_TARGET:\n      if (this.listenerMap[0] && this.listenerMap[0][type]) {\n        listenerList = listenerList.concat(this.listenerMap[0][type]);\n      }\n\n      if (this.listenerMap[1] && this.listenerMap[1][type]) {\n        listenerList = listenerList.concat(this.listenerMap[1][type]);\n      }\n\n      break;\n\n    case 3:\n      //Event.BUBBLING_PHASE:\n      listenerList = this.listenerMap[0][type];\n      break;\n  }\n\n  var toFire = []; // Need to continuously check\n  // that the specific list is\n  // still populated in case one\n  // of the callbacks actually\n  // causes the list to be destroyed.\n\n  l = listenerList.length;\n\n  while (target && l) {\n    for (i = 0; i < l; i++) {\n      listener = listenerList[i]; // Bail from this loop if\n      // the length changed and\n      // no more listeners are\n      // defined between i and l.\n\n      if (!listener) {\n        break;\n      }\n\n      if (target.tagName && [\"button\", \"input\", \"select\", \"textarea\"].indexOf(target.tagName.toLowerCase()) > -1 && target.hasAttribute(\"disabled\")) {\n        // Remove things that have previously fired\n        toFire = [];\n      } // Check for match and fire\n      // the event if there's one\n      //\n      // TODO:MCG:20120117: Need a way\n      // to check if event#stopImmediatePropagation\n      // was called. If so, break both loops.\n      else if (listener.matcher.call(target, listener.matcherParam, target)) {\n          toFire.push([event, target, listener]);\n        }\n    } // TODO:MCG:20120117: Need a way to\n    // check if event#stopPropagation\n    // was called. If so, break looping\n    // through the DOM. Stop if the\n    // delegation root has been reached\n\n\n    if (target === root) {\n      break;\n    }\n\n    l = listenerList.length; // Fall back to parentNode since SVG children have no parentElement in IE\n\n    target = target.parentElement || target.parentNode; // Do not traverse up to document root when using parentNode, though\n\n    if (target instanceof HTMLDocument) {\n      break;\n    }\n  }\n\n  var ret;\n\n  for (i = 0; i < toFire.length; i++) {\n    // Has it been removed during while the event function was fired\n    if (this._removedListeners.indexOf(toFire[i][2]) > -1) {\n      continue;\n    }\n\n    returned = this.fire.apply(this, toFire[i]); // Stop propagation to subsequent\n    // callbacks if the callback returned\n    // false\n\n    if (returned === false) {\n      toFire[i][0][eventIgnore] = true;\n      toFire[i][0].preventDefault();\n      ret = false;\n      break;\n    }\n  }\n\n  return ret;\n};\n/**\n * Fire a listener on a target.\n *\n * @param {Event} event\n * @param {Node} target\n * @param {Object} listener\n * @returns {boolean}\n */\n\n\nDelegate.prototype.fire = function (event, target, listener) {\n  return listener.handler.call(target, event, target);\n};\n/**\n * Check whether an element\n * matches a tag selector.\n *\n * Tags are NOT case-sensitive,\n * except in XML (and XML-based\n * languages such as XHTML).\n *\n * @param {string} tagName The tag name to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesTag(tagName, element) {\n  return tagName.toLowerCase() === element.tagName.toLowerCase();\n}\n/**\n * Check whether an element\n * matches the root.\n *\n * @param {?String} selector In this case this is always passed through as null and not used\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesRoot(selector, element) {\n  if (this.rootElement === window) {\n    return (// Match the outer document (dispatched from document)\n      element === document || // The <html> element (dispatched from document.body or document.documentElement)\n      element === document.documentElement || // Or the window itself (dispatched from window)\n      element === window\n    );\n  }\n\n  return this.rootElement === element;\n}\n/**\n * Check whether the ID of\n * the element in 'this'\n * matches the given ID.\n *\n * IDs are case-sensitive.\n *\n * @param {string} id The ID to test against\n * @param {Element} element The element to test with\n * @returns boolean\n */\n\n\nfunction matchesId(id, element) {\n  return id === element.id;\n}\n/**\n * Short hand for off()\n * and root(), ie both\n * with no parameters\n *\n * @return void\n */\n\n\nDelegate.prototype.destroy = function () {\n  this.off();\n  this.root();\n};\n\nvar _default = Delegate;\nexports.default = _default;\nmodule.exports = exports.default;","/**\n * @file\n * Bylines component\n */\n\nimport React, { Fragment, useRef, useEffect, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ODate from '@financial-times/o-date';\nimport { bylinesPropType } from '../shared/proptypes';\nimport './styles.scss';\n\nconst NamesElement = ({ namesList }) => {\n  return namesList.reduce((a, name, i) => {\n    /* eslint-disable no-nested-ternary */\n    const separator = i === 0 ? '' : i === namesList.length - 1 ? ' and ' : ', ';\n    const author = name.url ? (\n      <Fragment key={`author-${name.name}`}>\n        <a href={name.url} className=\"o-editorial-typography-author\">\n          {name.name}\n        </a>\n        {name.location && ` in ${name.location}`}\n      </Fragment>\n    ) : (\n      <Fragment key={`author-${name.name}`}>\n        <span>{name.name}</span>\n        {name.location && ` in ${name.location}`}\n      </Fragment>\n    );\n    return a.concat(separator, author);\n  }, []);\n};\n\nconst DateElement = forwardRef(({ date }, ref) => {\n  const format = new Intl.DateTimeFormat('en', {\n    month: 'long',\n    day: 'numeric',\n    year: 'numeric',\n  });\n  const [month, , day, , year] = format.formatToParts(new Date(date));\n  const dateFormatted = `${month.value} ${day.value} ${year.value}`;\n  return (\n    <Fragment>\n      {' '}\n      <time\n        ref={ref}\n        data-o-component=\"o-date\"\n        className=\"o-date o-editorial-typography-byline-timestamp\"\n        dateTime={date}\n        suppressHydrationWarning\n      >\n        {dateFormatted}\n      </time>\n    </Fragment>\n  );\n});\n\nconst Bylines = ({ prefix, names, date, dateFirst }) => {\n  const dateElRef = useRef();\n  const oDateRef = useRef();\n\n  useEffect(() => {\n    if (oDateRef.current || !dateElRef.current) return;\n\n    (async () => {\n      try {\n        oDateRef.current = new ODate(dateElRef.current);\n      } catch (e) {\n        console.error(e); // eslint disable-line no-console\n      }\n    })();\n  });\n\n  if (!names && !date) return null;\n\n  const namesList = Array.isArray(names) ? names : [{ name: names }];\n\n  return (\n    <div className=\"bylines\">\n      {prefix && `${prefix} `}\n      {dateFirst && date && <DateElement ref={dateElRef} date={date} />}\n      {dateFirst && ' by '}\n      {names && <NamesElement namesList={namesList} />}\n      {!dateFirst && date && <DateElement ref={dateElRef} date={date} />}\n    </div>\n  );\n};\n\nBylines.propTypes = {\n  prefix: PropTypes.string,\n  names: bylinesPropType,\n  date: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n  dateFirst: PropTypes.bool,\n};\n\nBylines.defaultProps = {\n  names: 'FT Staff',\n  prefix: '',\n  date: false,\n  dateFirst: false,\n};\n\nBylines.displayName = 'GBylines';\n\nexport default Bylines;\n","import oDate from './src/js/date.js';\nconst constructAll = function () {\n\toDate.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\nexport default oDate;\n","/**\n * @file\n * Epilogue component\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { GridContainer, GridRow, GridChild } from '../grid';\nimport './styles.scss';\n\nconst CopyRight = () => {\n  const year = new Date().getFullYear();\n  return (\n    <footer className=\"g-epilogue-copyright\">\n      <a\n        href=\"https://help.ft.com/help/legal-privacy/copyright/copyright-policy/\"\n        data-trackable=\"link-copyright\"\n      >\n        Copyright\n      </a>{' '}\n      The Financial Times Limited {year}. All rights reserved.\n    </footer>\n  );\n};\n\nconst Epilogue = ({ includeGrid }) => {\n  return includeGrid ? (\n    <GridContainer>\n      <GridRow>\n        <GridChild colspan=\"12 S11 Scenter M10 L9 XL8\">\n          <CopyRight />\n        </GridChild>\n      </GridRow>\n    </GridContainer>\n  ) : (\n    <CopyRight />\n  );\n};\n\nEpilogue.displayName = 'GEpilogue';\n\nEpilogue.propTypes = {\n  includeGrid: PropTypes.bool,\n};\n\nEpilogue.defaultProps = {\n  includeGrid: true,\n};\n\nexport default Epilogue;\n","import gAudio from './src/js/audio.js';\n\nconst constructAll = function () {\n\tgAudio.init();\n\tdocument.removeEventListener('o.DOMContentLoaded', constructAll);\n};\n\ndocument.addEventListener('o.DOMContentLoaded', constructAll);\n\nexport default gAudio;","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.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\n","/**\n * @file\n * Main client/SSR entry point.\n *\n * You probably don't want to touch anything in here unless you know what\n * you're doing. #justsayin\n */\n\nimport React from 'react';\nimport { hydrate, render } from 'react-dom';\nimport App from './app';\nimport '@financial-times/g-components/shared/critical-path.scss';\nimport './styles.scss';\n\nconst rootElement = document.getElementById('root');\n\nif (rootElement.hasChildNodes()) {\n  hydrate(<App />, rootElement);\n} else {\n  render(<App />, rootElement);\n}\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(u(227));\nfunction ba(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var da=!1,ea=null,fa=!1,ha=null,ia={onError:function(a){da=!0;ea=a}};function ja(a,b,c,d,e,f,g,h,k){da=!1;ea=null;ba.apply(ia,arguments)}function ka(a,b,c,d,e,f,g,h,k){ja.apply(this,arguments);if(da){if(da){var l=ea;da=!1;ea=null}else throw Error(u(198));fa||(fa=!0,ha=l)}}var la=null,ma=null,na=null;\nfunction oa(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=na(c);ka(d,b,void 0,a);a.currentTarget=null}var pa=null,qa={};\nfunction ra(){if(pa)for(var a in qa){var b=qa[a],c=pa.indexOf(a);if(!(-1<c))throw Error(u(96,a));if(!sa[c]){if(!b.extractEvents)throw Error(u(97,a));sa[c]=b;c=b.eventTypes;for(var d in c){var e=void 0;var f=c[d],g=b,h=d;if(ta.hasOwnProperty(h))throw Error(u(99,h));ta[h]=f;var k=f.phasedRegistrationNames;if(k){for(e in k)k.hasOwnProperty(e)&&ua(k[e],g,h);e=!0}else f.registrationName?(ua(f.registrationName,g,h),e=!0):e=!1;if(!e)throw Error(u(98,d,a));}}}}\nfunction ua(a,b,c){if(va[a])throw Error(u(100,a));va[a]=b;wa[a]=b.eventTypes[c].dependencies}var sa=[],ta={},va={},wa={};function xa(a){var b=!1,c;for(c in a)if(a.hasOwnProperty(c)){var d=a[c];if(!qa.hasOwnProperty(c)||qa[c]!==d){if(qa[c])throw Error(u(102,c));qa[c]=d;b=!0}}b&&ra()}var ya=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),za=null,Aa=null,Ba=null;\nfunction Ca(a){if(a=ma(a)){if(\"function\"!==typeof za)throw Error(u(280));var b=a.stateNode;b&&(b=la(b),za(a.stateNode,a.type,b))}}function Da(a){Aa?Ba?Ba.push(a):Ba=[a]:Aa=a}function Ea(){if(Aa){var a=Aa,b=Ba;Ba=Aa=null;Ca(a);if(b)for(a=0;a<b.length;a++)Ca(b[a])}}function Fa(a,b){return a(b)}function Ga(a,b,c,d,e){return a(b,c,d,e)}function Ha(){}var Ia=Fa,Ja=!1,Ka=!1;function La(){if(null!==Aa||null!==Ba)Ha(),Ea()}\nfunction Ma(a,b,c){if(Ka)return a(b,c);Ka=!0;try{return Ia(a,b,c)}finally{Ka=!1,La()}}var Na=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Oa=Object.prototype.hasOwnProperty,Pa={},Qa={};\nfunction Ra(a){if(Oa.call(Qa,a))return!0;if(Oa.call(Pa,a))return!1;if(Na.test(a))return Qa[a]=!0;Pa[a]=!0;return!1}function Sa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction Ta(a,b,c,d){if(null===b||\"undefined\"===typeof b||Sa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(Ta(b,c,e,d)&&(c=null),d||null===e?Ra(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar Ya=/^(.*)[\\\\\\/]/,E=\"function\"===typeof Symbol&&Symbol.for,Za=E?Symbol.for(\"react.element\"):60103,$a=E?Symbol.for(\"react.portal\"):60106,ab=E?Symbol.for(\"react.fragment\"):60107,bb=E?Symbol.for(\"react.strict_mode\"):60108,cb=E?Symbol.for(\"react.profiler\"):60114,db=E?Symbol.for(\"react.provider\"):60109,eb=E?Symbol.for(\"react.context\"):60110,fb=E?Symbol.for(\"react.concurrent_mode\"):60111,gb=E?Symbol.for(\"react.forward_ref\"):60112,hb=E?Symbol.for(\"react.suspense\"):60113,ib=E?Symbol.for(\"react.suspense_list\"):\n60120,jb=E?Symbol.for(\"react.memo\"):60115,kb=E?Symbol.for(\"react.lazy\"):60116,lb=E?Symbol.for(\"react.block\"):60121,mb=\"function\"===typeof Symbol&&Symbol.iterator;function nb(a){if(null===a||\"object\"!==typeof a)return null;a=mb&&a[mb]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function ob(a){if(-1===a._status){a._status=0;var b=a._ctor;b=b();a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}}\nfunction pb(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ab:return\"Fragment\";case $a:return\"Portal\";case cb:return\"Profiler\";case bb:return\"StrictMode\";case hb:return\"Suspense\";case ib:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case eb:return\"Context.Consumer\";case db:return\"Context.Provider\";case gb:var b=a.render;b=b.displayName||b.name||\"\";return a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\n\"ForwardRef\");case jb:return pb(a.type);case lb:return pb(a.render);case kb:if(a=1===a._status?a._result:null)return pb(a)}return null}function qb(a){var b=\"\";do{a:switch(a.tag){case 3:case 4:case 6:case 7:case 10:case 9:var c=\"\";break a;default:var d=a._debugOwner,e=a._debugSource,f=pb(a.type);c=null;d&&(c=pb(d.type));d=f;f=\"\";e?f=\" (at \"+e.fileName.replace(Ya,\"\")+\":\"+e.lineNumber+\")\":c&&(f=\" (created by \"+c+\")\");c=\"\\n    in \"+(d||\"Unknown\")+f}b+=c;a=a.return}while(a);return b}\nfunction rb(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function sb(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction tb(a){var b=sb(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function xb(a){a._valueTracker||(a._valueTracker=tb(a))}function yb(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=sb(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function zb(a,b){var c=b.checked;return n({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}\nfunction Ab(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=rb(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Bb(a,b){b=b.checked;null!=b&&Xa(a,\"checked\",b,!1)}\nfunction Cb(a,b){Bb(a,b);var c=rb(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?Db(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&Db(a,b.type,rb(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Eb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction Db(a,b,c){if(\"number\"!==b||a.ownerDocument.activeElement!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function Fb(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gb(a,b){a=n({children:void 0},b);if(b=Fb(b.children))a.children=b;return a}\nfunction Hb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+rb(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction Ib(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(u(91));return n({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function Jb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(u(92));if(Array.isArray(c)){if(!(1>=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;d<b.length&&!a.isPropagationStopped();d++)oa(a,b[d],c[d]);else b&&oa(a,b,c);a._dispatchListeners=null;a._dispatchInstances=null;a.isPersistent()||a.constructor.release(a)}}function mc(a){null!==a&&(kc=ic(kc,a));a=kc;kc=null;if(a){jc(a,lc);if(kc)throw Error(u(95));if(fa)throw a=ha,fa=!1,ha=null,a;}}\nfunction nc(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}function oc(a){if(!ya)return!1;a=\"on\"+a;var b=a in document;b||(b=document.createElement(\"div\"),b.setAttribute(a,\"return;\"),b=\"function\"===typeof b[a]);return b}var pc=[];function qc(a){a.topLevelType=null;a.nativeEvent=null;a.targetInst=null;a.ancestors.length=0;10>pc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=nc(a.nativeEvent);d=a.topLevelType;var f=a.nativeEvent,g=a.eventSystemFlags;0===c&&(g|=64);for(var h=null,k=0;k<sa.length;k++){var l=sa[k];l&&(l=l.extractEvents(d,b,f,e,g))&&(h=\nic(h,l))}mc(h)}}function uc(a,b,c){if(!c.has(a)){switch(a){case \"scroll\":vc(b,\"scroll\",!0);break;case \"focus\":case \"blur\":vc(b,\"focus\",!0);vc(b,\"blur\",!0);c.set(\"blur\",null);c.set(\"focus\",null);break;case \"cancel\":case \"close\":oc(a)&&vc(b,a,!0);break;case \"invalid\":case \"submit\":case \"reset\":break;default:-1===ac.indexOf(a)&&F(a,b)}c.set(a,null)}}\nvar wc,xc,yc,zc=!1,Ac=[],Bc=null,Cc=null,Dc=null,Ec=new Map,Fc=new Map,Gc=[],Hc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput close cancel copy cut paste click change contextmenu reset submit\".split(\" \"),Ic=\"focus blur dragenter dragleave mouseover mouseout pointerover pointerout gotpointercapture lostpointercapture\".split(\" \");\nfunction Jc(a,b){var c=cc(b);Hc.forEach(function(a){uc(a,b,c)});Ic.forEach(function(a){uc(a,b,c)})}function Kc(a,b,c,d,e){return{blockedOn:a,topLevelType:b,eventSystemFlags:c|32,nativeEvent:e,container:d}}\nfunction Lc(a,b){switch(a){case \"focus\":case \"blur\":Bc=null;break;case \"dragenter\":case \"dragleave\":Cc=null;break;case \"mouseover\":case \"mouseout\":Dc=null;break;case \"pointerover\":case \"pointerout\":Ec.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Fc.delete(b.pointerId)}}function Mc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=Kc(b,c,d,e,f),null!==b&&(b=Nc(b),null!==b&&xc(b)),a;a.eventSystemFlags|=d;return a}\nfunction Oc(a,b,c,d,e){switch(b){case \"focus\":return Bc=Mc(Bc,a,b,c,d,e),!0;case \"dragenter\":return Cc=Mc(Cc,a,b,c,d,e),!0;case \"mouseover\":return Dc=Mc(Dc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Ec.set(f,Mc(Ec.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Fc.set(f,Mc(Fc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Pc(a){var b=tc(a.target);if(null!==b){var c=dc(b);if(null!==c)if(b=c.tag,13===b){if(b=ec(c),null!==b){a.blockedOn=b;r.unstable_runWithPriority(a.priority,function(){yc(c)});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}function Qc(a){if(null!==a.blockedOn)return!1;var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);if(null!==b){var c=Nc(b);null!==c&&xc(c);a.blockedOn=b;return!1}return!0}\nfunction Sc(a,b,c){Qc(a)&&c.delete(b)}function Tc(){for(zc=!1;0<Ac.length;){var a=Ac[0];if(null!==a.blockedOn){a=Nc(a.blockedOn);null!==a&&wc(a);break}var b=Rc(a.topLevelType,a.eventSystemFlags,a.container,a.nativeEvent);null!==b?a.blockedOn=b:Ac.shift()}null!==Bc&&Qc(Bc)&&(Bc=null);null!==Cc&&Qc(Cc)&&(Cc=null);null!==Dc&&Qc(Dc)&&(Dc=null);Ec.forEach(Sc);Fc.forEach(Sc)}function Uc(a,b){a.blockedOn===b&&(a.blockedOn=null,zc||(zc=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Tc)))}\nfunction Vc(a){function b(b){return Uc(b,a)}if(0<Ac.length){Uc(Ac[0],a);for(var c=1;c<Ac.length;c++){var d=Ac[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Bc&&Uc(Bc,a);null!==Cc&&Uc(Cc,a);null!==Dc&&Uc(Dc,a);Ec.forEach(b);Fc.forEach(b);for(c=0;c<Gc.length;c++)d=Gc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Gc.length&&(c=Gc[0],null===c.blockedOn);)Pc(c),null===c.blockedOn&&Gc.shift()}\nvar Wc={},Yc=new Map,Zc=new Map,$c=[\"abort\",\"abort\",Xb,\"animationEnd\",Yb,\"animationIteration\",Zb,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\n\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",$b,\"transitionEnd\",\"waiting\",\"waiting\"];function ad(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1],f=\"on\"+(e[0].toUpperCase()+e.slice(1));f={phasedRegistrationNames:{bubbled:f,captured:f+\"Capture\"},dependencies:[d],eventPriority:b};Zc.set(d,b);Yc.set(d,f);Wc[e]=f}}\nad(\"blur blur cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focus focus input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0);\nad(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);ad($c,2);for(var bd=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),cd=0;cd<bd.length;cd++)Zc.set(bd[cd],0);\nvar dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function F(a,b){vc(b,a,!1)}function vc(a,b,c){var d=Zc.get(b);switch(void 0===d?2:d){case 0:d=gd.bind(null,b,1,a);break;case 1:d=hd.bind(null,b,1,a);break;default:d=id.bind(null,b,1,a)}c?a.addEventListener(b,d,!0):a.addEventListener(b,d,!1)}function gd(a,b,c,d){Ja||Ha();var e=id,f=Ja;Ja=!0;try{Ga(e,a,b,c,d)}finally{(Ja=f)||La()}}function hd(a,b,c,d){ed(dd,id.bind(null,a,b,c,d))}\nfunction id(a,b,c,d){if(fd)if(0<Ac.length&&-1<Hc.indexOf(a))a=Kc(null,a,b,c,d),Ac.push(a);else{var e=Rc(a,b,c,d);if(null===e)Lc(a,d);else if(-1<Hc.indexOf(a))a=Kc(e,a,b,c,d),Ac.push(a);else if(!Oc(e,a,b,c,d)){Lc(a,d);a=rc(a,d,null,b);try{Ma(sc,a)}finally{qc(a)}}}}\nfunction Rc(a,b,c,d){c=nc(d);c=tc(c);if(null!==c){var e=dc(c);if(null===e)c=null;else{var f=e.tag;if(13===f){c=ec(e);if(null!==c)return c;c=null}else if(3===f){if(e.stateNode.hydrate)return 3===e.tag?e.stateNode.containerInfo:null;c=null}else e!==c&&(c=null)}}a=rc(a,d,c,b);try{Ma(sc,a)}finally{qc(a)}return null}\nvar jd={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},kd=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(jd).forEach(function(a){kd.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);jd[b]=jd[a]})});function ld(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||jd.hasOwnProperty(a)&&jd[a]?(\"\"+b).trim():b+\"px\"}\nfunction md(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ld(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var nd=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction od(a,b){if(b){if(nd[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(u(137,a,\"\"));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(u(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(u(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(u(62,\"\"));}}\nfunction pd(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var qd=Mb.html;function rd(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=cc(a);b=wa[b];for(var d=0;d<b.length;d++)uc(b[d],a,c)}function sd(){}\nfunction td(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function ud(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function vd(a,b){var c=ud(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0<b--;)Td(c[b],\"captured\",a);for(b=0;b<c.length;b++)Td(c[b],\"bubbled\",a)}}\nfunction Vd(a,b,c){a&&c&&c.dispatchConfig.registrationName&&(b=Sd(a,c.dispatchConfig.registrationName))&&(c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a))}function Wd(a){a&&a.dispatchConfig.registrationName&&Vd(a._targetInst,null,a)}function Xd(a){jc(a,Ud)}var Yd=null,Zd=null,$d=null;\nfunction ae(){if($d)return $d;var a,b=Zd,c=b.length,d,e=\"value\"in Yd?Yd.value:Yd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return $d=e.slice(a,1<d?1-d:void 0)}function be(){return!0}function ce(){return!1}\nfunction G(a,b,c,d){this.dispatchConfig=a;this._targetInst=b;this.nativeEvent=c;a=this.constructor.Interface;for(var e in a)a.hasOwnProperty(e)&&((b=a[e])?this[e]=b(c):\"target\"===e?this.target=d:this[e]=c[e]);this.isDefaultPrevented=(null!=c.defaultPrevented?c.defaultPrevented:!1===c.returnValue)?be:ce;this.isPropagationStopped=ce;return this}\nn(G.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&(a.returnValue=!1),this.isDefaultPrevented=be)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=be)},persist:function(){this.isPersistent=be},isPersistent:ce,destructor:function(){var a=this.constructor.Interface,\nb;for(b in a)this[b]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null;this.isPropagationStopped=this.isDefaultPrevented=ce;this._dispatchInstances=this._dispatchListeners=null}});G.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};\nG.extend=function(a){function b(){}function c(){return d.apply(this,arguments)}var d=this;b.prototype=d.prototype;var e=new b;n(e,c.prototype);c.prototype=e;c.prototype.constructor=c;c.Interface=n({},d.Interface,a);c.extend=d.extend;de(c);return c};de(G);function ee(a,b,c,d){if(this.eventPool.length){var e=this.eventPool.pop();this.call(e,a,b,c,d);return e}return new this(a,b,c,d)}\nfunction fe(a){if(!(a instanceof this))throw Error(u(279));a.destructor();10>this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8<ke&&11>=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return me&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar ve={eventTypes:oe,extractEvents:function(a,b,c,d){var e;if(je)b:{switch(a){case \"compositionstart\":var f=oe.compositionStart;break b;case \"compositionend\":f=oe.compositionEnd;break b;case \"compositionupdate\":f=oe.compositionUpdate;break b}f=void 0}else se?qe(a,c)&&(f=oe.compositionEnd):\"keydown\"===a&&229===c.keyCode&&(f=oe.compositionStart);f?(me&&\"ko\"!==c.locale&&(se||f!==oe.compositionStart?f===oe.compositionEnd&&se&&(e=ae()):(Yd=d,Zd=\"value\"in Yd?Yd.value:Yd.textContent,se=!0)),f=ge.getPooled(f,\nb,c,d),e?f.data=e:(e=re(c),null!==e&&(f.data=e)),Xd(f),e=f):e=null;(a=le?te(a,c):ue(a,c))?(b=he.getPooled(oe.beforeInput,b,c,d),b.data=a,Xd(b)):b=null;return null===e?b:null===b?e:[e,b]}},we={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function xe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!we[a.type]:\"textarea\"===b?!0:!1}\nvar ye={change:{phasedRegistrationNames:{bubbled:\"onChange\",captured:\"onChangeCapture\"},dependencies:\"blur change click focus input keydown keyup selectionchange\".split(\" \")}};function ze(a,b,c){a=G.getPooled(ye.change,a,b,c);a.type=\"change\";Da(c);Xd(a);return a}var Ae=null,Be=null;function Ce(a){mc(a)}function De(a){var b=Pd(a);if(yb(b))return a}function Ee(a,b){if(\"change\"===a)return b}var Fe=!1;ya&&(Fe=oc(\"input\")&&(!document.documentMode||9<document.documentMode));\nfunction Ge(){Ae&&(Ae.detachEvent(\"onpropertychange\",He),Be=Ae=null)}function He(a){if(\"value\"===a.propertyName&&De(Be))if(a=ze(Be,a,nc(a)),Ja)mc(a);else{Ja=!0;try{Fa(Ce,a)}finally{Ja=!1,La()}}}function Ie(a,b,c){\"focus\"===a?(Ge(),Ae=b,Be=c,Ae.attachEvent(\"onpropertychange\",He)):\"blur\"===a&&Ge()}function Je(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return De(Be)}function Ke(a,b){if(\"click\"===a)return De(b)}function Le(a,b){if(\"input\"===a||\"change\"===a)return De(b)}\nvar Me={eventTypes:ye,_isInputEventSupported:Fe,extractEvents:function(a,b,c,d){var e=b?Pd(b):window,f=e.nodeName&&e.nodeName.toLowerCase();if(\"select\"===f||\"input\"===f&&\"file\"===e.type)var g=Ee;else if(xe(e))if(Fe)g=Le;else{g=Je;var h=Ie}else(f=e.nodeName)&&\"input\"===f.toLowerCase()&&(\"checkbox\"===e.type||\"radio\"===e.type)&&(g=Ke);if(g&&(g=g(a,b)))return ze(g,c,d);h&&h(a,e,b);\"blur\"===a&&(a=e._wrapperState)&&a.controlled&&\"number\"===e.type&&Db(e,\"number\",e.value)}},Ne=G.extend({view:null,detail:null}),\nOe={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pe(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Oe[a])?!!b[a]:!1}function Qe(){return Pe}\nvar Re=0,Se=0,Te=!1,Ue=!1,Ve=Ne.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:Qe,button:null,buttons:null,relatedTarget:function(a){return a.relatedTarget||(a.fromElement===a.srcElement?a.toElement:a.fromElement)},movementX:function(a){if(\"movementX\"in a)return a.movementX;var b=Re;Re=a.screenX;return Te?\"mousemove\"===a.type?a.screenX-b:0:(Te=!0,0)},movementY:function(a){if(\"movementY\"in a)return a.movementY;\nvar b=Se;Se=a.screenY;return Ue?\"mousemove\"===a.type?a.screenY-b:0:(Ue=!0,0)}}),We=Ve.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null}),Xe={mouseEnter:{registrationName:\"onMouseEnter\",dependencies:[\"mouseout\",\"mouseover\"]},mouseLeave:{registrationName:\"onMouseLeave\",dependencies:[\"mouseout\",\"mouseover\"]},pointerEnter:{registrationName:\"onPointerEnter\",dependencies:[\"pointerout\",\"pointerover\"]},pointerLeave:{registrationName:\"onPointerLeave\",\ndependencies:[\"pointerout\",\"pointerover\"]}},Ye={eventTypes:Xe,extractEvents:function(a,b,c,d,e){var f=\"mouseover\"===a||\"pointerover\"===a,g=\"mouseout\"===a||\"pointerout\"===a;if(f&&0===(e&32)&&(c.relatedTarget||c.fromElement)||!g&&!f)return null;f=d.window===d?d:(f=d.ownerDocument)?f.defaultView||f.parentWindow:window;if(g){if(g=b,b=(b=c.relatedTarget||c.toElement)?tc(b):null,null!==b){var h=dc(b);if(b!==h||5!==b.tag&&6!==b.tag)b=null}}else g=null;if(g===b)return null;if(\"mouseout\"===a||\"mouseover\"===\na){var k=Ve;var l=Xe.mouseLeave;var m=Xe.mouseEnter;var p=\"mouse\"}else if(\"pointerout\"===a||\"pointerover\"===a)k=We,l=Xe.pointerLeave,m=Xe.pointerEnter,p=\"pointer\";a=null==g?f:Pd(g);f=null==b?f:Pd(b);l=k.getPooled(l,g,c,d);l.type=p+\"leave\";l.target=a;l.relatedTarget=f;c=k.getPooled(m,b,c,d);c.type=p+\"enter\";c.target=f;c.relatedTarget=a;d=g;p=b;if(d&&p)a:{k=d;m=p;g=0;for(a=k;a;a=Rd(a))g++;a=0;for(b=m;b;b=Rd(b))a++;for(;0<g-a;)k=Rd(k),g--;for(;0<a-g;)m=Rd(m),a--;for(;g--;){if(k===m||k===m.alternate)break a;\nk=Rd(k);m=Rd(m)}k=null}else k=null;m=k;for(k=[];d&&d!==m;){g=d.alternate;if(null!==g&&g===m)break;k.push(d);d=Rd(d)}for(d=[];p&&p!==m;){g=p.alternate;if(null!==g&&g===m)break;d.push(p);p=Rd(p)}for(p=0;p<k.length;p++)Vd(k[p],\"bubbled\",l);for(p=d.length;0<p--;)Vd(d[p],\"captured\",c);return 0===(e&64)?[l]:[l,c]}};function Ze(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var $e=\"function\"===typeof Object.is?Object.is:Ze,af=Object.prototype.hasOwnProperty;\nfunction bf(a,b){if($e(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!af.call(b,c[d])||!$e(a[c[d]],b[c[d]]))return!1;return!0}\nvar cf=ya&&\"documentMode\"in document&&11>=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;g<f.length;g++)if(!e.has(f[g])){e=!1;break a}e=!0}f=!e}if(f)return null;e=b?Pd(b):window;switch(a){case \"focus\":if(xe(e)||\"true\"===e.contentEditable)ef=e,ff=b,gf=null;break;case \"blur\":gf=ff=ef=null;break;case \"mousedown\":hf=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":return hf=!1,jf(c,d);case \"selectionchange\":if(cf)break;\ncase \"keydown\":case \"keyup\":return jf(c,d)}return null}},lf=G.extend({animationName:null,elapsedTime:null,pseudoElement:null}),mf=G.extend({clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),nf=Ne.extend({relatedTarget:null});function of(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}\nvar pf={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},qf={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",\n116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},rf=Ne.extend({key:function(a){if(a.key){var b=pf[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=of(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?qf[a.keyCode]||\"Unidentified\":\"\"},location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:Qe,charCode:function(a){return\"keypress\"===\na.type?of(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===a.type?of(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),sf=Ve.extend({dataTransfer:null}),tf=Ne.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:Qe}),uf=G.extend({propertyName:null,elapsedTime:null,pseudoElement:null}),vf=Ve.extend({deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in\na?-a.wheelDeltaX:0},deltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:null,deltaMode:null}),wf={eventTypes:Wc,extractEvents:function(a,b,c,d){var e=Yc.get(a);if(!e)return null;switch(a){case \"keypress\":if(0===of(c))return null;case \"keydown\":case \"keyup\":a=rf;break;case \"blur\":case \"focus\":a=nf;break;case \"click\":if(2===c.button)return null;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":a=\nVe;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":a=sf;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":a=tf;break;case Xb:case Yb:case Zb:a=lf;break;case $b:a=uf;break;case \"scroll\":a=Ne;break;case \"wheel\":a=vf;break;case \"copy\":case \"cut\":case \"paste\":a=mf;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":a=\nWe;break;default:a=G}b=a.getPooled(e,b,c,d);Xd(b);return b}};if(pa)throw Error(u(101));pa=Array.prototype.slice.call(\"ResponderEventPlugin SimpleEventPlugin EnterLeaveEventPlugin ChangeEventPlugin SelectEventPlugin BeforeInputEventPlugin\".split(\" \"));ra();var xf=Nc;la=Qd;ma=xf;na=Pd;xa({SimpleEventPlugin:wf,EnterLeaveEventPlugin:Ye,ChangeEventPlugin:Me,SelectEventPlugin:kf,BeforeInputEventPlugin:ve});var yf=[],zf=-1;function H(a){0>zf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});Wf=null}catch(c){throw null!==Wf&&(Wf=Wf.slice(a+1)),Jf(Of,gg),c;}finally{Yf=!1}}}function hg(a,b,c){c/=10;return 1073741821-(((1073741821-a+b/10)/c|0)+1)*c}function ig(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}var jg={current:null},kg=null,lg=null,mg=null;function ng(){mg=lg=kg=null}\nfunction og(a){var b=jg.current;H(jg);a.type._context._currentValue=b}function pg(a,b){for(;null!==a;){var c=a.alternate;if(a.childExpirationTime<b)a.childExpirationTime=b,null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);else if(null!==c&&c.childExpirationTime<b)c.childExpirationTime=b;else break;a=a.return}}function qg(a,b){kg=a;mg=lg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(a.expirationTime>=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(g<d){var ca={expirationTime:z.expirationTime,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null};null===x?(p=x=\nca,m=k):x=x.next=ca;g>l&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=e;e=c;if(\"function\"!==typeof d)throw Error(u(191,d));d.call(e)}}}var Dg=Wa.ReactCurrentBatchConfig,Eg=(new aa.Component).refs;function Fg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;0===a.expirationTime&&(a.updateQueue.baseState=c)}\nvar Jg={isMounted:function(a){return(a=a._reactInternalFiber)?dc(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e=wg(d,e);e.tag=1;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);xg(a,e);Ig(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=Gg(),d=Dg.suspense;\nc=Hg(c,a,d);d=wg(c,d);d.tag=2;void 0!==b&&null!==b&&(d.callback=b);xg(a,d);Ig(a,c)}};function Kg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!bf(c,d)||!bf(e,f):!0}\nfunction Lg(a,b,c){var d=!1,e=Af;var f=b.contextType;\"object\"===typeof f&&null!==f?f=sg(f):(e=L(b)?Bf:J.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Cf(a,e):Af);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Jg;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Mg(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Jg.enqueueReplaceState(b,b.state,null)}\nfunction Ng(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Eg;ug(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=sg(f):(f=L(b)?Bf:J.current,e.context=Cf(a,f));zg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Fg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Jg.enqueueReplaceState(e,e.state,null),zg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var Og=Array.isArray;\nfunction Pg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(u(309));var d=c.stateNode}if(!d)throw Error(u(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Eg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(u(284));if(!c._owner)throw Error(u(290,a));}return a}\nfunction Qg(a,b){if(\"textarea\"!==a.type)throw Error(u(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\"));}\nfunction Rg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Sg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.effectTag=\n2,c):d;b.effectTag=2;return c}function g(b){a&&null===b.alternate&&(b.effectTag=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Tg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Pg(a,b,c),d.return=a,d;d=Ug(c.type,c.key,c.props,null,a.mode,d);d.ref=Pg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==\nc.implementation)return b=Vg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Wg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function p(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Tg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case Za:return c=Ug(b.type,b.key,b.props,null,a.mode,c),c.ref=Pg(a,null,b),c.return=a,c;case $a:return b=Vg(b,a.mode,c),b.return=a,b}if(Og(b)||\nnb(b))return b=Wg(b,a.mode,c,null),b.return=a,b;Qg(a,b)}return null}function x(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case Za:return c.key===e?c.type===ab?m(a,b,c.props.children,d,e):k(a,b,c,d):null;case $a:return c.key===e?l(a,b,c,d):null}if(Og(c)||nb(c))return null!==e?null:m(a,b,c,d,null);Qg(a,c)}return null}function z(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=\na.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case Za:return a=a.get(null===d.key?c:d.key)||null,d.type===ab?m(b,a,d.props.children,e,d.key):k(b,a,d,e);case $a:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Og(d)||nb(d))return a=a.get(c)||null,m(b,a,d,e,null);Qg(b,d)}return null}function ca(e,g,h,k){for(var l=null,t=null,m=g,y=g=0,A=null;null!==m&&y<h.length;y++){m.index>y?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;y<h.length;y++)m=p(e,h[y],k),null!==m&&(g=f(m,g,y),null===t?l=m:t.sibling=m,t=m);return l}for(m=d(e,m);y<h.length;y++)A=z(m,e,y,h[y],k),null!==A&&(a&&null!==A.alternate&&m.delete(null===A.key?y:A.key),g=f(A,g,y),null===t?l=A:t.sibling=A,t=A);a&&m.forEach(function(a){return b(e,a)});return l}function D(e,g,h,l){var k=nb(h);if(\"function\"!==typeof k)throw Error(u(150));h=k.call(h);\nif(null==h)throw Error(u(151));for(var m=k=null,t=g,y=g=0,A=null,q=h.next();null!==t&&!q.done;y++,q=h.next()){t.index>y?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!$e(a[c],b[c]))return!1;return!0}\nfunction oh(a,b,c,d,e,f){lh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.expirationTime=0;jh.current=null===a||null===a.memoizedState?ph:qh;a=c(d,e);if(b.expirationTime===lh){f=0;do{b.expirationTime=0;if(!(25>f))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(l<lh){var m={expirationTime:k.expirationTime,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null};null===h?(g=h=m,f=d):h=h.next=m;l>N.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97<d?97:d,function(){var d=kh.suspense;kh.suspense=void 0===b?null:b;try{a(!1),c()}finally{kh.suspense=d}})}\nfunction zh(a,b,c){var d=Gg(),e=Dg.suspense;d=Hg(d,a,e);e={expirationTime:d,suspenseConfig:e,action:c,eagerReducer:null,eagerState:null,next:null};var f=b.pending;null===f?e.next=e:(e.next=f.next,f.next=e);b.pending=e;f=a.alternate;if(a===N||null!==f&&f===N)mh=!0,e.expirationTime=lh,N.expirationTime=lh;else{if(0===a.expirationTime&&(null===f||0===f.expirationTime)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.eagerReducer=f;e.eagerState=h;if($e(h,g))return}catch(k){}finally{}Ig(a,\nd)}}\nvar sh={readContext:sg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useResponder:Q,useDeferredValue:Q,useTransition:Q},ph={readContext:sg,useCallback:Kh,useContext:sg,useEffect:Eh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Ch(4,2,Hh.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Ch(4,2,a,b)},useMemo:function(a,b){var c=th();b=void 0===b?null:b;a=a();c.memoizedState=[a,\nb];return a},useReducer:function(a,b,c){var d=th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=zh.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=th();a={current:a};return b.memoizedState=a},useState:yh,useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=yh(a),d=c[0],e=c[1];Eh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=\nc}},[a,b]);return d},useTransition:function(a){var b=yh(!1),c=b[0];b=b[1];return[Kh(Nh.bind(null,b,a),[b,a]),c]}},qh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:wh,useRef:Bh,useState:function(){return wh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=wh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=\nwh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,b,a),[b,a]),c]}},rh={readContext:sg,useCallback:Lh,useContext:sg,useEffect:Fh,useImperativeHandle:Ih,useLayoutEffect:Gh,useMemo:Mh,useReducer:xh,useRef:Bh,useState:function(){return xh(vh)},useDebugValue:Jh,useResponder:ih,useDeferredValue:function(a,b){var c=xh(vh),d=c[0],e=c[1];Fh(function(){var c=kh.suspense;kh.suspense=void 0===b?null:b;try{e(a)}finally{kh.suspense=c}},[a,b]);return d},useTransition:function(a){var b=xh(vh),c=b[0];b=b[1];return[Lh(Nh.bind(null,\nb,a),[b,a]),c]}},Oh=null,Ph=null,Qh=!1;function Rh(a,b){var c=Sh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction Th(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Uh(a){if(Qh){var b=Ph;if(b){var c=b;if(!Th(a,b)){b=Jd(c.nextSibling);if(!b||!Th(a,b)){a.effectTag=a.effectTag&-1025|2;Qh=!1;Oh=a;return}Rh(Oh,c)}Oh=a;Ph=Jd(b.firstChild)}else a.effectTag=a.effectTag&-1025|2,Qh=!1,Oh=a}}function Vh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;Oh=a}\nfunction Wh(a){if(a!==Oh)return!1;if(!Qh)return Vh(a),Qh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Gd(b,a.memoizedProps))for(b=Ph;b;)Rh(a,b),b=Jd(b.nextSibling);Vh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(u(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(c===Ad){if(0===b){Ph=Jd(a.nextSibling);break a}b--}else c!==zd&&c!==Cd&&c!==Bd||b++}a=a.nextSibling}Ph=null}}else Ph=Oh?Jd(a.stateNode.nextSibling):null;return!0}\nfunction Xh(){Ph=Oh=null;Qh=!1}var Yh=Wa.ReactCurrentOwner,rg=!1;function R(a,b,c,d){b.child=null===a?Yg(b,null,c,d):Xg(b,a.child,c,d)}function Zh(a,b,c,d,e){c=c.render;var f=b.ref;qg(b,e);d=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,d,e);return b.child}\nfunction ai(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!bi(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ci(a,b,g,d,e,f);a=Ug(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:bf,c(e,d)&&a.ref===b.ref))return $h(a,b,f);b.effectTag|=1;a=Sg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ci(a,b,c,d,e,f){return null!==a&&bf(a.memoizedProps,d)&&a.ref===b.ref&&(rg=!1,e<f)?(b.expirationTime=a.expirationTime,$h(a,b,f)):di(a,b,c,d,f)}function ei(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function di(a,b,c,d,e){var f=L(c)?Bf:J.current;f=Cf(b,f);qg(b,e);c=oh(a,b,c,d,f,e);if(null!==a&&!rg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),$h(a,b,e);b.effectTag|=1;R(a,b,c,e);return b.child}\nfunction fi(a,b,c,d,e){if(L(c)){var f=!0;Gf(b)}else f=!1;qg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),Lg(b,c,d),Ng(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l));var m=c.getDerivedStateFromProps,p=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;p||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l);tg=!1;var x=b.memoizedState;g.state=x;zg(b,d,g,e);k=b.memoizedState;h!==d||x!==k||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),k=b.memoizedState),(h=tg||Kg(b,c,h,d,x,k,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.effectTag|=4)):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.effectTag|=4),d=!1)}else g=b.stateNode,vg(a,b),h=b.memoizedProps,g.props=b.type===b.elementType?h:ig(b.type,h),k=g.context,l=c.contextType,\"object\"===typeof l&&null!==l?l=sg(l):(l=L(c)?Bf:J.current,l=Cf(b,l)),m=c.getDerivedStateFromProps,(p=\"function\"===typeof m||\"function\"===\ntypeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Mg(b,g,d,l),tg=!1,k=b.memoizedState,g.state=k,zg(b,d,g,e),x=b.memoizedState,h!==d||k!==x||K.current||tg?(\"function\"===typeof m&&(Fg(b,c,m,d),x=b.memoizedState),(m=tg||Kg(b,c,h,d,k,x,l))?(p||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,l),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,l)),\"function\"===typeof g.componentDidUpdate&&(b.effectTag|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.effectTag|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=l,d=m):\n(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&k===a.memoizedState||(b.effectTag|=256),d=!1);return gi(a,b,c,d,f,e)}\nfunction gi(a,b,c,d,e,f){ei(a,b);var g=0!==(b.effectTag&64);if(!d&&!g)return e&&Hf(b,c,!1),$h(a,b,f);d=b.stateNode;Yh.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.effectTag|=1;null!==a&&g?(b.child=Xg(b,a.child,null,f),b.child=Xg(b,null,h,f)):R(a,b,h,f);b.memoizedState=d.state;e&&Hf(b,c,!0);return b.child}function hi(a){var b=a.stateNode;b.pendingContext?Ef(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Ef(a,b.context,!1);dh(a,b.containerInfo)}\nvar ii={dehydrated:null,retryTime:0};\nfunction ji(a,b,c){var d=b.mode,e=b.pendingProps,f=M.current,g=!1,h;(h=0!==(b.effectTag&64))||(h=0!==(f&2)&&(null===a||null!==a.memoizedState));h?(g=!0,b.effectTag&=-65):null!==a&&null===a.memoizedState||void 0===e.fallback||!0===e.unstable_avoidThisFallback||(f|=1);I(M,f&1);if(null===a){void 0!==e.fallback&&Uh(b);if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=\nb;e.sibling=c;b.memoizedState=ii;b.child=e;return c}d=e.children;b.memoizedState=null;return b.child=Yg(b,null,d,c)}if(null!==a.memoizedState){a=a.child;d=a.sibling;if(g){e=e.fallback;c=Sg(a,a.pendingProps);c.return=b;if(0===(b.mode&2)&&(g=null!==b.memoizedState?b.child.child:b.child,g!==a.child))for(c.child=g;null!==g;)g.return=c,g=g.sibling;d=Sg(d,e);d.return=b;c.sibling=d;c.childExpirationTime=0;b.memoizedState=ii;b.child=c;return d}c=Xg(b,a.child,e.children,c);b.memoizedState=null;return b.child=\nc}a=a.child;if(g){g=e.fallback;e=Wg(null,d,0,null);e.return=b;e.child=a;null!==a&&(a.return=e);if(0===(b.mode&2))for(a=null!==b.memoizedState?b.child.child:b.child,e.child=a;null!==a;)a.return=e,a=a.sibling;c=Wg(g,d,c,null);c.return=b;e.sibling=c;c.effectTag|=2;e.childExpirationTime=0;b.memoizedState=ii;b.child=e;return c}b.memoizedState=null;return b.child=Xg(b,a,e.children,c)}\nfunction ki(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);pg(a.return,b)}function li(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailExpiration:0,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailExpiration=0,g.tailMode=e,g.lastEffect=f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;R(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.effectTag|=64;else{if(null!==a&&0!==(a.effectTag&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&ki(a,c);else if(19===a.tag)ki(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(M,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===hh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);li(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===hh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}li(b,!0,c,null,f,b.lastEffect);break;case \"together\":li(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction $h(a,b,c){null!==a&&(b.dependencies=a.dependencies);var d=b.expirationTime;0!==d&&Bg(d);if(b.childExpirationTime<c)return null;if(null!==a&&b.child!==a.child)throw Error(u(153));if(null!==b.child){a=b.child;c=Sg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Sg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}var ni,oi,pi,qi;\nni=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};oi=function(){};\npi=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;ch($g.current);a=null;switch(c){case \"input\":f=zb(g,f);d=zb(g,d);a=[];break;case \"option\":f=Gb(g,f);d=Gb(g,d);a=[];break;case \"select\":f=n({},f,{value:void 0});d=n({},d,{value:void 0});a=[];break;case \"textarea\":f=Ib(g,f);d=Ib(g,d);a=[];break;default:\"function\"!==typeof f.onClick&&\"function\"===typeof d.onClick&&(g.onclick=sd)}od(c,d);var h,k;c=null;for(h in f)if(!d.hasOwnProperty(h)&&f.hasOwnProperty(h)&&null!=f[h])if(\"style\"===\nh)for(k in g=f[h],g)g.hasOwnProperty(k)&&(c||(c={}),c[k]=\"\");else\"dangerouslySetInnerHTML\"!==h&&\"children\"!==h&&\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&\"autoFocus\"!==h&&(va.hasOwnProperty(h)?a||(a=[]):(a=a||[]).push(h,null));for(h in d){var l=d[h];g=null!=f?f[h]:void 0;if(d.hasOwnProperty(h)&&l!==g&&(null!=l||null!=g))if(\"style\"===h)if(g){for(k in g)!g.hasOwnProperty(k)||l&&l.hasOwnProperty(k)||(c||(c={}),c[k]=\"\");for(k in l)l.hasOwnProperty(k)&&g[k]!==l[k]&&(c||(c={}),\nc[k]=l[k])}else c||(a||(a=[]),a.push(h,c)),c=l;else\"dangerouslySetInnerHTML\"===h?(l=l?l.__html:void 0,g=g?g.__html:void 0,null!=l&&g!==l&&(a=a||[]).push(h,l)):\"children\"===h?g===l||\"string\"!==typeof l&&\"number\"!==typeof l||(a=a||[]).push(h,\"\"+l):\"suppressContentEditableWarning\"!==h&&\"suppressHydrationWarning\"!==h&&(va.hasOwnProperty(h)?(null!=l&&rd(e,h),a||g===l||(a=[])):(a=a||[]).push(h,l))}c&&(a=a||[]).push(\"style\",c);e=a;if(b.updateQueue=e)b.effectTag|=4}};\nqi=function(a,b,c,d){c!==d&&(b.effectTag|=4)};function ri(a,b){switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction si(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return L(b.type)&&Df(),null;case 3:return eh(),H(K),H(J),c=b.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==a&&null!==a.child||!Wh(b)||(b.effectTag|=4),oi(b),null;case 5:gh(b);c=ch(bh.current);var e=b.type;if(null!==a&&null!=b.stateNode)pi(a,b,e,d,c),a.ref!==b.ref&&(b.effectTag|=128);else{if(!d){if(null===b.stateNode)throw Error(u(166));\nreturn null}a=ch($g.current);if(Wh(b)){d=b.stateNode;e=b.type;var f=b.memoizedProps;d[Md]=b;d[Nd]=f;switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<ac.length;a++)F(ac[a],d);break;case \"source\":F(\"error\",d);break;case \"img\":case \"image\":case \"link\":F(\"error\",d);F(\"load\",d);break;case \"form\":F(\"reset\",d);F(\"submit\",d);break;case \"details\":F(\"toggle\",d);break;case \"input\":Ab(d,f);F(\"invalid\",d);rd(c,\"onChange\");break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};F(\"invalid\",d);rd(c,\"onChange\");break;case \"textarea\":Jb(d,f),F(\"invalid\",d),rd(c,\"onChange\")}od(e,f);a=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(a=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(a=[\"children\",\"\"+h]):va.hasOwnProperty(g)&&null!=h&&rd(c,g)}switch(e){case \"input\":xb(d);Eb(d,f,!0);break;case \"textarea\":xb(d);Lb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&\n(d.onclick=sd)}c=a;b.updateQueue=c;null!==c&&(b.effectTag|=4)}else{g=9===c.nodeType?c:c.ownerDocument;a===qd&&(a=Nb(e));a===qd?\"script\"===e?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;h<ac.length;h++)F(ac[h],a);h=d;break;case \"source\":F(\"error\",a);h=d;break;case \"img\":case \"image\":case \"link\":F(\"error\",a);F(\"load\",a);h=d;break;case \"form\":F(\"reset\",a);F(\"submit\",a);h=d;break;case \"details\":F(\"toggle\",a);h=d;break;case \"input\":Ab(a,d);h=zb(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;case \"option\":h=Gb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};h=n({},d,{value:void 0});F(\"invalid\",a);rd(c,\"onChange\");break;case \"textarea\":Jb(a,\nd);h=Ib(a,d);F(\"invalid\",a);rd(c,\"onChange\");break;default:h=d}od(e,h);var k=h;for(f in k)if(k.hasOwnProperty(f)){var l=k[f];\"style\"===f?md(a,l):\"dangerouslySetInnerHTML\"===f?(l=l?l.__html:void 0,null!=l&&Qb(a,l)):\"children\"===f?\"string\"===typeof l?(\"textarea\"!==e||\"\"!==l)&&Rb(a,l):\"number\"===typeof l&&Rb(a,\"\"+l):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(va.hasOwnProperty(f)?null!=l&&rd(c,f):null!=l&&Xa(a,f,l,g))}switch(e){case \"input\":xb(a);Eb(a,d,!1);\nbreak;case \"textarea\":xb(a);Lb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+rb(d.value));break;case \"select\":a.multiple=!!d.multiple;c=d.value;null!=c?Hb(a,!!d.multiple,c,!1):null!=d.defaultValue&&Hb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof h.onClick&&(a.onclick=sd)}Fd(e,d)&&(b.effectTag|=4)}null!==b.ref&&(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)qi(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(u(166));\nc=ch(bh.current);ch($g.current);Wh(b)?(c=b.stateNode,d=b.memoizedProps,c[Md]=b,c.nodeValue!==d&&(b.effectTag|=4)):(c=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),c[Md]=b,b.stateNode=c)}return null;case 13:H(M);d=b.memoizedState;if(0!==(b.effectTag&64))return b.expirationTime=c,b;c=null!==d;d=!1;null===a?void 0!==b.memoizedProps.fallback&&Wh(b):(e=a.memoizedState,d=null!==e,c||null===e||(e=a.child.sibling,null!==e&&(f=b.firstEffect,null!==f?(b.firstEffect=e,e.nextEffect=f):(b.firstEffect=b.lastEffect=\ne,e.nextEffect=null),e.effectTag=8)));if(c&&!d&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(M.current&1))S===ti&&(S=ui);else{if(S===ti||S===ui)S=vi;0!==wi&&null!==T&&(xi(T,U),yi(T,wi))}if(c||d)b.effectTag|=4;return null;case 4:return eh(),oi(b),null;case 10:return og(b),null;case 17:return L(b.type)&&Df(),null;case 19:H(M);d=b.memoizedState;if(null===d)return null;e=0!==(b.effectTag&64);f=d.rendering;if(null===f)if(e)ri(d,!1);else{if(S!==ti||null!==a&&0!==(a.effectTag&\n64))for(f=b.child;null!==f;){a=hh(f);if(null!==a){b.effectTag|=64;ri(d,!1);e=a.updateQueue;null!==e&&(b.updateQueue=e,b.effectTag|=4);null===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;for(d=b.child;null!==d;)e=d,f=c,e.effectTag&=2,e.nextEffect=null,e.firstEffect=null,e.lastEffect=null,a=e.alternate,null===a?(e.childExpirationTime=0,e.expirationTime=f,e.child=null,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null):(e.childExpirationTime=a.childExpirationTime,\ne.expirationTime=a.expirationTime,e.child=a.child,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,f=a.dependencies,e.dependencies=null===f?null:{expirationTime:f.expirationTime,firstContext:f.firstContext,responders:f.responders}),d=d.sibling;I(M,M.current&1|2);return b.child}f=f.sibling}}else{if(!e)if(a=hh(f),null!==a){if(b.effectTag|=64,e=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),ri(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!f.alternate)return b=\nb.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*$f()-d.renderingStartTime>d.tailExpiration&&1<c&&(b.effectTag|=64,e=!0,ri(d,!1),b.expirationTime=b.childExpirationTime=c-1);d.isBackwards?(f.sibling=b.child,b.child=f):(c=d.last,null!==c?c.sibling=f:b.child=f,d.last=f)}return null!==d.tail?(0===d.tailExpiration&&(d.tailExpiration=$f()+500),c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=$f(),c.sibling=null,b=M.current,I(M,e?b&1|2:b&1),c):null}throw Error(u(156,\nb.tag));}function zi(a){switch(a.tag){case 1:L(a.type)&&Df();var b=a.effectTag;return b&4096?(a.effectTag=b&-4097|64,a):null;case 3:eh();H(K);H(J);b=a.effectTag;if(0!==(b&64))throw Error(u(285));a.effectTag=b&-4097|64;return a;case 5:return gh(a),null;case 13:return H(M),b=a.effectTag,b&4096?(a.effectTag=b&-4097|64,a):null;case 19:return H(M),null;case 4:return eh(),null;case 10:return og(a),null;default:return null}}function Ai(a,b){return{value:a,source:b,stack:qb(b)}}\nvar Bi=\"function\"===typeof WeakSet?WeakSet:Set;function Ci(a,b){var c=b.source,d=b.stack;null===d&&null!==c&&(d=qb(c));null!==c&&pb(c.type);b=b.value;null!==a&&1===a.tag&&pb(a.type);try{console.error(b)}catch(e){setTimeout(function(){throw e;})}}function Di(a,b){try{b.props=a.memoizedProps,b.state=a.memoizedState,b.componentWillUnmount()}catch(c){Ei(a,c)}}function Fi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Ei(a,c)}else b.current=null}\nfunction Gi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.effectTag&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:ig(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:case 5:case 6:case 4:case 17:return}throw Error(u(163));}\nfunction Hi(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.destroy;c.destroy=void 0;void 0!==d&&d()}c=c.next}while(c!==b)}}function Ii(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}\nfunction Ji(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:Ii(3,c);return;case 1:a=c.stateNode;if(c.effectTag&4)if(null===b)a.componentDidMount();else{var d=c.elementType===c.type?b.memoizedProps:ig(c.type,b.memoizedProps);a.componentDidUpdate(d,b.memoizedState,a.__reactInternalSnapshotBeforeUpdate)}b=c.updateQueue;null!==b&&Cg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Cg(c,b,a)}return;\ncase 5:a=c.stateNode;null===b&&c.effectTag&4&&Fd(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Vc(c))));return;case 19:case 17:case 20:case 21:return}throw Error(u(163));}\nfunction Ki(a,b,c){\"function\"===typeof Li&&Li(b);switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a.next;cg(97<c?97:c,function(){var a=d;do{var c=a.destroy;if(void 0!==c){var g=b;try{c()}catch(h){Ei(g,h)}}a=a.next}while(a!==d)})}break;case 1:Fi(b);c=b.stateNode;\"function\"===typeof c.componentWillUnmount&&Di(b,c);break;case 5:Fi(b);break;case 4:Mi(a,b,c)}}\nfunction Ni(a){var b=a.alternate;a.return=null;a.child=null;a.memoizedState=null;a.updateQueue=null;a.dependencies=null;a.alternate=null;a.firstEffect=null;a.lastEffect=null;a.pendingProps=null;a.memoizedProps=null;a.stateNode=null;null!==b&&Ni(b)}function Oi(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Pi(a){a:{for(var b=a.return;null!==b;){if(Oi(b)){var c=b;break a}b=b.return}throw Error(u(160));}b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(u(161));}c.effectTag&16&&(Rb(b,\"\"),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||Oi(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.effectTag&2)continue b;\nif(null===c.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}d?Qi(a,c,b):Ri(a,c,b)}\nfunction Qi(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=sd));else if(4!==d&&(a=a.child,null!==a))for(Qi(a,b,c),a=a.sibling;null!==a;)Qi(a,b,c),a=a.sibling}\nfunction Ri(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Ri(a,b,c),a=a.sibling;null!==a;)Ri(a,b,c),a=a.sibling}\nfunction Mi(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(u(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Ki(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Ki(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Si(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:Hi(3,b);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[Nd]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Bb(c,d);pd(a,e);b=pd(a,d);for(e=0;e<f.length;e+=2){var g=f[e],h=f[e+1];\"style\"===g?md(c,h):\"dangerouslySetInnerHTML\"===g?Qb(c,h):\"children\"===g?Rb(c,h):Xa(c,g,h,b)}switch(a){case \"input\":Cb(c,d);break;\ncase \"textarea\":Kb(c,d);break;case \"select\":b=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,a=d.value,null!=a?Hb(c,!!d.multiple,a,!1):b!==!!d.multiple&&(null!=d.defaultValue?Hb(c,!!d.multiple,d.defaultValue,!0):Hb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(u(162));b.stateNode.nodeValue=b.memoizedProps;return;case 3:b=b.stateNode;b.hydrate&&(b.hydrate=!1,Vc(b.containerInfo));return;case 12:return;case 13:c=b;null===b.memoizedState?\nd=!1:(d=!0,c=b.child,Ti=$f());if(null!==c)a:for(a=c;;){if(5===a.tag)f=a.stateNode,d?(f=f.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(f=a.stateNode,e=a.memoizedProps.style,e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null,f.style.display=ld(\"display\",e));else if(6===a.tag)a.stateNode.nodeValue=d?\"\":a.memoizedProps;else if(13===a.tag&&null!==a.memoizedState&&null===a.memoizedState.dehydrated){f=a.child.sibling;f.return=a;a=\nf;continue}else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===c)break;for(;null===a.sibling;){if(null===a.return||a.return===c)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}Ui(b);return;case 19:Ui(b);return;case 17:return}throw Error(u(163));}function Ui(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Bi);b.forEach(function(b){var d=Vi.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nvar Wi=\"function\"===typeof WeakMap?WeakMap:Map;function Xi(a,b,c){c=wg(c,null);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Yi||(Yi=!0,Zi=d);Ci(a,b)};return c}\nfunction $i(a,b,c){c=wg(c,null);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ci(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===aj?aj=new Set([this]):aj.add(this),Ci(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nvar bj=Math.ceil,cj=Wa.ReactCurrentDispatcher,dj=Wa.ReactCurrentOwner,V=0,ej=8,fj=16,gj=32,ti=0,hj=1,ij=2,ui=3,vi=4,jj=5,W=V,T=null,X=null,U=0,S=ti,kj=null,lj=1073741823,mj=1073741823,nj=null,wi=0,oj=!1,Ti=0,pj=500,Y=null,Yi=!1,Zi=null,aj=null,qj=!1,rj=null,sj=90,tj=null,uj=0,vj=null,wj=0;function Gg(){return(W&(fj|gj))!==V?1073741821-($f()/10|0):0!==wj?wj:wj=1073741821-($f()/10|0)}\nfunction Hg(a,b,c){b=b.mode;if(0===(b&2))return 1073741823;var d=ag();if(0===(b&4))return 99===d?1073741823:1073741822;if((W&fj)!==V)return U;if(null!==c)a=hg(a,c.timeoutMs|0||5E3,250);else switch(d){case 99:a=1073741823;break;case 98:a=hg(a,150,100);break;case 97:case 96:a=hg(a,5E3,250);break;case 95:a=2;break;default:throw Error(u(326));}null!==T&&a===U&&--a;return a}\nfunction Ig(a,b){if(50<uj)throw uj=0,vj=null,Error(u(185));a=xj(a,b);if(null!==a){var c=ag();1073741823===b?(W&ej)!==V&&(W&(fj|gj))===V?yj(a):(Z(a),W===V&&gg()):Z(a);(W&4)===V||98!==c&&99!==c||(null===tj?tj=new Map([[a,b]]):(c=tj.get(a),(void 0===c||c>b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}null!==e&&(T===e&&(Bg(b),S===vi&&xi(e,U)),yi(e,b));return e}\nfunction zj(a){var b=a.lastExpiredTime;if(0!==b)return b;b=a.firstPendingTime;if(!Aj(a,b))return b;var c=a.lastPingedTime;a=a.nextKnownPendingLevel;a=c>a?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2<c?2:c);break;case ui:xi(a,c);d=a.lastSuspendedTime;\nc===d&&(a.nextKnownPendingLevel=Ij(e));if(1073741823===lj&&(e=Ti+pj-$f(),10<e)){if(oj){var f=a.lastPingedTime;if(0===f||f>=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c<d&&(d=c));if(10<d){a.timeoutHandle=Hd(Jj.bind(null,a),d);break}Jj(a);break;case jj:if(1073741823!==lj&&null!==nj){f=lj;var g=nj;d=g.busyMinDurationMs|0;0>=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10<d){xi(a,c);a.timeoutHandle=\nHd(Jj.bind(null,a),d);break}}Jj(a);break;default:throw Error(u(329));}Z(a);if(a.callbackNode===b)return Bj.bind(null,a)}}return null}\nfunction yj(a){var b=a.lastExpiredTime;b=0!==b?b:1073741823;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&b===U||Ej(a,b);if(null!==X){var c=W;W|=fj;var d=Fj();do try{Kj();break}catch(e){Hj(a,e)}while(1);ng();W=c;cj.current=d;if(S===hj)throw c=kj,Ej(a,b),xi(a,b),Z(a),c;if(null!==X)throw Error(u(261));a.finishedWork=a.current.alternate;a.finishedExpirationTime=b;T=null;Jj(a);Z(a)}return null}function Lj(){if(null!==tj){var a=tj;tj=null;a.forEach(function(a,c){Cj(c,a);Z(c)});gg()}}\nfunction Mj(a,b){var c=W;W|=1;try{return a(b)}finally{W=c,W===V&&gg()}}function Nj(a,b){var c=W;W&=-2;W|=ej;try{return a(b)}finally{W=c,W===V&&gg()}}\nfunction Ej(a,b){a.finishedWork=null;a.finishedExpirationTime=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Id(c));if(null!==X)for(c=X.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Df();break;case 3:eh();H(K);H(J);break;case 5:gh(d);break;case 4:eh();break;case 13:H(M);break;case 19:H(M);break;case 10:og(d)}c=c.return}T=a;X=Sg(a.current,null);U=b;S=ti;kj=null;mj=lj=1073741823;nj=null;wi=0;oj=!1}\nfunction Hj(a,b){do{try{ng();jh.current=sh;if(mh)for(var c=N.memoizedState;null!==c;){var d=c.queue;null!==d&&(d.pending=null);c=c.next}lh=0;P=O=N=null;mh=!1;if(null===X||null===X.return)return S=hj,kj=b,X=null;a:{var e=a,f=X.return,g=X,h=b;b=U;g.effectTag|=2048;g.firstEffect=g.lastEffect=null;if(null!==h&&\"object\"===typeof h&&\"function\"===typeof h.then){var k=h;if(0===(g.mode&2)){var l=g.alternate;l?(g.updateQueue=l.updateQueue,g.memoizedState=l.memoizedState,g.expirationTime=l.expirationTime):(g.updateQueue=\nnull,g.memoizedState=null)}var m=0!==(M.current&1),p=f;do{var x;if(x=13===p.tag){var z=p.memoizedState;if(null!==z)x=null!==z.dehydrated?!0:!1;else{var ca=p.memoizedProps;x=void 0===ca.fallback?!1:!0!==ca.unstable_avoidThisFallback?!0:m?!1:!0}}if(x){var D=p.updateQueue;if(null===D){var t=new Set;t.add(k);p.updateQueue=t}else D.add(k);if(0===(p.mode&2)){p.effectTag|=64;g.effectTag&=-2981;if(1===g.tag)if(null===g.alternate)g.tag=17;else{var y=wg(1073741823,null);y.tag=2;xg(g,y)}g.expirationTime=1073741823;\nbreak a}h=void 0;g=b;var A=e.pingCache;null===A?(A=e.pingCache=new Wi,h=new Set,A.set(k,h)):(h=A.get(k),void 0===h&&(h=new Set,A.set(k,h)));if(!h.has(g)){h.add(g);var q=Oj.bind(null,e,k,g);k.then(q,q)}p.effectTag|=4096;p.expirationTime=b;break a}p=p.return}while(null!==p);h=Error((pb(g.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){a<lj&&2<a&&(lj=a);null!==b&&a<mj&&2<a&&(mj=a,nj=b)}function Bg(a){a>wi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1<X.effectTag&&(null!==\na.lastEffect?a.lastEffect.nextEffect=X:a.firstEffect=X,a.lastEffect=X))}else{b=zi(X);if(null!==b)return b.effectTag&=2047,b;null!==a&&(a.firstEffect=a.lastEffect=null,a.effectTag|=2048)}b=X.sibling;if(null!==b)return b;X=a}while(null!==X);S===ti&&(S=jj);return null}function Ij(a){var b=a.expirationTime;a=a.childExpirationTime;return b>a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1<c.effectTag?null!==c.lastEffect?(c.lastEffect.nextEffect=c,e=c.firstEffect):e=c:e=c.firstEffect;if(null!==e){var f=W;W|=gj;dj.current=null;Dd=fd;var g=xd();if(yd(g)){if(\"selectionStart\"in g)var h={start:g.selectionStart,end:g.selectionEnd};else a:{h=(h=g.ownerDocument)&&h.defaultView||window;var k=h.getSelection&&h.getSelection();if(k&&0!==k.rangeCount){h=k.anchorNode;var l=k.anchorOffset,\nm=k.focusNode;k=k.focusOffset;try{h.nodeType,m.nodeType}catch(wb){h=null;break a}var p=0,x=-1,z=-1,ca=0,D=0,t=g,y=null;b:for(;;){for(var A;;){t!==h||0!==l&&3!==t.nodeType||(x=p+l);t!==m||0!==k&&3!==t.nodeType||(z=p+k);3===t.nodeType&&(p+=t.nodeValue.length);if(null===(A=t.firstChild))break;y=t;t=A}for(;;){if(t===g)break b;y===h&&++ca===l&&(x=p);y===m&&++D===k&&(z=p);if(null!==(A=t.nextSibling))break;t=y;y=t.parentNode}t=A}h=-1===x||-1===z?null:{start:x,end:z}}else h=null}h=h||{start:0,end:0}}else h=\nnull;Ed={activeElementDetached:null,focusedElem:g,selectionRange:h};fd=!1;Y=e;do try{Tj()}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=e;do try{for(g=a,h=b;null!==Y;){var q=Y.effectTag;q&16&&Rb(Y.stateNode,\"\");if(q&128){var B=Y.alternate;if(null!==B){var w=B.ref;null!==w&&(\"function\"===typeof w?w(null):w.current=null)}}switch(q&1038){case 2:Pi(Y);Y.effectTag&=-3;break;case 6:Pi(Y);Y.effectTag&=-3;Si(Y.alternate,Y);break;case 1024:Y.effectTag&=-1025;break;case 1028:Y.effectTag&=\n-1025;Si(Y.alternate,Y);break;case 4:Si(Y.alternate,Y);break;case 8:l=Y,Mi(g,l,h),Ni(l)}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);w=Ed;B=xd();q=w.focusedElem;h=w.selectionRange;if(B!==q&&q&&q.ownerDocument&&wd(q.ownerDocument.documentElement,q)){null!==h&&yd(q)&&(B=h.start,w=h.end,void 0===w&&(w=B),\"selectionStart\"in q?(q.selectionStart=B,q.selectionEnd=Math.min(w,q.value.length)):(w=(B=q.ownerDocument||document)&&B.defaultView||window,w.getSelection&&\n(w=w.getSelection(),l=q.textContent.length,g=Math.min(h.start,l),h=void 0===h.end?g:Math.min(h.end,l),!w.extend&&g>h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q<B.length;q++)w=B[q],w.element.scrollLeft=w.left,w.element.scrollTop=w.top}fd=!!Dd;Ed=Dd=null;a.current=c;Y=e;do try{for(q=a;null!==Y;){var ub=Y.effectTag;ub&36&&Ji(q,Y.alternate,Y);if(ub&128){B=void 0;var vb=Y.ref;if(null!==vb){var Xc=Y.stateNode;switch(Y.tag){case 5:B=Xc;break;default:B=Xc}\"function\"===typeof vb?vb(B):vb.current=B}}Y=Y.nextEffect}}catch(wb){if(null===Y)throw Error(u(330));Ei(Y,wb);Y=Y.nextEffect}while(null!==Y);Y=\nnull;Vf();W=f}else a.current=c;if(qj)qj=!1,rj=a,sj=b;else for(Y=e;null!==Y;)b=Y.nextEffect,Y.nextEffect=null,Y=b;b=a.firstPendingTime;0===b&&(aj=null);1073741823===b?a===vj?uj++:(uj=0,vj=a):uj=0;\"function\"===typeof Uj&&Uj(c.stateNode,d);Z(a);if(Yi)throw Yi=!1,a=Zi,Zi=null,a;if((W&ej)!==V)return null;gg();return null}function Tj(){for(;null!==Y;){var a=Y.effectTag;0!==(a&256)&&Gi(Y.alternate,Y);0===(a&512)||qj||(qj=!0,dg(97,function(){Dj();return null}));Y=Y.nextEffect}}\nfunction Dj(){if(90!==sj){var a=97<sj?97:sj;sj=90;return cg(a,Vj)}}function Vj(){if(null===rj)return!1;var a=rj;rj=null;if((W&(fj|gj))!==V)throw Error(u(331));var b=W;W|=gj;for(a=a.current.firstEffect;null!==a;){try{var c=a;if(0!==(c.effectTag&512))switch(c.tag){case 0:case 11:case 15:case 22:Hi(5,c),Ii(5,c)}}catch(d){if(null===a)throw Error(u(330));Ei(a,d)}c=a.nextEffect;a.nextEffect=null;a=c}W=b;gg();return!0}\nfunction Wj(a,b,c){b=Ai(c,b);b=Xi(a,b,1073741823);xg(a,b);a=xj(a,1073741823);null!==a&&Z(a)}function Ei(a,b){if(3===a.tag)Wj(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){Wj(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===aj||!aj.has(d))){a=Ai(b,a);a=$i(c,a,1073741823);xg(c,a);c=xj(c,1073741823);null!==c&&Z(c);break}}c=c.return}}\nfunction Oj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);T===a&&U===c?S===vi||S===ui&&1073741823===lj&&$f()-Ti<pj?Ej(a,U):oj=!0:Aj(a,c)&&(b=a.lastPingedTime,0!==b&&b<c||(a.lastPingedTime=c,Z(a)))}function Vi(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=Gg(),b=Hg(b,a,null));a=xj(a,b);null!==a&&Z(a)}var Rj;\nRj=function(a,b,c){var d=b.expirationTime;if(null!==a){var e=b.pendingProps;if(a.memoizedProps!==e||K.current)rg=!0;else{if(d<c){rg=!1;switch(b.tag){case 3:hi(b);Xh();break;case 5:fh(b);if(b.mode&4&&1!==c&&e.hidden)return b.expirationTime=b.childExpirationTime=1,null;break;case 1:L(b.type)&&Gf(b);break;case 4:dh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;e=b.type._context;I(jg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){d=b.child.childExpirationTime;\nif(0!==d&&d>=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime<c&&(h.expirationTime=c);l=h.alternate;null!==l&&l.expirationTime<c&&(l.expirationTime=c);pg(h.return,c);k.expirationTime<c&&(k.expirationTime=c);break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=\ng}R(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,qg(b,c),e=sg(e,f.unstable_observedBits),d=d(e),b.effectTag|=1,R(a,b,d,c),b.child;case 14:return e=b.type,f=ig(e,b.pendingProps),f=ig(e.type,f),ai(a,b,e,f,d,c);case 15:return ci(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),b.tag=1,L(d)?(a=!0,Gf(b)):a=!1,qg(b,c),Lg(b,d,e),Ng(b,d,e,c),gi(null,\nb,d,!0,a,c);case 19:return mi(a,b,c)}throw Error(u(156,b.tag));};var Uj=null,Li=null;function Yj(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Uj=function(a){try{b.onCommitFiberRoot(c,a,void 0,64===(a.current.effectTag&64))}catch(e){}};Li=function(a){try{b.onCommitFiberUnmount(c,a)}catch(e){}}}catch(d){}return!0}\nfunction Zj(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function Sh(a,b,c,d){return new Zj(a,b,c,d)}\nfunction bi(a){a=a.prototype;return!(!a||!a.isReactComponent)}function Xj(a){if(\"function\"===typeof a)return bi(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===gb)return 11;if(a===jb)return 14}return 2}\nfunction Sg(a,b){var c=a.alternate;null===c?(c=Sh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{expirationTime:b.expirationTime,\nfirstContext:b.firstContext,responders:b.responders};c.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Ug(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bi(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ab:return Wg(c.children,e,f,b);case fb:g=8;e|=7;break;case bb:g=8;e|=1;break;case cb:return a=Sh(12,c,b,e|8),a.elementType=cb,a.type=cb,a.expirationTime=f,a;case hb:return a=Sh(13,c,b,e),a.type=hb,a.elementType=hb,a.expirationTime=f,a;case ib:return a=Sh(19,c,b,e),a.elementType=ib,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case db:g=\n10;break a;case eb:g=9;break a;case gb:g=11;break a;case jb:g=14;break a;case kb:g=16;d=null;break a;case lb:g=22;break a}throw Error(u(130,null==a?a:typeof a,\"\"));}b=Sh(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Wg(a,b,c,d){a=Sh(7,a,d,b);a.expirationTime=c;return a}function Tg(a,b,c){a=Sh(6,a,null,b);a.expirationTime=c;return a}\nfunction Vg(a,b,c){b=Sh(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction ak(a,b,c){this.tag=b;this.current=null;this.containerInfo=a;this.pingCache=this.pendingChildren=null;this.finishedExpirationTime=0;this.finishedWork=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=90;this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}\nfunction Aj(a,b){var c=a.firstSuspendedTime;a=a.lastSuspendedTime;return 0!==c&&c>=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;c<b&&(a.firstSuspendedTime=b);if(d>b||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime<b&&(a.retryTime=b)}function ek(a,b){dk(a,b);(a=a.alternate)&&dk(a,b)}\nfunction fk(a,b,c){c=null!=c&&!0===c.hydrate;var d=new ak(a,b,c),e=Sh(3,null,null,2===b?7:1===b?3:0);d.current=e;e.stateNode=d;ug(e);a[Od]=d.current;c&&0!==b&&Jc(a,9===a.nodeType?a:a.ownerDocument);this._internalRoot=d}fk.prototype.render=function(a){bk(a,this._internalRoot,null,null)};fk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;bk(null,a,null,function(){b[Od]=null})};\nfunction gk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function hk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new fk(a,0,b?{hydrate:!0}:void 0)}\nfunction ik(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=ck(g);h.call(a)}}bk(b,g,a,e)}else{f=c._reactRootContainer=hk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=ck(g);k.call(a)}}Nj(function(){bk(b,g,a,e)})}return ck(g)}function jk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:$a,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nwc=function(a){if(13===a.tag){var b=hg(Gg(),150,100);Ig(a,b);ek(a,b)}};xc=function(a){13===a.tag&&(Ig(a,3),ek(a,3))};yc=function(a){if(13===a.tag){var b=Gg();b=Hg(b,a,null);Ig(a,b);ek(a,b)}};\nza=function(a,b,c){switch(b){case \"input\":Cb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Qd(d);if(!e)throw Error(u(90));yb(d);Cb(d,e)}}}break;case \"textarea\":Kb(a,c);break;case \"select\":b=c.value,null!=b&&Hb(a,!!c.multiple,b,!1)}};Fa=Mj;\nGa=function(a,b,c,d,e){var f=W;W|=4;try{return cg(98,a.bind(null,b,c,d,e))}finally{W=f,W===V&&gg()}};Ha=function(){(W&(1|fj|gj))===V&&(Lj(),Dj())};Ia=function(a,b){var c=W;W|=2;try{return a(b)}finally{W=c,W===V&&gg()}};function kk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!gk(b))throw Error(u(200));return jk(a,b,null,c)}var lk={Events:[Nc,Pd,Qd,xa,ta,Xd,function(a){jc(a,Wd)},Da,Ea,id,mc,Dj,{current:!1}]};\n(function(a){var b=a.findFiberByHostInstance;return Yj(n({},a,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:Wa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hc(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))})({findFiberByHostInstance:tc,bundleType:0,version:\"16.14.0\",\nrendererPackageName:\"react-dom\"});exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=lk;exports.createPortal=kk;exports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(u(188));throw Error(u(268,Object.keys(a)));}a=hc(b);a=null===a?null:a.stateNode;return a};\nexports.flushSync=function(a,b){if((W&(fj|gj))!==V)throw Error(u(187));var c=W;W|=1;try{return cg(99,a.bind(null,b))}finally{W=c,gg()}};exports.hydrate=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!0,c)};exports.render=function(a,b,c){if(!gk(b))throw Error(u(200));return ik(null,a,b,!1,c)};\nexports.unmountComponentAtNode=function(a){if(!gk(a))throw Error(u(40));return a._reactRootContainer?(Nj(function(){ik(null,null,a,!1,function(){a._reactRootContainer=null;a[Od]=null})}),!0):!1};exports.unstable_batchedUpdates=Mj;exports.unstable_createPortal=function(a,b){return kk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!gk(c))throw Error(u(200));if(null==a||void 0===a._reactInternalFiber)throw Error(u(38));return ik(a,b,c,!1,d)};exports.version=\"16.14.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.19.1\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported\"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage=\nfunction(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a}\nfunction M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0<e?d+e:d;c=\"number\"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};\n","function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  define(IteratorPrototype, iteratorSymbol, function () {\n    return this;\n  });\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = GeneratorFunctionPrototype;\n  define(Gp, \"constructor\", GeneratorFunctionPrototype);\n  define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n    return this;\n  });\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  define(Gp, iteratorSymbol, function() {\n    return this;\n  });\n\n  define(Gp, \"toString\", function() {\n    return \"[object Generator]\";\n  });\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, in modern engines\n  // we can explicitly access globalThis. In older engines we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  if (typeof globalThis === \"object\") {\n    globalThis.regeneratorRuntime = runtime;\n  } else {\n    Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n  }\n}\n","/**\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    bigint: shim,\n    bool: shim,\n    func: shim,\n    number: shim,\n    object: shim,\n    string: shim,\n    symbol: shim,\n\n    any: shim,\n    arrayOf: getShim,\n    element: shim,\n    elementType: shim,\n    instanceOf: getShim,\n    node: shim,\n    objectOf: getShim,\n    oneOf: getShim,\n    oneOfType: getShim,\n    shape: getShim,\n    exact: getShim,\n\n    checkPropTypes: emptyFunctionWithReset,\n    resetWarningCache: emptyFunction\n  };\n\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n  module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"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.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}"],"sourceRoot":""}